Loupe

.NET Core 3.0 - Quoi de neuf ?

Il y a quelque temps je vous présentais .NET Core. Nous en sommes maintenant à une prochaine sortie de la version 3.0 ! Cet article a pour vocation d'en présenter ses nouveautés.

Orienté Windows

Jusqu'à présent, le gros du travail des versions 1.X et 2.X a ciblé la plateforme ASP.NET Core et il n'était pas possible de développer un "client lourd" WPF / Winforms. Il restait bien sûr possible de faire une "application Console" ou de partir sur une application UWP.

Il va maintenant être possible de prendre une application WPF ou WinForms existante et de choisir de cibler le framework .NET Core. Il s'agit d'une des grosses demandes de la communauté et Microsoft dédie cette nouvelle version à ce support.

Cela a plusieurs avantages :

  • Indépendance à Windows Update et à la version du framework .NET installée sur le PC (il s'agit de la promesse initiale de .NET Core). Pour rappel Windows Update peut mettre à jour automatiquement le framework .Net installé sur la machine sans vous prévenir. Dans ce cas là vous pouvez avoir des breaking-changes fâcheux.
  • Gains de performances : encore une fois, c'est une promesse initiale de .NET Core vis à vis du framework .NET classique. Celle-ci semble être tenue comme l'indique Microsoft sur son blog.

Il existe aussi quelques désavantages à considérer : par exemple, plus de AppDomain, plus de TransparentProxy, etc…

La migration devrait se faire en un seul clic et transformera votre projet Visual Studio sur le nouveau format de projet adoptés pour les projets Asp.net core (SDK-style projects).

pastedImage.png

Quelles plateformes sont supportées ?

Cette nouveauté est un vrai changement car il s'agit de la première évolution a ne pas être cross plateformes. Il ne sera donc toujours pas possible de faire une application WPF pou MacOS ou Linux (et je trouve cela bien dommage...). Cette fonctionnalité sera cependant a priori compatible avec Windows 7 là où la création d'une application UWP n'est pas possible !

Par contre, pas de craintes à avoir car sous le capot, .NET Core ne change pas du tout et restera multiplateformes. Ces nouvelles fonctionnalités reposeront sur un "pack Windows tiers" à part qui ne fonctionnera que sous... Windows. 

Entity Framework 6 compatible .NET Core

Une version "Core" d'entity Framework existe depuis la sortie de .NET Core et permet de faire des choses vraiment... puissantes. Il n'existe cependant pas de chemin de migration facile d'EF 6 (l'ancienne version) vers EF Core et les projets historiques restent donc bien souvent sur cette version 6.

La prochaine mouture d'EF 6 n'apportera aucune nouveauté mais sera capable de fonctionner avec .NET Core comme environnement d'execution (cela fermera cette issue GitHub). Cela ne permettra pas de bénéficier des nombreuses améliorations de .NET Core en termes de performances mais la migration des applications WPF/WinForms en sera grandement simplifiée. 

De plus, cette migration devrait permettre son utilisation sur les plateformes non Windows.

Un nouveau mode de déploiement

Actuellement, il existe 2 modes de déploiement d'une application .NET Core :

  • FDD (Framework dependent deployment) : l'application utilise une version de .NET Core installée au niveau "machine" et toutes les applications la ciblant utiliseront ce même binaire. Cela se voit notamment avec les applications UWP sur vos postes de travail qui utilisent le même package "runtime".
  • SCD (Self Contained Deployment) : l'application embarque à côté d'elle sa version cible du framework .NET. Cela permet de ne pas avoir d'installation à faire sur la machine cible et d'être indépendant. Le côté négatif est la taille du livrable qui inclut avec lui le framework .NET Core.

La prochaine mouture de .NET Core embarquera un nouvel outil permettant de packager votre application et le framework .NET (Core) sous la forme d'un seul et même binaire. Le déploiement en sera ainsi grandement simplifié et les temps de démarrage des applications réduits.

Pour l'instant, on n'en sait malheureusement pas beaucoup plus mais voici quelques informations supplémentaires :

  • Cela devrait être basé sur le projet CoreRT qui permet de faire de la compilation AOT. Il est déjà utilisé par .NET Native pour la génération des applications UWP à destination du Store.
  • La mise en place sera très simple : il suffira d'ajouter un package Nuget (Microsoft.DotNet.ILCompiler) à son projet et de publier son application.

Le début des divergences

Microsoft persiste à proposer 2 versions du framework : .NET "classique" et .NET Core. Ces deux frameworks ont leurs avantages et inconvénients et sont pour le moment assez similaires. Il faut cependant garder en tête que ces deux projets ont des rythmes bien différents : 

  • .NET Core a un rythme de publication très élevé avec l'aide de la communauté : la version 2.X profitait d'une mise à jour quasi mensuelle.
  • .NET Classique sort une nouvelle version moins souvent et le focus est fait sur la stabilité et la rétro-compatibilité.

Au fur et à mesure, le framework .NET Core va donc devenir de plus en plus riche par rapport à un framework .Net classique de plus en plus stable. Cela ne veut pas dire qu'il faut migrer absolument vers .NET Core mais qu'il s'agit d'un bon choix si l'on mise sur le long terme. Comme le dit très bien Thomas si vous en discutez avec lui : c'est sans doute un meilleur choix pour de nouveaux développements. Pas grand intérêt à rester sur .NET Framework à moins d'avoir déjà une base de code importante qui le cible.

Date de sortie

La date de sortie exacte n'est pas encore disponible mais il est annoncé une mise à disposition au premier trimestre 2019 prochain. En attendant, une version preview vient d'être publiée pour commencer à jouer avec.

 

Happy coding !

Photo de profil

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus