SOAP网络服务和RESTFUL网络服务的区别

6

我是一个新手,对Java不熟悉。我知道有两种类型的Web服务:

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

请问有人可以告诉我它们之间的基本区别是什么?在什么情况下创建 SOAP Web服务,在什么情况下创建 RESTful Web服务

谢谢!


创建一个符合JAX-RS标准的RESTful WebService的示例,请参考以下链接:http://blog.bdoughan.com/2010/08/creating-restful-web-service-part-15.html - bdoughan
@Kriti,你可能想要选择一个帖子作为你的采纳答案——这是在SO上非常好的做法! - Bhaskar
2个回答

13

在非常基本的层面上,SOAP是一种消息协议,REST是一种设计哲学,而不是协议。当你基于SOAP协议创建一个Web服务时,你基本上要遵守SOAP创建服务请求的规则,将请求发送到服务器,接收服务器上的请求,处理请求并将结果返回为SOAP消息。SOAP并没有讨论客户端如何从服务中受益,也没有讨论如何设计客户端本身(除了发布的消息),它只告诉我们如何发送客户端的消息到服务端并返回。

REST是REpresentational State Transfer的缩写。它不指定创建消息并将其发布到服务器的规则。你可以通过简单的HTTP协议来完成这个过程。REST指定客户端和服务器管理它们的状态的方式,这样它们对客户端 - 服务器通信变得有用。在这里,你更关注客户端和服务器的状态设计,而不是它们交换的消息。


5

正如第一个答案所解释的那样,SOAP Web服务和REST Web服务在多个方面有所不同。

SOAP:

  • 您可以在 .wsdl 文件中定义接口,该文件描述了期望的输入参数以及返回值的外观
  • 有工具可以通过Java类层次结构生成 .wsdl 文件。 例如JAXB
  • 也有工具可以作为 Eclipse 的一部分生成 Java 对象/类(目前不知道名称)。
  • SOAP 很严格。在处理请求之前,每个请求都要根据 wsdl 进行验证。

用于 SOAP WS 的一个很好但不容易入门的框架是 Apache CXF

REST(到目前为止没有实际经验,请随意纠正和改进 ;)):

  • 访问Web服务器或Web应用程序以检索数据或将数据发送到它的方式。
  • 只有协商,才能访问它。
  • 常见的是像这样的http://server.domain.com/app/type/id=123来检索类型为type且id为123的对象
  • 非常直观,但没有自动验证请求。
  • ...

我确定还有其他几个要点我漏掉了。但我认为这是一个有用的开始。


嗨,Kriti!如果你喜欢这个问题的话,点赞答案是个好习惯哦 ;) - andreas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接