Eftersom .NET Core är plattformsoberoende kan ASP.NET Core-projekt köras på både Windows och Linux, och om de distribueras på Windows kan de distribueras på IIS eller köras direkt via kommandoraden, oberoende av IIS-tjänster, tack vare inkluderingen av Kestrel-containrar i ASP.NET Core.
För mer information om hur man distribuerar ASP.NET Core-applikationer till IIS-tjänster kan du hänvisa till följande:
ASP.NET Core är distribuerad i IISUnder processochUtgångsprocessTvå värdmodeller
Resurser:
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.
In-process-modellen
Sedan ASP.NET Core 3.0,In-process hosting är aktiverad som standard för alla applikationer som distribueras till IIS, ser web.config-filen ut så här:
kan seshostingModel="inprocess", en modell under processenKestrel används inte, men använder istället IISHttpServer() för att implementera en ny webbserver som hostas direkt i IIS-applikationspoolen, vilket påminner om hur traditionell ASP.NET introducerades i IIS.
Följande diagram illustrerar relationen mellan IIS, ASP.NET Core-moduler och driftbaserade applikationer under processen:
När du försöker komma åt webbplatsen kan du se servern via svarshuvudet, som visas på bilden nedan:
Om man tittar på processerna via aktivitetshanteraren finns det bara 2 processer, som visas i figuren nedan:
Out-of-process-modellen
Denna modell IIS fungerar som en omvänd proxy, och när den tar emot en förfrågan måste den vidarebefordra den till Kestrel-tjänsten, som är en plattformsoberoende webbserver inbäddad i ASP.NET Core-applikationer.
Följande diagram illustrerar relationen mellan IIS, ASP.NET Core-moduler och out-of-process hostade applikationer:
Vi modifierar web.config-filen enligt följande:
När vi besöker webbplatsen via en webbläsare kan vi se att servervärdet för svarshuvudet har blivit Kestrel, som visas i figuren nedan:
När jag tittade på aktivitetshanteraren samtidigt såg jag att det finns 3 processer, som visas i figuren nedan:
sammanfattning
I InProcess-hanterad modell tillhandahålls förfrågningar och svar via w3wp.exe eller IISExpress, medan det i OutOfProcess-arbetsprocessen är dotnet.exe I InProcess-hanterad modell används en enda webbserver, medan i OutOfProcess-hanterad modell kan två webbservrar användas.
Den uppenbara anledningen till att använda den nya In-Process-modellen är att den är snabbare och använder färre resurser,InProcess-hanterad modell ger bättre prestandaEftersom det körs direkt i processen i IIS-applikationspoolen. Det finns ingen intern HTTP-trafik eller overhead, och förfrågningar behandlas omedelbart.
|