.NET Framework vs .NET Core

Dans le monde de Microsoft, les choses bougent ! La plateforme .NET comporte maintenant deux déclinaisons : .NET Framework et .NET Core. Mais alors, quel framework .NET utiliser pour mon projet ? Un versus s'impose ! Au programme : définitions, spécificit
quentin.jpg
Quentin VANDENBOREMis à jour le 27 Juil 2018
net-framework-vs-.net-core.jpg

Dans le monde de Microsoft, les choses bougent ! La plateforme .NET comporte maintenant deux déclinaisons : .NET FrameworkUn framework est un ensemble d'outils permettant de cadrer la façon dont on conçoit une application. et .NET Core.

Mais alors, quel framework .NET utiliser pour mon projet ? Un versus simpose !

Au programme : définitions, spécificités, compatibilité, et différences entre les deux frameworks.

.NET Framework VS .NET Core : définitions

.NET Framework, c’est quoi ?

.NET Framework est un framework Microsoft utilisé par les systèmes Windows qui permet de réaliser tout type dapplication dans lenvironnement Windows et tous les navigateurs web. Il fournit un certain nombre d’outils comme ADO.NET.NET est le principal framework de l'univers Microsoft. permettant l’accès aux données et respecte la norme Common Langage Infrastructure (CLI) qui décrit l’environnement dexécution des codes de programmes. 

DotNet Framework.png

.NET Core, c’est quoi ?

.NET Core est un framework open source multiplateforme à hautes performances destiné à

Il est distribué par le gestionnaire de paquets « NuGet » sous forme de librairie. 

asp-net-core.png

Compatibilité .NET Standard

La compatibilité entre .NET Framework et .NET Core n’est pas bonne !

En effet, si vous essayez d’incorporer une librairie .NET Core dans un projet .NET Framework, ce dernier refusera l’installation. Heureusement pour pallier cela, Microsoft a ajouté une passerelle, le .NET Standard, qui permet une compatibilité entre les 2 intéressés. Nous sommes sauvés 🙂 

dotnet.png

.NET Framework VS .NET Core : pourquoi utiliser l’un ou l’autre ?

Le choix de lun ou lautre des frameworks doit être fait en fonction de plusieurs critères.

En fonction du projet à développer

Pour commencer, il faut s’intéresser à la solution que vous vous apprêtez à développer. Est-ce un client lourd (WinForm, ou WPF) ou un service (WCF) ? Ou alors est-ce que ce projet est un site web ou bien un RESTREST (REpresentational State Transfer) est un style d'architecture logicielle qui fonctionne sous un certain nombre de contraintes. APIUne API est un programme permettant à deux applications distinctes de communiquer entre elles et d’échanger des données. ? Si le développement porte sur un client lourd ou un service, alors le choix qui s’impose à vous est le .NET Framework.

En fonction de votre SI

D’autre part, votre SILe SI désigne le système d'informations d'une organisation. est-il davantage tourné vers Windows Server ou Linux dans le cadre d’un projet web ? C’est un autre critère qui permet dans le cas de Linux de ne plus se poser la question : .NET Core.

Note : voyez long terme ! Votre SI a-t-il un plan de migration pour les années à venir ? Ça peut changer la donne.

En fonction du gestionnaire de conteneur

Pour finir, si vous utilisez un gestionnaire de conteneur (type Docker), partez sur .NET Core car les noyaux des conteneurs sont basés sur Linux.

Pourquoi ne pas utiliser systématiquement le dernier framework .NET Core ?

Il est tout à fait normal de se poser la question suivante : « Pourquoi ne pas faire tout le temps du .NET Core ? ». En effet, il serait plus simple dadopter systématiquement ce dernier et d’abandonner la base qu’est le .NET Framework.

On aurait tendance à croire que, comme les packages « NuGet » proposent une panoplie impressionnante de librairies et d’outils, le .NET Core a autant de fonctionnalités que le .NET Framework. Cest faux !

Par exemple, si vous voulez utiliser des références COM qui dépendent des logiciels de votre PC, ce nest pas possible avec .NET Core.

.NET Framework VS .NET Core : notre avis AXOPEN !

Chez certains de nos clients, nous utilisons le .NET Framework avec des projets type ASP.NET MVC ou WebForm. Sur ce type de projet très conséquent (plusieurs années de travail), la migration n’est pas recommandée.

Pour ce qui en est du .NET Core, AXOPEN a tout de suite tenté de comprendre et de maîtriser la plateforme sur des projets internes. Finalement, après des mois de tests, nous avons utilisé .NET Core dans de nouveaux projets de type micros-services sur des plateformes Linux.

Néanmoins, il reste des technologies où le .NET Framework reste le framework par excellence, notamment pour des projets client lourd ou des services spécifiques aux .NET Framework (WinForm, WPF et WCF par exemple).

Pour tout nouveau projet web, nous recommandons fortement d’utiliser le .NET Core.

Alors, même si nous avons aimé le framework, sachez que tout nest pas toujours tout rose ! En effet, dans le cadre d’un projet récent, nous avons rencontré un problème : l’utilisation d’un projet de « Models » (en .NET Framework) par un nouveau projet en .NET Core. La solution que nous avons apporté au client est l’utilisation du .NET Standard qui est cette passerelle utilisable entre le .NET Framework et le .NET Core.

.NET Framework VS .NET Core : conclusion

Pour tous les nouveaux projets web, si votre analyse du cahier des charges montre qu’il n’y aura aucune utilisation du .NET Framework (exemple : références systèmes), nous vous conseillons de partir sur un projet en .NET Core. Nous pensons qu’il est l’avenir du .NET et le fait qu’il soit cross-plateform permettra de toujours avoir le choix entre Windows Server et Linux.