3
respostas

Uso do servidor IIS ou Kestrel

Boa tarde,

Realizei o curso e minha dúvida é referente ao servidor de hospedagem, na versão 2.0 do .NET CORE a classe "Program.cs" está um pouco diferente:

 public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }

Onde nesta classe que diz qual servidor usar? Ele por default usa IIS? Como falar para a minha aplicação rodar em um servidor Linux por exemplo?

Desde já agradeço, Obrigado

3 respostas

Olá, Bruno

Muito boa observação.

Por padrão, a aplicação vai rodar no Linux sobre o Kestrel, que é o servidor HTTP "in-process". Quanto a isso, você não precisa se preocupar com a classe Program acima, pois o Kestrel existe tanto para Windows quanto para Linux ou MacOS.

Só que o Kestrel vai depender de um servidor de web propriamente dito, como o Apache ou Nginx, mas isso não vimos no nosso curso da Alura.

Neste documentos, a Microsoft explica como configurar um servidor Linux Apache para hospedar uma aplicação ASP. NET Core 2.0:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/?tabs=aspnetcore2x&view=aspnetcore-2.1

https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/linux-apache?tabs=aspnetcore2x

Esse documento é suficiente pra você? Se o servidor Nginx for melhor pra você, existe este outro manual da Microsoft:

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-2.1&tabs=aspnetcore2x

Qualquer dúvida, por favor nos avise!

Olá Marcelo,

Obrigado pelo retorno, entendi parcialmente, quando executamos a aplicação local, ele utiliza o IIS Express. No momento que eu for hospedar em produção, posso hospedar normalmente no IIS ou preciso de uma configuração extra?

Olá, Bruno

Sim, pode hospedar normalmente. O IIS no servidor de produção irá rotear a chamada para a porta 80 (HTTP) ou 443 (HTTPS) para uma porta qualquer do localhost que é gerenciada pelo Kestrel.

Por exemplo:

No IIS:

http://www.meusite.com.br:80
ou
https://www.meusite.com.br:443

Vão ser roteados para o Kestrel para:

http://localhost:1234 (ou outra porta qualquer)

Então com o IIS no servidor de produção você não precisa modificar a aplicação ASP.NET Core para ela funcionar como já funciona na sua máquina de desenvolvimento. Mas aproveitando a oportunidade, a recomendação para o ambiente de produção, claro, é compilar seu código fonte como Release e não Debug.