Web 服务编程,REST 与 SOAP

为什么选择 RESTREST 架构风格是一种全新的针对 Web 应用的开发风格,与 RPC 风格的 Web 服务(关于 RPC 风格的 Web 服务描述,请参见Wikipeida)一样,是企业信息化的一个重要架构实践领域。本文从一个简单的应用场景出发,使用 REST 和 SOAP 两种不同的架构风格实现,通过对 REST 与 SOAP Web 服务具体对比,旨在帮助读者更深刻理解 REST...
摘要由CSDN通过智能技术生成

为什么选择 REST

REST 架构风格是一种全新的针对 Web 应用的开发风格,与 RPC 风格的 Web 服务(关于 RPC 风格的 Web 服务描述,请参见 Wikipeida )一样,是企业信息化的一个重要架构实践领域。本文从一个简单的应用场景出发,使用 REST 和 SOAP 两种不同的架构风格实现,通过对 REST 与 SOAP Web 服务具体对比,旨在帮助读者更深刻理解 REST 架构风格。

4 评论

李 三红, 高级软件工程师, IBM

2009 年 7 月 28 日

  • expand内容


 

REST 简介

在开始我们的正式讨论之前,让我们简单看一下 REST 的定义。

REST(Representational State Transfer)是 Roy Fielding 提出的一个描述互联系统架构风格的名词。为什么称为 REST?Web 本质上由各种各样的资源组成,资源由 URI 唯一标识。浏览器(或者任何其它类似于浏览器的应用程序)将展示出该资源的一种表现方式,或者一种表现状态。如果用户在该页面中定向到指向其它资源的链接,则将访问该资源,并表现出它的状态。这意味着客户端应用程序随着每个资源表现状态的不同而发生状态转移,也即所谓 REST。

关于 REST 本身,本文就不再这里过多地讨论,读者可以参考 developerWorks 上其它介绍 REST 的文章。本文的重点在于通过 REST 与 SOAP Web 服务的对比,帮助读者更深刻理解 REST 架构风格的特点,优势。

回页首

应用场景介绍(在线用户管理)

本文将借助于一个应用场景,通过基于 REST 和 SOAP Web 服务的不同实现,来对两者进行对比。该应用场景的业务逻辑会尽量保持简单且易于理解,以有助于把我们的重心放在 REST 和 SOAP Web 服务技术特质对比上。

需求描述

这是一个在线的用户管理模块,负责用户信息的创建,修改,删除,查询。用户的信息主要包括:

  • 用户名(唯一标志在系统中的用户)
  • 头衔
  • 公司
  • EMAIL
  • 描述

需求用例图如下:

图 1. 需求用例图

REST

如图 1 所示,客户端 1(Client1)与客户端 2(Client2)对于信息的存取具有不同的权限,客户端 1 可以执行所有的操作,而客户端 2 只被允许执行用户查询(Query User)与用户列表查询(Query User List)。关于这一点,我们在对 REST Web 服务与 SOAP Web 服务安全控制对比时会具体谈到。下面我们将分别向您介绍如何使用 REST 和 SOAP 架构实现 Web 服务。

回页首

使用 REST 实现 Web 服务

本部分将基于 Restlet 框架来实现该应用。Restlet 为那些要采用 REST 结构体系来构建应用程序的 Java 开发者提供了一个具体的解决方案。关于更多的 Restlet 相关内容,本文不做深入讨论,请见参考资源列表。

设计

我们将采用遵循 REST 设计原则的 ROA(Resource-Oriented Architecture,面向资源的体系架构)进行设计。ROA 是什么?简单点说,ROA 是一种把实际问题转换成 REST 式 Web 服务的方法,它使得 URI、HTTP 和 XML 具有跟其他 Web 应用一样的工作方式。

在使用 ROA 进行设计时,我们需要把真实的应用需求转化成 ROA 中的资源,基本上遵循以下的步骤:

  • 分析应用需求中的数据集。
  • 映射数据集到 ROA 中的资源。
  • 对于每一资源,命名它的 URI。
  • 为每一资源设计其 Representations。
  • 用 hypermedia links 表述资源间的联系。

接下来我们按照以上的步骤来设计本文的应用案例。

在线用户管理所涉及的数据集就是用户信息,如果映射到 ROA 资源,主要包括两类资源:用户及用户列表。用户资源的 URI 用http://localhost:8182/v1/users/{username} 表示,用户列表资源的 URI 用 http://localhost:8182/v1/users 表示。它们的 Representation 如下,它们都采用了如清单 1 和清单 2 所示的 XML 表述方式。

清单 1. 用户列表资源 Representation

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<users>
	<user>
			<name>tester</name>
			<link>http://localhost:8182/v1/users/tester</link&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值