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

时间:2011-09-22 20:40:47

标签: web-services rest soap

免责声明:我对REST和基于SOAP的服务感到困惑 在阅读基于REST的Web服务的许多教程(看起来彼此矛盾)后,我想知道我们是否可以/应该使用SOAP在基于REST的Web服务中发送/接收消息?
我试过以下链接
1)http://www.ibm.com/developerworks/webservices/library/ws-restful/

2)http://rest.elkstein.org/2008/02/how-simple-is-rest.html

1 个答案:

答案 0 :(得分:17)

通过“基于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服务在这种规模上处于0级(即,根本不是非常RESTful,仅使用HTTP作为哑传输层)。

我会说选择REST与WS-I Basic Profile网络服务 - 这取决于您的受众。如果您正在企业内部开发B2B类型接口,则更常见的是查看WSI-BP Web服务。因为存在底层标准,并且由于企业供应商(例如IBM,Oracle,SAP,Microsoft)的成熟支持以及特别是在.NET和Java中的框架支持水平,WSI-BP很有意义当您需要快速完成任务并希望客户端在企业环境中轻松连接时,交换的数据就是业务数据,可以很好地序列化为SOAP。

另一方面,如果您向更广泛的网络受众展示网络服务,我会说从WSI-BP到RESTful风格都有一种趋势。由于REST仅假定客户端支持HTTP,因此可以使其与最广泛的受众进行互操作。 REST还为您提供了Web本身的可扩展性,支持缓存资源等,这使得它可以比WSI-BP Web服务更好地扩展到大量受众。