.NET Core, .NET Standard, .NET Framework: Quelles différences ?

Your Content Goes Here

27/02/2023

6min

 

Si vous lisez cet article, c’est que vous vous intéressez de près ou de loin à .NET. Sur LinkedIn, c’est l’apogée de l’usage de ce terme: On parle d’une mission .NET Core, ou d’un candidat avec une expérience sur le .NET Framework.

Certains peuvent même parler de “librairies .NET Standard”. Qu’est-ce que cela veut bien vouloir dire ? Il est vrai que si l’on est pas développeur, ou bien si l’on débute avec l’écosystème .NET, il n’est pas évident de savoir de prime abord.

Nous allons ici définir dans des termes simples et compréhensibles ces 3 outils, et bien plus. Commençons par la base. Let’s go !

C’est quoi .NET ?

À l’Epitech, c’est l’une des phrases que j’ai le plus entendues pendant les TP de 3ème année de Bachelor.

La réponse est pourtant simple. Il faut voir .NET comme un grand ensemble d’outils mis à la disposition du développeur pour qu’il réalise des projets informatiques de toute envergure.

Un peu comme une grosse boîte à outils. Dans cette boîte, on y retrouve plein d’outils pour réaliser des applications web (ASP.NET), des applications mobiles (MAUI), de la communication en temps réel (SignalR) … et toute une palanquée d’autres outils comme un compilateur, et un moteur d’exécution (runtime).

Ces deux derniers sont essentiels pour l’environnement de développement du développeur. Cette boîte met aussi à disposition plusieurs langages de programmation, dont les principaux sont: C# , F# , Q#, VB.NET. Ce sont ces langages qui permettent d’utiliser les outils nommés ci-dessus.

Une boîte comme celle-ci, on l’appelle un cadriciel en bon françois. Fusion entre cadre et logiciel. C’est donc un logiciel qui donne un cadre au développeur pour s’exprimer. En anglais, le mot cadriciel se traduit par « framework » !

Et c’est à peu près tout ! Bien. Définissons maintenant les 3 autres.

C’est quoi .NET Core ?

.NET a longtemps été cantonné à Windows. Ce qui signifie qu’il était impossible de développer des applications .NET pour d’autres systèmes d’exploitation (Comme ceux des ordinateurs Apple ou encore Linux).

Ça, c’était avant les années 2010, où le cadriciel Mono (qui était grosso-modo un .NET disponible sur Linux, développé par des indépendants) fut introduit, puis largement adopté par une certaine communauté de développeurs de jeux vidéo, puis par une autre communauté de développeurs mobiles (les fameux devs Xamarin).

Forts de cet engouement, Mono fut racheté par Microsoft plus tard. Commença alors un grand chantier pour fournir une version de .NET qui était compatible avec tous les systèmes d’exploitation, en se basant sur ce qui avait été rendu possible par Mono.

C’est ainsi que naquit le projet .NET Core. Ainsi, furent créées 2 branches de .NET en parallèle: la branche .NET Framework, qui assurait une compatibilité avec Windows uniquement, et la branche .NET Core, qui permettait une compatibilité avec tout système.

Ces branches peuvent être appelées des distributions. On parle alors d’interopérabilité entre systèmes, ou interop.

Imaginez ainsi 2 boîtes à outils utilisables par les développeurs, en fonction de leurs besoins. .NET Core, c’est donc une distribution de .NET qui permet d’être utilisée sur tout système d’exploitation.

Vous réussissez à suivre ? On attaque les 2 derniers 🙂

C’est quoi .NET Framework ?

Bien que, comme dit plus haut, le mot framework désigne un cadriciel, la communauté .NET considère que l’appellation .NET Framework désigne la distribution de .NET qui fonctionne sous Windows uniquement.

On suffixe communément le terme .NET Framework par sa version: .NET Framework 4.7.2, .NET Framework 4.8.1 etc.

Cette branche a longtemps été la seule et unique branche de .NET, avant que Microsoft décide de lancer le cadriciel interopérable qu’est .NET Core.

.NET Framework est toujours maintenu aujourd’hui par Microsoft, notamment parce qu’il est abondamment utilisé dans les systèmes de finance, et les applications de bureau client lourd d’entreprise.

Il y aura cependant un moment où .NET Framework ne sera plus pertinent, et où son obsolescence sera annoncée par Microsoft.

C’est quoi .NET Standard ?

Ce terme est spécifique aux développeurs. .NET Core a beaucoup évolué au fil de ses années de développement. Ces évolutions, compilées en versions de .NET Core, ont apporté un bon nombre d’innovations techniques et de changements. Souvent, lorsqu’un cadriciel monte en version, il introduit des changements qui peuvent casser le code existant.

On parle alors de breaking change. Et quand une même solution combine des projets avec des versions différentes, ces breaking changes peuvent se propager, et faire en sorte que le développeur s’arrache les cheveux. Dommage, il a des si beaux cheveux !

C’est ce qu’il peut se passer avec .NET Core. Pour pallier à cela, Microsoft a introduit le .NET Standard. Le .NET Standard, c’est une version en laquelle on peut choisir de compiler son projet .NET pour faire en sorte que celui-ci soit disponible pour un plus grand nombre de versions de .NET Core.

Tout changement breaking est ainsi masqué, peaufiné pour que l’exécution se passe comme avant! C’est un peu magique. Et lorsqu’on s’amuse à reverse-engineer une librairie .NET Standard, c’est assez bluffant!

Un terme pour les mettre tous d’accord: .NET

Aujourd’hui, le terme .NET Core est en déclin, au profit du terme générique .NET.

Cela est dû au fait que Microsoft a abandonné le suffixe «Core». On parle ainsi de .NET 5, .NET 6, .NET 7. .NET Core étant devenu la norme, tout en étant l’avenir de .NET, il est normal que le nommage prenne le pli lui aussi, et se sustante de l’appellation simple .NET.

Aujourd’hui on dit donc «Une stack .NET 6» ou bien encore «Une stack .NET 7», ou toute autre version ultérieure qui s’applique au projet. Lors d’un recrutement, effet positif garanti ! 🙂

Ainsi, aujourd’hui, si une start-up vous parle d’un projet .NET dans le cloud, il y a de fortes chances que ce soit du .NET 6 ou 7. Mais mieux vaut demander, au cas-où, si leur stack est inter-opérable avec Linux 😉