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