ReverseAjax 反轉AJAX是一種旨在將邏輯控制權轉移到服務端的Web實現模式
何謂控制權轉移
傳統的AJAX調用一般由用戶端行為觸發,比如說擷取地區資料,非同步驗證等。
ReverseAjax將控制權轉交給服務端,就像服務端觸發用戶端事件一樣,即很早的Web推的技術。
ASP.NET實現變長串連需要使用到非同步頁面的技術,同時該頁面需要禁用會話來實現每次請求都產生一個新的執行個體執行。
複製代碼 代碼如下:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="response.aspx.cs" Inherits="_Default" Async="true" AsyncTimeout="30" EnableSessionState="False"%>
if (Request.Form.Count>0)
{
if (Request.Form["type"] == "loop")
{
ChatTask task = new ChatTask(this.Context);
task._chatNow = this.ChatNow;//有新的訊息的回調方法,即為通知處理,這個時候釋放掉串連
string user = Request.Form["user"].Trim();
PageAsyncTask async = new PageAsyncTask(new BeginEventHandler(task.OnBegin), new EndEventHandler(task.OnEnd), new EndEventHandler(task.OnTimeout), user);
Page.RegisterAsyncTask(async);
Page.ExecuteRegisteredAsyncTasks();//非同步執行
}
}
具體代碼和實現效果請參見範例。
附件:
範常式序: ReverseAjaxChat範例.rar