淺析ASP.NET異步頁面
ASP.NET異步頁面與ajax異步的效果區(qū)別:
1:ASP.NET的異步頁面讓我***想法是和ajax效果比較,ajax應(yīng)用在比較費時的方法上,當數(shù)據(jù)加載時,在頁面顯示數(shù)據(jù)的區(qū)域先用一段提示文字,例如:數(shù)據(jù)正在加載中...之類的,無論這個方法多么費時,它只影響這一塊的數(shù)據(jù)顯示,頁面其它區(qū)域不受影響(如果速度不慢的話)。而ASP.NET異步頁面并不能達到這種效果,從上面的異步執(zhí)行流程圖可以看出,異步調(diào)用的事件發(fā)生在onprerendercomplete中,就是說在頁面中生命周期之內(nèi),頁面要想完全呈現(xiàn)給用戶,必須等待異步方法返回結(jié)果。例如,一個費時的異步io方法,需要費時10s,那么用戶要想看到頁面,起碼在10s以上。
2:ASP.NET異步頁面增加的是處理請求的數(shù)量,線程池線程得到了高效的使用,提高了可伸縮性,而ajax是在頁面加載完成之后根據(jù)返回結(jié)果調(diào)用回調(diào)函數(shù)操作dom完成數(shù)據(jù)加載。
異步任務(wù):
ASP.NET 2.0 中引入了另一個方法來簡化異步操作: registerasynctask,比 addonprerendercompleteasync 具有以下優(yōu)勢。
1:除了 begin 和 end 方法,registerasynctask 允許注冊當異步操作長時間無法完成時調(diào)用的超時方法。設(shè)置 @ page 指令中 asynctimeout 屬性設(shè)置超時。
2:可以在一個請求中多次調(diào)用 registerasynctask 來注冊若干異步操作。
3:可以使用 registerasynctask 的第四個參數(shù)將狀態(tài)傳遞給 begin 方法。這個參數(shù)一般設(shè)置為null。
registerasynctask 的異步頁與依賴于 addonprerendercompleteasync 的異步頁相類似。需要將該頁的 asyncmode 屬性設(shè)置為 true,且與通過 prerender 事件執(zhí)行,此時調(diào)用使用 registerasynctask 注冊的 begin 方法,而不是addonprerendercompleteasync ,而且進一步保持請求處理直到***一個操作完成。
總結(jié):
正確的使用好asp.net異步頁面在某些環(huán)境下能夠使得應(yīng)用程序性能得到優(yōu)化。
【編輯推薦】