在java中的SOAP和REST风格的Web服务之间的主要区别

后续问题到这个职位 :

现在我对SOAP和RESTful Services之间的区别有一点点的了解。

我的问题是什么时候应该使用SOAP,何时使用RESTful; 哪一个在性能/速度或请求处理方面“更好”?

我第一次在RESTful(java)中实现,我想知道更多关于它; 我之前处理过SOAP。

REST几乎总是会更快。 SOAP的主要优点是它提供了一种服务机制来向客户描述自己,并宣传他们的存在。

REST更轻巧,可以使用几乎任何工具来实现,从而带宽更低,学习曲线更短。 但是,客户必须知道要发送什么以及期望什么。

一般来说,当您将API发布到复杂或可能发生变化的外部世界时,SOAP将会更有用。 除此之外,REST通常是更好的select。

REST vs SOAP Web服务

我看到很多新的Web服务是使用REST风格的架构而不是SOAP来实现的。 让我们退一步,解释一下REST是什么。

什么是REST Web服务

首字母缩写REST代表Representational State Transfer,这基本上意味着每个唯一的URL是某个对象的表示。 您可以使用HTTP GET获取该对象的内容,删除它,然后可以使用POST,PUT或DELETE修改对象(实际上大多数服务使用POST来实现此目的)。

谁在使用REST?

所有雅虎的networking服务都使用REST,包括Flickr,del.icio.us API使用它,pubsub,bloglines,technorati和eBay,Amazon都有REST和SOAP的Web服务。

谁在使用SOAP?

Google接口在实现其Web服务时使用SOAP是一致的,但使用XML-RPC的Blogger除外。 您也可以在许多企业软件中findSOAP Web服务。

REST vs SOAP

正如你可能已经注意到我所提到的那些使用REST API的公司已经很久没有出现,而且他们的API大部分都是在今年才出现的。 所以REST绝对是一种创buildWeb服务的stream行方式,如果创buildWeb服务可能是时髦的(让我们用肥皂洗脸,然后在疲倦的时候rest)。 REST Web服务的主要优点是:

轻量级 – 不是很多额外的XML标记人性化的可读性结果易于构build – 无需工具包SOAP还具有一些优势:

易于使用 – 有时是刚性types的检查,遵守合同开发工具对于使用Web服务,有时在这之间折腾起来更容易。 例如,Google的AdWordsnetworking服务真的很难使用(无论在CF中),它使用SOAP标头以及其他一些其他的东西,这使得它很难。 相反,亚马逊的REST Web服务有时可能很难parsing,因为它可以高度嵌套,结果模式可以根据您search的内容而有所不同。

您select哪种架构确保开发人员能够轻松访问它,并且logging良好。

Freitag,P。(2005)。 “REST vs SOAP Web服务”。 取自http://www.petefreitag.com/item/431.cfm于2010年6月13日;

REST是一个架构。 REST会给人类可读的结果。 REST是无状态的。 REST服务很容易被caching。

SOAP是一个协议。 它可以在JMS,FTP,Http上运行。

肥皂

简单对象访问协议(SOAP)标准是定义消息体系结构和消息格式的XML语言,由Web服务使用,它包含操作的描述。 WSDL是一种基于XML的语言,用于描述Web服务以及如何访问它们。 将运行在SMTP,HTTP,FTP等。需要中间件支持,定义好的机制来定义服务,如WSDL + XSD,WS-Policy SOAP将返回基于XML的数据

REST具象状态传输(RESTful)Web服务。 他们是第二代Web服务。 REST风格的Web服务通过HTTP进行通信,而不是基于SOAP的服务,并且不需要XML消息或WSDL服务API定义。 对于REST,不需要中间件,只需要HTTP支持.WADL Standard,REST可以返回XML,纯文本,JSON,HTML等

  1. REST没有WSDL [Web描述语言]接口定义。

  2. REST是通过HTTP,但SOAP可以通过任何传输协议,如HTTP,FTP,SMTP,JMS等。

restVS SOAP

肥皂:

SOAP是在TCP / UDP / SMTP上运行的简单对象访问协议。
►XML格式的SOAP读写请求响应消息。
SOAP使用接口来定义服务。
►SOAP更安全,因为它有自己的安全性和明确的标准。
►SOAP遵循RPC和Document风格来定义Web服务。
SOAP使用SOAP-UI作为testing的客户端工具。

rest

►REST是使用底层HTTP协议的代表性状态转移。
►REST是无状态的。
►REST是一种用于描述和定义Web服务的架构风格。
►REST可以使用JSON / XML / Plain HTML读取和写入请求响应消息。
►REST为web服务中使用的每个资源使用URI。资源可以是图像文本方法等。
►REST使用一组VERB,如HTTP的GET,POST,PUT,DELETE。
►与SOAP UI相比,REST易于开发并易于pipe理。
►REST具有轻量级的客户端工具或插件,可以轻松集成到浏览器中。
►REST服务可以caching。

  • REST代表表示性状态转移 ,其中SOAP代表简单对象访问协议

  • SOAP定义了自己的安全性 ,因为REST从底层传输中inheritance了安全性。

  • SOAP不支持error handling,但REST具有内置的error handling

  • REST是轻量级的,不需要XMLparsing 。 任何客户端都可以使用REST,即使是带有Ajax和Javascript的Web浏览器。 REST消耗更less的带宽 ,它不需要每个消息的SOAP头。

    • REST对于提供URI的任何协议都是有用的。 如下图所示,忽略REST的第5点。

SOAP与REST

肥皂Web服务:

  1. 如果您的应用程序需要可靠性和安全性的保证水平,那么SOAP提供了额外的标准来确保这种types的操作。
  2. 如果双方(服务提供者和服务消费者)必须就交换格式达成一致,那么SOAP给出了这种交互types的严格规范。

RestWeb服务:

  1. 完全无状态操作:用于无状态CRUD(创build,读取,更新和删除)操作。
  2. caching情况:如果需要caching信息。

SOAP Web服务始终进行POST操作,而使用REST可以select特定的http方法,如GET,POST,PUT,DELETE。 例如:要使用SOAP获取项目,您应该创build一个请求xml,但在REST的情况下,您可以在url本身中指定项目id。

REST更容易使用,而且更加灵活。与SOAP不同,REST不必使用XML来提供响应。 我们可以find基于REST的Web服务,它们以命令分隔值(CSV),JavaScript对象表示法(JSON)和真正简单整合(RSS)输出数据。 我们可以通过一种容易parsing的forms获得我们需要的输出,这种forms在我们应用程序所需的语言中是很容易parsing的.REST更有效率(使用更小的消息格式),更快,更接近其他Web技术的devise理念

rest和肥皂之间的区别 在这里输入图像说明