基于文档或RPC的Web服务

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

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

0

3 答案

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

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

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

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

0
额外
链接描述了所有内容,我的所有疑虑在阅读后都是不被接受的。 ibm.com/developerworks/webservices/library/ws-whichwsdl
额外 作者 Ahmet Karakaya,

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

0
额外

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

0
额外