简单对象访问协议 (SOAP ,全写为Simple Object Access Protocol )是一种标准化的通讯规范,主要用于Web服务 (web service)中。SOAP的出现是为了简化网页服务器(Web Server)在从XML数据库中提取资料时,无需花时间去格式化页面,并能够让不同应用程式之间透过HTTP通讯协定,以XML 格式互相交换彼此的资料,使其与编程语言、平台和硬件无关。此标准由IBM、Microsoft、UserLand和DevelopMentor在1998年共同提出,并得到IBM,莲花(Lotus),康柏(Compaq)等公司的支持,于2000年提交给万维网联盟 (World Wide Web Consortium ;W3C),目前 SOAP 1.1 版是业界共同的标准,属于第二代的XML协定(第一代具主要代表性的技术为XML-RPC以及WDDX)。
用一个简单的例子来说明 SOAP 使用过程,一个 SOAP 消息可以发送到一个具有 Web Service 功能的 Web 站点,例如,一个含有房价信息的数据库,消息的参数中标明这是一个查询消息,此站点将返回一个 XML 格式的信息,其中包含了查询结果(价格,位置,特点,或者其他信息)。由于数据是用一种标准化的可分析的结构来传递的,所以可以直接被第三方站点所利用。
- SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;
- SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例;
- SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;
- SOAP绑定(binding),使用底层协议交换信息。
表象化状态转变 (英文:Representational State Transfer ,简称REST )是Roy Fielding 博士在2000年他的博士论文中提出来的一种软件架构 风格。
目前在三种主流的Web服务 实现方案中,因为REST模式的Web服务 与复杂的SOAP 和XML-RPC 对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com 提供接近REST风格的Web服务进行图书查找;雅虎 提供的Web服务也是REST风格的。
<script type="text/javascript"> //<![CDATA[ if (window.showTocToggle) { var tocShowText = "显示"; var tocHideText = "隐藏"; showTocToggle(); } //]]> </script>
宗旨
REST 从资源的角度来观察整个网络,分布在各处的资源由URI 确定,而客户端的应用通过URI来获取资源的表形。获得这些表形致使这些应用程序转变了其状态。随着不断获取资源的表形,客户端应用不断地在转变着其状态,所谓表形化的状态转变(Representational State Transfer)。
这一观点不是凭空臆造的,而是通过观察当前Web互联网的运作方式而抽象出来的。Roy Fielding 认为,
“ | 设计良好的网络应用表现为一系列的网页,这些网页可以看作的虚拟的状态机 ,用户选择这些链接导致下一网页传输到用户端展现给使用的人,而这正代表了状态的转变。 | ” |
要点及标准
需要注意的是,REST是一种设计风格而不是 一个标准。REST通常基于使用HTTP ,URI ,和XML 以及HTML 这些现有的广泛流行的协议和标准。
- 资源是由URI来指定。
- 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
- 通过操作资源的表形来操作资源。
- 资源的表现形式则是XML或者HTML,取决于是读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。
REST的要求
- 客户端和服务器结构
- 连接协议具有无状态性
- 能够利用Cache机制增进性能
- 层次化的系统
- Code On Demand - Javascript
关于状态
应该注意区别应用的状态和连接协议的状态。REST对于连接的无状态性实际上要求每次经过无状态的连接协议传送的信息必须包含应用中所有的状态信息。
实现举例
例如,一个简单的网络商店应用,
列举所有商品,
GET http://www.store.com/products
具体某一件商品,
GET http://www.store.com/product/12345
下单购买,
POST http://www.store.com/order, <purchase-order> <item> ... </item> </purchase-order>
REST的优点
- 可以利用缓存Cache来提高响应速度
- 通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
- 浏览器即可作为客户端,简化软件需求
- 相对与其他叠加在HTTP协议 之上的机制,REST的软件依赖性更小
- 不需要额外的资源发现机制
- 在软件技术演进中的长期的兼容性更好
参考资料,wiki百科,http://zh.wikipedia.org/wiki
发表评论
-
ILC六月十三日SQLite类库转换
2010-06-13 17:50 1079最近一直在和参数类型打交道,各种变换。方法调 ... -
开发新产品所需要的十类文档
2010-01-05 11:34 16101、产品概念文档(项目策划书) 主要 是对市场需 ... -
winrar 3.71破解方法
2009-09-18 16:26 0winrar 3.71版随便下个中文版安装。 ... -
java 学习,资料及相关概念
2009-07-31 09:50 0java:是一门语言的艺术,她讲究 ... -
LDAP Schema的概念和基本要素
2009-07-04 20:16 0Schema是LDAP的一个重要组 ... -
Twitter
2009-06-08 11:58 1071Twitter 原址http://baike.ba ... -
网络发撒肥
2009-05-19 17:57 0samba4 ,文件共享,UGI ----system-con ... -
Web 开发的关键要素
2009-04-14 16:00 0通常情况下,Web 开发可以概括为以下五方面内容: 表单提 ... -
工作小事
2009-03-15 17:41 0今天下午来客户,做电子方面的调研。晚上帮客户 ... -
selenium IDE
2009-03-13 13:29 0selenium IDE 一款可以录制过程的firefox 插 ... -
javascript
2009-03-11 15:45 0javascript 在 双括号中使用变量。 “我的名字叫”+ ... -
我的学习资料库
2009-03-09 18:28 787http://www.w3school.com.cn 是最 ... -
php 环境变量检测
2009-03-03 17:08 1329<?php phpinfo() ?> 以任意文件 ... -
聪明的提问方式
2009-03-03 09:08 944提问之前 在通过电邮、新闻组或者聊天室提出技术问题前,检 ... -
如何导入导出MySQL数据库----*.sql文件操作
2009-02-27 14:18 36611. 概述 MySQL数据库的导入,有两种方法: 1) 先导 ... -
从window下安装ubuntu的弊端
2009-02-26 17:40 0今天系统又蹦了,原因是我把 环境变量给改错了。结果系统 ... -
cvs
2009-02-25 15:56 834cvs svn 安装任何软件,现阅读随软件安装包里的 R ... -
mojavi
2009-02-24 11:45 0http://hi.baidu.com/mayig/blog/ ... -
Ubuntu下安装Postgresql 8.3
2009-02-23 16:07 2190今天再次要用POSTGRESQL 。索性系统的整理 ... -
软件开发 名词解释
2009-02-10 14:16 1046CVS: 协作版本系统 (C oncurrent ...
相关推荐
### SOAP与REST的比较 #### 一、引言 在当今的互联网技术中,Web服务作为连接不同系统间的关键桥梁,扮演着极其重要的角色。在众多实现Web服务的技术方案中,SOAP(Simple Object Access Protocol)与REST...
3. **调试工具**:帮助开发者测试和调试转换后的REST服务,确保与原始SOAP服务的行为一致。 在实际开发中,了解和熟练使用这些工具和方法可以极大地简化SOAP到REST的迁移过程,同时保持服务的可用性和兼容性。对于...
SOAP and REST WebService 的比较分析,SOAP and REST WebService 的比较分析
对比soap和rest的区别,从架构 应用 传输 数据承载区分
浏览器插件,无缝集成和测试 SOAP 和 REST 服务。 Boomerang - SOAP & REST Client 6.1.0.0 for Chrome。 压缩包内包括 crx、pem、rar 等文件,谷歌内核的浏览器可直接拖放 crx 文件安装,如果提示“该扩展程序未列...
Boomerang比其他SOAP客户端快很多,生成具有默认值的SOAP请求,并与REST服务无缝集成。 Boomerang允许您在项目中组织SOAP和REST服务,并在集合中组织请求。 它还可以更新WSDL并导入序列化的XML。 我们在Boomerang...
`FlickrClient`是这个项目的客户端应用,它可能使用SOAP或REST与服务器进行交互。SOAP客户端会解析WSDL文档,自动生成调用服务的方法;REST客户端则直接构造HTTP请求并解析响应。 `ClassLibrary1`是一个类库,可能...
在本篇博客“REST基础(二):Web服务编程,REST与SOAP”中,我们将深入探讨两种主要的Web服务编程模型:Representational State Transfer (REST) 和 Simple Object Access Protocol (SOAP)。这两种技术都是用于构建...
与SOAP相比,REST(Representational State Transfer)是一种更为轻量级、灵活的架构风格,适用于互联网环境。REST强调资源的概念,每个资源都有一个唯一的URI(Uniform Resource Identifier)。通过HTTP方法(如GET...
在IT行业中,Windows Communication Foundation(WCF)是微软推出的一种用于构建分布式应用程序的服务框架,它集成了多种通信协议,如SOAP(简单对象访问协议)和REST(Representational State Transfer)。...
6. **SOAP与REST的区别:** SOAP通常被认为是重量级的,因为它依赖于复杂的XML结构和WSDL描述。相比之下,REST(Representational State Transfer)使用更简单的HTTP方法(如GET、POST、PUT、DELETE)和JSON或XML...
7. **SOAP与REST对比**: SOAP相比REST(Representational State Transfer),更注重强类型和契约式编程,具有更好的错误处理机制和安全特性。然而,REST通常更简单,更适合资源导向的架构,且更易于实现和消费。 ...
SOAP与REST的比较** SOAP以其严谨的协议规范和丰富的功能集著称,但相比REST(Representational State Transfer)架构,SOAP的使用通常较为复杂。REST倾向于使用HTTP方法(如GET、POST、PUT、DELETE)直接映射资源...
SOAP与REST(Representational State Transfer)是两种主要的Web服务编程模型。REST通常更简洁,依赖于HTTP方法(GET、POST、PUT、DELETE)来操作资源,而SOAP则提供更严谨的协议规范,适合需要强类型和事务处理的...
五、SOAP与REST的对比 尽管SOAP在Web服务领域有着广泛的应用,但近年来REST(Representational State Transfer)风格的API逐渐流行。REST更加简洁,直接使用HTTP方法操作资源,而SOAP则更为复杂,强调消息交换。在...
通过此项目,开发者可以将现有SOAP服务的接口转换成RESTful风格,使客户端应用能够更高效地与服务器进行通信。 【标签】"rest-api":REST API是基于HTTP协议的一种软件架构风格,它定义了资源的表示方式、操作方法...
**SOAP与REST的比较** 虽然SOAP在企业级应用中广泛采用,但REST(Representational State Transfer)近年来因其简洁和直观的设计获得了更多青睐。REST倾向于使用HTTP方法的语义,而SOAP则依赖于XML的复杂结构。REST...
**对比SOAP与REST** SOAP和REST(Representational State Transfer)是两种主要的Web服务风格。SOAP更注重消息的完整性和安全性,适合企业级的、需要强类型和事务处理的场景。而REST则更轻量,基于HTTP协议,易于...
5. **SOAP与REST对比** SOAP强调强类型和契约式接口,适合复杂的、事务性的应用。REST(Representational State Transfer)则更简洁,基于HTTP方法,适合资源导向的Web服务。REST通常比SOAP更快、更易用,但SOAP在...