Welcome

首页 / 软件开发 / 数据结构与算法 / 构建SOA组合业务服务,第3部分

构建SOA组合业务服务,第3部分2011-04-08 IBM Javier Garcia Qiang第3部分: 在WebSphere中使用REST体系结构样式构建可使用的Web服务

本系列讨论如何开发组合应用程序来支持业务服务,本文是其中的第三篇文章。本文的重 点是代表性状态传输(Representational State Transfer,REST)体系结构样式。通过使用 Facade 组件作为 REST 样式的接口,现有的 SOAP 样式的 Web 服务支持可自定义的 URL、 多资源格式表示、浏览器响应缓存、大型附件的流化以及使用 HTTP 方法来操作资源。

引言

代表性状态 (REST) 体系结构样式提供了壁垒较低的使用 Web 服务门槛。典型 REST 样 式应用程序的外部接口包括大量统一资源标识符(Uniform Resource Identifier,URI)可 寻址资源和一些操作,如创建、读取、更新和删除 (CRUD) 等。这样的体系结构样式的优势 是其简单性。

开发人员兼作家 Paul Prescod 将 REST Web 服务定义为“使用 HTTP 协议的语法 和语义将其功能完全作为一组 URI 可寻址资源提供的 Web 服务”(请参见参考资料) 。可以将万维网本身视为 REST 样式的例子。位于 Web 底层的 HTTP 协议使用统一资源定位 符Uniform Resource Locator,URL)来表示资源和一些广泛使用的 HTTP 方法,如用于操作 资源的 GET、POST、PUT、HEAD 和 DELETE。这个简单的体系结构样式通过重用 Web 的松散 耦合与分布式基础设施来提供可伸缩性和交互能力。

本文给出了一个银行业务服务示例,该服务将贷款利率发布到类似于 Bankrate 的聚合器 网站(请参见参考资料)。聚合器网站通常从多个不同的提供商收集信息,并将其聚合为客 户端 Mashup。这也称为透明地组合,可以将其视为组合应用程序。为了方便地创建此类 Mashup,服务提供商需要公开一个简化接口。REST 体系结构样式可很好地满足此要求。

本文建议使用Facade 组件 来向现有 SOAP 样式的 Web 服务提供 REST 样式的接口。本 文描述组件所需的功能,并将这些功能捕获在 Rational® Software Architect 可重用 资产规范(Reusable Asset Specification,RAS)模式中。此模式由端点和现有 Web 服务 的操作进行参数化。可以将此模式转换为可部署的 Java™ 2 Enterprise Edition (J2EE) Servlet 实现,以调用现有 Web 服务。这个生成的 Servlet 支持所需的 REST 样式 功能,如浏览器缓存、资源内容格式协商和使用 SOAP Attachment for Java (SAAJ) 标准进 行大型附件的 HTTP 流化。

REST 样式的 Facade 组件所需的功能

在 REST 样式的 Web 服务 Facade 组件中需要以下功能:

用于指示 REST 样式的资源的可自定义 URL REST 体系结构样式支持采用 URL 来提供对 细粒度资源的访问。例如,在贷款应用程序中,银行在特定日期提供的贷款利率就是一个必 需的资源。通过使用不同的 URL 表示每个细粒度资源,可允许其他应用程序(如电子邮件) 方便地引用这些资源。这还同时支持使用 Web 2.0 技术(如 Ajax)进行客户端资源组合。 因此,Web 服务 Facade 组件允许应用程序开发人员自定义表示资源的 URL。

用于操作资源的 HTTP 方法,如 GET、POST、DELETE、PUT、TRACE 和 OPTIONS。 REST 样式的 Web 服务允许通过数量较少的常用操作访问资源,如用于获取资源的表示形式、获取 关于资源的信息以及操作资源的各个独立操作。HTTP 协议已经定义了这样的操作集(GET、 POST、PUT 等等)。(有关 HTTP 方法的更多信息,请参见参考资料。)Facade 组件支持使 用这些 HTTP 方法。请注意,针对 SOAP Web 服务的 Web 服务描述语言(Web Service Description Language,WSDL)1.1 仅支持 HTTP POST 方法。WSDL 2.0 通过包括对 HTTP GET 绑定的支持对此进行了补充,但在 WebSphere® Application Server V6.1 中尚不 支持 WSDL 2.0。另请注意,HTTP DELETE、PUT、TRACE 和 OPTIONS 方法使用并不频繁,而 且经常被防火墙阻止。

资源表示形式和内容格式协商 URL 所访问的每个资源都可以使用不同的形式加以表示, 具体取决于访问资源的客户机。客户机可以是台式计算机上的 HTML 浏览器或其他 SOAP Web 服务或 Ajax 或 JavaScript Object Notation (JSON) 客户机(请参见参考资料)。Facade 组件查询 HTTP 请求的 Accept Header 字段来确定客户机所需的响应格式,并随后以所需的 格式提供资源。

资源表示形式的浏览器与网关代理缓存 REST 样式的结果最常用于使用 HTTP GET 方法访 问资源。对于 HTTP GET 请求,REST 样式的 Web 服务可以设置 HTTP 响应 Header 字段来 提供指示信息,以确定 Web 浏览器是否缓存返回的资源表示形式以及缓存多长时间、要缓存 的资源表示形式的有效或失效策略是什么。通过支持响应缓存,可提高应用程序的可伸缩性 。Facade 组件会相应地将 HTTP Header Cache-Control 响应指令设置为 PUBLIC、PRIVATE 等。

使用 SAAJ 来调用 SOAP 样式的 Web 服务 SOAP 样式的 Web 服务以 XML 形式返回响应 ,而此格式通常是 REST 样式客户机需要的资源表示形式。所以,Facade 组件可避免由于直 接访问 XML 格式的 SOAP 响应消息而造成的不必要的取消封送开销。为此,Facade 组件使 用 SAAJ 来调用现有的 Web 服务。SAAJ 还可以通过 HTTP 对 Web 服务响应中附件内的大量 数据进行流化。

REST 样式的 Web 服务 Facade 的 RAS 模式

简单而言,RAS 模式是一种可重用资产,描述给定上下文中重复出现的问题的解决方案( 请参见参考资料部分,其中提供了指向 IBM Pattern Solution 网站的链接)。可以使用 IBM Rational Software Architect (RSA) 之类的工具来捕获模式,以自动化解决方案开发 工作。下面的部分将对 RAS 模式进行描述,用以捕获 REST 样式的 Web 服务 Facade 的所 需功能。

下载和安装模式

请参见下载部分,其中提供了打包为可重用资产的一个 REST 模式和一个转换插件。通过 以下步骤将此资产安装到 RSA 中: