Publicar aplicativos .NET

Concluído

Codificar um aplicativo com ASP.NET Core é diferente de projetar um site estático com HTML, CSS e JavaScript. Um site estático pode ser implantado em qualquer servidor Web que dê suporte a arquivos estáticos. O servidor Web não precisa processar arquivos estáticos. Ele simplesmente os disponibiliza via HTTP. Quando um navegador da Web solicita um recurso, o servidor Web simplesmente envia o arquivo ao navegador.

Um aplicativo ASP.NET Core, por outro lado, é um aplicativo Web dinâmico. Ele é executado como um programa no servidor Web. Quando o navegador da Web do usuário envia uma solicitação ao servidor Web, o servidor executa o aplicativo para gerar uma resposta e a envia ao navegador.

Publicar um aplicativo .NET é o processo de preparar o aplicativo para implantação em um servidor. Ao publicar um aplicativo .NET, você o empacota com as respectivas dependências em uma pasta que pode ser facilmente implantada. O aplicativo publicado não inclui arquivos de código-fonte, mas inclui todos os arquivos necessários para ser executado, incluindo assemblies compilados (DLLs), arquivos de configuração e quaisquer outros ativos necessários para ele. Assim, o aplicativo pode ser implantado em um servidor Web, em um serviço de nuvem ou em outro ambiente de hospedagem.

Tipos de implantação

Ao publicar um aplicativo .NET, é possível escolher entre dois tipos diferentes de implantações: dependente de estrutura e autossuficiente. O tipo de implantação escolhido afeta como o aplicativo é empacotado e implantado.

Implantação dependente de estrutura

Uma animação mostrando como uma implantação dependente de estrutura depende da presença do runtime do .NET no computador de destino.

Uma implantação dependente de estrutura inclui somente os arquivos e dependências do aplicativo. Ela não inclui o runtime do .NET. Em vez disso, a máquina de destino deve ter o runtime .NET instalado para executar o aplicativo. Esse tipo de implantação é o padrão para aplicativos .NET.

Implantação autossuficiente

Uma animação mostrando como uma implantação autossuficiente inclui o runtime do .NET com o aplicativo.

Uma implantação autossuficiente inclui os arquivos e as dependências do aplicativo, além do runtime do .NET. O runtime do .NET está incluído no aplicativo, portanto a máquina de destino não precisa tê-lo instalado para executar o aplicativo. Incluir o runtime torna as implantações autossuficientes maiores do que as dependentes de estrutura, mas também as torna mais portáteis. Isso também facilita a execução de diversas versões do runtime do .NET lado a lado no mesmo computador.

Escolher um tipo de implantação

O tipo de implantação escolhido depende dos requisitos do aplicativo e do ambiente de destino. Considere os seguintes fatores ao escolher um tipo de implantação:

Tipo de implantação

Vantagens

Desvantagens

Dependente da estrutura

  • Tamanho de implantação menor
  • Tempos de implantação mais rápidos
  • Usa o runtime do .NET instalado no computador de destino, independentemente do sistema operacional
  • Requer que o runtime do .NET seja instalado no computador de destino
  • Requer o gerenciamento das versões do runtime do .NET instaladas no computador de destino

Autossuficientes

  • Não há necessidade de instalar o runtime do .NET no computador de destino
  • Mais fácil de executar diversas versões do .NET lado a lado
  • Tamanho de implantação maior
  • Tempos de implantação mais lentos
  • As atualizações do runtime do .NET devem ser implantadas com o aplicativo

Onde implantar o aplicativo

Depois de publicar o aplicativo, é possível implantá-lo em qualquer ambiente compatível com ASP.NET Core. Veja algumas opções:

Kestrel

Por padrão, os aplicativos ASP.NET Core são executados no servidor Web interno do ASP.NET Core, o Kestrel. O Kestrel é multiplataforma e ajustado para alto desempenho. Ele aceita todos os recursos modernos de servidor Web, incluindo HTTPS, HTTP/2, HTTP/3 e WebSockets. Ele também é personalizável e extensível, para que seja possível configurá-lo para atender às necessidades do aplicativo. O Kestrel é o servidor Web recomendado para aplicativos ASP.NET Core.

Como o Kestrel é integrado ao ASP.NET Core, é possível implantar o aplicativo em qualquer computador capaz de executar .NET, incluindo Windows, macOS e Linux. O Kestrel funciona muito bem sozinho, mas os aplicativos executados nele geralmente são implantados com a proteção de um servidor proxy reverso, como os IIS (Serviços de Informações da Internet), o Nginx ou o Apache. O servidor proxy reverso lida com as solicitações recebidas da Internet e as encaminha ao Kestrel. Com isso, é possível utilizar os recursos do servidor proxy reverso, como balanceamento de carga, armazenamento em cache e terminação SSL.

Serviços de Informações da Internet (IIS)

Para implantações no Windows, é possível hospedar o aplicativo ASP.NET Core no IIS. Para isso, é preciso instalar o módulo do ASP.NET Core para IIS. Esse módulo encaminha solicitações do IIS para o Kestrel, que executa o aplicativo. Com isso, é possível utilizar os recursos do IIS, como gerenciamento de processos, registro em log e segurança.

Contêineres

Para implantações em um ambiente conteinerizado, você pode empacotar o aplicativo ASP.NET Core como um contêiner do Docker. Assim, é possível executar o aplicativo em qualquer ambiente de execução de contêiner compatível com Docker, como o Docker Desktop, o Docker Enterprise ou o Kubernetes. Os contêineres são portáteis e escalonáveis, portanto você pode executar o aplicativo em qualquer computador compatível com Docker, independentemente do sistema operacional.

Azure

Para implantações no Azure, é possível hospedar o aplicativo ASP.NET Core no Serviço de Aplicativo do Azure ou nos Aplicativos de Contêiner do Azure. Diversas ferramentas facilitam a implantação do aplicativo no Azure por meio da linha de comando. Essas ferramentas incluem:

  • Extensão de ferramentas do Azure para Visual Studio Code
  • Visual Studio
  • CLI do Azure
  • Azure Developer CLI (azd)