2012-07-31 16 views

回答

1

取決於您的用例。儘管在簡單場景中使用異步並沒有直接的性能優勢,但對於更復雜的場景和可伸縮性來說,這可能至關重要。

例如,向多臺服務器發送多個請求顯然是最好的並行方式,可以使用async來處理。

關於可伸縮性,請考慮使用同步Web請求與緩慢的外部服務器進行通信的Web應用程序。由於IIS只分配有限數量的線程來爲來自用戶的請求提供服務,因此當用戶數量增長時,所有用戶線程都有可能在等待外部Web請求時被阻止。這意味着某些用戶請求將被IIS拒絕。

0

這取決於,在asp.net中,你必須使用同步(直到4.5);但是在Windows窗體或任何其他類型的C#項目中,它可以防止線程被擱置。調用ASYNC完成事件,將允許您更新正確的信息,而無需掛起UI或主線程。

+0

您不必在ASP.NET中使用同步Web請求。 – davidfowl 2012-07-31 06:25:37

+0

演示如何在asp.net 4.5之前使用線程而不使用全局變量。我很想知道如何。 – jamesbar2 2012-07-31 06:30:45

+0

使用全局變量與編寫異步代碼有什麼關係? ASP.NET自.NET 2.0以來支持異步處理程序和異步頁面。 4.5確實增加了一些改進(特別是在等待異步時),但是你可以*今天在ASP.NET中創建異步web請求。 – davidfowl 2012-07-31 06:34:27

0

在異步模式下,服務器只能回覆你想要的,這樣可以最大限度地減少網絡流量,最大限度地縮短響應時間,改善用戶體驗。

+0

你爲什麼認爲同步過程使服務器做你不想要的東西? – rikitikitik 2012-07-31 05:48:25

+0

我有一批我想在後臺運行,其他人編碼,我希望它只在我的進程數低時運行 – cdub 2012-07-31 05:49:13