Déploiement d’applications .NET Core.NET Core application deployment

Vous pouvez créer trois types de déploiement pour les applications .NET Core :You can create three types of deployments for .NET Core applications:

  • Déploiement dépendant du framework.Framework-dependent deployment. Comme son nom l’indique, un déploiement dépendant du framework s’appuie sur la présence d’une version partagée à l’échelle du système de .NET Core sur le système cible.As the name implies, framework-dependent deployment (FDD) relies on the presence of a shared system-wide version of .NET Core on the target system. Comme .NET Core est déjà présent, votre application est également portable entre des installations de .NET Core.Because .NET Core is already present, your app is also portable between installations of .NET Core. Votre application contient seulement son propre code et les dépendances tierces qui sont en dehors des bibliothèques .NET Core.Your app contains only its own code and any third-party dependencies that are outside of the .NET Core libraries. Les déploiements dépendant du framework contiennent des fichiers .dll qui peuvent être lancés avec l’utilitaire dotnet à partir de la ligne de commande.FDDs contain .dll files that can be launched by using the dotnet utility from the command line. Par exemple, dotnet app.dll exécute une application nommée app.For example, dotnet app.dll runs an application named app.

  • Déploiement autonome.Self-contained deployment. Contrairement à un déploiement dépendant du framework, un déploiement autonome ne s’appuie sur la présence d’aucun composant partagé sur le système cible.Unlike FDD, a self-contained deployment (SCD) doesn't rely on the presence of shared components on the target system. Tous les composants, notamment les bibliothèques .NET Core et le runtime .NET Core, sont inclus avec l’application et sont isolées des autres applications .NET Core.All components, including both the .NET Core libraries and the .NET Core runtime, are included with the application and are isolated from other .NET Core applications. Les déploiements autonomes incluent un fichier exécutable (comme app.exe sur les plateformes Windows pour une application nommée app), qui est une version renommée de l’hôte .NET Core spécifique à la plateforme, et un fichier .dll (comme app.dll), qui est l’application elle-même.SCDs include an executable (such as app.exe on Windows platforms for an application named app), which is a renamed version of the platform-specific .NET Core host, and a .dll file (such as app.dll), which is the actual application.

  • Exécutables dépendant du framework.Framework-dependent executables. Produit un exécutable qui s’exécute sur une plateforme cible.Produces an executable that runs on a target platform. Tout comme les déploiements dépendant du framework (FDD), les exécutables dépendant du framework (FDE) sont spécifiques à la plateforme et ne sont pas autonomes.Similar to FDDs, framework-dependent executables (FDE) are platform-specific and aren't self-contained. Ces déploiements utilisent toujours une version .NET Core partagée à l’échelle du système pour s’exécuter.These deployments still rely on the presence of a shared system-wide version of .NET Core to run. Contrairement à un SCD, votre application contient seulement son propre code et les éventuelles dépendances tierces situées à l’extérieur des bibliothèques .NET Core.Unlike an SCD, your app only contains your code and any third-party dependencies that are outside of the .NET Core libraries. Les FDE produisent un fichier exécutable qui s’exécute sur la plateforme cible.FDEs produce an executable that runs on the target platform.

Déploiements dépendant du frameworkFramework-dependent deployments (FDD)

Pour un déploiement dépendant du framework, vous déployez seulement votre application et les dépendances tierces.For an FDD, you deploy only your app and third-party dependencies. Votre application utilisera la version de .NET Core présente sur le système cible.Your app will use the version of .NET Core that's present on the target system. Il s’agit du modèle de déploiement par défaut pour les applications .NET Core et ASP.NET Core qui ciblent .NET Core.This is the default deployment model for .NET Core and ASP.NET Core apps that target .NET Core.

Pourquoi créer un déploiement dépendant du framework ?Why create a framework-dependent deployment?

Un déploiement dépendant du framework présente plusieurs avantages :Deploying an FDD has a number of advantages:

  • Vous n’avez pas à définir à l’avance les systèmes d’exploitation cible sur lesquels votre application .NET Core s’exécutera.You don't have to define the target operating systems that your .NET Core app will run on in advance. Comme .NET Core utilise un format de fichier PE commun pour les fichiers exécutables et les bibliothèques quel que soit le système d’exploitation, .NET Core peuvent exécuter votre application quel que soit le système d’exploitation sous-jacent.Because .NET Core uses a common PE file format for executables and libraries regardless of operating system, .NET Core can execute your app regardless of the underlying operating system. Pour plus d’informations sur le format de fichier PE, consultez Format de fichier d’assembly .NET.For more information on the PE file format, see .NET Assembly File Format.

  • Votre package de déploiement est de petite taille.The size of your deployment package is small. Vous déployez seulement votre application et ses dépendances, et non pas .NET Core lui-même.You only deploy your app and its dependencies, not .NET Core itself.

  • À moins qu’ils ne soient remplacés, les FDD utiliseront le dernier runtime pris en charge installé sur le système cible.Unless overridden, FDDs will use the latest serviced runtime installed on the target system. Cela permet à votre application d’utiliser la dernière version corrigée du runtime .NET Core.This allows your application to use the latest patched version of the .NET Core runtime.

  • Plusieurs applications utilisent la même installation de .NET Core, ce qui réduit l’utilisation de l’espace disque et de la mémoire sur les systèmes hôtes.Multiple apps use the same .NET Core installation, which reduces both disk space and memory usage on host systems.

Il existe également quelques inconvénients :There are also a few disadvantages:

  • Votre application peut s’exécuter seulement si la version de .NET Core ciblée par votre application, ou une version ultérieure, est déjà installée sur le système hôte.Your app can run only if the version of .NET Core your app targets, or a later version, is already installed on the host system.

  • Il est possible que le runtime et les bibliothèques .NET Core changent sans que vous le sachiez dans les versions futures.It's possible for the .NET Core runtime and libraries to change without your knowledge in future releases. Dans de rares cas, ceci peut changer le comportement de votre application.In rare cases, this may change the behavior of your app.

Déploiements autonomesSelf-contained deployments (SCD)

Pour un déploiement autonome, vous déployez votre application et les dépendances tierces requises, ainsi que la version de .NET Core utilisée pour générer l’application.For a self-contained deployment, you deploy your app and any required third-party dependencies along with the version of .NET Core that you used to build the app. La création d’un déploiement autonome n’inclut pas les dépendances natives de .NET Core sur les différentes plateformes. Ces services doivent donc être présents avant l’exécution de l’application.Creating an SCD doesn't include the native dependencies of .NET Core on various platforms, so these must be present before the app runs. Pour plus d’informations sur la liaison de version lors de l’exécution, consultez l’article sur la liaison de version dans .NET Core.For more information on version binding at runtime, see the article on version binding in .NET Core.

À compter du SDK (version 2.1.300) de NET Core 2.1, .NET Core prend en charge la restauration par progression d’une version de correctif.Starting with NET Core 2.1 SDK (version 2.1.300), .NET Core supports patch version roll forward. Lorsque vous créez un déploiement autonome, les outils .NET Core incluent automatiquement le dernier runtime pris en charge de la version .NET Core que votre application cible.When you create a self-contained deployment, .NET Core tools automatically include the latest serviced runtime of the .NET Core version that your application targets. (Le dernier runtime pris en charge inclut des correctifs de sécurité et d’autres correctifs de bogues.) Le runtime pris en charge ne doit pas nécessairement être présent sur votre système de génération. Il est automatiquement téléchargé à partir de NuGet.org. Pour plus d’informations, notamment des instructions sur la façon de refuser la restauration par progression d’une version de correctif, consultez Restaurer par progression un runtime à déploiement autonome.(The latest serviced runtime includes security patches and other bug fixes.) The serviced runtime does not have to be present on your build system; it is downloaded automatically from NuGet.org. For more information, including instructions on how to opt out of patch version roll forward, see Self-contained deployment runtime roll forward.

Les déploiements dépendant de l’infrastructure (FDD) et les déploiements autonomes (SCD) utilisent des exécutables d’hôte distincts : vous pouvez donc signer un exécutable d’hôte pour un déploiement SCD avec votre signature de publieur.FDD and SCD deployments use separate host executables, so you can sign a host executable for an SCD with your publisher signature.

Pourquoi déployer un déploiement autonome ?Why deploy a self-contained deployment?

Le déploiement d’un déploiement autonome a deux avantages majeurs :Deploying a Self-contained deployment has two major advantages:

  • Vous avez le contrôle exclusif de la version de .NET Core qui est déployée avec votre application.You have sole control of the version of .NET Core that is deployed with your app. Vous pouvez vous-même assurer toute la maintenance de .NET Core..NET Core can be serviced only by you.

  • Vous avez la garantie que le système cible peut exécuter votre application .NET Core puisque vous fournissez la version du .NET Core sur laquelle elle est exécutée.You can be assured that the target system can run your .NET Core app, since you're providing the version of .NET Core that it will run on.

Elle a également plusieurs inconvénients :It also has a number of disadvantages:

  • Comme .NET Core est inclus dans votre package de déploiement, vous devez choisir à l’avance les plateformes cibles pour lesquels vous générez des packages de déploiement.Because .NET Core is included in your deployment package, you must select the target platforms for which you build deployment packages in advance.

  • La taille de votre package de déploiement est relativement importante car vous devez inclure .NET Core ainsi que votre application et ses dépendances tierces.The size of your deployment package is relatively large, since you have to include .NET Core as well as your app and its third-party dependencies.

    À compter de .NET Core 2.0, vous pouvez réduire la taille de votre déploiement sur les systèmes Linux d’environ 28 Mo à l’aide du mode de globalisation invariant de .NET Core.Starting with .NET Core 2.0, you can reduce the size of your deployment on Linux systems by approximately 28 MB by using .NET Core globalization invariant mode. En règle générale, .NET Core sur Linux s’appuie sur les bibliothèques ICU pour la prise en charge de la globalisation.Ordinarily, .NET Core on Linux relies on the ICU libraries for globalization support. En mode invariant, les bibliothèques ne sont pas incluses dans votre déploiement, et toutes les cultures se comportent comme la culture invariante.In invariant mode, the libraries are not included with your deployment, and all cultures behave like the invariant culture.

  • Le déploiement de nombreuses applications .NET Core autonomes sur un système peut consommer une quantité significative d’espace disque car chaque application duplique les fichiers de .NET Core.Deploying numerous self-contained .NET Core apps to a system can consume significant amounts of disk space, since each app duplicates .NET Core files.

Exécutables dépendant du framework (FDE)Framework-dependent executables (FDE)

À compter de .NET Core 2.2, vous pouvez déployer votre application en tant que FDE, ainsi que toutes les dépendances tierces requises.Starting with .NET Core 2.2, you can deploy your app as an FDE, along with any required third-party dependencies. Votre application utilisera la version de .NET Core installée sur le système cible.Your app will use the version of .NET Core that's installed on the target system.

Pourquoi déployer un exécutable dépendant du framework ?Why deploy a framework-dependent executable?

Un déploiement dépendant du framework présente plusieurs avantages :Deploying an FDE has a number of advantages:

  • Votre package de déploiement est de petite taille.The size of your deployment package is small. Vous déployez seulement votre application et ses dépendances, et non pas .NET Core lui-même.You only deploy your app and its dependencies, not .NET Core itself.

  • Plusieurs applications utilisent la même installation de .NET Core, ce qui réduit l’utilisation de l’espace disque et de la mémoire sur les systèmes hôtes.Multiple apps use the same .NET Core installation, which reduces both disk space and memory usage on host systems.

  • Votre application peut être exécutée en appelant l’exécutable publié, sans appeler directement l’utilitaire dotnet.Your app can be run by calling the published executable without invoking the dotnet utility directly.

Il existe également quelques inconvénients :There are also a few disadvantages:

  • Votre application peut s’exécuter seulement si la version de .NET Core ciblée par votre application, ou une version ultérieure, est déjà installée sur le système hôte.Your app can run only if the version of .NET Core your app targets, or a later version, is already installed on the host system.

  • Il est possible que le runtime et les bibliothèques .NET Core changent sans que vous le sachiez dans les versions futures.It's possible for the .NET Core runtime and libraries to change without your knowledge in future releases. Dans de rares cas, ceci peut changer le comportement de votre application.In rare cases, this may change the behavior of your app.

  • Vous devez publier votre application pour chaque plateforme cible.You must publish your app for each target platform.

Exemples étape par étapeStep-by-step examples

Pour obtenir des exemples étape par étape de déploiement d’applications .NET Core avec les outils de l’interface CLI, consultez Déploiement d’applications .NET Core avec des outils CLI.For step-by-step examples of deploying .NET Core apps with CLI tools, see Deploying .NET Core Apps with CLI Tools. Pour obtenir des exemples étape par étape de déploiement d’applications .NET Core avec Visual Studio, consultez Déploiement d’applications .NET Core avec Visual Studio.For step-by-step examples of deploying .NET Core apps with Visual Studio, see Deploying .NET Core Apps with Visual Studio.

Voir aussiSee also