理解基于客户端的 Web 应用程序、AJAX、以及 ASP.NET Atlas
介绍
JavaScript 已经在客户端编程中使用了很长一段时间。然而在流行的浏览器的最新版本中被引入了一个特征:XMLHTTPRequest
对象(能够与服务器完成异步通信、并且无需执行重新生成页面的完整回传过程就可以完成 XML 数据的发送和接收)。
使用这些技术的 Web 页面开发方式(客户端脚本和与服务器的异步通信)就是 AJAX,即异步 JavaScript 和 XML。AJAX 允许开发者创建能够为用户提供超强响应能力的页面(因为它们在 UI 中使用客户端脚本)并在无需长时间暂停并丢失状态的情况下即可完成数据的操作任务(因为它们使用异步通信完成数据的发送与接收)。两个 AJAX 风格的应用程序范例就是 Microsoft 虚拟地球网站(www.virtualearth.com)和 Microsoft Outlook Web 访问电子邮件客户端。这两个应用程序都属于使用这种方式所构造的可扩展 UI 和高性能的应用程序典范。
代码名为 Atlas 的 ASP.NET 新技术是一个应用并扩展 AJAX 方法的 Microsoft 技术包。本文描述了 AJAX 的概念、列出了 Atlas 所涉及的 Web 应用程序开发问题、并提供一个关于 ASP.NET Atlas 的概览来描述 Atlas 对 AJAX 方法的重大演变和改进。
AJAX 技术的概念
在 AJAX 中,开发者能够通过从客户端脚本中使用 XMLHTTPRequest
对象把信息封装成 XML 数据然后在网络中进行传递的方式来异步调用 Web 服务。要产生调用,XMLHTTPRequest
对象就需要提供一个能够产生远程调用并对数据进行发送和接收的代理对象。
AJAX 同样扩展了客户端脚本的用途,尤其是 JavaScript(ECMAScript)。JavaScript 被用来产生远程的程序调用,并在客户端完成应用程序的处理(与反对在服务器端被处理一样),并用来创建增强的 UI 特征。
AJAX 解决方案同时使用了 JavaScript 和其他几种客户端技术,如下所示:
- 浏览器的文档对象模型(DOM):把 HTML 页面中的元素暴露成一个能够进行可编程操作的标准对象集(文档、窗口、等等)。
- 动态 HTML(DHTML):使用无需页面的回传过程就可以在客户端脚本中处理用户输入的设施来对 HTML 进行扩展。
- 行为:一种对 UI 动作(如拖放行为)的可编程封装方式,能够与页面元素相关联。
- 组件:提供广泛客户端 UI 特征的自定义 JavaScript 对象。
Atlas 所涉及的开发问题
出于如下原因,开发 AJAX 风格的页面将会是一种挑战:
- Web 页面中的元素必须使用浏览器特有的方式进行编程。并且各个浏览器所实现的 DOM 和 DHTML 的版本彼此之间都有细微的差异。
- 只能够使用 JavaScript 来完成客户端编程;一些 AJAX 类型的特征实现可能是复杂的并且需要精通 JavaScript。
- JavaScript 不能够为 .NET 开发者提供所期望的完整的语言特征(如完全面向对象),也不能提供像 .NET Framework 一样的类型库支持。开发者必须从基础开始编写应用程序的代码才能够创建 AJAX 风格的应用程序。
- JavaScript 和客户端开发通常不能够很好地被流行的 IDE 所支持。
为解决这些问题,Atlas 为创建基于客户端的应用程序提供了一个完整的框架。Atlas 由客户端组件和集成了 Atlas 的 ASP.NET 服务器端组件所组成。
Atlas 的架构
一个以最小形式出现的 Atlas 应用程序会使用客户端脚本库来管理 UI 并调用基于服务器端的组件。Atlas 同样提供了能够生成预定义的客户端脚本并且能够与客户端进行交互的服务器组件。
Atlas 客户端组件
至于纯粹的客户端开发,Atlas 包含了一个为创建基于客户端的应用程序而定义的层次化客户端脚本库(.js 文件)集合。这些层由如下内容所组成:
- 一个浏览器兼容层:为 Atlas 脚本排除为浏览器编写特定脚本的需要而提供跨大部分浏览器之间的兼容性。
- Atlas 核心服务:包括一系列的 JavaScript 扩展(如类集合、命名空间、事件处理、继承、数据类型、以及对象序列化)。这些面向对象的特征给予你一种熟悉的编程模式并允许你编写高质量、可维护、以及可重用的代码。
- 一个 Atlas 基本类库:包括一系列的组件(如字符串构造器、调试器、计时器、以及追踪)。
- 一个与基于 Web 的服务和管理异步远程方法调用的应用程序进行通信的网络层。这个层对使用 XMLHTTP 产生异步调用时的复杂性进行管理,并减少脚本代码的编写量。
- 一个提供诸多 Atlas 客户端能力的 UI 层:行为、Atlas 声明语法、UI 组件、以及数据绑定。
-
一个为客户端开发而创建 Atlas 特定控件的控件层。这些控件能够是已绑定数据的、脚本化的、与已绑定 Atlas 行为(如拖放)的、等等。控件包括一个自动完成的文本框、一个已绑定数据的
ListView
控件、导航控件、等等。 - 一个可声明的编程模型:允许你使用与创建 ASP.NET 服务器控件相同的方式来创建 Atlas 组件。
你可以把 Atlas 客户端脚本库想象成是服务器中 ASP.NET 架构的一个子集。
Atlas 服务器端组件
Atlas 不单单只与创建客户端脚本有关。Atlas 还包括了基于服务器端的组件、服务、以及能够被集成到 Atlas 客户端脚本中的控件,包括如下内容:
- 能够使如下 ASP.NET 特征可用的 Web 服务:档案、成员资格、角色、个性化、以及全球化和特定文化服务。
- Atlas 服务器控件类似于 ASP.NET 服务器控件,区别就是它还能够产生 Atlas 客户端脚本。Atlas 控件相当接近于现有的 ASP.NET 服务器控件(如按钮、标签、选项、文本框、复选框、超链接、以及验证控件)。在你已经非常了解服务器端的开发方式或者还没有手动创建 Atlas 客户端脚本的实践经验的情况下,使用 Atlas 服务器控件是比较适用的。
-
Atlas 服务器控件会自动产生 JavaScript 来创建客户端行为,包括
HoverBehavior
控件、ClickBehavior
控件、Popup
控件、以及AutocompleteBehavior
控件。
所有的 Atlas 控件都将被集成到 Visual Studio 中,因此你能够在同一个设计器中对它们进行操作,就像你能够对标准的 ASP.NET 服务器控件进行操作一样。
更多关于 Atlas 的特征和架构的学习,请参考:[ASP.NET Atlas 概览]。