2010-08-13 45 views
3

我一直在寻找将基于Perl的SOAP服务器添加到我们的系统的方法。每次我在Perl中查看SOAP工具时,我都感到失望的是,VS.net世界中的开发人员似乎需要多少开销。 (而且我一直在寻找很长时间)描述与WSDL的Perl接口

从这里回顾其他问题,它看起来像XML::Compile::SOAP似乎是最近流行的工具。我已经设法让我的代码作为服务通过它服务,但是我也必须手动按摩以。Pod::WSDL开头的.WSDL文件。

在CPAN或其他地方找不到更直接的方法吗? Pod::WSDL默认吐出rpc/encoded,我知道它不再是'最好'的方式。文档说文档/文字还不被支持,阅读源代码可以看到文档/文字的部分代码,但它不直接与XML::Compile::SOAP一起工作。理想情况下,我在POD或perl5属性中为我们的代码添加一些注释,并按下一个按钮,并获取我可以提供给XML :: Compile包的WSDL。

在此先感谢。

+1

谢谢思南,您的格式编辑:) – Jason 2010-08-13 03:01:28

+0

另一种选择是自己做必要的增强,并将其作为新的CPAN模块或现有补丁发布。 – Ether 2010-08-13 16:18:34

+0

@其他 - 当我了解这个过程时,我正在考虑这种方法。如果我这样做,我会关闭这个q并留下一张纸条。 – Jason 2010-08-20 00:55:52

回答

1

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

我发现如果我用RPC心态编写我的Web服务,那么SOAP :: Lite很容易使用。

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

确实,这是使用RPC /编码风格的SOAP不受欢迎。但是,如果添加一点点POD标记,您可以生成WSDL(后按摩).Net客户端 可以愉快地消费(至少,我测试了与单声道和第三方测试与MS C#)

当你比如说,Pod :: WSDL的输出确实需要按摩,我记得我必须修复一个命名空间作为我的构建过程的一部分。

不足之处在于很多先进的SOAP相关XML处理似乎缺少或没有很好地集成,SOAP :: Lite和Pod :: WSDL看起来有点濒死。

但是,对于简单的远程方法调用,传递Perl对象,我发现它比我曾刺过的Java框架要简单得多。你的旅费可能会改变。