簡體   English   中英

Azure 上的 ASP.NET WebAPI 自托管:避免 IIS 導致功能丟失?

[英]ASP.NET WebAPI Self Hosting on Azure: feature loss by avoiding IIS?

ASP.NET WebAPI 可以托管在 IIS 中(作為 Web 角色)或自托管(作為輔助角色)

var server = new HttpSelfHostServer(config);
server.OpenAsync().Wait();

以上讓我想起了 Node.JS。 無論如何,我試圖列出這兩種方法之間的所有技術權衡。 我不是在尋求關於您更喜歡哪些權衡的意見——只是從技術角度來看這些權衡是什么。 現在,我發現在我們真實世界的 API 調用(=Azure SQL + API 調用背后的繁重數字運算)的自托管模式下,每個 API 調用的響應時間快了 8%。 但是,我擔心拋棄 IIS 會在將來再次咬我們。

那么,在采用 WebAPI 自托管路線時避免 IIS 會帶來哪些主要的權衡或功能丟失?

  • 您將失去 IIS 的所有功能(日志記錄、應用程序池縮放、站點的限制/配置)……您必須自己構建您想要的每一個功能
  • HttpContext? 你失去了它,因為 ASP.NET 為你提供了它。 所以,我可以看到讓身份驗證之類的事情變得更加困難
  • 網絡部署? 你會失去那個
  • IIS 在 IIS 8 中有一些關於處理請求和預熱服務的很好的特定功能

這實際上取決於您的應用程序。 您將不得不重新編寫您需要的每個功能。 Node.js 提供了執行 Nginx 服務器沒有的那些東西(Express)的模塊......除了(事件循環異步架構)這就是它更快的原因。

我知道這不是您的問題的一部分,但是您提到了 8% 的性能增益……該增益是因為您沒有涉及 IIS 管道。 當您編寫自己的代碼來模擬您失去的 IIS 功能時,您最終將失去該性能

您是否嘗試過 Windows 2008 R2/IIS 8? 這包括對 IIS 7.x 的“免費”性能提升: http : //blog.bitdiff.com/2012/06/performance-comparison-iis-75-and-iis-8.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM