[转自]
http://heshun.org/?p=200
在实现web service的时候,接口风格是采用Rest还是SOAP呢?首先简单介绍一下REST:
什么是REST?
Rest的全称是Representational State
Transfer(可表述的状态转移),这并不是一个新概念。它的基本含义是每个URL都唯一代表某个资源,针对这个资源的操作可以抽象为4种:创建,读
取,更改,删除,分别用HTTP的4个标准方法POST、GET、PUT、DELETE来对应(详见http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services
),出于简单实现的考虑,大多采用POST实现增删改,
REST的核心概念是Resource资源。任何一个资源都可以用一个唯一的URL来标识。基于RESTful的服务是用HTTP和REST原理的简单web service实现,它是一系列资源的集合,包括三个方面:
- 以URI为基础,如
http://heshun.org/items/;
- web service所支持的MIME类型,如 JSON
, XML
或者 YAML
。可以是任何有效的MIME类型;
- 支持POST, GET, PUT 或者 DELETE这几种HTTP协议;
什么是SOAP?
SOAP(Simple Object Access Protocol
)简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议,它包括四个部分:SOAP封装(envelop),封装定义
了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(encoding
rules),用于表示应用程序需要使用的数据类型的实例; SOAP RPC表示(RPC
representation),表示远程过程调用和应答的协定;SOAP绑定(binding),使用底层协议交换信息。
WSDL(Web Service Description Language)Web 服务描述语言。在这之前,尚不存在一种机制,使一个业务能自动发现其预期伙伴提供的服务。而如今的电子商务需要一种解决方案来描述以下问题:
- 您的在线业务提供什么服务?
- 您如何调用业务服务?
- 当用户调用您的业务服务时,该业务服务需要他/她提供什么信息?
- 用户将如何提供这些必需信息?
- 服务将以什么格式发送返回给用户的信息?
WSDL的使命就是试图来描述清楚以上这些问题,它使用XML来描述。底层通信采用HTTP。
谁在用REST?
现在使用REST风格的站点包括Yahoo
、flickr
、del.icio.us API,Ebay和Amazon同时具有REST和SOAP接口。但在Amazon大约有85%的应用使用REST API,O’Reilly
的CEO Tim O’Reilly
也认为开发人员喜欢更简单的REST
,他说在复杂的场合的确用soap更适合,但他更喜欢入门门槛较低的易被广大用户人群使用的REST。
谁在用SOAP?
google的一些服务在使用SOAP,blogger还使用XML-RPC,还有很多的企业软件也用SOAP.
REST or SOAP?
REST的优点:
- 轻量级,没有额外的XML标记;
- 人类易理解的结果;
- 容易组建,不需要特定的工具;
- 松耦合,服务端方法的任何改变对客户的影响非常小;
SOAP的优点:
- 支持复杂的数据类型,有严格的合约,能胜任复杂的场合;
- 有相应的开发工具生成WSDL;
REST是面向资源的。而SOAP面向服务,每个请求都显式的指明了要调用的方法和参数,耦合度比较高,到底选择哪一种取决于开发人员是否方便开发(开发成本),以及是否具有良好的文档(英文原文:http://www.petefreitag.com/item/431.cfm
)。另外,flickr同时具有REST和SOAP的API接口,提供的API文档也很丰富,有繁体中文版,将就着看吧。可以很直观的比较这两种实现的优劣,没有哪种绝对的适合,要结合实际的应用来考虑。
分享到:
相关推荐
网络服务 * 此示例项目处理针对rest和soap api的Web服务(客户端和服务器)的创建。 休息: - 取得JSON 获取文件POST FILE和POJO类开机自检文件肥皂: - 获取对象发布对象通过MTOM获取文件通过MTOM发布文件
REST风格和基于SOAP的WebServices的比较与结合
RPC and SOAP Services Chapter 8. REST Chapter 9. Webhooks Chapter 10. HTTP Tools Chapter 11. Maintainable Web Services Chapter 12. Making Service Design Decisions Chapter 13. Building a Robust ...
Building RESTful Web Services with Go:Initially, SOAP-based web services became more popular with XML. Then, since 2012,REST picked up the pace and gulped SOAP in whole. The rise of a new generation ...
网页服务与 SOAP 和 REST 网络服务相关的 5 个任务实验 1 - REST 实验 2 - SOAP 实验 3 - WSDL 操作、生成客户端、来自 wsdl 实验 4 的模式 - WSDL -> UDDI 实验 5 结合 REST 和 SOAP
choice for Java web services, whether SOAP-based or REST-style. My approach is to interpret JAX-WS broadly and, therefore, to include leading-edge developments such as the Jersey project for REST-...
6.2 部署@webservices和@webserviceproviders 244 6.3 整合一个交互式网站和web服务 250 6.4 将@webservice作为一个ejb实现 252 6.5 java web服务和java消息服务 262 6.6 基于glassfish ws-security 265 6.7 jas部署...
lucee服务器(简称lucee)是一种动态的、基于java的标记和脚本语言,用于快速的web应用程序开发。
Extensive and detailed coverage of the enterprise ready Apache Axis2 Web Services / SOAP / WSDL engine. Attain a more flexible and extensible framework with the world class Axis2 architecture. Learn ...
The world of web services has been on a fast track to supernova ever since the architect astronauts spotted another meme to rocket out of pragmatism and into the universe of enterprises. But, ...
SOAP 服务: 讨论如何使用 PHP 创建和部署基于 SOAP 协议的 Web 服务,并介绍 SOAP 的工作原理和基本概念。 安全和身份验证: 探讨如何确保 Web 服务的安全性,包括身份验证、授权、加密等方面的技术和实践。 性能...
REST continues to gain momentum as the best method for building web services, leaving many web architects to consider whether and how to include this approach in their SOA and SOAP-dominated world....
Transbank WebServices SDK 用于集成Webpay Plus,Webpay OneClick和Webpay Patpass的库。 这家书店是由和Gonzalo De Spirito。 它还包括与Laravel的集成。 用英语阅读:新的: 在1.2.0版中,包含与Laravel的集成...
Web Services (12) • What’s REST? (18) • The killer argument (7) • Distributed Systems (13) • What about ... (13) • Clarifying “state” (6) • From here to there (18) • SOAP (9) • Cleaning up ...
REST API的开发框架介绍:JSR-311,REST Web Services框架 JAX-RS,java接口;### REST Web Application多层框架 REST 应用场景,适合和不适合什么 基于HTTP的REST, 介绍资源uri,传输格式,对资源的操作(GET、...
-显而易见的服务对象模型,可帮助减少测试开发工作并提高其速度-REST和SOAP Web服务设计支持-保留了REST Assured框架的所有功能的扩展功能-用于发送请求和响应分析的简单界面-自动为REST和SOAP生成服务对象-支持BDD...
Kyojin_服务推介会ACHOUR Roland和CLIPET Julien Web服务项目联系人:ACHOUR Roland: CLIPET Julien: 该项目收集了两个Web服务: 基于Jax-WS的SOAP API( soap文件夹) 基于JAX-RS一个REST API(其余文件夹) SOAP...
学习WebServices开发用到的相关网址。
When I rst heard about REST in early 2002, I was a strong believer in the value of the emerging Web services speci cations and standards. I was initially intrigued by the approach, particularly the ...