這篇文章,我們一起學習ASP.NET Core InProcess Hosting.這篇文章主要討論下面幾個觀點:
- CreateDefaultBuilder方法執行什么任務?
- 什么是ASP.NET Core InProcess Hosting?
- 怎么使用InProcess hosting Model來托管ASP.NET Core應用程式
- InProcess Hosting在ASP.NET Core中是如何作業的
我們打開之前創建的空模板的ASP.NET Core專案,前面已經知道了ASP.NET Core創建了一個Program類,其中有一個Main方法,

當我們執行ASP.NET Core應用程式的時候,.NET運行時就會去尋找Main方法,Main方法是ASP.NET Core應用程式的入口,
在上面的圖片中,你可以發現,首先呼叫的是CreateHostBuilder方法,然后CreateHostBuilder呼叫Host類中靜態的CreateDefaultBuilder方法,也就是CreateDefaultBuilder方法創建了主機,托管了我們的ASP.NET Core 應用程式,
CreateDefaultBuilder方法做了哪些事情?
除了創建主機,CreateDefaultBuilder方法還做了下面幾件事情:
- 創建了Web服務器(后面文章會講到)
- 加載主機,并根據不同的配置資源,配置應用程式(后面馬上會講到)
- 配置日志(后面會說到)
我們來討論一下,CreateDefaultBuilder方法在配置創建web服務器的時候,做了哪些事情,從主機的觀點來看,一個ASP.NET Core應用程式可以有兩種托管方式,一種是InProcess托管,另外一種就是OutOfProcess托管,這篇文章將InProcess托管,后面會有文章講到OutOfProcess托管,
怎樣在ASP.NET Core中配置InProcess托管
為了配置InProcess托管,很簡單就是在專案檔案中加上這個元素<AspNetCoreHostingModel>,并且寫上值【InProcess】

當我們使用任何模板創建ASP.NET Core Web應用程式的時候,默認的就是在IIS中使用InProcess托管,或者IIS Express托管我們的程式,
從性能的的觀點來看,行程內托管模型比OutOfProcess托管模型提供了更高的請求吞吐量,在IIS中托管,使用的就是w3wp.如果使用IIS Express托管那么行程的名字就是iisexpress.
當我們運行程式,瀏覽器中看到的結果是:Hello World!

這是因為我們在Statrup中有下面的代碼:

為了能顯示行程的名字,需要這樣寫:System.Diagnostics.Process.GetCurrentProcess().ProcessName

然后運行,在瀏覽器中是這樣的:

這是因為我們默認使用Visual Studio運行程式的時候,選項是IISExpress

IIS Express是一個輕量級的,自托管的IIS,它簡化了Web應用程式的開發,最重要的一點需要記住:我們僅僅在開發階段使用IISExpress,在生產階段我們使用IIS,接下來的文章中,我將介紹如何在IIS中發布我們的ASP.NET Core應用程式,
OutOfProcess Hosting
在OutOfProcess hosting中有兩種web服務器:
- 一個是內部服務器
- 還有一個就是外部服務器
內部服務器就是Kestrel,外部服務器就是IIS、Nginx或者Apache,
在InProcess 托管模型中,僅僅只有一個web服務器,也就是IIS,所以在InProcess 托管模型中,我們不會存在在外部服務器和內部服務器之間通訊導致的性能損耗,這也就是InProcess模型比OutOfProcess模型高的多的請求吞吐量的原因,

在接下來的文章中,我將會講到ASP.NET Core應用程式中的 Kestrel Web服務器,這篇文章向大家解釋了ASP.NET Core InProcess Hosting托管模型,希望能幫到你!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/49242.html
標籤:.NET Core
