Nouvelles Chroniques d'Amethyste

Penser au Sens, pas au Verbe

L’architecture ASP.NET 5

Poster un commentaire

ASP.NET 5 est encore en béta, mais c’est notre futur. Un futur qui sera en rupture avec toutes les versions antérieures d’ASP.NET et qui signe un changement complet de paradigme de la part de Microsoft.

Il me semble donc important de s’y préparer et un bon moyen de démarrer est de regarder un peu comment va fonctionner ASP.NET au niveau large maille. Voici les informations que j’ai pu récolter.

 

Note: depuis la rédaction de cet article, ASP.NET 5 a été en ASP.NET Core:

http://www.hanselman.com/blog/ASPNET5IsDeadIntroducingASPNETCore10AndNETCore10.aspx

Je commence par un petit schéma qui sera le fil conducteur de cet article.

2015-11-13_08-53-33

Première constatation, ASP.NET est maintenant multi-plateforme (et open source!!).

Par ailleurs, même si ça n’apparaît pas sur le schéma, l’architecture a été entièrement repensée. ASP.NET abandonne l’ancienne couche Web/IIS au profit de la pile Owin.

https://amethyste16.wordpress.com/2015/11/11/autour-des-middlewares-owin/

 

Pour l’instant seul C# semble supporté, mais je ne sais pas si c’est définitif et en particulier ce qui se passe pour VB.

 

Pour faire simple, ASP.NET est juste la partie CLR et langage. Le reste, tout ce qui est au-dessus (MVC, EF, Cache, support de déploiement IIS, Cloud ou autre…) est une dépendance que l’on récupèrera en général dans Nuget. Et surtout que l’on pourra ou non choisir d’ajouter à son projet selon les besoins!

Ca ouvre de nombreuses perspectives…

MVC devenant un middleware Owin à l’instar de Web Api, les deux environnements vont fusionner.

 

ASP.NET s’appuie sur 3 frameworks:

  • .NET 4.6
    C’est la version 4.6 du Framework que l’on connaît déjà. Donc purement Windows
  • .NET Core
    Version multiplateforme de .NET. Mais il s’agit d’une version allégée. Tout ne sera pas supporté.
  • Mono
    On ne le présente plus, disons que c’est le pendant Linux/OSX de .NET 4.6
    Donc si votre appli est ni multiplateforme, ni Windows et que le Core ne vous suffit pas, Mono sera votre choix.

Nos projets Web continuerons d’être hébergés dans IIS, mais maintenant d’autres choix deviennent possibles. Si vous n’avez pas besoin des différents services offerts par IIS, on pourra se la jouer à la NodeJS et héberger dans une appli console par exemple.

 

Autre changement notable, l’arrivée d’un nouveau projet Visual Studio: le projet DNX. Je pense qu’il faut remonter à 10 ans en arrière pour voir évoluer les projets VS.

Le plus simple est de regarder un exemple. Essayons de créer un projet Web avec VS 2015:

2015-11-13_18-43-50

Nous trouvons les templates .Net 4.6 qui correspondent aux projets classiques que nous connaissons, mais juste en dessous une zone de projets ASP.NET 5. Ce sont les projets DNX.

2015-11-13_18-48-11

La structure du projet n’a plus rien à voir (et au passage on voit que c’est encore une béta!).

Plus de global.asax, de web.config, ni même de *.csproj. Un projet DNX est en fait beaucoup plus simple:

  1. un répertoire portant le nom du projet
  2. un fichier project.json au format JSON contenant toute la configuration

Notez aussi la présence de wwwroot. C’est dans ce répertoire que l’on va placer les ressources statiques, comme les *.css, les *.js ou les images.

 

Je vais en rester là car la documentation est très incomplète et je ne suis pas certain d’avoir les idées claires la dessus. De plus on sent bien que l’outillage reste encore à venir, il y a pas mal de choses à faire à la main ou en ligne de commande et en particulier ajouter une référence à un autre projet DNX!

Donc mieux vaut attendre une version plus aboutie.

 

Remarquez tout de même la présence de fichiers Bower, Gulp et Nuget. Ils ne sont pas obligatoires, mais VS les prend en charge nativement avec IntelliSense, c’est assez magique je dois dire.

 

ASP.NET est également livré avec un nouveau serveur Web: Kestrel, basé sur Libuv. D’après les infos données par l’équipe de développement, Kestrel est dédié DEV, rien de plus. Ceci étant les perfs sont éblouissantes comme l’explique Scott Hanselman:

http://www.hanselman.com/blog/WhenDidWeStopCaringAboutMemoryManagement.aspx

 

Pourquoi Kestrel et pas IISExpress? Pour le côté multi-plateforme tout simplement! Je vous laisse deviner quel outil concurrent utilise Libuv….

 

Je termine avec un petit tuto:

https://code.visualstudio.com/Docs/runtimes/ASPnet5

 

 

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s