为什么在Web服务中使用complexType?

时间:2012-04-23 18:28:42

标签: java php web-services wsdl .net

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

3 个答案:

答案 0 :(得分:2)

如果要将联系人,消息或某些编程对象等数据对象原样传输到相应技术中的客户端应用程序,则应使用复杂数据类型。

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

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

如果您使用PHP开发Web服务,那么WSDL的Zend Framework自动发现可以让您自动从PHP生成WSDL,但如果您的复杂性变得像自己手工编写WSDL一样。

答案 1 :(得分:1)

web服务中的

complexType将用于表示用户定义的数据类型,例如您要传输的对象(不是java默认类型),例如,如果您有包含名称,地址,电话等的UserV,则需要定义此作为WSDL中的ComplexType发送。 Java集合/数组也被视为复杂类型。这是关于Types of Websericesexample complex type的好教程。

答案 2 :(得分:1)

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

除非你手工编写WSDL,否则这种区别几乎毫无意义。谁做到了;)?

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

以下是一些很好的链接: