"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