我目前正在处理一个代码库,其中包含使用SOAP :: WSDL生成的几十个类。但是,与Moose合作我现在认为在运行时在元级别生成这些类(即不是磁盘上的文件,而是直接生成对象)可能是一个更好的主意(此时完全排除了性能原因)。
这种做法是否明智?我们的想法是避免更改生成的代码,并避免偶尔重新生成代码。
如果是这样,是否有任何可以从WSDL创建类的现成Perl模块?
答案 0 :(得分:1)
首先回答第二个问题,基于Moose没有任何内容可以将WSDL转换为一组类。但是,您可以基于XML :: Toolkit构建一些东西。为了完全公开,XML :: Toolkit是我的模块,它具有将SAX流转换为Moose类的工具,反之亦然。对于非Moose Perl类,我认为有XML :: Compile可以编译SOAP wsdl - > Perl的。
回答第一个问题,我对XML :: Toolkit的经验表明,在运行时将类保留在内存中是很棘手的。忽略性能开销,你需要保留很多从WSDL中膨胀的东西。这将是一个有趣的实验,但我不确定它会有多长期可维持。
我想要很长一段时间尝试这样的事情,但我没有一个让我真正关注它的项目。不幸的是,我没有空闲时间来处理这么大的项目。