2008-08-08 65 views
18

我的直觉是基于文档的Web服务在实践中是首选 - 这是其他人的体验吗?他们是否更容易支持? (我注意到SharePoint在其WSDL界面中使用Any作为“文档类型”,我猜这使得它成为基于文档)。基于文档或RPC的Web服务

此外 - 人们现在提供WSDL和Rest类型的服务是否具有相同的功能? WSDL在代码生成中很流行,但对于像PHP和Rails这样的前端,他们似乎更喜欢休息。

回答

30

如果您使用的SOAP Web服务需要服务描述(WSDL),则文档与RPC只是一个问题。 REST风格的Web服务不会使用WSDL,因为服务无法用它来描述,并且感觉REST更简单,更易于理解。有人提议用WADL作为描述REST服务的一种方式。

Python,Ruby和PHP等语言使得使用REST更容易。 WSDL用于生成可以从静态语言轻松调用的C#代码(Web服务代理)。当您在Visual Studio中添加服务参考Web参考时会发生这种情况。

您是否提供SOAP或REST服务取决于您的用户群。服务是通过互联网使用,还是只在组织内部使用,都会影响您的选择。 SOAP可能具有一些适用于B2B或内部使用的功能(WS- *标准),但吸引互联网服务。

在此IBM DevelopWorks article上描述了文档/字面值与SOAP服务的RPC值。文档/文字通常被认为是互操作性方面最好的使用(Java到.NET等)。至于是否容易支持,这取决于你的情况。我个人的观点是,人们倾向于使这件事情比需要的更复杂,而REST更简单的方法则更为优越。

+3

链接描述了所有内容,我的所有疑虑在阅读完后都会失望。 http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/ – 2014-08-30 10:08:17

1

BiranLy的回答非常好。我只想补充说,document-vs-RPC也可以归结为实现问题。我们发现微软是基于文档的,而我们的基于Java的库是基于RPC的。无论你选择什么,确保你知道其他潜在客户也会承担什么。

4

如前所述,只要有可能,最好选择RPC编码的文档文字。 的确,旧的java库(Axis1,Glue和其他史前版本)只支持RPC编码,但是在当今最现代化的Java SOAP库中并不支持它(e.x.AXIS2,XFire,CXF)。 因此,只有当您知道您需要处理无法做得更好的消费者时,才尝试公开RPC编码服务。但是,也可能只是XML RPC可以为这些遗留实现提供帮助。