了解 AJAX 应用程序与 ASP.NET Atlas Framework
一、介绍
AJAX 描述一个跨平台、以 Client 端为中心的网页应用程序开发途径,在 AJAX 技术中程序开发者使用 Client 端 Script 进行对伺服端应用程序的呼叫,并且此种呼叫使用以 XML 为基础的通讯协议,微软代号 "Atlas" 是一个 AJAX 开发方法的应用与扩充 ASP.NET 套件,这个主题描述 AJAX 所要解决的网页应用程序开发的相关议题,解释 AJAX 基本概念,和介绍 ASP.NET Atlas 为 AJAX 开发途径所带来的重大革命与增强。
AJAX 所针对的开发议题
使用者与开发者皆能体验到传统网页应用程序 Request-Response 模式所造成的局限性,因为网页是无状态的,故每当网页数据或使用者接口需要变更时,必须将整个网页 post back 到服务器更新,意即页面必须进行 Client 端与 Server 端之间的往返,尤其是当 Client 与 Server 之间若有极大量的数据过度频繁的往返,将会造成者用者感受到非常漫长的等待。
另一个议题是网页浏览器之中的 HTML 控件与桌面应用程序的 Rich UI 相较之下显得能力有限,很多浏览器都包含增强的 HTML 控件,但是这些增强的 HTML 控件都是针对特定浏览器而实作,因此想要获得这些增强 HTML 控件的 Rich UI,网页应用程序开发者必须针对特定浏览器建立应用程序,这将会非常复杂,故很多开发人员避免在他们网页之中建立以特定 Client 端特征的功能,因此使用者发现网页应用程序的吸引力相较于其它类型的应用程序要小得多。AJAX 开发方法是针对以上两个开发议题提供解决方案。
二、AJAX 技术概念
AJAX 是建立在一个核心概念:使用异步呼叫,并结合 XML 方式传输数据与大量使用 Client Script。
在 AJAX 技术中,程序开发人员能够以 Client 端 Scripts 方式透过 XMLHTTP 来进行异步的 Web 服务呼叫,而 XMLHTTP 通讯协议常用于将信息封装成 XML 数据型式在网络间传送,大多数的浏览都有实作 XMLHTTP 类别,而此类别用于建立一个进行远程呼叫与数据收发的 proxy 对象,透过异步方式进行呼叫,网页中的数据与使用者接口不需要进行 Client 端与 Server 端之间的往返,结果是具有较少的数据传送与较佳的应用程序效能,异步呼叫能够使得网页应用程序能够有更佳良好的反应性,因为使用者能够在呼叫工作仍在 Server 端执行的同时,而在 Client 端浏览器继续进行工作。
另一方面 AJAX 大量使用 Client 端 Script,特别是 JavaScript,JavaScript 是用于进行远程呼叫、执行 Client 端应用程序的处理与建立增强的使用者接口功能。
AJAX 的解决方案使用 JavaScript 并搭配其它数种 Client 端类型技术,包括了:
· 浏览器的 Document Object Model(DOM):DOM 将这些元素呈现在 HTML 网页中成为标准的对象组(如 document、windows 等等),并且能够透过程序化方式来操作它们。
· 动态 HTML(DHTML):当使用者在页面中输入时,DHTML 透过 Client 端的 Script 方式延伸了 HTML 互动的反应能力,并且使其变得更容易,并且不需要往返的行为。
· 行为(Behaviors):这是一种程序化包装在使用者接口中的动作(如拖曳 drag and drop 行为),并且能够与网页元素产生连结。
· 组件(Component):是一种能够提供扩充 Client 端使用者接口功能特点的客制化 JavaScript 对象。
JavaScript 结合这些 Client 端技术后,使得程序开发人员足以建立能够媲美桌上型应用程序的使用者接口功能特点,在这有两个例子可提供给大家参考:
· 微软 Virtual Earth 网站:一个提供电子地图的网站。
· 微软 Outlook Web Access:一种透过 WEB 浏览器收发 e-mail 的 Client 端使接口。
两者皆展示出以 AJAX 技术所建立丰富的使用者接口与高效能之应用程序典范。
然而使用这些技术来建构 AJAX 应用程序是复杂的,直到现在程序开发人员仍必须手动建立事件处理、讯息传递、和建立丰富性使用者接口所需要的细节。而且再者因为 JavaScript 不是对象导向语言(OOP),故它没有强型别、命名空间、例外事件处理与其 OOP 之特点,为这些功能特点,程序开发人员还经常必须以其它的语言来撰写内建于其中的专属基础架构程序代码。
三、ASP.NET Atlas 提供一个新途径
ASP.NET 如何能够利用 AJAX 应用程序的威力微软的答案是:「Atlas」,ASP.NET Atlas 提供所有 AJAX 的能力,但是却进一步扩充其概念,并且大幅降低 AJAX 应用程序开发的复杂性,而 Atlas 同时提供了 Client 端与 Server 端两方面的能力,说明如下:
(一)在 Client 端方面
Atlas 提供了一组丰富的 Script Libraries,提供了下列功能特点:
· 对象导向开发
· Client 端的 Libraries 函式库在 JavaScript 中加入了对象导向特性,如型别系统、数据型别、命名空间、事件等等,这些特性给予程序开发人员一个熟悉的程序撰写模式,使得您能够开发出更高质量、具有维护性与可重复使用性的程序代码。
· 浏览器兼容性
· Libraries 函式库会自动处理不同浏览器的兼容性问题,免除了撰写特定浏览器的 Scripts 的必要性。
· 行为与 Client 端组件
· Libraries 函式库包括了常用的行为,包括了「auto-completion、drag and drop、popup 与 mouse hovering」,同时它们也加入了能够系结数据的组件,如此简化了建立事件驱动的商业应用程序。
· 负责处理远程呼叫的程序代码
· Libraries 函式库负责管理透过 XMLHTTP 进行异步呼叫的复杂性,降低到只需要几行 Script 程序代码便能进行异步呼叫。
· 宣告式程序撰写模式
· Libraries 函式库允许您建立 Atlas 组件时使用宣告性语法,如同您建立 ASP.NET 服务器控件的方式一样。
(二)在 Server 端方面
Atlas 在 Server 端方面亦包括了丰富的伺服组件功能特点,以补充 Atlas 在 Client Script Libraries 函式库之不足,包括了:
· Web 服务器控件
· 这些 ASP.NET Atlas 服务器控件能够发出 Client 端的 Script 以便您使用 Atlas 功能特点,如果您已经非常熟悉伺服端程序开发,这些服务器控件对您将会非常有用,或者您不必手动建立 Atlas Client 端 Scripts。
· Web 服务
· 有一些 Web 服务能够为 Atlas 应用程序加入非常有用的伺服端功能特点,如 ASP.NET 2.0 的 profiles。