跟进此帖子的问题:
目前我对SOAP和RESTful Services之间的差异略有了解.
我的问题是我何时应该使用SOAP,何时应该使用RESTful; 在性能/速度或请求处理方面,哪一个"更好"?
我正在RESTful(java)中第一次实现,我想要了解更多; 我以前处理过SOAP.
REST几乎总是会更快.SOAP的主要优点是它提供了一种服务机制,可以向客户描述自己,并宣传它们的存在.
REST更轻量级,几乎可以使用任何工具实现,从而带来更低的带宽和更短的学习曲线.但是,客户必须知道要发送什么以及期望什么.
通常,当您向外部世界发布复杂或可能更改的API时,SOAP将更有用.除此之外,REST通常是更好的选择.
REST与SOAP Web服务
我发现很多新的Web服务现在使用REST样式架构而不是SOAP架构.让我们退后一步,解释一下REST是什么.
什么是REST Web服务
首字母缩略词REST代表Representational State Transfer,这基本上意味着每个唯一的URL都是某个对象的表示.您可以使用HTTP GET获取该对象的内容,将其删除,然后您可以使用POST,PUT或DELETE来修改对象(实际上,大多数服务都使用POST).
谁在使用REST?
雅虎的所有Web服务都使用REST,包括Flickr,del.icio.us API使用它,pubsub,bloglines,technorati以及eBay和亚马逊都有REST和SOAP的Web服务.
谁在使用SOAP?
谷歌在实现其Web服务以使用SOAP方面保持一致,但Blogger除外,它使用XML-RPC.您还可以在许多企业软件中找到SOAP Web服务.
REST与SOAP
您可能已经注意到我提到的使用REST api的公司已经存在很长时间了,而且他们的apis今年大部分都出现了.所以REST绝对是创建网络服务的时髦方式,如果创建网络服务可能是时髦的(让我们面对你用肥皂洗,你在疲惫时休息).REST Web服务的主要优点是:
轻量级 - 没有太多额外的xml标记人类可读结果易于构建 - 无需工具包SOAP也具有一些优势:
易于使用 - 有时是刚性 - 类型检查,遵守合同开发工具对于消费Web服务,有时它之间的折腾更容易.例如,谷歌的AdWords网络服务真的很难消费(无论如何都是CF),它使用SOAP标头,以及许多其他使它变得困难的东西.相反,亚马逊的REST Web服务有时可能很难解析,因为它可以高度嵌套,结果模式可能会根据您搜索的内容而有所不同.
您选择哪种架构,确保开发人员可以轻松访问它,并且有详细记录.
Freitag,P.(2005)."REST与SOAP Web服务".来自http://www.petefreitag.com/item/431.cfm于2010年6月13日
肥皂
简单对象访问协议(SOAP)标准是定义消息体系结构和消息格式的XML语言,由Web服务使用,它包含操作的描述.WSDL是一种基于XML的语言,用于描述Web服务以及如何访问它们.将运行在SMTP,HTTP,FTP等上.需要中间件支持,定义良好的机制以定义WSDL + XSD等服务,WS-Policy SOAP将返回基于XML的数据
REST Representational State Transfer(RESTful)Web服务.它们是第二代Web服务.RESTful Web服务,通过HTTP进行通信而不是基于SOAP的服务,并且不需要XML消息或WSDL服务API定义.对于REST,不需要中间件只需要HTTP支持.WADL标准,REST可以返回XML,纯文本,JSON,HTML等
REST是一种架构.REST将提供人类可读的结果.REST是无状态的.REST服务很容易缓存.
SOAP是一种协议.它可以运行在JMS,FTP,Http之上.
REST没有WSDL [Web描述语言]接口定义.
REST是通过HTTP进行的,但SOAP可以通过任何传输协议,如HTTP,FTP,SMTP,JMS等.
REST代表Representational State Transfer,其中SOAP代表简单对象访问协议.
SOAP定义了自己的安全性,其中REST从底层传输继承安全性.
SOAP不支持错误处理,但REST具有内置错误处理功能.
REST是轻量级的,不需要XML解析.任何客户端都可以使用REST,甚至是使用Ajax和Javascript的Web浏览器.REST消耗的带宽较少,每个消息都不需要SOAP头.
REST对于提供URI的任何协议都很有用.忽略REST的第5点,如下图所示.
休息VS SOAP
肥皂:
►SOAP是在TCP/UDP/SMTP上运行的简单对象访问协议.
►XML格式的SOAP读写请求响应消息.
►SOAP使用接口来定义服务.
►SOAP更安全,因为它有自己的安全性和明确定义的标准.
►SOAP遵循RPC和Document样式来定义Web服务.
►SOAP使用SOAP-UI作为客户端工具进行测试.
休息
►REST是使用底层HTTP协议的代表性状态转移.
►REST无国籍.
►REST是一种架构风格,用于描述和定义Web服务.
►REST可以使用JSON/XML/Plain HTML读写请求响应消息.
►REST
为Web服务中使用的每个资源使用URI.资源可以是图像文本方法等
.►REST使用一组VERB,如HTTP的GET,POST,PUT,DELETE.
►与SOAP UI相比,REST易于开发且易于管理.
►REST具有轻量级客户端工具或插件,可轻松集成到浏览器中.
►REST服务可以缓存.
休息和肥皂之间的区别
肥皂网服务:
如果您的应用程序需要有保证的可靠性和安全性,那么SOAP提供了额外的标准来确保这种类型的操作.
如果双方(服务提供商和服务消费者)必须就交换格式达成一致,那么SOAP会为此类交互提供严格的规范.
RestWeb服务:
完全无状态操作:用于无状态CRUD(创建,读取,更新和删除)操作.
缓存情况:如果需要缓存信息.
SOAP Web服务总是进行POST操作,而使用REST,您可以选择特定的http方法,如GET,POST,PUT,DELETE.示例:要使用SOAP获取项目,您应该创建一个请求xml,但在REST的情况下,您只需在URL本身中指定项目ID.