Implantação de um aplicativo .NET Core.NET Core application deployment

É possível criar três tipos de implantações de aplicativos do .NET Core:You can create three types of deployments for .NET Core applications:

  • Implantação dependente de estrutura.Framework-dependent deployment. Como o nome indica, a FDD (implantação dependente de estrutura) se baseia na presença de uma versão compartilhada em todo o sistema do .NET Core no sistema de destino.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. Como o .NET Core já está presente, seu aplicativo também é portátil entre instalações do .NET Core.Because .NET Core is already present, your app is also portable between installations of .NET Core. Seu aplicativo conterá somente seu próprio código e as dependências de terceiros que estiverem fora de bibliotecas .NET Core.Your app contains only its own code and any third-party dependencies that are outside of the .NET Core libraries. As FDDs contêm arquivos .dll que podem ser iniciados por meio do utilitário dotnet na linha de comando.FDDs contain .dll files that can be launched by using the dotnet utility from the command line. Por exemplo, dotnet app.dll executa um aplicativo chamado app.For example, dotnet app.dll runs an application named app.

  • Implantação autocontida.Self-contained deployment. Ao contrário da FDD, a SCD (implantação autocontida) não se baseia na presença de componentes compartilhados no sistema de destino.Unlike FDD, a self-contained deployment (SCD) doesn't rely on the presence of shared components on the target system. Todos os componentes, inclusive as bibliotecas e o tempo de execução do .NET Core, são incluídos com o aplicativo e isolados de outros aplicativos .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. As SCDs incluem um arquivo executável (como o app.exe em plataformas Windows para um aplicativo chamado app), que é uma versão renomeada do host específico da plataforma .NET Core, e um arquivo .dll (como app.dll), que é o aplicativo real.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.

  • Arquivos executáveis dependentes de estrutura.Framework-dependent executables. Produz um arquivo executável que é executado em uma plataforma de destino.Produces an executable that runs on a target platform. Semelhante a FDDs, os arquivos executáveis dependentes de estrutura (FDE) são específicos da plataforma e não são independentes.Similar to FDDs, framework-dependent executables (FDE) are platform-specific and aren't self-contained. Essas implantações ainda dependem da presença de uma versão do .NET Core compartilhada em todo o sistema para serem executadas.These deployments still rely on the presence of a shared system-wide version of .NET Core to run. Ao contrário de um SCD, seu aplicativo conterá apenas seu código e as dependências de terceiros que estiverem fora de bibliotecas .NET Core.Unlike an SCD, your app only contains your code and any third-party dependencies that are outside of the .NET Core libraries. FDEs produzem um arquivo executável que é executado na plataforma de destino.FDEs produce an executable that runs on the target platform.

FDD (implantação dependente de estrutura)Framework-dependent deployments (FDD)

Para uma FDD, seu aplicativo é implantado apenas em dependências de terceiros.For an FDD, you deploy only your app and third-party dependencies. Seu aplicativo usará a versão do .NET Core presente no sistema de destino.Your app will use the version of .NET Core that's present on the target system. Esse é o modelo de implantação padrão para aplicativos .NET Core e ASP.NET Core direcionados ao .NET Core.This is the default deployment model for .NET Core and ASP.NET Core apps that target .NET Core.

Por que criar uma implantação dependente de estrutura?Why create a framework-dependent deployment?

Implantar uma FDD traz uma série de vantagens:Deploying an FDD has a number of advantages:

  • Você não precisa definir previamente em quais sistemas operacionais de destino o aplicativo .NET Core será executado.You don't have to define the target operating systems that your .NET Core app will run on in advance. Como o .NET Core usa um formato comum de arquivo PE comum para executáveis e bibliotecas independentemente do sistema operacional, ele pode executar seu aplicativo independentemente do sistema operacional subjacente.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. Para obter mais informações sobre o formato de arquivo PE, consulte Formato de Arquivo do Assembly .NET.For more information on the PE file format, see .NET Assembly File Format.

  • O tamanho do seu pacote de implantação é pequeno.The size of your deployment package is small. Você deve implantar apenas o aplicativo e as respectivas dependências, mas não o .NET Core em si.You only deploy your app and its dependencies, not .NET Core itself.

  • A menos que substituídas, as FDDs usarão o tempo de execução mais recente instalado no sistema de destino.Unless overridden, FDDs will use the latest serviced runtime installed on the target system. Isso permite que seu aplicativo use a versão corrigida mais atual do tempo de execução do .NET Core.This allows your application to use the latest patched version of the .NET Core runtime.

  • Vários aplicativos usam a mesma instalação do .NET Core, o que reduz o uso de memória e espaço em disco nos sistemas host.Multiple apps use the same .NET Core installation, which reduces both disk space and memory usage on host systems.

Contudo, também há algumas desvantagens:There are also a few disadvantages:

  • Seu aplicativo poderá ser executado somente se a versão do .NET Core que seu aplicativo visa, ou uma versão posterior, já estiver instalada no sistema host.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.

  • É possível que o tempo de execução e as bibliotecas do .NET Core sejam alteradas em versões futuras, sem seu conhecimento.It's possible for the .NET Core runtime and libraries to change without your knowledge in future releases. Em casos raros, isso pode alterar o comportamento do seu aplicativo.In rare cases, this may change the behavior of your app.

SCD (implantação autocontida)Self-contained deployments (SCD)

No caso de uma implantação autocontida, você implanta o aplicativo e as dependências de terceiros necessárias, juntamente com a versão do .NET Core que usou para criar o aplicativo.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. A criação de uma SCD não inclui as dependências nativas do .NET Core de várias plataformas, por isso elas devem estar presentes antes de executar o aplicativo.Creating an SCD doesn't include the native dependencies of .NET Core on various platforms, so these must be present before the app runs. Para saber mais sobre associação de versão em tempo de execução, confira o artigo sobre associação de versão no .NET Core.For more information on version binding at runtime, see the article on version binding in .NET Core.

Começando com o SDK do .NET Core 2.1 (versão 2.1.300), o .NET Core é compatível com roll forward da versão de patch.Starting with NET Core 2.1 SDK (version 2.1.300), .NET Core supports patch version roll forward. Ao criar uma implantação autocontida, as ferramentas do .NET Core incluem automaticamente o tempo de execução de manutenção mais recente da versão do .NET Core que seu aplicativo utiliza.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. (O tempo de execução de manutenção mais recente inclui patches de segurança e outras correções de bug.) O tempo de execução de manutenção não precisa estar presente em seu sistema de compilação; ele é baixado automaticamente do NuGet.org. Para saber mais, incluindo instruções sobre como recusar o roll-forward da versão de patch, confira Roll forward de tempo de execução de implantação autocontida.(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.

Implantações FDD e SCD usam executáveis de host separadas, para que você possa assinar um executável de host para um SCD com sua assinatura do publicador.FDD and SCD deployments use separate host executables, so you can sign a host executable for an SCD with your publisher signature.

Por que fazer uma implantação autocontida?Why deploy a self-contained deployment?

Implantar uma implantação autocontida apresenta duas vantagens principais:Deploying a Self-contained deployment has two major advantages:

  • Você tem controle exclusivo sobre a versão do .NET Core que é implantada com seu aplicativo.You have sole control of the version of .NET Core that is deployed with your app. A manutenção do .NET Core só pode ser feita por você..NET Core can be serviced only by you.

  • É possível ter certeza de que o sistema de destino pode executar seu aplicativo .NET Core, visto que você está fornecendo a versão do .NET Core na qual ele é executado.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.

Ela também apresenta algumas desvantagens:It also has a number of disadvantages:

  • Como o .NET Core é incluído no seu pacote de implantação, você deve selecionar previamente as plataformas de destino para as quais você criará pacotes de implantação.Because .NET Core is included in your deployment package, you must select the target platforms for which you build deployment packages in advance.

  • O tamanho do seu pacote de implantação é relativamente grande, visto que você precisa incluir o .NET Core, bem como seu aplicativo e suas dependências de terceiros.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.

    A partir do .NET Core 2.0, você pode reduzir o tamanho da sua implantação em sistemas Linux em aproximadamente 28 MB usando o modo invariável de globalização do .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. Normalmente, o .NET Core no Linux se baseia nas bibliotecas de ICU para suporte à globalização.Ordinarily, .NET Core on Linux relies on the ICU libraries for globalization support. No modo invariável, as bibliotecas não são incluídas na implantação e todas as culturas se comportam como a cultura invariável.In invariant mode, the libraries are not included with your deployment, and all cultures behave like the invariant culture.

  • Implantar vários aplicativos .NET Core autocontidos em um sistema pode consumir um volume significativo de espaço em disco, visto que cada aplicativo duplica os arquivos do .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.

Arquivos executáveis dependentes de estrutura (FDE)Framework-dependent executables (FDE)

A partir do .NET Core 2.2, você pode implantar seu aplicativo como um FDE, juntamente com quaisquer dependências de terceiros necessárias.Starting with .NET Core 2.2, you can deploy your app as an FDE, along with any required third-party dependencies. Seu aplicativo usará a versão do .NET Core instalada no sistema de destino.Your app will use the version of .NET Core that's installed on the target system.

Por que implantar um arquivo executável dependente de estrutura?Why deploy a framework-dependent executable?

Implantar um FDE traz uma série de vantagens:Deploying an FDE has a number of advantages:

  • O tamanho do seu pacote de implantação é pequeno.The size of your deployment package is small. Você deve implantar apenas o aplicativo e as respectivas dependências, mas não o .NET Core em si.You only deploy your app and its dependencies, not .NET Core itself.

  • Vários aplicativos usam a mesma instalação do .NET Core, o que reduz o uso de memória e espaço em disco nos sistemas host.Multiple apps use the same .NET Core installation, which reduces both disk space and memory usage on host systems.

  • Seu aplicativo pode ser executado chamando o arquivo executável publicado sem invocar o utilitário dotnet diretamente.Your app can be run by calling the published executable without invoking the dotnet utility directly.

Contudo, também há algumas desvantagens:There are also a few disadvantages:

  • Seu aplicativo poderá ser executado somente se a versão do .NET Core que seu aplicativo visa, ou uma versão posterior, já estiver instalada no sistema host.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.

  • É possível que o tempo de execução e as bibliotecas do .NET Core sejam alteradas em versões futuras, sem seu conhecimento.It's possible for the .NET Core runtime and libraries to change without your knowledge in future releases. Em casos raros, isso pode alterar o comportamento do seu aplicativo.In rare cases, this may change the behavior of your app.

  • Você deve publicar seu aplicativo para cada plataforma de destino.You must publish your app for each target platform.

Exemplos passo a passoStep-by-step examples

Para obter exemplos passo a passo de como implantar aplicativos .NET Core com ferramentas da CLI, confira o artigo Implantação de aplicativos .NET Core com ferramentas da CLI.For step-by-step examples of deploying .NET Core apps with CLI tools, see Deploying .NET Core Apps with CLI Tools. Para obter exemplos passo a passo de como implantar aplicativos .NET Core com o Visual Studio, confira o artigo Implantação de aplicativos .NET Core com o Visual Studio.For step-by-step examples of deploying .NET Core apps with Visual Studio, see Deploying .NET Core Apps with Visual Studio.

Consulte tambémSee also