.NET et .NET Framework pour les applications serveur

Deux implémentations de .NET sont prises en charge pour la création d’applications côté serveur.

Implémentation Versions incluses
.NET .NET Core 1.0 - 3.1, .NET 5 et versions ultérieures de .NET
.NET Framework .NET Framework 1.0 - 4.8

Toutes deux partagent de nombreux composants et vous pouvez partager du code entre les deux. Toutefois, il existe des différences fondamentales entre les deux et votre choix dépend de ce que vous souhaitez accomplir. Cet article fournit des conseils sur l’utilisation de chacune.

Utilisez .NET pour votre application serveur quand :

  • vous avez des besoins multiplateformes ;
  • Vous ciblez des microservices
  • Vous utilisez des conteneurs Docker
  • Vous avez besoin de systèmes scalables et hautes performances.
  • Vous avez besoin de versions .NET côte à côte par application.

Utilisez .NET Framework pour votre application serveur quand :

  • Votre application utilise le .NET Framework (nous vous recommandons de privilégier l’extension à la migration).
  • Votre application utilise des packages NuGet ou des bibliothèques tiers non disponibles pour .NET
  • Votre application utilise des technologies .NET Framework non disponibles pour .NET
  • Votre application utilise une plateforme qui ne prend pas en charge .NET

Quand choisir .NET

Les sections suivantes donnent une explication plus détaillée des raisons indiquées précédemment justifiant le choix de .NET par rapport à .NET Framework.

Besoins multiplateformes

Si votre application web ou de service doit s’exécuter sur plusieurs plateformes, par exemple Windows, Linux et macOS, utilisez .NET.

.NET prend en charge les systèmes d’exploitation précédemment mentionnés comme station de travail de développement. Visual Studio fournit un environnement de développement intégré (IDE) pour Windows et macOS. Vous pouvez également utiliser Visual Studio Code, qui s’exécute sur macOS, Linux et Windows. Visual Studio Code prend en charge .NET, notamment IntelliSense et le débogage. La plupart des éditeurs tiers, tels que Sublime, Emacs et VI, fonctionnent avec .NET. Ces éditeurs tiers obtiennent l’éditeur IntelliSense en utilisant Omnisharp. Vous pouvez aussi vous affranchir des éditeurs de code et utiliser directement l’interface CLI .NET, disponible pour toutes les plateformes prises en charge.

Architecture de microservices

Une architecture en microservices permet une combinaison de technologies au-delà des limites d’un service. Cette combinaison de technologies favorise l’adoption progressive de .NET pour les nouveaux microservices qui utilisent d’autres microservices ou services. Par exemple, vous pouvez combiner des microservices ou services développés avec .NET Framework, Java, Ruby ou d’autres technologies monolithiques.

Il existe de nombreuses plateformes d’infrastructure. Azure Service Fabric est conçu pour les systèmes de microservice volumineux et complexes. Azure App Service est un bon choix pour les microservices sans état. Les alternatives aux microservices basées sur Docker s’intègrent à toute approche des microservices, comme expliqué dans la section Conteneurs. Toutes ces plateformes prennent en charge .NET et s’avèrent idéales pour l’hébergement de vos microservices.

Pour plus d’informations sur l’architecture en microservices, consultez Microservices .NET. Architecture des applications .NET conteneurisées.

Conteneurs

Les conteneurs sont couramment utilisés avec une architecture en microservices. Les conteneurs peuvent également servir à mettre en conteneur des applications ou services web qui suivent un modèle d’architecture. .NET Framework peut être utilisé sur des conteneurs Windows. Cependant, de par sa nature légère et modulaire, .NET représente un meilleur choix pour les conteneurs. Quand vous créez et déployez un conteneur, la taille de son image est beaucoup plus petite avec .NET qu’avec .NET Framework. Grâce à sa nature multiplateforme, vous pouvez déployer des applications serveur sur des conteneurs Docker Linux.

Vous pouvez héberger des conteneurs Docker dans votre propre infrastructure Windows ou Linux, ou dans un service cloud comme Azure Kubernetes Service. Azure Kubernetes Service permet de gérer, d’orchestrer et de mettre à l’échelle des applications sur conteneur dans le cloud.

Systèmes scalables et hautes performances

Quand votre système a besoin de performances et d’une scalabilité optimales, .NET et ASP.NET Core sont vos meilleures options. Le runtime serveur hautes performances pour Windows Server et Linux fait d’ASP.NET Core un framework web particulièrement puissant, d’après les bancs d’essai TechEmpower.

Niveau de performance et scalabilité sont particulièrement pertinents pour les architectures en microservices, où des centaines de microservices peuvent être en cours d’exécution. Avec ASP.NET Core, les systèmes sont exécutés avec un nombre bien inférieur de serveurs/machines virtuelles. Cette réduction engendre une baisse des coûts d’infrastructure et d’hébergement.

Versions .NET côte à côte par niveau d’application

Pour installer des applications avec des dépendances sur différentes versions de .NET, nous vous recommandons .NET. Cette implémentation prend en charge l’installation côte à côte de différentes versions du runtime .NET sur le même ordinateur. Ainsi, plusieurs services peuvent cohabiter sur le même serveur, chacun d’eux sur sa propre version de .NET. De plus, les risques et les coûts liés aux opérations informatiques et aux mises à niveau des applications s’en trouvent réduits.

L’installation côte à côte n’est pas possible avec .NET Framework. Il s’agit d’un composant Windows et une seule version peut exister sur une machine à la fois. Chaque version de .NET Framework remplace la version précédente. Si vous installez une nouvelle application qui cible une version ultérieure de .NET Framework, vous risquez d’arrêter les applications existantes qui s’exécutent sur l’ordinateur, car la version précédente a été remplacée.

Quand choisir .NET Framework

.NET offre des avantages significatifs pour les nouvelles applications et les nouveaux modèles d’application. Toutefois, .NET Framework demeure le choix évident pour de nombreux scénarios existants. Il n’est donc pas remplacé par .NET pour toutes les applications serveur.

Applications .NET Framework actuelles

Dans la plupart des cas, vous n’avez pas besoin de migrer vos applications existantes vers .NET. Nous vous recommandons plutôt d’utiliser .NET quand vous étendez une application existante, par exemple quand vous écrivez un nouveau service web dans ASP.NET Core.

Bibliothèques ou packages NuGet tiers non disponibles pour .NET

.NET Standard permet de partager du code sur toutes les implémentations de .NET, y compris .NET Core/5 (et versions ultérieures). Avec .NET Standard 2.0, un mode de compatibilité permet aux projets .NET Standard et .NET de référencer des bibliothèques .NET Framework. Pour plus d’informations, consultez Prise en charge des bibliothèques .NET Framework.

Vous devez utiliser .NET Framework seulement dans les cas où les bibliothèques ou les packages NuGet utilisent des technologies qui ne sont pas disponibles dans .NET Standard ou .NET.

Technologies .NET Framework non disponibles pour .NET

Certaines technologies .NET Framework ne sont pas disponibles dans .NET. La liste suivante présente les technologies les plus courantes non disponibles dans .NET :

  • Applications ASP.NET Web Forms : ASP.NET Web Forms est disponible uniquement dans .NET Framework. ASP.NET Core ne peut pas être utilisé pour ASP.NET Web Forms.

  • Applications pages Web ASP.NET : le framework pages Web ASP.NET n’est pas inclus dans ASP.NET Core.

  • Services liés aux workflows : Windows Workflow Foundation (WF), les services de workflow (WCF + WF dans un seul service) et WCF Data Services (anciennement « ADO.NET Data Services ») sont disponibles uniquement dans .NET Framework.

  • Prise en charge des langages : actuellement, Visual Basic et F# sont pris en charge dans .NET, mais pas pour tous les types de projet. Pour obtenir la liste des modèles de projet pris en charge, consultez Options de modèle pour dotnet new.

Pour plus d’informations, consultez Technologies .NET Framework non disponibles dans .NET.

Plateformes ne prenant pas en charge .NET

Certaines plateformes Microsoft ou tierces ne prennent pas en charge .NET. Certains services Azure fournissent un kit SDK qui n’est pas encore consommable sur .NET. Dans ce cas, vous pouvez utiliser l’API REST équivalente au lieu du SDK client.

Voir aussi