我是一個非常新的編程,我正在開發我的第一個自我項目,這是我用ASP.NET MVC 5創建的論壇,我正試圖從中學習。 我在這裏和MSDN讀了很多關於MVC中的異步操作的知識,我有幾個問題我無法弄清楚。異步/等待的可伸縮動作
據我所知,IIS爲每個進程分配x個線程,例如2。每個線程都可以處理1個請求。當我將一個動作標記爲異步,並用任務包裝返回類型時,線程會分配一個工作人員來處理請求並報告IIS現在有空來處理另一個請求。所以如果一個線程可以創建3個工作者,我的行爲可以提供6個請求。對?
據我所知,一個異步方法必須等待另一個異步方法才能真正異步,否則該方法將同步運行。所以我的問題是,什麼時候該線程分配這個工作者?當請求到來或等待的方法被調用時?同樣,據我所知,每個異步方法都被分配給一個工作人員,所以如果我的網站有6名工作人員(來自上述問題),可以處理請求的工人數量會減少,因爲我使用更多和更多的異步方法? 例如,如果我有一個調用異步地向
GetUser
和內部GetUser
它異步地調用GetUserHistory
和內部GetUserHistory
它異步地調用GetLoginData
將採取行動「浪費」 4名工人,可能有服務請求的異步操作?如果以上所有內容都是真實的,將行爲標記爲異步並使項目中的所有方法同步方法並在行動結束時(或開始時)都不可擴展 - 只是等待
Task.Delay(0)
所以我會「浪費」只有一名工人?
我看到的問題,我認爲有一些基本的東西我不明白。
你會發現我的[異步ASP.NET的文章(https://msdn.microsoft.com/en- us/magazine/dn802603.aspx)很有幫助。 – 2015-04-01 19:13:20
@StephenCleary,偉大的文章!這真的有助於我清除一些迷霧 – beautifulcoder 2015-04-01 19:32:55
其次,@StephenCleary,這是我正在尋找的答案! – 2015-04-01 20:13:36