SOAP webservice和RESTFUL webservice之间的区别

我是Java的新手。我知道有两种类型的Web服务

  1. SOAP Web服务。
  2. RESTful Web服务。

任何人都可以告诉我它们之间的基本区别是什么。在哪种情况下创建SOAP Webservice以及在哪种情况下创建RESTful Webservice

谢谢,

正如第一个答案已经解释的那样,SOAP Webservices和REST Webservices在各个方面都有所不同。

肥皂:

  • 您可以在.wsdl文件中定义接口,该文件准确描述了预期的输入参数以及返回值的外观
  • 有一些工具可以用java类hirarchies生成.wsdl文件。 例如JAXB
  • 还有工具来生成java对象/类作为eclipse的一部分(例如暂时不知道名称)。
  • SOAP非常严格。 在处理之前,每个请求都是针对wsdl进行validation的。

一个好的但不太容易从SOAP WS框架开始的是Apache CXF

REST(到目前为止没有亲身体验,随时纠正和改进;)):

  • 一种访问Web服务器或Web应用程序以从中检索数据或向其发送数据的方法。
  • 它只是协商,如何访问。
  • 常见的是这样的http://server.domain.com/app/type/id=123来检索id = 123的类型类型的对象
  • 非常直观,但没有自动validation请求。

我相信,我错过了其他几点。 但我认为这是一个有用的开始。

在最基本的层面上,SOAP是一种消息传递协议,REST是一种设计理念,而不是协议。 当您将WebService基于SOAP协议时,您基本上遵守创建服务请求的SOAP规则,将请求发布到服务器,在服务器接收请求,处理请求并将结果作为SOAP消息返回.SOAP不会谈关于客户从服务中获益的确切方式,以及如何设计客户端本身(除了它发布的消息之外),它只告诉客户端的消息如何被发送到服务和返回。

REST是REpresentational State Transfer的缩写。 它没有指定创建消息并将其发布到服务器的规则。 您可以通过简单的HTTP协议来完成此操作。 REST指定的是客户端和服务器管理其状态的方式,以便它们对客户端 – 服务器通信有用。 在这里,您更专注于设计客户端和服务器的状态,而不是他们正在交换的消息。

你也可以用Google搜索; 这是一篇关于这个主题的好文章: http : //geeknizer.com/rest-vs-soap-using-http-choosing-the-right-webservice-protocol/