级别: 中级 Kevin Haverlock (kbh@us.ibm.com), 软件开发人员, IBM
2008 年 6 月 11 日
本文将概述 IBM® WebSphere® Application Server Feature Pack for Web 2.0,其中包括 Ajax 样式的体系结构和 Feature Pack 内容的描述。此信息是为寻求客户端和服务器端解决方案的开发人员和架构师编写的,可用来创建 Ajax 样式的体系结构。
来自 IBM WebSphere Developer Technical Journal。
引言
异步 JavaScript 和 XML (Ajax) 代表 Web 开发的下一步发展,该技术有助于在浏览器上创建富用户界面表示形式。在本地操作系统上运行的重要图形用户界面 (GUI) 应用程序的功能和当今浏览器中可能提供的丰富功能之间的界线变得越来越模糊。您无需深入查看 Google Maps 或创新的 Yahoo!通过邮件就可以了解 Ajax 技术的强大功能。
基于浏览器的用户界面中的不断革新使几乎所有人在他们交互的网站中都需要此类功能。Ajax 开发为您创建新的创新方法以便将内容提交给用户提供了很好的机会。同时,您可能想知道如何在当今的 J2EE™ 应用程序上下文中实现此目标。本文将详细介绍使用新的 Feature Pack for Web 2.0 for IBM WebSphere Application Server 实现这些目标的技术。
Ajax:简要概述
图 1 显示了基于 Web 的典型应用程序模式,在 Web 开发场景中,它是一种非常普通的模式。在本示例中,服务器从浏览器接收请求,将响应发送回客户端。对于浏览器客户端,浏览器发送请求并等待响应。响应通常为 HTML 文件,它只是包含如何在浏览器中设定页面格式的表示形式信息的元数据文件。还可能存在以内容样式表 (CSS) 形式返回的其他页面样式。在服务器上执行内容的创建,并将内容返回到浏览器。页面内容通常由许多后端来源聚合而成,后端来源可以是对其他域或来自永久数据存储(如 IBM DB2®、Derby 或 MySql)的内容的其他 Web 服务请求。尽管在返回到服务器的页面中也存在 JavaScript™,但此模式通常用于支持角色,使页面更具交互性。
图 1. 典型的 Web 体系结构
Ajax 设计模式可使用户界面的平衡偏重于浏览器客户端。在浏览器和服务器之间可共享创建的可查看内容。某些 Web 应用程序具有可以在浏览器中执行的大多数表示形式。此应用程序的一个示例是 Google Docs Beta,它可以提供在本地操作系统上运行的电子表格、文档和表示形式功能。这些应用程序混合了在客户端上使用静态 HTML 执行的自定义小部件代码。图 2 显示了 Ajax 如何影响基于应用程序的典型 Web。
图 2. Ajax 增强的 Web 体系结构
在 Ajax 模型中,由浏览器本地执行浏览器中的内容创建。在 JavaScript 中,通过操作浏览器维护的、用来描述用户查看文档的文档对象模型 (DOM) 可以做到这一点。DOM 更新可以按用户在浏览器中看到的表示形式立即反映出来。在浏览器端,这些构造称为小部件,并将其用于描述的自包含代码,可以使用该代码操作表示形式、响应用户输入或与服务器进行异步通信。
对于委派给浏览器的表示形式,该浏览器现在需要一种方法,以便能够与服务器通信来提交信息。作为示例,小部件可能有一个 Web 表需要用数据库服务器中表示各行的数据更新。在 JavaScript 中,XMLHttpRequest (XHR) 是可用于此用途的强大 API。XHR 请求允许在服务器和用户查看的浏览器页面之间建立独立的通信。API 允许使用 HTTP 传输 XML 或其他文本信息。服务器像对待正常请求一样对待客户端的请求,并返回响应,该响应可能包含小部件在浏览器中显示所需的数据。
进一步了解 Feature Pack
IBM WebSphere Application Server Feature Pack for Web 2.0 是一种 IBM 支持的解决方案,用于在 WebSphere Application Server 上创建基于 Ajax 的应用程序和 mashup。该 Feature Pack 可用于 WebSphere Application Server Versions 6.1 和 6.0.2 以及 WebSphere Application Server Community Edition V2.0。Feature Pack 的功能旨在为开发人员和架构师提供创建 Ajax 样式的 Web 应用程序和体系结构的资源,并包括客户端运行时和服务器端功能。图 3 显示了该 Feature Pack 的安装面板。
图 3. Feature Pack 安装面板
Feature Pack 中包括的客户端运行时软件包含运行于浏览器客户端上的多项技术。这些技术包括开源 Dojo Toolkit 和对 Dojo Toolkit 的一组 IBM 扩展,用于支持附加功能。
Dojo Toolkit 1.0
Dojo Toolkit 1.0 是一种功能强大的开源 JavaScript 库,可用于创建在浏览器中运行的各种富用户界面。该库需要非浏览器端运行时插件,并且在所有主要浏览器上可以本机运行。这为 JavaScript 开发人员提供了方便,因为它有助于去掉不同浏览器实现的个性特征。
Feature Pack 提供的 Dojo Toolkit 可划分为五个部分:
-
Base 是 Dojo Toolkit 的核心并且由 dojo.js 组成。该文件的设计非常紧凑合理,因此不需要花费较多的时间就可以下载到浏览器。Base 包含许多有用的实用工具,如 bootstrapping 和事件通知等。
-
Core 包含各种 GUI 小部件和对服务器的 IO Transport for XHR 请求。
-
Dijit 基于 Base 和 Core 构建,提供一组丰富的附加小部件控件。这些控件支持国际化和可访问性。
-
Dojox 包含 Dojo Toolkit 的实验方面,并表示最终可移入基本或 Dijit 模块的创新材料。Dojox 是各个类别的孵化器,可以将其作为新功能的预览器。Dojox 模块包括图表、脱机存储和网格等。
-
Util 包含 Dojo 的测试工具,可用于测试 Dojo Toolkit 提供的小部件。
开始尝试 Dojo Toolkit 的最好方法是体验提供的测试示例。可以在浏览器中直接打开示例,这些示例展示了难以置信的灵活性和创造性,您可以直接从工具包中使用它们或创建自己的自定义小部件。可以在位于 dojo 和 dijit 部分的测试目录中找到该示例。对于 dojoX,这些示例位于每个子组件目录中。(例如,图表小部件的测试目录包含入门代码。)
IBM 对 Dojo Toolkit 的扩展
-
ATOM 源小部件
ATOM 库是一个客户端小部件,可用来呈现和使用 ATOM 企业联合源。该库包含示例组件,可帮助您利用 ATOM 源和代码:
- 提供实用工具函数的基本库、作为 JavaScript 对象的 ATOM 数据模型实现和处理与 ATOM 源双向通信的包装对象。
- AppStore 是 dojo.data API 的实现,它提供由应用程序服务器支持的数据存储解决方案。
-
IBM Gauge 小部件
Gauge 库包括以丰富的图形方式显示数字数据的一对小部件。AnalogGauge 和 BarGraph 小部件使用可缩放矢量图形 (SVG) 或矢量可标记语言 (VML)(具体取决于浏览器)可显示具有自定义范围、标记符号和任意大小指示器的数字数据。Gauge 小部件可用于动态创建自更新图形显示和仪表板。像使用 ATOM 库一样,Gauge 库附带多个示例和测试案例来演示其功能。图 4 显示了一个示例。
图 4. IBM 的 gauge 和 bargraph 小部件
-
IBM SOAP
可以使用 IBM SOAP 扩展将客户端浏览器小部件连接到基于 SOAP 的现有服务。该扩展处理创建 SOAP 信封的开销。该扩展还处理调用 SOAP 服务的远程过程调用。
-
IBM Open Search 库
IBM Open Search 扩展可以非常容易地调用与 Open Search 兼容的任何服务,并将搜索结果绑定到 Ajax 应用程序中的小部件。
服务器端的库和连接性
Feature Pack 还在服务器上提供一组丰富的库和连接功能,以帮助客户端开发。这些功能包括:
-
Ajax 代理
该 Feature Pack 提供基于 servlet 的转发代理,可以使用该转发代理聚合不同网站的内容。为提供控制,该代理包含白名单配置文件,可以使用该文件定义代理访问的网站。另外,该代理可以对 HTTP 标头、cookie 和 MIME 类型进行筛选,以便对基于浏览器的客户端访问的网站提供一定级别的控制。
-
Web-remoting for Java™ 组件
合并基于 Ajax 的体系结构和 J2EE 解决方案时遇到的难题是将客户端运行时映射到 J2EE 构造。作为一个示例,请考虑使用 JavaScript 小部件,该部件可以在使用 JavaScript 动态创建的表中显示信息。该表所需的数据存在于服务器上,可以使用 EJB 组件访问这些数据——那么您如何访问这些 EJB 构造?
该 Feature Pack 提供作为 JAR 库提供的远程过程调用适配器 (RPCAdapter),该库可以嵌入到服务器端的 Web 应用程序。可以使用 RPCAdapter 接收 HTTP 请求(如 POST 和 GET),并将该请求直接映射到用户创建的类。RPCAdapter 的强大功能之一是能够将 EJB 会话和收集的数据序列化到返回浏览器客户端的 JSON (JavaScript Object Notation) 或 XML 流。JSON 和 XML 数据可包含由小部件显示的信息。
-
Apache Abdera 库
Apache Abdera 是提供源企业联合支持的开源项目。Abdera 可同时处理 ATOM 企业联合格式和 ATOM 发布协议。您可以使用服务器上的 Abdera 库从其他来源读取企业联合源,或生成自己的源内容供小部件使用。
-
JSON4J
JSON4J 库是一组 JSON 处理类的实现,用于 Java 环境中。可以使用该库派生自己的 JSON 数据流,并提供:
-
一个简单的 Java 模型,用于构造和操作呈现为 JSON 的数据。
-
用于从 XML 到 JSON 的快速转换。可以使用 JSON4J 将 XML 应答从 Web 服务转换为 JSON 结构,以方便在 Ajax 应用程序中使用。该转换的优点是,Ajax 模式的应用程序可以处理 JSON 格式的数据,无需依赖于 Microsoft® Internet Explorer XML 转换中的 ActiveX 对象或其他特定于平台的 XML 解析器。此外,JSON 格式的数据趋向于更为紧凑而高效的转换。
-
JSON 字符串和可以生成相应 JSONObject 的流解析器,它表示 Java 中的 JSON 结构。
-
Ajax 消息传递
Ajax 消息传递服务使用发布和订阅模式将浏览器连接到 WebSphere Application Server Service Integration Bus (SIBus),以便将服务器端事件推送到浏览器。客户端和服务器之间的通信是通过 Bayeux 协议实现的。此协议基于 JSON,并用作事件交付的发布/订阅机制。在服务器上,您可以考虑使用 Ajax 消息传递服务作为 Comet 服务器的实现,并使用 Dojo Toolkit 提供客户端支持。
Ajax 消息传递服务将浏览器客户端桥接到 SIBus,使 Web 服务或任何其他项连接到总线,将事件发布到基于 Web 的客户端。通过将实用工具文件库 JAR 放入应用程序 Web 模块、设置简单的配置文件和配置 servlet 映射,可以在新的或现有的应用程序中使用 Ajax 消息传递服务。Feature Pack 中的 Quote Streamer 示例应用程序包括并演示了 Ajax 消息传递。

 |

|
结束语
本文向您介绍了 IBM WebSphere Application Server Feature Pack for Web 2.0,并简要概述了用来创建 Ajax 样式的体系结构的功能。该 Feature Pack 可用于 WebSphere Application Server Versions 6.0.2 和 6.1 以及 WebSphere Application Community Edition V2.0。
参考资料 学习
获得产品和技术
讨论
关于作者  | 
|  | Kevin Haverlock 是 IBM WebSphere Application Server 产品的架构师和开发人员,目前是 Web 2.0 Feature Pack 团队中的一员。通过 kbh@us.ibm.com 可以与 Kevin 联系。 |
对本文的评价
|