.NET Core vs .NET Framework : quelles différences ?

.NET Core offre aux développeurs de nombreuses options pour le développement d'applications. La demande de développeurs compétents dans cette technologie est énorme. Mais en quoi diffère-t-elle du .NET Framework et que devez-vous savoir pour les utiliser efficacement ?

 

Aujourd'hui, nous allons opposer .NET Core et .NET Framework pour vous aider à choisir lequel utiliser pour votre prochain projet. Dans cet article, nous expliquerons leurs principales différences et comment tirer le meilleur parti de chacun. Commençons par une mise en contexte de .NET.

 

Qu’est ce que .NET Core ? 

.NET Core est la dernière version du Framework .NET de Microsoft (Un framework est une plateforme de conception réutilisable pour les systèmes logiciels, qui fournit un support pour les bibliothèques de code et divers langages de script), qui est une plateforme de programmation gratuite, open-source et polyvalente. C'est un framework multiplateforme qui fonctionne avec Windows, Mac OS X et Linux. Le framework .NET Core peut être utilisé pour créer une variété d'applications, y compris mobiles, de bureau, en ligne, en cloud, IoT, machine learning, microservices, jeux, etc. .NET Core est écrit à partir de zéro pour en faire un Framework modulaire, léger, rapide et multiplateforme.

 

Qu’est ce que .NET Framework ? 

Le .Net Framework de Microsoft est une plateforme de développement de logiciels permettant de créer et d'exécuter des applications Windows. Il est également utilisé pour créer des sites Web, des services Web et des jeux.

 

.Net Framework a été conçu pour permettre aux développeurs de construire des programmes qui fonctionneraient sur la plateforme Windows de Microsoft et les applications .Net Framework sont des applications multiplateformes. Le framework a été décidé de telle manière qu'il peut être utilisé à partir de n'importe lequel des langages suivants : C#, C++, Visual Basic, JScript, COBOL, etc. La version initiale du framework .Net a été lancée en 2002.

 

.NET Core vs .NET Framework

Microsoft maintient les deux moteurs d'exécution pour la création d'applications avec .NET tout en partageant un grand nombre des mêmes API. Cette API partagée est appelée .NET Standard

 

Les développeurs utilisent la structure .NET pour créer des applications de bureau et de serveur Windows. Cela inclut les applications Web ASP.NET. D'autre part, .NET Core est utilisé pour créer des applications serveur qui fonctionnent sous Windows, Linux et Mac. Il ne prend actuellement pas en charge la création d'applications de bureau avec une interface utilisateur. Les développeurs peuvent écrire des applications et des bibliothèques en VB.NET, C# et F# dans les deux environnements d'exécution.

 

C# est un langage orienté objet similaire aux autres langages de type C. La courbe d'apprentissage ne devrait pas poser de problème aux développeurs qui travaillent déjà avec C et d'autres langages similaires.

 

F# est un langage multiplateforme qui utilise également la programmation orientée objet.

 

Visual Basic est disponible dans .NET Framework avec une prise en charge limitée de .NET Core avec .NET Core 2.0.

 

Quand utiliser .NET Core ?

Framework multiplateforme et open-source, .NET Core est idéal pour développer des applications sur n'importe quelle plateforme. .NET Core est utilisé pour les applications en cloud ou le remaniement de grandes applications en microservices.

 

Vous devriez utiliser .NET Core lorsque :

Il existe des besoins multiplateformes.

Utilisez-le lorsque l'application doit fonctionner sur plusieurs plates-formes telles que Windows, Linux et macOS. Ces systèmes d'exploitation sont pris en charge en tant que postes de travail de développement (et la liste des systèmes d'exploitation pris en charge s'allonge) :

  • Visual Studio est compatible sur Windows avec une nouvelle version limitée sur macOS.
  • Visual Studio Code peut être utilisé sur Windows, Linux et macOS.
  • Toutes les plateformes prises en charge permettent l'utilisation de la ligne de commande.

 

Utilisation des microservices.

Les microservices, une forme d'architecture orientée services, sont des applications logicielles composées de petits services professionnels modulaires. Chaque service peut exécuter un processus unique, être déployé indépendamment et être créé dans différentes applications de programmation. .NET Core permet un mélange de technologies, est léger et évolutif pour chaque microservice.

 

Travailler avec des conteneurs Docker.

Les conteneurs et l'architecture de microservices sont souvent utilisés ensemble. Parce qu'il est léger et modulaire, .NET Core fonctionne très bien avec les conteneurs. Vous pouvez déployer des applications serveur multi plateformes dans des conteneurs Docker. .NET Framework fonctionne avec les conteneurs, mais la taille de l'image est plus importante.

 

Vous avez besoin d'un système performant et évolutif.

Microsoft recommande d'exécuter .NET Core avec ASP.NET Core pour obtenir des performances et une évolutivité optimales. Cela devient important lorsque vous utilisez des centaines de microservices. Dans ce cas, un nombre inférieur de serveurs et de machines virtuelles est préférable. L'efficacité et l'évolutivité gagnées devraient se traduire par une meilleure expérience utilisateur, en plus des économies réalisées.

 

Vous exécutez plusieurs versions de .NET côte à côte.

Pour installer des applications qui dépendent de différentes versions de frameworks .NET, les développeurs doivent utiliser .NET Core. Plusieurs services sont exécutables sur le même serveur avec différentes versions de .NET.

 

Vous voulez contrôler l'interface de ligne de commande (CLI).

Certains développeurs préfèrent travailler dans des éditeurs légers et contrôler la ligne de commande. .NET Core dispose d'une CLI pour toutes les plateformes prises en charge et nécessite une installation minimale sur les machines de production. Et il est toujours possible de passer à un IDE, tel que Visual Studio IDE.

 

Quand ne pas utiliser .NET Core

.NET Core ne dispose pas de certaines des fonctionnalités de .NET ni du support de toutes les bibliothèques et extensions. En tant que tel, vous pouvez rencontrer quelques situations dans lesquelles .NET Core n'est peut-être pas la meilleure option (bien que le développement continu éliminera probablement cet inconvénient). Considérez les scénarios suivants :

Les applications Windows Forms et WPF ne sont pas prises en charge.

Vous devez toujours utiliser Mono pour créer une application de bureau .NET pour macOS.

 

Les formulaires Web ASP.NET n'existent pas.

Bien que Microsoft fournisse des stratégies pour la migration des applications de formulaires Web ASP.NET.

 

Vous devez créer un service WCF.

.NET Core ne prend pas actuellement en charge WCF. À la place, vous devez créer une API REST avec ASP.NET Core MVC.

 

Manque de support pour les bibliothèques tierces.

.NET Core fournit un shim de compatibilité entre .NET Framework et .NET Core. Mais vous pouvez toujours avoir des problèmes de compatibilité si la bibliothèque de classes utilise des API de .NET Framework qui ne sont pas prises en charge (bien que cela aide à faire le lien entre de nombreuses bibliothèques de classes et .NET Core).

 

Fonctions .NET Framework manquantes.

Certaines fonctionnalités de .NET Framework sont toujours manquantes dans .NET Core. Par exemple, Entity Framework Core n'est pas exactement la même chose qu'Entity Framework v6.

 

Vous devez accéder à des API spécifiques à Windows.

Si votre application doit travailler avec le registre Windows (WMI ou autres API spécifiques à Windows), elle ne fonctionnera pas avec .NET Core. Il est conçu pour être plus éloigné du système d'exploitation.

 

Prise en charge partielle de VB.NET et F#.

Microsoft et la communauté continuent de travailler sur ce point, mais ce n'est pas encore à 100 %.

 

Quand est-ce que les développeurs devraient utiliser .NET Framework ?

.NET Framework est distribué avec Windows. Il est généralement utilisé pour créer des applications de bureau Windows et des applications d'entreprise à grande échelle à l'aide d'outils de flux de travail et de connexion de données .NET.

 

Le .NET Framework fournit des services tels que :

  • La gestion de la mémoire
  • Sécurité des types et de la mémoire
  • Sécurité
  • Mise en réseau
  • Déploiement d'applications
  • Structures de données
  • APIs

 

.NET Framework peut être utilisé avec Docker et Windows Containers et est plus réalisable lorsque :

Il est déjà utilisé.

Au lieu de migrer, étendez l'application. Par exemple, les développeurs peuvent écrire un nouveau service web en ASP.NET Core.

 

Vous utilisez des bibliothèques tierces ou des packages NuGet non disponibles dans .NET Core.

Malgré la popularité de .NET Core, vous devrez utiliser le .NET Framework lorsque vous travaillerez avec des bibliothèques qui ne sont pas compatibles avec .NET Core. NuGet est le gestionnaire de paquets gratuit et open source pour .NET et les autres plateformes de développement Microsoft. L'écosystème NuGet comprend des outils clients qui permettent de produire et de consommer des paquets. Il dispose également d'un dépôt central de paquets pour les auteurs et les consommateurs de paquets. Il est disponible en tant qu'extension de Visual Studio

 

Vous utilisez des technologies qui ne sont pas encore disponibles dans .NET Core.

.NET Core ne prend pas en charge toutes les technologies .NET Framework. Ces technologies non encore disponibles comprennent :

  • Les applications ASP.NET Web Forms (aucun projet de portage)
  • Applications ASP.NET Web Pages (portage prévu)
  • Mise en œuvre du serveur/client ASP.NET SignalR (portage prévu)
  • Mise en œuvre de services WCF (pas de projet de migration, mais la question est à l'étude)
  • Services liés au workflow (aucun projet de portage), y compris Windows Workflow Foundation (WF), Workflow Services (WCF + WF en un seul service) et WCF Data Services (anciennement connus sous le nom de "ADO.NET Data Services").
  • Windows Presentation Foundation (WPF) et Windows Forms (aucun projet de portage).

 

La plateforme ne prend pas en charge .NET Core.

Là encore, toutes les plateformes Microsoft et tierces ne le prennent pas en charge, comme certains services Azure. Vous pouvez rencontrer des problèmes même avec les services pris en charge, ce qui est normal. Comme .NET Core gagne en popularité, il est de plus en plus facile de trouver des tutoriels et des solutions de contournement pour les problèmes que vous pouvez rencontrer.

 

Quand ne pas utiliser .NET Framework ?

Il existe également quelques situations dans lesquelles vous ne devez pas exécuter le .NET Framework. Il s'agit notamment des cas suivants :

  • Plusieurs plates-formes d'OS sont nécessaires
  • Des performances et une évolutivité élevées sont nécessaires
  • .NET Core fonctionne
  • Un framework open source est nécessaire

 

 

Comment passer de .NET Framework à .NET Core ?

Si et quand vous décidez de migrer votre .NET Framework vers .NET Core, suivez les étapes suivantes (après une évaluation appropriée, bien sûr) :

 

Analyser les dépendances tierces

Plus que de connaître les dépendances tierces, vous devez comprendre comment l'application fonctionne avec les dépendances tierces qui s'exécutent sur .NET Core. Vous devez également savoir ce qu'il faut faire si elles ne fonctionnent pas.

 

Les paquets NuGet sont faciles à vérifier, car ils contiennent un ensemble de dossiers pour chaque plateforme. Vous pouvez également rechercher un dossier ou une entrée sur la page Dépendances portant l'un des noms suivants :

 

Si les dépendances ne sont pas des packages NuGet, l'outil ApiPort peut vérifier la portabilité de la dépendance.

 

Depuis .NET Core 2.0, un shim de compatibilité permet de référencer les paquets .NET Framework qui n'ont pas été modifiés pour utiliser .NET Standard. Veillez à tester minutieusement ces paquets car ils peuvent encore présenter des problèmes s'ils utilisent des API non prises en charge.

 

Cibler la bibliothèque .NET Standard

La bibliothèque .NET Standard est destinée à être disponible sur tous les moteurs d'exécution .NET. Cibler la bibliothèque standard .NET est donc la meilleure façon de créer une bibliothèque de classe multiplateforme.

 

Il existe plusieurs versions à prendre en compte, qui sont disponibles à des degrés divers sur huit plateformes. Si un projet cible une version inférieure, il ne peut pas référencer un projet qui cible une version supérieure. Choisissez la version standard de .NET la plus basse possible pour l'ensemble des projets.

 

Recibler les projets

Tous les projets à porter doivent être ciblés sur .NET Framework 4.6.2. Cela permettra de s'assurer que les alternatives d'API pour les cibles spécifiques à .NET Framework peuvent être utilisées pour les API non supportées.

 

Cela se fait facilement dans Visual Studio avec une commande "Target Framework" et en recompilant les projets.

 

Portage du code de test

Le portage du code vers .NET Core est un changement important ; les tests sont fortement encouragés.

 

Utilisez un framework de test approprié tel que :

  • xUnit
  • NUnit
  • MSTest

 

Avec des outils comme xUnit, il est possible d'utiliser des modèles et de les modifier pour écrire des tests .NET Core. 

 

Exécuter le plan de portage

La meilleure façon de porter le code dépend de la façon dont le framework est structuré. Mais la décomposition de la base de code en étapes et en couches devrait bien fonctionner. Voici comment procéder :

  • Identifiez la "base" de la bibliothèque. Cette base peut être les modèles de données ou les classes et méthodes que tout le reste doit utiliser.
  • Copiez la base dans un nouveau projet .NET Core.
  • Effectuez toutes les modifications nécessaires pour compiler le code
  • Copiez une autre couche de code et répétez

 

Conclusion

Quelle que soit la version d'ASP.NET que vous choisissez pour développer votre application, sachez que, pour l'instant, l'avenir est prometteur grâce au soutien continu des entreprises et de la communauté.

 

Nous serions ravis
d'échanger avec vous  

nous contacter