MIS2000 Lab. -- ASP.NET学习&分享 / ASP.NET案例精编(清华大学出版社)
您好,我来自台湾。很高兴与各位分享一些成果。希望对您有帮助。出版书籍是「ASP.NET案例精编 / 清华大学出版社」。

PostBack(回传)与CallBack(回呼)的差别

http://www.dotblogs.com.tw/mis2000lab/archive/2008/09/23/postback_callback.aspx

 

 

 

以下章节,是已出版的新书中的20 Client CallBack

 

ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)

http://www.china-pub.com/46063 

2009/5/15上市

市场价 :¥59.80 RMB(人民幣)

 

ASP.NET案例精编--适用于VS2005/2008

   

===================================================================

以前介绍的AJAX功能(本书第十九章),几乎不用写程序就可以靠着 ScriptManager + UpdatePanel来完成。但是ASP.NET也有提供手写版本的AJAX功能,那就是本章介绍的 CallBack(回呼)。

 

使 用工具来开发AJAX固然快速,但因为初学者不知其所以然,常常误用而导致奇怪的执行结果(程序会跑,但结果怪怪的,会出现意料之外的状况)。本章的 CallBack虽然动手写程序比较累,但流程确定反而不容易出错。非常适合想要进一步提升自己功力的读者,进行自我锻炼。


20-1  PostBack(回传)与CallBack(回呼)的差别


ClientCallBack是从ASP.NET 2.0版才开始出现的新产物,透过CallBack我们可以完成AJAX的异步功能。有了前一章使用 UpdatePanel的经验,现在我们将探讨「理论」的部份。

 

CallBack 在VS 2008里面,GridView控件的属性就有一个「EnableSortingAndPagingCallBacks」,让排序与分页功能,可以使用 CallBack。简单的说,Client CallBack就是由Client端启动(触发)AJAX异步更新的功能。那么,以前介绍过的PostBack(回传)与目前介绍的 CallBack(回呼)差异在哪里呢?我们从执行面来分析之:

 

PostBack运作流程:
 网页的Page事件,触发PostBack提出POST要求(Request)

1. Init2. Load State3. Process PostBackData4.Load5. PostBack Events6.Save State7. PreRender8. Render9. Unload 

  最后跟一般网页的要求(Request)一样,Server会回传一个响应(Response)给对方的浏览器。

 
图CallBack_01  传统PostBack的作法。

 

CallBack运作流程:
 网页的事件触发CallBack给「Script EventHandler」来处理,然后Script EventHandler提出异步的要求(Async Request)

1. Init2. Load State3. Process PostBackData4.Load5. CallBack Event6. Unload
 最后把CallBack的结果(即CallBack Result)传回去,对方(使用者的浏览器)就会收到Script CallBack了。

 


20-2  Client CallBack改进了什么?


在 ASP.NET Web网页的预设模型中,使用者会与网页互动并且按下按钮,或执行其它动作以产生回传(PostBack)。然后就会重新建立网页和控件、在服务器上执行网页程序代码,然后将新的内容(全部的新网页)送回浏览器呈现。这是传统的PostBack流程,如下:

 

1. ClientServer(第一次)。,使用者执行某个ASP.NET程序(想浏览某个网页)。

2. ServerClient。ASP.NET程序经过IIS翻译之后,变成HTML网页,传给使用者的浏览器。(这阶段,使用者要等待,因为大量数据传输中….)

3. ClientServer(互动阶段)。使用者看到网页之后,不管是输入数据、或是按下按钮(例如:GridView的编辑模式),数据将会再传回Web Server,作其它互动。

4.  ServerClient。处理完成后,「全部的」网页画面,又传到使用者的浏览器上,「整个网页」都作更新。(这阶段,使用者要等待,因为大量数据传输中….)。

 

……如此周而复始,这些流程就是网页与用户的互动模式(不管ASP/JSP/PHP或ASP.NET,都是一样的)。

 

 


图CallBack_02  传统PostBack的流程。任何要求都会导致Server重新传回「整个画面」的资料。

 

但这种PostBack的传统方法,有两大缺点:

第一、如果网页中的Client端指令码(如JavaScript)是维护某些状态信息 (例如:区域变量值),则Client端回传网页的动作,并且取得新的网页内容,一定会摧毁原本的状态信息。

 

第二、网页的回传(PostBack)需要被Server处理,因此会产生降低Server的效能,使用者也必须等待一段时间,直到Server处理完成并把”全部”的数据传回给Client端的浏览器(如同上述流程的第三与第四状态)。

 

若 要避免遗失Client端状态、或是减轻Client端(即客户端,使用者的浏览器)与Web Server之间来回往返的处理负载,您可以撰写Client CallBack(客户端回呼)的 ASP.NET网页程序代码。在Client端 CallBack中,客户端JavaScript的function函式会将网页要求(Request)传送至 ASP.NET Web网页。此网页会执行其一般生命周期的修改版本。网页会进行初始化并且建立其控件与其它成员,然后呼叫特殊标记的方法。这种方法会开始处理编码,然 后将其它客户端JavaScript的Function函式能够读取的值,传回浏览器。(资料来源:微软MSDN网站)

 

在Client CallBack的整个程序中,网页会存在使用者的”浏览器”内,所以使用者完全不需要等待,反应速度快而且Web Server负担也轻。相同的作业流程,Client CallBack在上图的第三与第四阶段省了很多时间,加速后的CallBack流程如下:


3. ClientServer(互动阶段)。使用者看到网页之后,不管是输入数据、或是按下按钮等等。只有使用者触发的那一小部份,才会传回Web Server作处理。

4.  ServerClient。Server处理完成后,只把「需要更新」的那一小部份网页,传到Client端(使用者的浏览器)。这阶段,Server只要处理并传递一小部份数据即可,所以Web Server负担减轻,使用者的浏览速度也变快很多…。

 

 .......................后续章节,将会开始写程序。许多AJAX可以做到的功能,CallBack也可以作得到.........

 ===================================================================

 

另外,在本书的第十五章 Page类别一文里面,也提到相关的内容:

 

 

 

===================================================================

相关的程序,请看本网站的另外一篇文章---- AJAX与ListView的怪现象?--样版内,控件ID重复的问题 

 

 

 

 

 

posted on 2010-10-27 18:24  MIS2000 Lab.  阅读(1011)  评论(0编辑  收藏  举报


ASP.NET案例精编——适用于VS 2005/2008(配光盘)
 

当当网购买 http://product.dangdang.com/product.aspx?product_id=20583373&ref=search-1-pub