ASP.NET Core Hosting

 

 

 

Victor Cavalcante

@vcavalcante

vcavalcante@lambda3.com.br

VICTOR CAVALCANTE

 
  • Desenvolvedor Web
  • Microsoft MVP de ASP.NET
  • vcavalcante@lambda3.com.br
  • @vcavalcante 

Em que S.O. Hospedar?

Em qual server?

Kestrel

IIS

WebListenner

DotNet Core

Kestrel

  • Web Server para o ASP.NET Core
  • Cross-platform
  • Baseado no libuv
  • opção padrão no template do asp.net core
  • Aguenta muita porrada

Kestrel Rede Interna

Kestrel

Kestrel com SSL

Kestrel para Internet

Por questões de segurança é necessário ter um proxy reverso na frente do kestrel

server {
    listen 8080;

    location / {
      proxy_pass http://localhost:5000;
    }
}

/etc/nginx/conf.d/default.conf

>sudo apt-get install nginx 
>sudo service nginx start

Supervisord

A Process Control System

>sudo apt-get install supervisor 

>dotnet publish

>sudo cp -a ~/teste/bin/Debug/netcoreapp1.1/publish /var/meusite

Supervisord

Configuração

[program:teste]
command=/usr/bin/dotnet /var/meusite/teste.dll --server.urls=http://0.0.0.0:5123
directory=/var/meusite
autostart=true
autorestart=true
stderr_logfile=/var/log/dotnettest.err.log
stdout_logfile=/var/log/dotnettest.out.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=www-data
stopsignal=INT

/etc/supervisor/conf.d/kestrel_default.conf

Supervisord

Executando

>sudo service supervisor start

>sudo tail -f /var/log/supervisor/supervisord.log

>sudo tail -f /var/log/dotnettest.out.log
 

Supervisor

8080

5123

Kestrel

Supervisor

8080

5124

Kestrel

5123

Kestrel

5125

Kestrel

DockerFile

Docker-Compose

>docker-compose up -d

>curl -i http://localhost:9090/api/book

Supervisor

8080

5124

Kestrel

5123

Kestrel

5125

Kestrel

Supervisor

Supervisor

Windows + IIS

Como funciona

ASP. NET CORE MODULE

O que o ANCM faz?

  1. Configura variáveis de ambiente.
  2. Loga o stdout para um arquivo de log.
  3. Repassa tokens de autenticação do Windows
  4. Cria um proxy reverso entre o IIS e o Kestrel

Como Instalar

Instale no seu server:

Como Instalar

Adicione no seu projeto

Microsoft.AspNetCore.Server.IISIntegration

<configuration>
  <!--
    Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
  -->
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" 
    arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" 
    stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
  </system.webServer>
</configuration>
<configuration>
  <!--
    Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
  -->
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath=".\sample.exe" 
    arguments="" stdoutLogEnabled="true" 
    stdoutLogFile="\\?\%home%\LogFiles\stdout" forwardWindowsAuthToken="false" />
  </system.webServer>
</configuration>

Web.Config antes antes de publicado

Web.Config depois de publicado

Azure + Visual Studio

Azure + Visual Studio

Azure + Visual Studio

Azure + Visual Studio

Azure + Visual Studio

Azure + Visual Studio

WebListener

WebListener é um servidor que roda diretamente sobre o Windows HTTP Server API.

WebListener

•Windows authentication

•Port sharing

•HTTPS 

•HTTP/2

•Direct file transmission

•Response caching WebSockets 

WebListenner

Quando usar qual

Dev

Prod

Kestrel

Kestrel

IIS

WebListenner

Referências

 
 

Dúvidas, Críticas ou Sugestões?

 

 

 

@vcavalcante

 vcavalcante@lambda3.com.br

ASP.NET CORE HOSTING

By Victor Cunha Cavalcante