ASP.NET Core 進程內(InProcess)托管
本文作者:梁桐銘- 微軟最有價值專家(Microsoft MVP)
文章會隨着版本進行更新,關注我獲取最新版本
本文出自《從零開始學 ASP.NET Core 與 EntityFramework Core》目錄
視頻課程效果更佳:跨平台開發實戰掌握 ASP.NET Core 與 EntityFramework Core
ASP.NET Core 進程內(InProcess)托管
在這個視頻中我們將討論
- 在 ASP.NET Core 中的進程內(InProcess)托管模型
- 什么是 Kestrel 服務器
當一個 ASP.NET Core 應用程序執行的時候,.NET 運行時會去查找 Main()
方法,因為它是這個應用程序的起點。
然后,Main()
方法調用靜態類WebHost
中的靜態方法CreateDefaultBuilder()
。
這個CreateDefaultBuilder()
方法執行幾個任務,如:
- 將 Kestrel 用作 Web 服務器並啟用 IIS 集成。
- 從種配置源中加載配置。
- 配置日志記錄
在以后的課程中,我們將討論 asp.net core 中可用的各種配置源,加載主機和應用程序配置信息以及配置日志記錄等內容。
在本視頻中,讓我們了解CreateDefaultBuilder()
方法用於配置和設置 Web 服務器的功能。 ASP.NET Core 應用程序可以托管在進程內(InProcess)或進程外(OutOfProcess)中。 在本視頻中,我們將討論進程內(InProcess)托管,在下一個視頻中,我們將討論進程外(OutOfProcess)托管。
進程內(InProcess)托管
若要配置 InProcess 宿主, 請將<AspNetCoreHostingModel>
添加到應用的項目文件中, 其中的值為 InProcess
當我們選擇使用一個可用的項目模板,創建一個新的 ASP.NET Core 項目時,該項目默認為所有的 IIS 和 IIS Express 的配置都是作為進程內托管(InProcess)。
在 InProcess 托管的情況下,CreateDefaultBuilder()
方法調用UseIIS()
方法並在 IIS 工作進程**(w3wp.exe 或 iisexpress.exe)***內托管應用程序。
- 從性能的角度來看,InProcess 托管比 OutOfProcess 托管提供了更高的請求吞吐量。
- 對於 IIS,執行應用程序的進程名稱是w3wp,對於 IIS Express,它是iisexpress
- 要獲取執行應用程序的進程名稱,請使用
System.Diagnostics.Process.GetCurrentProcess().ProcessName
- 當我們從 Visual Studio 運行項目時,它默認使用 IISExpress。
- IIS Express是 IIS 的輕量級自包含版本,針對應用程序開發進行了優化。我們不會將它用於生產。在生產中我們會使用 IIS。
- 我們會在后面的課程中帶着大家,在 IIS 上部署 ASP.NET Core 應用程序。
進程外(out-of-Process)托管
- 有 2 個 Web 服務器 ,內部 Web 服務器和外部 Web 服務器。
- 內部 Web 服務器是 Kestrel, 外部 Web 服務器可以是 IIS,Nginx 或 Apache。
- 使用 InProcess 托管,只有一個 Web 服務器,承載 asp.net Core 應用程序的 IIS。 因此,在內部和外部 Web 服務器之間,他們的代理和請求不沒有性能的損失。
什么是 Kestrel
Kestrel 是 ASP.NET Core 的跨平台 Web 服務器。.NET Core 支持的所有平台和版本都支持它。它默認包含在 ASP.NET Core 中作為內部服務器。 Kestrel 本身可以用作邊緣服務器,即面向互聯網的 Web 服務器,它可以直接處理來自客戶端的傳入 HTTP 請求。
在 Kestrel 中,用於托管應用程序的進程是dotnet.exe
。當我們使用.NET Core CLI
(命令行界面)運行.NET Core 應用程序時,應用程序使用 Kestrel 作為 Web 服務器。
.NET Core CLI 是一個用於開發.NET 核心應用程序的跨平台工具。使用 CLI 命令我們做:
- 根據指定的模板創建新項目,配置文件或解決方案
- 恢復.Net Core 項目所需的所有依賴項和工具包
- 生成項目及其所有依賴項
- 運行.net Core 項目等等......
我們可以使用.NET Core CLI 做很多事情。
簡單說下 CLI
使用.NET Core CLI 運行我們的 Asp.Net Core 應用程序。
- 啟動 Windows 命令提示符
- 將目錄更改為包含 asp.net Core 項目的文件夾,然后執行
dotnet run
命令 - C:\ Projects \Source\repos\ StudentManagement \ StudentManagement >
dotnet run
在.NET Core CLI 生成並運行項目之后,它會顯示用於訪問應用程序的 URL。 在我的例子中,應用程序可以通過訪問瀏覽器地址在http://localhost:5000 查看內容。
於 Kestrel,用於托管和執行應用程序的進程是dotnet.exe
。
因此,當我們導航到http://localhost:5000
時,我們將看到顯示進程名稱dotnet
。
下一個視頻: ASP.NET Core 中的進程外托管模型
文章說明
如果您覺得我的文章質量還不錯,歡迎打賞,也可以訂閱我的視頻哦
未得到授權不得擅自轉載本文內容,52abp.com 保留版權
感謝您對我的支持