Kevin Haverlock 评论专栏: 深入探讨 WebSphere Application Server Feature Pack for Web 2.0

通过 IBM WebSphere® Application Server Feature Pack for Web 2.0,您现在可以使用 IBM® 用来创建动态 Ajax 应用程序的技术。了解其中一些关键特性如何对您的 Web 应用程序产生巨大影响。 本文来自于 IBM WebSphere Developer Technical Journal

Kevin Haverlock, 软件开发人员, EMC

作者照片Kevin Haverlock 是位于北卡莱罗纳州的 IBM Research Triangle Park 的一名软件工程师。他从事过自 WebSphere Application Server 5.0 以来的多方面相关工作。他最近在致力于 Web 2.0 Feature Pack for WebSphere 的开发。Kevin 目前在研究如何使用 Web 开发工具来帮助客户增强其 WebSphere Application Server 的可服务性。



2009 年 8 月 26 日

功能部件包演示

在 IBM Software Group 中观察开发团队围绕 Ajax(Asynchronous JavaScript and XML)架构创建并交付创新的设计是非常令人兴奋的事情。Ajax 代表下一代 Web 开发,并且可以用于创建创新的基于浏览器的用户界面。作为一名开发人员,我发现重量级图形用户界面应用程序之间的界限开始变得模糊,这些应用程序运行在它们自己的本地操作系统上,并见证了当今的浏览器和设备的丰富性。

通过使用 Feature Pack for Web 2.0,IBM 开发人员用于创建 Ajax 应用程序的技术现在也可方便地由 IBM WebSphere Application Server 用户使用 —— 并且是完全免费的。

与其他 WebSphere Application Server 功能部件包(比如用于 EJB 3.0 和 Web 服务的功能部件包)不同的是,WebSphere Application Server Feature Pack for Web 2.0 是以应用程序为中心的。这意味着 Feature Pack for Web 2.0 并不会修改内部 WebSphere Application Server 运行时来提供额外的优点和功能。相反,该功能部件包提供了一组 Java™ 库和 JavaScript™ 文件,可以在开发应用程序时使用。指出这一点是因为我遇到过许多用户,他们不愿意应用功能部件包,因为害怕会将新的行为引入到应用服务器运行时中;WebSphere Application Server Feature Pack for Web 2.0 不会出现这种情况。当使用 Web 2.0 功能部件包进行开发时,可以挑选您希望包含在应用程序中的特性或技术,然后像往常一样部署应用程序。

早在 2008 年首次发行时,我曾撰写了一篇有关 Web 2.0 功能部件包的 概述文章。这里,我希望您仅关注其中一些关键特性,它们会对您的 Web 应用程序开发产生重要的影响。


关注关键特性

Feature Pack for Web 2.0 V1.0.0.2 包含了许多适用于客户端和服务器端运行时的元素。在客户机端为 Dojo Toolkit 1.3.1。在服务器端为一组丰富的库和连接特性集。让我们仔细看看所有这些内容。

客户端

Dojo Toolkit 1.3.1 是一个强大的开源 JavaScript 库,可以用于创建丰富多样的用户界面,可以在浏览器内部运行。Dojo 在 Palm Pre 和 Apple iPhone 上良好地支持所有主要的浏览器和呈现器,Palm Pre 和 Apple iPhone 建立在 WebKit 浏览器引擎的基础上。Dojo Toolkit 从平台浏览器实现中抽象出特殊的限制和行为。

Dojo Toolkit 被划分为 5 个部分:

  1. 基础部分为 Dojo Toolkit 内核,其中包含一个精巧的 dojo.js 文件并且进行了优化,因此可以使用最少的时间下载浏览器。基础部分中包含有用的库,比如自举和事件通知等等。
  2. 核心部分包含了各种各样的 GUI 组件和 IO 传输,后者用于将 XHR 请求发送给服务器。
  3. Dijit 部分构建在基础和核心部分之上,提供了一组丰富的额外小部件控件,这些小部件控件被进行了国际化,并且已启用,可以被访问。
  4. Dojox 包含了 Dojo Toolkit 中代表创新内容的方面。Dojox 模块包括制图、离线存储、网格和数据存储(下面将详述)等等。
  5. Util 包含了 Dojo 中的测试工具,可以用于测试工具箱中提供的小部件。

Dojo 提供了丰富的特性集,但是我希望引起特别注意的特性是 dojox.data。Dojox.data 提供了一个统一的访问层,它抽象出唯一数据格式的概念。从 JavaScript 的角度来看,所有数据被表示为一个项(或项的一个属性),这提供了一种以标准方式访问数据的方法。Dojo 以开箱即用的方式为一些知名的服务,比如 Google、Flickr 等,提供了一组丰富的数据存储。您可以轻松地将数据存储与自己的 UI 小部件结合在一起,或者直接将它们集成到由 Dojo 提供的众多部件中。

更为重要的是,dojox.data 存储为开发人员提供了访问所创建的服务器端服务的方式。dojox.data.JsonRestStore 文件提供了一种基于标准的方式,可以与使用 RESTful 架构的基于 JSON (JavaScript Object Notation) 的服务交互。JsonRestStore 提供了通过 HTTP/REST 执行读取、写入和通知的方法。交互使用基于服务器的 GET、PUT、POST、DELETE 命令。

下面的代码行解释了 dojox.data.JsonRestStore 的创建方式。目标指定了资源的 URL,并且 idAttribute 是 ID 名称。idAttribute 通常表示一个主键 ID,用于唯一地标识服务器上的资源:

newStore = new dojox.data.JsonRestStore({target:"/MyTable/", idAttribute:"myId"});

dojox.data 的真正强大之处是能够与各种广泛的 Dojo UI 小部件集成。例如,dojox.grid 小部件是一个表显示小部件。添加示例 dojox.data.JsonRestStore 非常简单,只需传递您创建的 dojox.data 存储(清单 1)。

清单 1
gridLayout = [
       { name: 'Address', field: 'shipToAddress', editable: true},
       { name: 'Name', field: 'name'},
       { name: 'Id', field: 'myId'}];
var grid = new dojox.grid.DataGrid({
       store: newStore,
       structure: gridLayout
}, dojo.byId("gridElement"));
grid.startup();

gridLayout 数组定义了列名和字段映射。dojox.data.JsonRestStore 负责解析由服务器返回的 JSON 数据,而 dojox.grid.DataGrid 小部件负责将项内容映射到网格的行和列中。dojox.data.JsonRestStore 还可以用于将用户修改后的数据通过 POST 和 PUT 操作返回给服务器。

服务器端

Feature Pack for Web 2.0 提供了一组丰富的库和连接特性,您可以在基于服务器的应用程序中使用,为浏览器客户机开发提供帮助。并不强制要求您对 Dojo Toolkit 使用这些库,但是它们让开发变得更轻松:

  • JSON4J

    我在前面提到过,您可以使用 dojox.data 与基于 JSON 的服务进行交互。JSON4J 库是 JSON 处理类的实现,可用于您的 Java 应用程序。该库来自于返回给客户机的 JSON 数据流,提供以下内容:

    • 一个 Java 对象模型,用于构建和操作将被呈现为 JSON 的数据。
    • 快速的 XML 到 JSON 的转换。JSON4J 可用于将服务中的 XML 回复转换为 JSON 结构,以简化在 Ajax 应用程序中的使用。
    • 一个 JSON 字符串和流解析器,可以生成相应的 JSONObject,后者是 JSON 结构在 Java 中的表示。
  • Ajax 代理

    功能部件包提供了基于 servlet 的转发代理,可用于从不同站点聚合内容。现代浏览器使用一种同源策略,只允许将后续请求发送给发出页面的相同域。如果您的 JavaScript 应用程序需要与您或其他人编写的服务建立连接,那么这种同源策略会造成问题。例如,如果 JavaScript 应用程序与另一个服务器建立联系,比如从 Yahoo 获得天气信息,那么浏览器将阻塞请求,因为您从 Yahoo 请求的信息与您的 JavaScript 应用程序位于不同的域位置。Ajax 代理可以被配置为代表浏览器将请求发送给 Yahoo 服务。由于 Ajax 代理和您的 JavaScript 应用程序位于相同的域中,因此 JavaScript 应用程序通过了浏览器的同源策略测试。

    为了提供控制权,代理包含了一个白名单配置文件,可用于定义代理可以访问的站点。此外,代理可以过滤 HTTP 头部、cookies 和 mime 类型,从而提供一定程度的站点控制权,这些站点可通过基于浏览器的客户机访问。

  • 面向 Java 组件的 Web 远程功能

    要将基于 Ajax 的架构和 J2EE™ 解决方案起来,面临的一个挑战就是将客户端运行时映射到 J2EE 结构。例如,考虑一个可以在表格中显示信息的 JavaScript 小部件,表格使用 JavaScript 动态创建。表格所需的数据位于服务器中,并且可以通过 EJB 访问。那么,您如何访问这些 EJB 结构?

    功能部件包以 JAR 库的形式提供了一个 Remote Procedure Call Adapter (RPCAdapter),它可以被嵌入到一个服务器端 Web 应用程序。RPCAdapter 可用于接受 HTTP 请求,比如 POST 和 GET,并且将请求直接映射到用户创建的类中。RPCAdapter 的一个强大之处就是能够将 EJB 会话和集合数据序列化到被返回给浏览器客户机的 JSON 或 XML 流中。JSON 和 XML 数据可以包含将由小部件显示的信息。

  • Ajax 消息传递

    虽然 Ajax 消息传递听上去没什么特别,但它是一种新颖的概念,让您能够创建可以根据服务器中发生的更改动态更新的应用程序。Ajax 消息传递服务使用发布和订阅模式将浏览器和 WebSphere Application Server Service Integration Bus (SIBus) 连接起来,以将服务器端事件推入到浏览器。客户机-服务器通信通过 Bayeux 协议实现,Bayeux 协议基于 JSON 并作为事件传递的发布/订阅机制。在服务器上,可以将 Ajax 消息传递服务看作是使用 Dojo Toolkit 提供客户端支持的 Comet 服务器实现。

    Ajax 消息传递服务将浏览器客户机与 WebSphere SIBus 连接了起来,使 Web 服务或任何其他项连接到总线中,以将事件发布到基于 Web 的客户机中。通过将一个实用文件库 JAR 放到一个应用程序 Web 模块,并设置一个简单的配置文件以及配置 servlet 映射,您就可以在新的或现有的应用程序中使用 Ajax 消息传递服务。

  • Apache Abdera 库

    Apache Abdera 是一个可以提供提要联合支持的开源项目。Abdera 可以处理 ATOM 联合格式和 ATOM 发布协议。您可以在服务器上使用 Abdera 库从其他来源读取联合提要,或者为您的小部件生成自己的 ATOM 提要。Dojo 提供 UI 小部件来帮助显示基于 ATOM 的信息。


结束语

本文介绍了 IBM WebSphere Application Server Feature Pack for Web 2.0,并重点查看了一些关键功能,这些功能可以帮助您为 WebSphere Application Server 创建自己的 Ajax 风格的 Web 应用程序。希望这些信息可以激发您进一步研究这个功能部件包,您将找到更多有用特性,帮助您挖掘 Web 应用程序的巨大潜力。

参考资料

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere, Web development
ArticleID=422469
ArticleTitle=Kevin Haverlock 评论专栏: 深入探讨 WebSphere Application Server Feature Pack for Web 2.0
publish-date=08262009