Blog de Hinault Romaric (.NET Core, ASP.NET Core, Azure, DevOps)
par , 25/06/2017 à 00h38 (3024 Affichages)
Microsoft a publié lors de sa conférence Build 2017 la Preview 1 de ASP.NET Core 2.0.
Pour rappel, ASP.NET Core est l’implémentation multiplateforme et open source de la plateforme de développement Web de Microsoft. La première version stable avait été publiée il y a pratiquement un an.
Dans cette nouvelle série de billets, je vais couvrir les nouveautés de cette version. Il s’agit d’une préversion. Elle peut donc être assez instable et les fonctionnalités qui seront présentées pourront changer avant la sortie de la version de stable qui est prévue avant la fin de cette année.
Installation de cette version
La Preview 1 de ASP.NET Core 2.0 est disponible pour Windows, Linux, OS X et comme image Docker. Il s’installe side by side avec les versions précédentes de .NET Core. Trois versions de .NET Core peuvent donc cohabiter sans problème sur votre machine :
- .NET Core 1.0.x, qui est la version stable de la plateforme de développement qui bénéficie d’un support LTS (Long Term Support). Durant la période de support, cette dernière reçoit des correctifs de sécurité ;
- .NET Core 1.5, qui est la version actuelle. Cette version reçoit plus fréquemment de nouvelles fonctionnalités ;
- .NET Core 2.0, la prochaine version majeure qui est en phase de développement et dont nous pouvons déjà tester certaines fonctionnalités grâce à la Preview 1.
Sous Windows
Pour installer la plateforme sous Windows, vous pouvez la télécharger à l’adresse suivante : https://www.microsoft.com/net/core/preview#windowscmd.
L’installation est une succession de clic.
Sous Linux
Pour installer .NET Core 2.0 Preview sous un système d’exploitation Ubuntu, vous devez exécuter la commande suivante :
sudo apt-get install dotnet-dev-2.0.0-preview1-005977
Mais avant, vous devez ajouter dotnet à votre apt-get feed. C’est l’emplacement ou est hébergé le package. Le lien varie d’une version à une autre d’Ubuntu. Pour plus de détails, veuillez consulter le lien ci-dessous. Vous aurez également des indications pour l’installer sur Debian, Fedora, CentOS et openSUSE.
https://www.microsoft.com/net/core/preview#linuxubuntu
Pour vérifier que votre installation s’est effectuée correctement, vous devez utiliser la commande dotnet --version :
On va y aller avec la création d’un nouveau projet Web :
dotnet new web -n testapp
Comme vous pouvez le constater avec la capture ci-dessus, la commande dotnet new procède désormais automatiquement à la restauration des packages NuGet après la création du projet.
Vous n’avez plus besoin d’exécuter la commande dotnet restore avant de générer ou exécuter votre application.
Microsoft.AspNetCore.All
Si vous ouvrez le fichier .csproj, vous remarquerez qu’un seul package NuGet est référencé :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<UserSecretsId>aspnet-testapp-80BE5480-76D8-4E66-94A6-E49FC43E4740</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-preview1-final" />
</ItemGroup>
</Project> |
Le nouveau package NuGet Microsoft.AspNetCore.All est l’unique package référencé dans les projets ASP.NET Core à la création du projet. Il s’agit d’un meta-package permettant de référencer dans son projet tous les packages NuGet nécessaires à l’exécution d’une application ASP.NET Core.
On y retrouve notamment les packages pour l’authentification, Razor, le monitoring, Kestrel, etc. Comme vous pouvez le constater avec la capture ci-dessous, le nombre de packages référencé par ce meta-package est important :
Pourquoi ce choix ?
ASP.NET Core est bâti autour de la modularité. Les fonctionnalités du Framework sont reparties à travers des packages qui sont disponibles via le gestionnaire de packages NuGet. Ainsi, le développeur peut intégrer à son application juste les composants du Framework dont il a réellement besoin.
Dans la version précédente du Framework, le projet Web de base, par exemple, n’intègre que le package Microsoft.AspNetCore, qui est le minimum nécessaire pour exécuter une application ASP.NET Core. Si dans votre application, vous avez besoin des fonctionnalités supplémentaires pour par exemple supporter MVC ou gérer l’authentification, vous devez ajouter les packages correspondants à votre application.
Un développeur expérimenté n’aura pas de problème à le faire. Mais, pour le débutant, l’ajout, la mise à jour ou la suppression des packages peuvent être une source de frustration.
C’est pour offrir plus de souplesse dans la gestion des packages que les développeurs de .NET Core ont introduit le meta-package Microsoft.AspNetCore.All. Il offre une option à ceux qui ne veulent pas s’emmerder avec la gestion des packages dans leur projet. Tandis que ceux qui ne veulent disposer que des packages pourront continuer à le faire sans problème.
Si au moment de publier son application, toutes ces dépendances sont incluses dans le package de déploiement, on perd l’un des gros intérêts de la modularité de ASP.NET Core : la possibilité de déployer une application moins volumineuse avec uniquement les packages nécessaires à son fonctionnement. Sur ce point, les développeurs de.NET Core ont fait savoir que le package de déploiement n’inclura que les packages qui ont été utilisés dans le code de l’application. Cette dernière fonctionnalité n’est pas encore implémentée dans la Preview de ASP.NET Core.
.NET Core 2.0 Runtime Store
La nouveauté .NET Core 2.0 Runtime Store rend le metapackage Microsoft.AspNetCore.All encore plus intéressant. Ce dernier s’appuie sur cette fonctionnalité pour offrir des meilleures performances.
En effet, NET Core est désormais livré avec un Runtime Store. Le Runtime Store embarque tous les packages nécessaires à l’exécution d’une application ASP.NET Core. L’aspect intéressant de cette galerie est le fait que tous les packages sont déjà précompilés en code natif.
Le store est contenu dans le dossier Program Files\dotnet\store :
Comme vous pouvez le constater, les packages ASP.Net Core sont inclus par défaut.
Les applications utilisant Microsoft.AspNetCore.All vont automatiquement profiter de cette nouveauté. Les applications n’ont plus besoin être publiées et déployées avec l’ensemble des packages nécessaires à leur fonctionnement. Ce qui entraîne une réduction de la taille du package de déploiement d’une application ASP.NET Core 2.0. La précompilation en code natif de ces packages rend également plus rapide le temps chargement des applications.
En plus, lors de la publication des applications, la précompilation des vues Razor est automatiquement activée. Ainsi, toutes les vues de l’application seront précompilées dans un assembly. Ce qui permettra également de réduire de façon drastique la taille du package de déploiement et le temps de démarrage de l’application.
Les adeptes du Cloud et des conteneurs seront ravis d’utiliser cette fonctionnalité. La taille des images docker, par exemple, sera réduite.
Dans le prochain billet, nous verrons les modifications apportées aux fichiers Program.cs et Startup.cs.