Publicar aplicativos .NET
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 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 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)