Microsoft vient tout juste d’annoncer la sortie de .Net 5, mais qu’est ce que cela implique comme changements pour nous développeurs ? C’est ce qu’on va essayer de voir dans cet article.

 

Petit rappel sur les frameworks de Microsoft

Depuis quelques années, on a assisté aux sorties successives de .Net 4.6, .Net 4.7 et enfin de .Net 4.8. Parallèlement, Microsoft a sorti .Net Core 1.0, 2.0,2,1,2.2.

Aujourd’hui, pour la firme de Redmond, il est primordial d’unifier ses frameworks. Ainsi, .Net 5 est cross platforme. Pour développer en .Net on va pouvoir le faire avec un seul framework.

 

Pourquoi unifier ces frameworks ?

L’idée de Microsoft est d’unifier tout ces environnements. Ce qui est le plus surprenant, c’est cette volonté d’avoir une plateforme unique qui fonctionne aussi bien sur Linux, Mac, iOS, Android, qu’Uwp.

On retrouvait déjà cette volonté avec .Net 1.0 il y a plus de 10 ans ! Microsoft souhaitait en effet que l’on puisse utiliser .Net sous Linux sans pour autant mobiliser beaucoup d’investissements dessus.

Des projets comme Mono ont vu le jour pour combler le manque de Microsoft. A l’époque, il a fallu développer un nouveau framework, un nouveau compilateur mais aussi une nouvelle CLR. Aujourd’hui, Microsoft a publié .Net en open source et il fonctionne sur de nombreuses plateformes. L’idée étant d’unifier et de profiter des évolutions de tous ces projets.

L’autre avantage est de pouvoir profiter des optimisations faites sur certaines plateformes comme Mono. Ainsi Mono a travaillé pour réduire l’emprunte mémoire et optimiser l’exécution de code avec AOT. Cette option sera disponible dans le futur pour touts les développements .Net.

 

Mais comment ça marche ?

Aujourd’hui .Net Standard a tellement évolué qu’il a comblé beaucoup de manques importants pour être au niveau de .Net 4.8. Avec la future version 3 de .Net Core, Microsoft est à niveau par rapport a .Net 4.8.

En pratique, on ne fait pas tourner d’intermediate langage sur toutes les plateformes de la même façon ! Pour cela, on va faire appel à différents runtimes CoreClr, pour Windows, Linux et MacOS. Pour iOS android on utilisera alors du Xamarin.

Il faudra donc voir maintenant .Net Core et Xamarin comme des runtimes pour faire tourner .Net 5.

Mais il restait encore du ménage à faire par Microsoft dans les différentes plateformes. Pour Linux, par exemple, on avait encore le choix entre Mono et .Net Core. Maintenant avec .Net 5 plus de choix à faire et le meilleur des deux mondes ont été intégrés.

 

Et en pratique, ça donne quoi ?

Plus besoin de se poser de questions pour un projet ! Avant, on pouvait hésiter à passer sur .Net Core. On changeait de framework, on changeait de runtime. Cela pouvait faire peur. Même si .Net Core était très apprécié et très facilement adoptable. Il y a beaucoup d’autres avantages comme la possibilité de déployer le framework et le runtime avec votre projet.

 

Comment migrer ?

fr

Source Framework Runtime
Windows .Net 4.X 5.0 CoreClr
Windows .Net Core 2.x 5.0 CoreClr
Linux Mono 5.0 CoreClr
Linux .Net Core 5.0 CoreClr
MacOS .Net Core 5.0 CoreClr
MacOS Mono 5.0 CoreClr
Windows UWP 5.0 UWP
Xamarin iOS 5.0 Xamarin iOS
Xamarin Android 5.0 Xamarin Android
Unity 5.0 Mono

Dans l’idée c’est qu’il n’existe qu’un seul framework .Net et qu’il y ait plusieurs runtimes. Mais qu’il n’y ait qu’un seul runtime pour chaque plateforme.

 

Pour quand ?

Pour Microsoft, c’est un gros projet. Les étapes sont donc longues ! Il y a actuellement de nombreuses questions telles que, est-ce que certains projet doivent migrer en Nuget ? Comment faire pour du code spécifique à une plateforme ? Ainsi il faudra attendre un peu avant d’avoir la possibilité d’utiliser .Net 5. L’objectif de Microsoft est de fournir .Net Core 3.1 pour la fin de l’année 2019. Puis pour fin 2020 de sortir la version .Net 5.

Ce que l’on constate c’est que .Net 5 est la suite de .Net Core 3. Mais deux choses sont importantes à signaler :

  • Une simplification du nom au profit de .Net 5. On supprime le mot clef Core.
  • Il n’y a pas de .Net Core 4. C’est fait pour éviter le conflit avec .Net 4.x

Microsoft est soucieux de proposer un framework unifié dans le code mais aussi dans les termes. Ce qui permettra d’éviter des interrogations par les développeurs.

 

Pour finir sur .Net 5

C’est un peu plus qu’un renommage que nous propose Microsoft. C’est aussi l’occasion de nettoyer et d’unifier sa solution cross plateformes. Ainsi, la migration de nos applications sera plus facile. L’évolution du framework sera unifiée. Toutes les plateformes pourront profiter des futures nouveautés. Pour l’annonce officielle c’est sur le blog Microsoft.