似乎異步HTTP處理程序比同步HTTP處理程序縮放更好。但是,然後可以通過異步處理程序處理.aspx頁面?如果是這樣,怎麼樣?還是有人需要使用Ajax實現相同?異步.aspx頁面
回答
異步HttpHandlers的可以從入站IIS/ASP.NET進程線程,以便有效地產生一個異步處理程序(或使用異步ASP之一當不佔用ASP.NET請求隊列斷開.NET頁機制)。這對於同時處理大量請求的大量網站非常有用。
異步處理程序適用於IO綁定操作(調用Web服務,等待SQL Server運行長查詢),其中應用程序只等待結果返回。但是,如果您的aysnc任務是CPU密集型的,CPU負載不會從機器中卸載,那麼對您而言,它不會有太大的幫助。如果您的異步任務需要很長時間才能運行,因爲請求只是顯示爲掛起狀態,它們也不能很好地工作。對於操作需要一段時間的更多交互式UI,AJAX和輪詢是首選方法 - 或者讓用戶知道任務已完成(電子郵件或基於應用程序的通知)的其他回調機制。
對於CPU密集型任務卸載,您必須構建一個應用服務器類型體系結構,您可以將處理卸載到另一臺計算機並查詢進度,或使用其他通知機制讓您知道進度並返回最終結果。
我這裏這兩種方法的一些幻燈片和例子(異步只針對網頁,通過樣品提供自定義組件卸載):
http://www.west-wind.com/Weblog/posts/543251.aspx (去朝後下方的「與龍運行的請求處理ASP.NET「
異步HTTP處理程序可以在您運行I/O綁定任務(從網絡,磁盤,數據庫,Web服務等獲取某些內容)相對較長的時間內提供可伸縮性,並且您不希望擁有線程池線程在等待這些任務完成時被阻塞。在其他情況下,他們不會提供幫助。他們不會神奇地讓你的應用程序更快。您通過實現IHttpAsyncHandler
接口來創建異步處理程序。
Page
對象(其處理.aspx頁面)是和HttpHandler
。您可以通過在Page
指令中設置Async
屬性來將其配置爲使用異步。然後按照代碼背後的其中一個異步代碼模式。例如:
protected void Page_Load(object sender, EventArgs e)
{
PageAsyncTask pat =
new PageAsyncTask(BeginAsync, EndAsync, null, null, true);
this.RegisterAsyncTask(pat);
}
- 1. aspx頁面內的異步循環過程
- 2. 調用方法aspx異步
- 3. Struts2異步加載頁面
- 4. WebMatrix中的異步頁面?
- 5. HTM頁面Aspx頁面
- 6. aspx頁面
- 7. ASPX頁面
- 8. 在ASPX頁面
- 9. Sharepoint .aspx頁面
- 10. Umbraco URLRewrite .aspx頁面
- 11. 動態aspx頁面
- 12. 裝載aspx頁面
- 13. 繼承.aspx頁面?
- 14. Windows.Forms.MessageBox在頁面.aspx
- 15. aspx頁面佈局
- 16. 頁面沒有.aspx
- 17. aspx頁面空白
- 18. 斷點aspx頁面
- 19. aspx頁面在客戶端完全呈現後調用異步方法
- 20. 默認情況下,ASMX WebService或WCF或aspx頁面是異步的嗎?
- 21. 插入aspx頁面蟶頁
- 22. ASPX - 鏈接HTML頁面ASPX頁面和響應
- 23. 訪問.aspx頁面Ajax TabContainer從.aspx .ascx
- 24. 靜態頁面(.html)與ASP.NET頁面(.aspx)
- 25. aspx頁面作爲頁面的參數
- 26. 重定向aspx頁面爲XAML頁面
- 27. ASPX頁面XSLT和主頁面
- 28. jquery異步調用塊頁面刷新
- 29. 異步通信交叉頁面
- 30. 片段,視圖頁面,異步任務