日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

9.ASP.NET Core OutOfProcess Hosting

 小樣樣樣樣樣樣 2021-04-06

這篇文章中,我將詳細介紹ASP.NET Core OutOfProcess Hosting模型。強烈推薦你去看看我之前寫的ASP.NET Core InProcess以及ASP.NET Core中的 Kestrel Web服務(wù)器。這篇文章我將向大家詳細介紹下面幾個問題:

  1. 怎樣在ASP.NET Core中配置OutOfProcess Hosting?
  2. 什么是OutOfProcess Hosting?
  3. ASP.NET Core中OutOfProcess Hosting是如何工作的?
  4. 我們能否,不使用內(nèi)置的Kestrel Web服務(wù)器來運行ASP.NET Core應(yīng)用程序?
  5. 如果Kestrel本身可以作為web服務(wù)器使用,可以直接處理傳入的HTTP請求,那么我們?yōu)槭裁葱枰聪虼矸?wù)器呢?

在開始學(xué)習(xí)OutOfProcess Hosting之前,我們先回顧一下InProcess Hosting。

ASP.NET Core InProcess Hosting

在前面的文章中,已經(jīng)了解到,為了配置InProcess Hosting,我們需要在項目文件中加入下面的代碼:

image

在ASP.NET Core的InProcess Hosting模型下,我們的應(yīng)用程序是托管在IIS工作進程下的(也就是w3wp.exe,如果是使用IIS的話,如果使用的是IIS Express那么工作進程就是iisexpress.exe).你需要牢記的一點就是:在InProcess 模型下,我們只有一個Web服務(wù)器,也就是IIS 服務(wù)器。

InProcess Hosting in ASP.NET Core

怎樣在ASP.NET Core中配置OutOfProcess Hosting?

我們可以有兩種方式,來配置OutOfProcess Hosting

方式一:

在項目文件下,添加一個AspNetCoreHostingModel節(jié)點,值填寫OutOfProcess,:

image

方式二

默認的Hosting方式就是OutOfProcess hosting,這也就意味著,你去掉AspNetCoreHostingModel節(jié)點,默認就是OutOfProcess Hosting了。

在ASP.NET Core中OutOfProcess Hosting

在OutOfProcess Hosting模型中,有兩種Web服務(wù)器:

  1. 內(nèi)置的web服務(wù)器就是Kestrel
  2. 另外的外部服務(wù)器就是IIS、Apache、以及Nginx

您需要記住的最重要的一點是,取決于您如何使用OutOfProcess托管模型運行應(yīng)用程序,外部web服務(wù)器可能會被使用,也可能不會被使用。

我們已經(jīng)知道Kestrel web服務(wù)器是一個跨平臺的web服務(wù)器,并且是嵌入到ASP.NET Core的應(yīng)用程序中的。所以當你使用OutOfProcess 托管模型的時候,Kestrel可能有以下幾種方式使用:

方式一:

我們可以使用Kestrel Web服務(wù)器作為面向internet的Web服務(wù)器,它將直接處理傳入的HTTP請求。在這個場景中,只有Kestrel服務(wù)器被使用了,也就是外部服務(wù)器沒有被使用。所以當我們使用.NET Core CLI運行ASP.NET Core應(yīng)用程序的時候,僅僅只有Kestrel服務(wù)器被使用了,用來處理HTTP請求。

Kestrel Server Out Of Process Hosting

方式二:

Kestrel Web服務(wù)器還可以與反向代理服務(wù)器(如IIS、Apache或Nginx)組合使用。那么你肯定有這樣的疑問:如果Kestrel本身可以作為web服務(wù)器使用,可以直接處理傳入的HTTP請求,那么我們?yōu)槭裁葱枰聪虼矸?wù)器呢

這是因為反向代理服務(wù)器提供了一個額外的配置和安全層,這是Kestrel服務(wù)器無法提供的。同樣反向代理服務(wù)器,還維護著負載均衡。所以使用Kestrel服務(wù)器和反向代理服務(wù)器是一個很好的選擇。

因此,當我們使用Kestrel服務(wù)器和反向代理服務(wù)器時,反向代理服務(wù)器將接收來自客戶機的傳入HTTP請求,然后將該請求轉(zhuǎn)發(fā)到Kestrel服務(wù)器進行處理。一旦Kestrel服務(wù)器處理了該請求,它就會將響應(yīng)發(fā)送回反向代理服務(wù)器,然后反向代理服務(wù)器通過internet將響應(yīng)發(fā)送回被請求的客戶機,如下圖所示。

External Proxy Server with Internal Kestrel Server

在后面的文章中,我將介紹我們怎么把ASP.NET Core應(yīng)用程序發(fā)布到IIS,并且把IIS作為一個反向代理服務(wù)器。

當我們直接,在Visual Studio中運行程序的時候,Visual Studio,默認使用的是IIS Express?,F(xiàn)在我們可以改變項目文件:

<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>

由于我們已經(jīng)配置了進程外托管模型,現(xiàn)在IIS Express充當反向代理服務(wù)器,而Kestrel充當內(nèi)部web服務(wù)器。

現(xiàn)在,IIS Express接收傳入的HTTP請求,然后將其轉(zhuǎn)發(fā)到Kestrel Web服務(wù)器進行處理。Kestrel Web服務(wù)器處理請求并將響應(yīng)發(fā)送回IIS Express,而IIS Express又將響應(yīng)發(fā)送回客戶機,即瀏覽器。

現(xiàn)在運行應(yīng)用程序,您將看到工作進程為dotnet。因此,當您使用Out of Process Hosting模型時,Kestrel Web服務(wù)器將托管應(yīng)用程序并處理請求,而不管您是否使用反向代理服務(wù)器。

還有一個很重要的需要記?。?strong>當你使用.NET Core CLI運行程序的時候,然后在默認情況下,它會忽略你在應(yīng)用程序的項目文件中指定的主機設(shè)置,即csproj文件。在這種情況下,AspNetCoreHostingModel元素的值將被忽略。

.NET Core CLI總是使用OutOfProcess托管模型,并且Kestrel是web服務(wù)器,它將會托管ASP.NET Core應(yīng)用程序,并且處理HTTP請求。

我們可以不使用內(nèi)置的Kestrel服務(wù)器運行ASP.NET Core應(yīng)用程序么?

答案是肯定可以的,當我們使用InProcess hosting模型的時候,應(yīng)用程序是托管在IIS進程中的也就是w3wp.exe或者iisexpress.exe中。這也就是意味著,在InProcess模型中,我們是沒有使用Kestrel服務(wù)器的。

在下面的文章中,我將帶領(lǐng)大家學(xué)習(xí)ASP.NET Core中的 launchSetting.json文件。這篇文章中,我已經(jīng)詳細介紹了OutOfProcess 托管模型,希望能幫到你。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多