Poiché .NET Core è multipiattaforma, ASP.NET progetti Core possono funzionare sia su Windows che su Linux e, se implementati su Windows, possono essere distribuiti su IIS o eseguiti direttamente tramite riga di comando, indipendentemente dai servizi IIS, grazie all'inclusione di contenitori Kestrel in ASP.NET Core.
Per maggiori informazioni su come distribuire ASP.NET applicazioni Core nei servizi IIS, puoi consultare quanto segue:
ASP.NET Core è implementato nell'IISIn corsoeFuori ProcessoDue modelli di hosting
Risorse:
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
Modello in processo
Dalla ASP.NET Core 3.0,L'hosting in processo è abilitato di default per tutte le applicazioni distribuite su IIS, il file web.config appare così:
Si può vederehostingModel="inprocess", un modello in processoIl gheppio non viene usato, ma invece utilizza IISHttpServer() per implementare un nuovo server web ospitato direttamente all'interno del pool di applicazioni IIS, che è in qualche modo simile a come il ASP.NET tradizionale è stato introdotto in IIS.
Il diagramma seguente illustra la relazione tra IIS, ASP.NET moduli Core e applicazioni ospitate in processamento:
Cercando di accedere al sito web, puoi vedere il server attraverso l'intestazione di risposta, come mostrato nell'immagine qui sotto:
Guardando i processi tramite il task manager, ci sono solo 2 processi, come mostrato nella figura sottostante:
Modello fuori processo
Questo modello IIS agisce come un proxy inverso e, quando riceve una richiesta, deve inoltrarlo al servizio Kestrel, che è un server web multipiattaforma integrato nelle ASP.NET applicazioni Core.
Il diagramma seguente illustra la relazione tra IIS, moduli ASP.NET Core e applicazioni ospitate fuori dal processo:
Modifichiamo il file web.config come segue:
Quando accediamo al sito tramite un browser, possiamo vedere che il valore server dell'intestazione di risposta è diventato Kestrel, come mostrato nella figura sottostante:
Guardando contemporaneamente il task manager, ho scoperto che ci sono 3 processi, come mostrato nella figura qui sotto:
sommario
Nel modello gestito InProcess, richieste e risposte sono fornite tramite w3wp.exe o IISExpress, mentre nel processo Worker OutOfProcess è dotnet.exe Nel modello gestito InProcess viene utilizzato un singolo server web, mentre nel modello gestito OutOfProcess possono essere utilizzati due server web.
La ragione ovvia per utilizzare il nuovo modello In-Process è che è più veloce e utilizza meno risorse,Il modello gestito InProcess offre migliori prestazioniPerché viene eseguito direttamente nel processo del pool di applicazioni IIS. Non c'è traffico HTTP interno né overhead, e le richieste vengono elaborate immediatamente.
|