ASP.NET
Core - O servidor web Kestrel
![]() |
Neste artigo veremos o Web Server Kestrel e sua atuação na ASP .NET Core. |
A forma como hospedamos nosso aplicativo na ASP.NET Core passou por algumas mudanças drásticas em comparação com a versão anterior da ASP.NET. (Veja a primeira parte do artigo)
O Kestrel é a nova maneira de hospedar as aplicações na ASP.NET Core Application. Ele é executado dentro do processo do aplicativo, tornando-o completamente autocontido (self-contained).
O que é o Kestrel
O Kestrel é um servidor HTTP baseado em E/S assíncrona, em eventos, de código aberto e multiplataforma. Ele foi desenvolvido para hospedar aplicações ASP.NET Core em qualquer plataforma, e, está incluído por padrão nas aplicações ASP.NET Core.
Ele é baseado no libuv sendo de código aberto e esta diponível no GitHub.
O Kestrel dá suporte aos seguintes cenários:
Porque usar o Kestrel ?
Os aplicativos
ASP.NET mais antigos são fortemente acoplados ao IIS -
Information Internet Service.
O IIS é um servidor da Web completo com todos os recursos que você precisa de um
servidor da Web. Ao longo do tempo ele se tornou um servidor web maduro e
estável, e, adicionou muitos recurso o que o tornou pesado. Tornou-se um dos
melhores servidores da Web e, ao mesmo tempo, é um dos mais lentos.
Assim, as aplicações ASP.NET estavam fortemente acopladas com o IIS e carregava
o peso do IIS.
Com a ASP .NET Core isso mudou.
As aplicações ASP.NET Core agora estão completamente desacopladas do IIS. Esse desacoplamento faz com que o ASP.NET Core seja executado em qualquer plataforma : Windows, Mac ou Linux.
Ocorre que as aplicações ASP .NET Core ainda precisam ter a capacidade de ouvir e atender solicitações HTTP e enviar a resposta de volta para o cliente. É aí que entra Kestrel.
Usando o Kestrel
O servidor
Kestrel é executado in-process no
ASP .NET Core Applications. Portanto, ele é
executado independentemente do ambiente no qual reside; ele esta disponível no
namespace Microsoft.AspNetCore.Server.Kestrel.
Vamos dar uma espiada nas classes Program e Startup
de uma aplicação ASP .NET Core criada com o template Empty, ou se uma aplicação
vazia. (veja o artigo anterior)
A classe Program contém o método Main estático, que é o ponto de entrada para o nosso aplicativo.
O método
Main chama
CreateDefaultBuilder, responsável por criar o host do aplicativo da web.
O CreateDefaultBuilder é um método auxiliar e chama
o método UseKestrel para registrar o Kestrel como o
servidor que será usado para hospedar nosso aplicativo.(veja o código fonte:
aqui )
Existem duas maneiras de usar o Kestrel :
1- Usando o Kestrel no modo Self-Hosting
No modo Self-Hosting as aplicações ASP.NET Core ouvem diretamente as solicitações HTTP da Internet, conforme mostrado na imagem abaixo:
2- Usando o Kestrel atrás de outro servidor
O Kestrel não
é um servidor Web completo, e, por isso mesmo ele é mais rápido.
Acontece que não é aconselhável executar o Kestrel como um servidor da Web
independente no ambiente de produção. Recomenda-se executá-lo por trás de um
servidor da Web completo como IIS, Nginx, apache etc. Nesse cenário, o servidor
da Web atua como um servidor proxy reverso.
O servidor proxy reverso recebe a requisição HTTP da Internet e a transmite para
o servidor do Kestrel exatamente como é recebido.
O IIS pode receber a requisição HTTP e executar algum processamento útil, como
registro em log, solicitação de filtragem, reescrita de URL antes de passar a
requisição para o kestrel.
O diagrama a seguir mostra como é isso é implementado:
Existem muitas razões pelas quais você deve usar este modelo na produção:
O método CreateDefaultBuilder chama o UseIISIntegration, que informa ao ASP.NET que o aplicativo usará o IIS como um proxy reverso na frente do Kestrel.
Alternativas para Kestrel
O Kestrel não é a única maneira de hospedar aplicativos ASP.NET Core. Há outra
implementação de servidor Web disponível no Windows conhecida como
HTTP.SYS
O HTTP.sys é um servidor HTTP que roda somente
do Windows com base no driver de kernel Http.Sys.
Quando usar o HTTP.sys ?
1 - Quando você precisar expor o
servidor diretamente na Internet sem usar o IIS;
2 - Uma implantação interna requer um recurso não disponível no Kestrel, como a
autenticação Windows.
O HTTP.sys é uma tecnologia madura que protege contra muitos tipos de ataques e fornece a robustez, a segurança e a escalabilidade de um servidor Web completo. O próprio IIS é executado como um ouvinte HTTP em cima do HTTP.sys.
Temos assim um panorama da atuação do Kestrel e sua importância na ASP .NET Core.
"Bom é louvar ao SENHOR, e cantar louvores ao teu
nome, ó Altíssimo;
Para de manhã anunciar a tua benignidade, e todas as noites a tua fidelidade;"
Salmos 92:1,2
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
ASP .NET Core 2 - MiniCurso Básico - Macoratti
ASP .NET Core MVC - CRUD básico com ADO .NET - Macoratti
ASP .NET Core - Implementando a segurança com ... - Macoratti
ASP .NET Core - Iniciando com ASP .NET Core MVC e ... - Macoratti
ASP .NET Core MVC - Criando um site com MySql e EF ... - Macoratti
ASP .NET Core - Gerenciador de Despesas Pessoais com ... - Macoratti
Minicurso ASP .NET Core 2.0 - Apresentando MVC - YouTube
ASP .NET Core - Configurando o ambiente de ... - Macoratti
ASP .NET Core e EF Core - Configurando o ambiente - Macoratti
ASP .NET Core - Como configurar o AutoMapper - Macoratti