ASP.NET Core 進程外(out-of-process)托管

来源:https://www.cnblogs.com/cool2feel/archive/2019/09/02/11446830.html
-Advertisement-
Play Games

ASP.NET Core 進程外(out-of-process)托管 在本節中,我們將討論 ASP.NET Core 中的Out Of Process Hosting。 ASP.NET Core 進程內(InProcess)托管 我們先簡單回顧下 ASP.NET Core 中,要配置 InProce ...


ASP.NET Core 進程外(out-of-process)托管

在本節中,我們將討論 ASP.NET Core 中的Out Of Process Hosting

ASP.NET Core 進程內(InProcess)托管

我們先簡單回顧下 ASP.NET Core 中,要配置 InProcess 的伺服器,

需要在項目文件中添加``< AspNetCoreHostingModel >元素,其值為InProcess`

< AspNetCoreHostingModel > InProcess </ AspNetCoreHostingModel >

使用 InProcess 托管,應用程式托管在 IIS 工作進程(w3wp.exe 或 iisexpress.exe)中。 使用 InProcess 托管,只有一個 Web 伺服器,它是承載我們的應用程式的 IIS 伺服器。

7 進程內托管圖示

ASP.NET Core 進程外(out-of-process)托管

有兩種方法可以配置進程外托管 :

  • 方法一:將< AspNetCoreHostingModel >元素添加到應用程式的項目文件中,其值為OutOfProcess
< AspNetCoreHostingModel > OutOfProcess </ AspNetCoreHostingModel >
  • 方法二:預設為OutOfProcess托管。因此,如果我們 從項目文件中刪除 < AspNetCoreHostingModel >元素,預設情況下 ASP.NET Core 將使用OutOfProcess托管。

進程外(out-of-Process)托管

  • 有 2 個 Web 伺服器 ,內部 Web 伺服器和外部 Web 伺服器。
  • 內部 Web 伺服器是 Kestrel, 外部 Web 伺服器可以是 IIS,Nginx 或 Apache。在上節課中我們討論了什麼是 Kestrel

根據您運行 asp.net Core 應用程式的方式的不同,可能會,也可能不會使用外部 Web 伺服器。

 

Kestrel 是嵌入在 asp. net Core 應用程式中的跨平臺 web 伺服器。使用進程外(out-of-Process)托管, Kestrel 可通過以下兩種方式來進行使用:

Kestrel 可以用作面向互聯網的 web 伺服器, 直接處理傳入的 HTTP 請求。 在此模型中, 我們不使用外部 web 伺服器。只使用 Kestrel, 它作為伺服器可以自主面向互聯網, 直接處理傳入的 HTTP 請求。 當我們使用. net Core CLI 運行 asp. net Core 應用程式時, Kestrel 是唯一用於處理和處理傳入 HTTP 請求的 web 伺服器。

kestrel直面互聯網

Kestrel 還可以與反向代理伺服器 (如 IIS、Nginx 或 Apache) 結合使用。

配合方向代理

來個討論

如果 Kestrel 可以單獨用作 Web 伺服器,為什麼我們需要一個反向代理伺服器?

因為 Kestrel 使用 "進程外(out-of-process)托管", 結合反向代理伺服器是一個不錯的選擇, 因為它提供了額外的配置和安全性層。它可能會更好地與現有基礎設施集成。它還可用於負載平衡。

因此, 在使用反向代理伺服器的情況下, 它將接收來自網路的傳入 HTTP 請求, 並將其轉發到 Kestrel 伺服器進行處理。在處理請求時, Kestrel 伺服器將響應發送到反向代理伺服器, 然後反向代理伺服器最終通過網路將響應發送到請求的客戶端。

在後面的視頻課程中,我們將學習如何將 ASP.NET Core 應用程式部署到 IIS 並使用 IIS 作為反向代理伺服器。當我們直接從 Visual Studio 運行 asp.net Core 應用程式時,它預設使用 IIS Express。 由於我們已將應用程式配置為使用進程外托管,所以當前情況下,IIS Express 已經在充當反向代理伺服器了。

IIS Express接收傳入的 HTTP 請求並將其轉發給Kestrel進行處理。Kestrel處理請求並將響應發送到IIS Express。IIS Express 反過來將該響應發送到瀏覽器。

使用進程外托管無論您是否使用反向代理伺服器,Kestrel 伺服器都是作為托管應用程式的伺服器同時處理請求的,也就是我們最開始說的自托管。 如果使用反向代理伺服器接收傳入的 HTTP 請求並將其轉發到 Kestrel 伺服器。同樣,它從 Kestrel 伺服器獲取響應並將其發送到客戶端。因此托管應用程式的進程名稱是dotnet.exe

使用以下代碼獲取進程名稱

我們來操作一波,給大家演示看看。記住下麵這行代碼,是個知識點

System.Diagnostics.Process.GetCurrentProcess().ProcessName;

當我們使用.NET Core CLI 運行 asp.net Core 項目時,預設情況下它會忽略我們在.csproj 文件中指定的托管設置。因此項目文件中的``AspNetCoreHostingModel`標簽下的值是被忽略了的。 無論您指定的值(InProcess 或 OutOfProcess)如何,它始終都是 OutOfProcess 托管,都是通過 Kestrel 托管應用程式,同時處理 http 請求。

一個常見問題

我們可以在不使用內置的 Kestrel Web 伺服器的情況下運行 asp.net Core 應用程式嗎?

答案是肯定可以的,你要相信.NET Core 的開發團隊。如果我們使用 InProcess 托管,則應用程式將托管在 IIS 工作進程(w3wp.exe 或 iisexpress.exe)中。 知識點:Kestrel不與InProcess(進程內)托管一起使用

所以.net core 有多優秀大家知道了吧。歡迎留言互動~ 代理伺服器: 泛指 IIS,Nginx 或 Apache 等等。
 

歡迎添加個人微信號:Like若所思。

歡迎關註我的公眾號,不僅為你推薦最新的博文,還有更多驚喜和資源在等著你!一起學習共同進步!


 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 場景 CS中FileStream的對比以及使用方法: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100396022 關註公眾號霸道的程式猿獲取編程相關電子書、教程推送與免費下載。 實現 將創建文件流對象的過程寫在using中, ...
  • 場景 File與FileStream的區別 舉例: 將讀取文件比作是從A桶往B桶運水。 使用File就是整個用桶倒進去,使用FileStream就是使用水管慢慢輸送。 FileStream與StreamReader的區別 FileStream是操作位元組的,即可以操作任意一種類型的文件。 Stream ...
  • 在前面的文章(abp(net core)+easyui+efcore實現倉儲管理系統——展現層實現增刪改查之菜單與測試(九) )中我們學會瞭如何添加靜態菜單,但是做為一個信息管理系統,總不能每次有新功能新菜單,都靜態添加菜單,編譯,再上線。我們希望的是有一個菜單管理界面,在此頁面中輸入相應的菜單,只... ...
  • 今天裝好了,net core sdk 3.0之後,打開Visual Studio2019後,新建項目時發現盡然沒有.net core3.0的模板。 搜了下其他博主的文章,按照文章里做瞭如下設置: 然後發現,這些設置沒有用!!!依然顯示不出3.0的模板。 經過一下午的折騰,重裝了core sdk,重裝 ...
  • 上一編講了cap2.6的快速入門,這次我們來講講在控制臺中如何使用cap2.6。因為cap2.6的記憶體模式目前已經可以使用了,相關組件已經更新,所以這次我們以簡單的記憶體模式為例。 1:創建項目 創建一個名叫CAPConsoleDemo的 “控制台應用(.NET Core)” 程式,.netcore版 ...
  • @[toc] 前言 這幾天忙活著別的東西,耽誤了很長時間,從文件操作完了之後就在考慮著下一步鼓搗點兒啥,因為最開始的業務開發就是企業微信相關的,這剛好來做個內部應用的小例子玩玩。 企業微信 前身是企業號,當時微信主推的還是公眾號與服務號,後續戰略考慮到企業的OA了(當然還是跟某個搶市場),企業號應該 ...
  • 程式出現 System.AccessViolationException異常會終止進程,try catch是無法捕捉的。 有個處理方法在引發異常的發放上面加上 [System.Runtime.ExceptionServices.HandleProcessCorruptedStateException ...
  • 前提 入行已經7,8年了,一直想做一套漂亮點的自定義控制項,於是就有了本系列文章。 GitHub:https://github.com/kwwwvagaa/NetWinformControl 碼雲:https://gitee.com/kwwwvagaa/net_winform_custom_contr ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...