AXOPEN

.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és, compatibilité, et différences entre les deux frameworks.

.NET framework VS .NET Core

.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 d’application dans l’environnement Windows et tous les navigateurs web. . Il fournit un certain nombre d’outils comme ADO.NET permettant l’accès aux données et respecte la norme Common Langage Infrastructure (CLI) qui décrit l’environnement d’exécution des codes de programmes.

.NET Framework logo

.NET Core, c’est quoi ?

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

 créer des applications modernes et connectées. Il est distribué par le gestionnaire de paquets « NuGET » sous forme de librairie.

Logo du .NET Core

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 palier à cela, Microsoft a ajouté une passerelle, le .NET Standard, qui permet une compatibilité entre les 2 intéressés. Nous sommes sauvés 🙂

Logo du .NET

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

Le choix de l’un ou l’autre 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 REST API ? 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 SI 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 d’adopter 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. C’est faux ! 
Par exemple, si vous voulez utiliser des références COM qui dépendent des logiciels de votre PC, ce n’est 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 n’est 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.