.Net Core – qu’est ce que c’est ?

Si vous suivez l’actualité Microsoft, ce nom “.Net CORE” a du apparaitre plus d’une fois dans vos flux RSS. Cet article a pour vocation de définir ce que c’est et la volonté derrière cette nouvelle corde à notre arc de développeur.

 

En une phrase : .Net Core est le Framework .Net modulaire distribué via Nuget, embarqué dans votre application et Open Source.

 

Le Framework .Net actuel

Le Framework .NET est intrinsèquement lié à Windows depuis ses débuts en 2002 : cela est un de ses composants pré-installé (mais pas forcément activé par défaut). Les applications .Net compte sur sa présence dans l’OS et c’est Microsoft, via Windows Update, qui procède à sa mise à jour.

Cela a donc pour implication que toutes les applications du PC partagent la même version du Framework et qu’une application .Net ne peut être exécutée que sur Windows. Cela est valable à la fois pour les applications bureau, les applications Windows Store mais aussi les applications Web.

De plus le Framework est un produit propriétaire que seul Microsoft peut modifier et distribuer.

Il existe plusieurs versions différentes de ce Framework pouvant cibler la même architecture (.net 3.5, 4.0, etc.) ou des architectures complètement différentes (.Net compact Framework, etc.). Certains éditeurs proposent aussi des produits similaires tels que Mono permettant d’utiliser .Net sur d’autres plateformes (iOS, Linux, Android, etc.). La tendance qui émerge est ainsi d’avoir de plus en plus de versions différentes, nécessaires, à faire évoluer et à maintenir….

3173.Pic1

 

Pour résoudre ce problème Microsoft a créé une révolution (et je pèse mes mots) en proposant .Net Core !

Le futur : .Net Core

Il s’agit d’une transformation complète du Framework .Net sous la forme de composants modulaires, utilisables à la demande, cross plateformes et … open-source  !

 Il est découpé en 2 parties complémentaires :

  • CoreFx : l’implémentation concrète de .Net Core sous la forme de plusieurs assemblies (DLL)
  • CoreCLR : correspond au moteur d’exécution de .Net Core ( garbage collector, compilateur JIT, types de base .Net)

 

Le Framework .Net devient donc une norme (ECMA 335) et Microsoft en propose déjà une implémentation sur plusieurs plateformes (Windows, Linux et Mac).

 

Open-Source

Les sources de ces deux éléments sont disponibles sur GitHub et il est possible à chacun de télécharger les sources, compiler soit même le Framework et surtout contribuer !

Microsoft joue le jeu de l’open-source à 100%. Cela implique notamment que Mono va pouvoir utiliser tout ou partie de .Net Core pour proposer son implémentation plus rapidement et efficacement.

 

Modulaire et déployé via Nuget

Le modèle de distribution évolue aussi car .Net Core est distribué via Nuget : on ne part donc plus du principe que .Net est installé sur la machine mais on l’embarque dans l’application. Il ne s’agit pas d’un seul package mais de plusieurs disponibles : on passe d’un modèle où tout le Framework est disponible à un modèle où on ne référence (= on ajoute un package Nuget) uniquement que ce dont on a besoin. On parle aussi de modèle “pay-for-play / payer pour jouer”.

En terme de taille de binaire final, cela reste à priori raisonnable puisqu’uniquement ce qui est nécessaire sera embarqué.

Finalement, cette refonte était une opportunité qu’a saisie Microsoft d’ajouter de nouvelles fonctionnalités au Framework : Socket, collections immutables, etc.

Il est bon de savoir que même si le Framework est modulaire, les différents packages ne seront déployés que par “lot entier” après une série de tests de qualité effectués par Microsoft. Cependant, n’étant pas liées à un OS en particulier, les mises à jour pourront être beaucoup plus fréquentes.

 

Mise en œuvre

Actuellement, .Net Core est disponible de manière officielle pour réaliser 2 types d’applications :

  • Asp.Net Core
  • UWP – Universal Windows Application

2783.Pic3

 

Il suffit de créer un nouveau projet de ces types pour utiliser .Net Core. Dans Visual Studio 2015, cela sera visible au niveau des références de manière différente mais bien sous la forme de package Nuget :

corepackage

 

Si vous souhaitiez migrer vers .Net Core, Microsoft propose un outil permettant de tester la migration de votre code: https://github.com/microsoft/dotnet-apiport

 

Lorsque vous générez votre package final pour le déploiement, d’autres outils peuvent alors entrer en jeu. Par exemple, les applications UWP passent par la moulinette .Net Native (en release) pour générer une dll unique auto-suffisante optimisée pour une architecture donnée.

 

Pourquoi utiliser .Net Core ?

C’est une bonne question à se poser ! Voici les raisons principales données par Microsoft :

  • Modularité : n’utilisez que ce dont vous avez besoin.
  • Moderne : il s’agit de la dernière version de .NET avec tout ce que l’on aime – async, Linq, generics, etc.
  • À jour : le déploiement via Nuget permet des mises à jour plus fréquentes et lorsque vous (le développeur) le décidez.
  • Cross-plateformes : en utilisant .Net Core  vous vous assurez que votre code est (ou sera) portable aisément sur d’autres plateformes.
  • Performance : les gains annoncés et constatés sont au rendez-vous.

 

Aller plus loin

Si vous voulez en savoir plus, voici quelques liens intéressants :

Photo de profil

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus