hermes.net - fast & minimalist web framework

Hermes.net, le framework web de vos applications UWP

Vous avez envie de monter un projet sur Windows for IoT mais l’absence d’une solution simple pour faire un serveur web vous freine car l’idée de manipuler des StreamSocket à la main ne vous enjoue pas au plus haut point ? Hermes.net est la solution à votre problème.

Hermes.net c’est quoi ?

Hermes.net est un framework web que j’ai développé pour remplir un vide qui était visible dans les outils de développement de la plateforme universelle de Microsoft. Effectivement, à l’heure actuelle il n’existe pas encore de solution simple pour créer un serveur web au sein d’une application universelle. Je me suis ouvertement inspiré d’Express.js, le framework web de référence dans le monde node.js, pour les APIs comme nous allons pouvoir le voir ci-après.

Hermes.net, comment ça marche ?

Etape 1 : Installation

Pour installer Hermes.net, il vous suffit d’ouvrir votre gestionnaire de package nuget et de rechercher le package « Hermes.net » avec les préversions activées.

Si vous souhaitez l’installer via la Console Package Manager, voici la commande :

Install-Package HermesNet -Pre

Etape 2 : Capabilities

Afin de pouvoir utiliser Hermes.net, vous allez devoir modifier les capabilities de votre application. Pour cela, rien de plus simple. Double cliquez sur le fichier « Package.appxmanifest » dans votre Solution Explorer et cochez les cases suivantes dans l’onglet « Capabilities » :

  • Internet (Client)
  • Internet (Client & Server)
  • Private Networks (Client & Server)

Etape 3 : Création du serveur

A l’endroit où vous souhaitez démarrer votre serveur dans votre code ajoutez ces lignes ci :

HttpServer server = new HttpServer();
//ici viendront vos routes.
server.Listen(80);

A la place du 80, vous pouvez mettre le chiffre que vous souhaitez, il s’agit du numéro du port sur lequel fonctionnera votre serveur web. Attention à ne pas utiliser un port déjà utilisé ce qui résultera à une exception du système qui vous le signalera.

Etape 4 : Création d’un Middleware

Les middlewares sont les points d’arrivée d’une requête, c’est à cet endroit que la logique de votre page va se construire. Voici un exemple de « Hello World » réalisé dans un Middleware.

class SampleMiddleware : IMiddleware
{
       public async Task Run(HttpContext context)
       {
              context.Response.Send("Hello World");
       }
}

Comme vous pouvez le voir le code est très simple. Dans notre exemple, le serveur ne fait que renvoyer la réponse « Hello World » au client.

Pour information : au sein du HttpContext, passé en paramètre, vous trouverez deux objets : Request et Response. Dans Request, vous trouverez toutes les informations concernant la requête envoyée vers votre serveur. Dans Response, toutes les informations concernant la requête envoyée vers le client final.

Etape 5 : Ajouter une route

Nous allons revenir à notre bloc de code de l’étape 3 afin d’y ajouter une route. Il existe plusieurs types de routes en fonction de ce que vous souhaitez faire :

  • AddGetRoute: Route une requête GET
  • AddPostRoute: Route une requête POST
  • AddPutRoute: Route une requête PUT
  • AddDeleteRoute: Route une requête DELETE
  • AddAllRoute: Route tous les types de requêtes
  • AddTransparentFolderRoute: Fait pointer une route vers un dossier. Pratique afin d’y mettre des fichiers comme des images, des css ou des javascript par exemple.

Dans notre cas, nous allons utiliser AddGetRoute comme ceci :

HttpServer server = new HttpServer();
server.AddGetRoute("/", new SampleMiddleware());
server.Listen(80);

Afin de tester, ouvrez un navigateur sur votre téléphone par exemple et tapez l’adresse ip de la machine sur laquelle tourne votre application, si Hello World s’affiche, vous avez réussi !

Les limitations des UWP

Hermes.net étant conçu pour la plateforme universelle de Microsoft, il hérite tout naturellement de ces limitations. La seule limitation bloquante connue est le blocage de la boucle de loopback, en d’autres termes, il vous est impossible sans bidouiller votre système (voir « checknetisolation loopbackexempt » sur internet) de faire communiquer un serveur Hermes.net avec un autre système sur la même machine.

Ah oui, Bonne année 2016, n’abusez pas avec l’alcool et amusez-vous bien avec Hermes.net ! N’hésitez pas à m’envoyer vos retours ou si cela vous intéresse de participer sur GitHub au projet : https://github.com/vmichalak/Hermes.Net . « Fork me on GitHub » comme dirait l’autre !

2 réflexions au sujet de « Hermes.net, le framework web de vos applications UWP »

  1. Bonsoir !
    Avant tout beau boulot (et merci pour l’assistance sur twitter).
    J’ai passé plus de temps à l’installer qu’a faire le HelloWorld mais c’était ma faute.
    Je me permet de lister les « problèmes » rencontré lors du HelloWorld :
    – j’étais sur les packages Microsoft, du coup j’ai eu du mal à trouver Hermes
    – mon VS2015 n’est pas d’accord avec public async Task Run(HttpContext context) il ma gentiment proposé async Task IMiddleware.Run(HttpContext context)

    1. Hello,
      Tout d’abord, merci pour ton retour cela fait très plaisir d’avoir ce type de retour.
      Pour la proposition de ton VS2015, tu dois avoir un plugin qui force une convention d’installé car je n’ai aucun soucis chez moi :).
      A bientôt !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *