"there now is a good SOAP::Lite alternative" ?
Mark Overmeer
mark at overmeer.net
Sat Dec 15 23:14:29 GMT 2007
* Matt S Trout (dbix-class at trout.me.uk) [071215 21:23]:
> > > > XML::Compile and XML::Compile::SOAP - looks nice - has anybody tried it?
> On Wed, Dec 12, 2007 at 08:47:30AM +0100, Mark Overmeer wrote:
> > XML::Compile has quite a number of serious applications already. Of
> > course, every once-in-a-while some small issue pops-up. Imagin for your
> > own implementation, that the only thing you need to take care of is the
> > data structure of the message, and all the XML is hidden. That would
> > simplify your code a lot (I presume). It is a 100% complete, validating
> > XML-Schema 2001 implementation.
> How does it compare to the SOAP::Lite-free SOAP::WSDL 2.0?
My work started because SOAP::WSDL 1.0 was so poor, and I needed a
good SOAP implementation. There was no response to my improvement
suggestions. A few month later, however, Martin Kutter picked-up
his pieces and started with his 2.0 implementation. I was quite
far underway already.
The three implementations (SOAP::Lite/SOAP::WSDL/XML::Compile) are very
different. Some key differences:
I started with a 100% complete and compliant XML-Schema implementation
based on XML::LibXML. I do not add strong-typing or namespaces to Perl:
the Perl side is just simple nested HASHes with the same structure as
the XML message (and you can have an example Data::Dumper-like template
being generated for you, if you do not want to read the schema).
My SOAP/WSDL interface is as abstract as possible. With WSDL file,
a SOAP message is exchanged in 3 lines of code only: including all
fault processing. And no DWIM: the message is validated to be correct.
To give an example: an "Integer" type must be able to handle at least
18 digits, according to the specs. In my implementation it will be
represented by a BigInt. (Unless you use the 'sloppy_integers'
optimization option)
Both
<element name="x" type="int" maxOccurs="unbounded" />
and
<element name="x">
<list itemType="int" />
</element>
are both on the Perl side: x => [13, 42]
(see: no strong typing needed!)
The translator will produce different XML, respectively
<x>13</x><x>42</x>
and
<x>13 42</x>
--
Regards,
MarkOv
------------------------------------------------------------------------
Mark Overmeer MSc MARKOV Solutions
Mark at Overmeer.net solutions at overmeer.net
http://Mark.Overmeer.net http://solutions.overmeer.net
More information about the london.pm
mailing list