使用REST体系结构样式构建可使用的Web服务
使用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流化。
有关URI、CRUD、Mashup、Facade模式、SOAP样式的Web服务、RAS模式、SAAJ及其他资源的更多信息,请参见参考资料。
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服务响应中附件内的大量数据进行流化。
- 1企业信息化的死角:企业管理部
- 2击败你的对手 从建立信息管理战略开始
- 3诊断中小企业软件项目管理难题
- 4寻找属于自己的BI模式 开拓思维和加强协作
- 5直面信息化孤岛 改善现状不如责问IT部门
- 6合肥OA选型的民主投票到底合理还是不合理?
- 7OA办公软件的工具作用并不能替代人去解决或者监督企业
- 8实例告诉你SaaS模式如何助力数据备份
- 9关键用户掉链子,合肥OA实施易付诸东流
- 10Linux创作者讲述管理软件项目五条经验
- 11商业智能的普及之道 开拓思维和加强协作
- 12ITIL的“三要”、“三不要”
- 13ITIL为何难以深化 IT服务管理系统构建对策
- 14业界观察:中小企业IT采购需求新解
- 15亚太地区SOA治理投资在迅速增长
- 16当合肥OA撞上潜规则 灵活应对是关键
- 17关注:关于合肥OA报表体系几个方面的思考
- 18协同软件不是万能钥匙 看清协同软件的边界
- 19企业存储正在为垃圾数据付出昂贵代价
- 20用合肥OA驱动5S制度改善物料管理
- 21解决鸡肋难题 剖析SaaS的非典型性法则
- 22SOA需要四种主要中间件产品的有效支持
- 23企业采用SaaS服务 IT战略思考是关键
- 24如何根据企业战略协同CRM和SCM系统
- 25商业智能如何将数据转变为可用信息?
- 26合肥OA顾问:效率高就一定会事情少吗?
- 27中小企业信息化也要按需选安全
- 28信息化中企业物资编码管理实现方法
- 29并非夕阳或朝阳 IT服务仍在黎明
- 30企业整体信息化项目建设的尴尬及顾虑