用WSDL描述Perl接口

时间:2010-08-13 02:05:42

标签: perl soap wsdl types

我一直在研究如何将基于Perl的SOAP服务器添加到我们的系统中。每当我看到Perl中的SOAP工具时,我都会感到失望的是,与VS.net世界中的人们相比,似乎需要更多的开发人员开销。 (而且我一直在找很长时间)

从这里回顾其他问题,看来XML::Compile::SOAP似乎是最近流行的工具。我已经找到了一种方法来通过它将我的代码作为服务提供,但我还必须手动按下我用Pod::WSDL开始的.WSDL文件。

我在CPAN或其他地方找不到更直接的方法吗? Pod::WSDL默认情况下吐出rpc / encoded,我理解这不再是“最佳”方式了。文档说文档/文字尚不支持,阅读源代码可以看到代码的部分文档/文字,但它不能直接与XML::Compile::SOAP一起使用。理想情况下,我在POD或perl5属性的代码中添加了一些注释,并按下一个按钮,然后获取可以提供给XML :: Compile包的WSDL。

提前致谢。

1 个答案:

答案 0 :(得分:1)

据我所知,没有更好的方法。至少对于简单的服务。

我发现如果我使用RPC思维模式编写Web服务,那么SOAP :: Lite非常容易使用。

  • 用同一个文件中的子程序编写一个小的perl程序
  • OO风格的重构,params&将值返回为perl对象。
  • 将子程序移动到单独的模块,测试。
  • 将子程序模块移动到服务器。也可以在那里复制数据传输对象模块。
  • 将SOAP :: Lite调度程序添加到服务器(少数几行)。
  • 在perl程序(客户端)的顶部添加一些SOAP :: Lite。完成。

确实,这使用了不受欢迎的SOAP / Encoded样式的SOAP。但是,如果你添加一点POD标记,你可以生成WSDL(后按摩).Net客户端 可以愉快地消费(至少,我测试了Mono和用MS C#测试的第三方)

正如你所说,Pod :: WSDL的输出确实需要按摩,我记得我必须在构建过程中修复一个命名空间。

缺点是许多与SOAP相关的高级XML处理似乎缺失或者没有很好地集成,而且SOAP :: Lite和Pod :: WSDL看起来有点奄奄一息。

但是对于简单的远程方法调用,传递Perl对象,我发现它的数量级比我曾经用过的Java框架简单得多。你的里程可能会变化。