2012-11-14 29 views
2

ASP.NET的WebAPI的可以在IIS中任主持(如Web角色),也可以自託管(作爲輔助角色)ASP.NET WebAPI Azure上的自託管功能:避免IIS導致功能丟失?

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

上述提醒我Node.js的的無論如何,我試圖列出這兩種方法之間的所有技術折衷。我不是在尋找你喜歡什麼折衷的意見 - 這些折衷是從技術角度來看的。目前,我們在實際API調用(=調用API調用後的Azure SQL +繁重數據處理)中以自主模式調用每個API調用的響應時間大約快8%。不過,我擔心放棄IIS將來會回來咬我們。

那麼,在進行WebAPI自主託管路線時避免IIS時會有哪些主要的折衷或功能丟失?

+0

屬於上programmers.stackexchange.com – NotMe

+0

如果是的話,我們怎麼能有轉移的問題? – DeepSpace101

+0

點擊旗幟鏈接,並告訴你想要它移動的MODS。他們對這樣的事情很有幫助。 – NotMe

回答

2
  • 你失去所有的IIS(日誌,應用程序池縮放,節流您的網站/配置)功能....你必須建立你想自己
  • HttpContext的每一個功能?由於ASP.NET爲你提供了這個功能,所以你會失去它所以,我可以看到,讓身份驗證變得更加困難
  • WebDeploy?否則你會失去
  • 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

+0

順便說一下,Windows 2008 R2使用IIS 7.5。我認爲這就是Azure的OSType = 2。儘管我的基準測試中有8%的差距在Windows8/IIS8上。我認爲我們要走IIS路線,直到我有充分的理由去克服最後的8%。移植WepAPI => WebAPI的自我託管也非常簡單。 – DeepSpace101

+0

.NET的版本在哪裏一樣? –