基于REST的Web服务中的SOAP消息

9
1个回答

19
"通过“基于SOAP的服务”,我想您是指WS-I Basic Profile Web服务。这个区别很重要,因为SOAP可以与REST以及WS-I BP Web服务一起使用。让我解释一下。SOAP是一种基于XML的数据交换消息格式。SOAP还定义了一种进行远程过程调用的方法。SOAP是W3C的开放标准。SOAP对底层传输层是不可知的。通常使用HTTP作为传输层,但它也可以在SMTP和TCP以及其他传输上运行。REST是一种体系结构风格(不是标准),所以请注意不要直接比较REST和SOAP,因为您不是在比较苹果和苹果。REST采用HTTP并使用它的细微之处和丰富性。REST体系结构风格可以用于以任何格式传输数据 - 它不强制任何特定的数据格式。因此,SOAP是REST风格Web服务的完美序列化格式。但是,许多人使用JSON、XML、纯文本和许多其他格式与REST一起使用。您也可以愉快地在REST上交换二进制数据,例如图像文件。好处是您可以选择最适合您的应用程序的数据格式。"
请注意,由于REST是一种模式而不是标准,因此对于什么是真正的RESTful存在很多争议。有一个叫做Richardson Maturity Model的概念,它列出了一系列朝向REST理想状态的步骤。通过与Richardson的模型进行比较,我们可以看到特定REST实现的RESTful程度。WS-I BP Web服务在这个等级上处于Level 0(即完全不具备RESTful,只使用HTTP作为传输层)。 我认为选择REST还是WS-I Basic Profile Web服务取决于你的受众。如果你正在企业内部开发B2B类型接口,则更常见的是WSI-BP Web服务。因为有一个基本标准,并且由于企业供应商(如IBM、Oracle、SAP、Microsoft)的成熟支持以及特别是在.NET和Java中的框架支持水平,当你需要快速启动并希望使客户端在企业环境中连接变得容易时,WSI-BP非常合理,而且交换的数据是序列化为SOAP的业务数据。

另一方面,如果您要向更广泛的网络受众公开Web服务,我会说WSI-BP已经不再流行,而是转向RESTful风格。因为REST仅假定客户端支持HTTP,因此可以与最广泛的受众进行互操作。 REST还提供了Web本身的可扩展性,支持资源缓存等功能,这使得它比WSI-BP Web服务更适合大型受众。


1
多么令人愉悦的理智回答。 - Darrel Miller
1
很好的解释。还有一个让人困惑的事情是 - REST与HTTP耦合在一起 - 但实际上并不是这样... - Prabath Siriwardena

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