分类:
2009-06-17 15:00:13
将表示层与逻辑层完全分开:在传统的ASP.NET应用程序,包括使用UpdatePanel的应用程序开发模型中,数据及其表现形式(页面样式)的生成是混在一个.aspx页面中完成的。页面首先取得数据,然后对数据进行格式化,之后输出为一个字符串,并将这段HTML以一个整体的方式发送回浏览器。这往往导致表示层和逻辑层有着相当程度的耦合,不利于程序的开发以及今后的扩展。而对于ASP.NET AJAX客户端编程模型来讲,表示层与逻辑层在物理上就是完全分开的(前者位于客户端,后者位于服务器端)。表示层开发人员只需要关心数据显示样式的实现,而作为逻辑层开发人员,则只需要为表示层提供纯粹的数据即可。这种完全分开的架构让整个系统非常明晰,有着完美的可复用性以及可扩展性。
提高了程序执行效率:在传统的ASP.NET应用程序中,即使用户的某次操作只需要改变页面中的一个微小的部分,服务器端也要重新生成页面的完整内容并将其交付给浏览器重新显示。虽然浏览器中的JavaScript也有修改页面中某个局部的能力,但是服务器却对这种能力视而不见,为浏览器包办了所有的任务,造成了浏览器空有一身本领却无用武之地。这既是资源的极大浪费,同时由于服务器担负了太多的责任,也造成了程序执行效率的下降。在使用了 UpdatePanel的服务器端ASP.NET AJAX编程模型中,服务器虽然将一部分工作交给浏览器完成,但浏览器所做的事情仍旧相当简单基础,服务器端性能虽有提高,却不是非常明显。而对于 ASP.NET AJAX客户端编程模型而言,浏览器的潜力被充分地挖掘,它将完整地负责程序的显示控制、与用户交互等表示层逻辑;而服务器则专心于为浏览器提供数据,不 再需要关心任何有关显示样式的任务,大大减轻了其工作量,进而让程序整体上的执行效率有了较大的提高。
将网络流量降到最低:在传统的ASP.NET应用程序中,用户的每一次操作都会引发页面的一次完整更新,哪怕这次更新实际上只是修改了页面中的 一个字符。这将极大地浪费宝贵的网络流量,也就是让用户花费更多的等待时间。使用UpdatePanel的ASP.NET AJAX服务器端编程模型对这个缺陷有所改进,服务器每次将只发送UpdatePanel中定义的该页面要修改的内容,避免了对其他不变部分的更新。但 UpdatePanel在定义页面的更新部分时,粒度仍显得过粗,网络中将依旧无法避免传输一些不必要的显示样式信息,比如某个数据表格的< table />标签等。ASP.NET AJAX的客户端编程模型则彻底将一切不必要传输的显示样式信息统统抛弃,只发送纯粹的数据,对于数据表格来说,传输的内容可能是一个二维数组或是一个 DataTable,这样就在最大程度上减少了网络流量,也就带来了最快的响应速度。
为了让你能够更加透彻地了解ASP.NET AJAX的客户端编程模型的优势,认识到这种我们完全没有接触过的编程模型,从而提高学习的兴趣。我们再来用一个比喻来比较这三种编程模型。在 ASP.NET的服务器端编程模型中,服务器和客户端的关系就像是商人和信使之间的关系,商人与客户沟通全靠信使的帮助,而信使却不懂得商人和客户谈论的问题,哪怕是客户提出的再小的问题,信使也只能千里迢迢将其带回给商人处理。在ASP.NET AJAX服务器端编程模型中,服务器和客户端的关系就像是主人和管家,管家是可以为主人分担一些琐碎事情的,但最终决定权还是在主人这一方。而在 ASP.NET AJAX客户端编程模型中,服务器和客户端的关系则更像是艺人和经纪人,艺人只要专心于歌唱等内功的修炼(服务器端提供程序的核心——数据),而经纪人则 全权代理艺人处理与外界打交道的各项事宜(客户端提供数据的表现样式以及程序的行为),二者分工明确并相辅相成。
本书将逐步介绍ASP.NET AJAX所引入的这种全新的客户端编程模型。让我们一起走入ASP.NET AJAX框架另一半的世界吧!