Busca avançada

Voando baixo com suas aplicações ASP.NET Core no IIS

quinta-feira, 17 de maio de 2018 por Eduardo Spaki
Voando baixo com suas aplicações ASP.NET Core no IIS

Muito se fala do .NET Core ultimamente. E é porque ele é bom mesmo: leve, rápido e bem mais fácil, podendo apenas usar o VS Code para desenvolver uma aplicação.

Cheguei a ler outro dia algo como: Se você irá iniciar um novo projeto, faça-o em .NET Core, pois o .NET Framework está ultrapassado.

O fato é que a plataforma evoluiu muito rápido, por isso é espantoso como as coisas amadureceram recentemente. Às vezes toda essa novidade bota em cheque se a plataforma já é robusta o suficiente para aguentar uma aplicação real.

E é aqui que entra em cena uma questão importante: como colocar uma aplicação .NET Core em produção (fazer o deploy, em outras palavras). Quem tentou simplesmente jogar a pasta com os arquivos no IIS viu que não é bem assim. Mas isso não quer dizer que a coisa complicou, apenas mudou um pouco… e mudanças, muitas vezes compensam e são bem vindas.

Vamos contextualizar um pouco o .NET, antes de mais nada:

•    .NET Framework: É uma plataforma de desenvolvimento de software com ambiente/memória gerenciado e frameworks básicos para aplicações web, formulários windows, independente da linguagem, mas dependentes do Microsoft Windows (facilitando e muito o acesso às APIs do próprio Sistema Operacional - SO).
•    .NET Core: Uma re-implementação do .NET, focado no que ele precisa para produzir uma aplicação básica, independente de UI e SO (O que a torna compatível com Windows, Mac e Linux - incluindo Docker).
•    .NET Standard: Apesar do uso do .NET Core ser extremamente similar ao uso do .NET Framework, eles não são a mesma coisa! Você não consegue rodar coisas compiladas em .NET Framework, dentro de uma aplicação .NET Core, por exemplo. Para isso, foi criado o .NET Standard, onde é possível construir bibliotecas que podem ser usadas tanto no .NET Framework, .NET Core e até mesmo no Xamarin (Mobile).
•    ASP.NET: O Subset do .NET para aplicações web.
•    ASP.NET MVC: Para se construir aplicações web seguindo os princípios Model-View-Controller.
•    ASP.NET MVC WebAPI: Para construir APIs RESTFull, aproveitando alguns conceitos do MVC.

O .NET Core pode ser usado em aplicações ASP.NET (MVC e WebAPI). E como é de se esperar, quando se desenvolve uma aplicação web, é necessário algum servidor de aplicações, tais como: IIS, Apache, Nginx etc. Porém, como o .NET Core era completamente escrito do zero e novo, resolveram não se preocupar muito com o legado, e criaram o Kestrel, um novo App Server. O lado bom disso é que focaram em desempenho :)

Então você pode usar o Kestrel sozinho: Apenas iniciando sua aplicação e liberando a porta no firewall - ou pode fazer um proxy reverso com o IIS (ou outro app server de sua preferência). Tornando possível o uso do Kestrel como um módulo no IIS.

Para relembrar: Instalando o IIS

Para instalar o IIS no Windows, você deve ir via configurações/painel de controle em: Adicionar Recursos ao Windows (Windows Features) e marcar o “Internet Information Services”:

Repare que ao marcá-lo, automaticamente alguns itens são marcados, outros não. Isso porque nem tudo é necessário, como por exemplo um módulo FTP. Caso deseje esse módulo, ou outro, você pode marcá-lo também, ou voltar e marcar quando necessário.

Se você tem a necessidade de rodar aplicações .NET Framework também, pode marcar seus módulos, como na imagem à seguir:

Instalação do .NET Core Windows Server hosting

Antes de publicar sua aplicação, você precisa instalar o .NET Core 2.0 Windows server hosting para o IIS. O download pode ser feito nesse link: https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.0-download.md#windows-server-hosting

Após a instalação, é recomendável efetuar os seguintes comandos para “reiniciar” o IIS:

•    net stop was /y
•    net start w3svc

Com isso, seu Windows estará pronto para receber sua aplicação .NET Core.

Registrando sua aplicação web/site no IIS

Com o IIS instalado é possível registrar sua aplicação lá dentro.

Primeiro você deve criar um novo “pool”. Entenda um pool como um ambiente onde você consegue gerenciar vários sites ao mesmo tempo. No caso do .NET Core, quem gerencia a memória é o Kestrel, portanto o “pool” deve ser “não gerenciado” (diferente do .NET Framework).

Agora vamos criar um “site”, usando esse pool:

Você pode verificar se está tudo em ordem com seu IIS, abrindo os Módulos (“Modules”) de seu site, e verificar que há um módulo chamado “AspNetCoreModule”:

Seu site .NET Core já está criado, basta apenas agora compilar e jogar os arquivos no diretório que você configurou na criação do site.

Compilando e publicando

Para compilar e publicar sua aplicação ASP.NET Core, basta via prompt navegar até o diretório de seu projeto e digitar o comando “dotnet publish”:

O parâmetro “-o” indica a pasta de destino.

Feito isso, ao abrir seu site (seguindo endereço e porta informados na criação do site) você já deve ter sua aplicação ASP.NET Core 100% funcionando :)

Conclusão

Aqui na Code 21, todos os projetos novos tenho coordenado para que sejam desenvolvidos em .NET Core, até mesmo pela facilidade de colocá-lo em um container na nuvem, independente do Cloud Provider.

Lógico que há casos onde temos servidores on-premises nos clientes, bastando realizar as configurações citadas para que as aplicações voem baixo nos servidores.