2012-10-01 41 views
1

如果我想在我的數據層使用TPL異步,我還必須在我的MVC控制器上使用Task<T>嗎?網絡上的.NET異步 - 必須帶有異步控制器嗎?

換句話說,爲了使異步與.NET MVC一起工作,它必須從請求開始的時候開始執行,以便它能夠在更深的執行層上工作。或者,即使我正在使用同步控制器,在我的DAL/Web請求級別還有Task<T>還有好處嗎?

回答

1

如果你不使用異步控制器,你將不得不等待某個任務。在這一點上,主要優勢消失了:減少被阻塞的線程數量。

當然,如果您同時運行多個異步活動,情況並非如此。這會將被阻塞的線程從N減少到一個。 (如果N = 1沒有好處,只是損壞)。

請注意,默認情況下異步不會更快。它在ASP.NET中的主要目的是在極端情況下獲得可伸縮性 - 具有100多個併發請求。只有這樣它纔會更快或更高。

所以,如果你有一個「通常」的併發請求數量(如< 100),只需要同步,不用擔心所有這些。