Loupe

.NET Standard 2.0, Visual Studio 2017

Lors de la première journée de cette //build 2017, Scott Hanselman, Scott Hunter et Kasey Uhlenhuth nous ont présenté les nouveautés autour du .NET et notamment autour de Visual Studio 2017.

.NET est ouvert et actif

Le premier point mentionné est l'investissement de Microsoft dans l'open-source ces dernières années. Notamment avec le nombre de Pull Requests autour du .NET qui a explosé depuis 2015, .NET évolue constamment et est très actif, et cela se voit autant sur Github que sur StackOverflow via des sondages.

Ils rappelent qu'ASP.NET Core est très performant et que cela se traduit par des équipes qui passent de NodeJS à ASP.NET Core. Avec une telle transition sur un serveur de même envergure, cela leur permet d'augmenter considérablement les nombres de requêtes par seconde de leurs applications.

.NET Architecture

Un nouveau site web est mis à disposition : https://www.microsoft.com/net/learn/architecture.

L'objectif de ce site est de fournir une documentation, autour du .NET, la plus complète possible pour que les entreprises puissent mettre en place les meilleurs architectures/patterns possibles dans leurs applications. Cela inclut de la documentation, mais aussi des exemples, et cela sur divers sujets : applications mobiles (Xamarin), Azure, applications Web...

.NET Standard 2.0

La librairie .NET Standard 2.0 est disponible. Pour rappel, l'idée du .NET Standard est d'unifier tous les plateformes .NET via un contrat. Et ce contrat s'étoffe avec .NET Standard 2.0. 

netstandard.PNG

L'objectif reste le même que .NET Standard 1.6, c'est à dire une connaissance unique à appréhender pour toutes les plateformes .NET, avec toute la chaine d'outils qui fonctionne pour toutes les plateformes : Visual Studio, Visual Studio pour Mac, Visual Studio Code...

.NET Standard 2.0 apporte beaucoup plus de contrats, cela permet d'utiliser de l'ancien code .NET dans des nouvelles technologies. L'exemple présenté lors de la session est une application Windows Forms qui manipule des DataSets. Le code métier qui manipule des DataSets est alors déplacé dans une librairie .NET Standard. L'application Windows Forms continue de fonctionner parfaitement en référençant cette librairie. Ensuite, une nouvelle application ASP.NET Core peut aussi référencer et utiliser cette librairie .NET Standard, comme on peut le voir dans leur démonstration.

netstanrd2.PNG

.NET Core 2.0

Premier point : .NET Core 2.0 supporte .NET Standard 2.0, cela veut dire qu'une application ASP.NET Core 2 peut utiliser environ 70% des APIs du framework .NET. 

ASP.NET Core et Entity Framework Core sont maintenant inclus directement dans .NET Core 2.0 pour simplifier le packaging.La taille des packages est alors augmentée, mais il va être possible de réduire la taille de ces packages pour ceux qui en ont besoin. Autre point important, les références étant simplifiées, la configuration devient réellement plus simple, plus concise.

Les commandes ont été aussi été améliorées, ainsi il est possible, en spécifiant un paramètre à la commande dotnet new, de créer le projet selon plusieurs templates de projets mis à disposition.

Visual Studio 2017

Un des problèmes remontés assez souvent autour de Visual Studio est la nécessité d'installer plusieurs extensions pour avoir une meilleure expérience.

Ainsi, les nouveautés de l'IDE version 2017 RTM du 7 mars sont :

  • De meilleures performances et une installation plus efficace
  • Une navigation plus rapide
  • Live Unit Testing (.NET Core non supporté)
  • Amélioration de l'IntelliSense
  • Une aide aux exceptions plus poussée
  • Plus de refactoring et de fixs automatisés
  • C# 7.0 !

Avec Visual Studio 2017 Update 3 qui va sortir, de nouveaux points sont présents :

  • Encore plus d'IntelliSense
  • Live Unit Testing pour .NET Core
  • Du diagnostique de code sur plusieurs points, comme la sécurité
  • Encore plus de refactoring !
  • C# 7.1

L'audience aura retenu deux moments intenses :

  • Lors d'une NullReferenceException, la valeur qui est null est maintenant indiquée au développeur
  • Il n'est plus obligatoire d'unload le projet pour pouvoir éditer son .csproj !

Sinon, une feature très intéressante en terme de productivité et que les utilisateurs de Visual Studio Code doivent bien connaître : le "Go To All" avec la possibilité de choisir ce que l'on recherche. Il est alors possible de chercher des types, des membres, des symboles ou même des fichiers en spécifiant le type d'objet que l'on recherche. En réalité la feature Go To All existait déjà sous Visual Studio 2015 ("Ctrl + virgule" par défaut), mais il n'était pas possible de cibler un type d'entité particulier.

.NET Core et Visual Studio arrivent sur Mac

Comme l'annonce le titre de cette partie, .NET Core et Visual Studio seront disponibles sur Mac, et cela avec la même expérience de développement que sur Windows. C'est à dire qu'il sera possible de débugger, publier sur un site web Azure, etc...

Les diagnostiques Azure

Côté Azure, un point d'attention à été porté sur l'aspect diagnostic. Il est important de pouvoir diagnostiquer ses applications, et cela sans devoir modifier celles-ci en conséquence, ni même de devoir les republier. L'objectif est de pouvoir découpler au maximum la partie diagnostic de la partie métier de l'application.

Il est alors possible de diagnostiquer son application depuis le portail tout naturellement, mais aussi via Visual Studio par le biais de "snap points" pour debugger une application en exécution. L'idée est vraiment de dissocier le diagnostic de l'application en soi. Dans le passé, il fallait aller sur NuGet, ajouter les références, mettre en place les branchements, etc... Maintenant, l'idée est de n'avoir qu'à publier son application, et Azure s'occupe du reste.

La killer feature tourne autour des dépendances, grandement améliorées, on peut voir clairement les dépendances entre toutes les briques de l'application et permet à l'utilisateur d'avoir une vision adaptée en fonction de son besoin.

Les problèmes sont alors regroupés, et on retrouve un concept de "bucket" où les exceptions sont mises en avant, de manière groupée et selon leur importance. L'interface semble très intuitive et, même si Application Insigths est déjà une pépite en soit, ces nouveaux diagnostics semblent réellement un très grand atout pour l'avenir.

En plus de retrouver la Call Stack d'une exception, on peut alors télécharger un dump qui représente le snapshot de cette exception, afin d'investiguer encore plus en profondeur l'exception. Ainsi, avec cette notion de "snap point", opposé au breakpoint, rien n'est arrêté, il est possible de débugger sur Visual Studio sans impacter l'application qui tourne sur Azure. Par contre, la démonstration n'a pas fonctionné, mais mettons ça sur le fameux "effet démonstration" !

Azure Functions

Enfin, la session se finit avec les Azures Functions, qui supportent maintenant le .NET Framework et .NET Core. On a aussi de l'IntelliSense, des références entre projets, des tests unitaires et de l'analyse de code. Que demander de plus ? Le fait de pouvoir les publier directement sur Azure depuis Visual Studio par exemple, mais aussi de les débugger autant localement qu'en remote.

Conclusion

Cette session, assez riche en nouveautés, semble très prometteuse pour l'avenir de .NET en général, de Visual Studio et d'Azure. Dans l'ensemble, on retient que l'expérience de développement est fortement enrichie et que la productivité, ainsi que l'encouragement à produire un code de qualité maintenable, sont au centre de cet écosystème.

Il ne reste plus qu'à tester tous ces nouveaux outils, puis opposer la réalité à toutes ces belles promesses qui nous ont été faites !

Pour voir la session, c'est par ici : Three Runtimes, one standard… .NET Standard: All in Visual Studio 2017

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus