Da .NET Core plattformübergreifend ist, können ASP.NET Core-Projekte sowohl unter Windows als auch unter Linux ausgeführt werden, und wenn sie unter Windows bereitgestellt werden, können sie auf IIS bereitgestellt oder direkt über die Kommandozeile unabhängig von IIS-Diensten ausgeführt werden, dank der Integration von Kestrel-Containern in ASP.NET Core.
Für weitere Informationen darüber, wie Sie ASP.NET Core-Anwendungen auf IIS-Dienste bereitstellen, können Sie Folgendes nachlesen:
ASP.NET Core wird im IIS eingesetztIm ProzessundAußerhalb des VerfahrensZwei Hosting-Modelle
Betriebsmittel:
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
In-Process-Modell
Seit ASP.NET Core 3.0,In-Process-Hosting ist standardmäßig für alle auf IIS bereitgestellten Anwendungen aktiviert, die web.config-Datei sieht so aus:
kann gesehen werdenhostingModel="inprocess", ein In-Process-ModellKestrel wird nicht verwendet, verwendet jedoch stattdessen IISHttpServer(), um einen neuen Webserver direkt im IIS-Anwendungspool zu implementieren, der der traditionellen Einführung von ASP.NET in IIS ähnelt.
Das folgende Diagramm veranschaulicht die Beziehung zwischen IIS, ASP.NET Core-Modulen und im Prozess gehosteten Anwendungen:
Wenn Sie versuchen, auf die Website zuzugreifen, können Sie den Server über den Antwort-Header sehen, wie im untenstehenden Bild gezeigt:
Betrachtet man die Prozesse im Taskmanager, gibt es nur zwei Prozesse, wie in der untenstehenden Abbildung gezeigt:
Out-of-Process-Modell
Dieses IIS-Modell fungiert als Reverse-Proxy und muss bei Erhalt einer Anfrage an den Kestrel-Dienst weitergeleitet werden, einen plattformübergreifenden Webserver, der in ASP.NET Core-Anwendungen eingebettet ist.
Das folgende Diagramm veranschaulicht die Beziehung zwischen IIS, ASP.NET Core-Modulen und außerhalb des Prozesses gehosteten Anwendungen:
Wir ändern die web.config-Datei wie folgt:
Wenn wir die Website über einen Browser aufrufen, sehen wir, dass der Serverwert des Response-Headers zu Kestrel geworden ist, wie in der untenstehenden Abbildung gezeigt:
Als ich gleichzeitig den Task-Manager betrachtete, stellte ich fest, dass es 3 Prozesse gibt, wie in der untenstehenden Abbildung gezeigt:
Zusammenfassung
Im InProcess-verwalteten Modell werden Anfragen und Antworten über w3wp.exe oder IISExpress bereitgestellt, während im beteiligten OutOfProcess-Worker-Prozess dies dotnet.exe Im InProcess-verwalteten Modell wird ein einzelner Webserver verwendet, während im OutOfProcess-verwalteten Modell zwei Webserver verwendet werden können.
Der offensichtliche Grund für die Nutzung des neuen In-Process-Modells ist, dass es schneller ist und weniger Ressourcen verbraucht.Das InProcess-Managed-Modell bietet eine bessere LeistungWeil es direkt im Prozess des IIS-Anwendungspools läuft. Es gibt keinen internen HTTP-Verkehr und keinen Overhead, und Anfragen werden sofort verarbeitet.
|