2011-02-08 118 views
7

將ASP.NET MVC同步控制器(Controller)更改爲異步控制器(AsyncController)看起來像是一件微不足道的事情,但什麼時候該做?什麼時候應該在ASP.NET MVC中使用異步控制器?

我應該讓每個控制器都是異步的,而不管它的行爲如何?在異步控制器中使用的操作示例有哪些?

以最簡單的示例:靜態html頁面。因此,您擁有最基本的控制器,只需從Index操作中返回View即可。應該將此控制器更改爲異步,即現在從IndexCompleted返回?

+2

可能重複的[ASP.NET MVC4 Async控制器 - 爲什麼要使用?](http://stackoverflow.com/questions/15190112/asp-net-mvc4-async-controller-why-to-use) – Luiso

+0

@ Luiso我的問題在兩年前被問到。 –

回答

8

我最近在讀這個article。它認爲它總結了AsyncController的要求。

6

我知道這是一個老問題,但我努力得到答案,所以繼承我的兩分錢。

就像是說如果我們沒有發燒,我還應該服用避孕藥。如果您在Web服務器上看到線程匱乏,則應該使用Asynch控制器。 IIS web服務器維護一個線程池。所以當有任何請求進入時,他會從線程池中提取線程。如果在給定時刻來自池的所有線程都被使用並且請求進入,那麼該請求進入等待模式。這種情況被稱爲「線程匱乏」。您還可以觀看此YouTube視頻裏我已經證明了MVC線程飢餓的樣子

http://www.youtube.com/watch?v=wvg13n5V0V0

Web Server Thread Use Diagram

當你讓你的控制器非同步,它利用線程,衍生爲操作,並將該線程移回線程池,以便可用於進入MVC應用程序的其他請求。一旦操作完成,他會從線程池中拉回線程並顯示該視圖。

相關問題