3

我刚刚读了一本关于网络服务的书,上面说有“RPC 风格的网络服务”和“文档风格的网络服务”。第二个是在 WSDL 序列和 complexType 中使用。我什么时候应该使用这种风格?

4

3 回答 3

3

当您想将联系人、消息或某些编程对象等数据对象原样传输到相应技术中的客户端应用程序时,您应该使用复杂数据类型。

例如,如果您使用的是在 .NET 或 Java 中构建的复杂类型 Web 服务,并且您从 PHP 或 Ruby 调用该 Web 服务,您将从 .NET 或 Java 导出的对象按原样导出(在 98% 的情况下,特定于非常小的语言属性更改)在 PHP 或 Ruby 中。

因此,如果您是不喜欢简单字符串、int、bool 或数组数据类型的人之一,您可以在 WSDL 中使用复杂类型。这不是很容易开始,但一旦你开始它就会很有趣。

如果您使用 PHP 来开发 Web 服务,那么 Zend Framework 的 WSDL 自动发现功能可以让您从 PHP 自动生成 WSDL,但如果您的复杂性与您自己手动编写 WSDL 相比没有什么不同。

于 2012-04-23T18:55:48.133 回答
2

webservice 中的 complexType 将用于表示用户定义的数据类型,例如您要传输的对象(不是 java 默认类型),例如,如果您有 UserVO,其中包含姓名、地址、电话等,您需要将其定义为 ComplexType要发送的 WSDL。Java 集合/数组也被视为复杂类型。这是关于Webserices 类型示例复杂类型的好教程。

于 2012-04-23T18:35:12.023 回答
2

基本上,几乎所有仍在使用 SOAP Web 服务(即尚未迁移到 REST)的人都在使用“文档样式”。

除非您手动编写 WSDL,否则这种区别几乎没有意义。那是谁做的;)?

如果您使用 Visual Studio 或 Axis 等工具来生成 WSDL,并使用工具来生成存根,那么唯一真正重要的是一个工具生成的代码是否能够理解另一个工具生成的代码。这又回到了“就 SOAP 而言,它几乎是一个文档风格的世界”。或者,更具体地说,是“文档样式/文字包装”的世界。

这里有几个很好的链接:

于 2012-04-23T18:36:04.330 回答