|o||Contains various reusable components (modules) that can be used separately or together.|
|o||Provides an object oriented model for serializing/deserializing and sending/receiving SOAP packets (lovingly referred to in some circles as SOAP bars). Within this framework we currently support access to SOAP over HTTP, but were open to expanding support for SOAP over SMTP and other transports in the future.|
|o||Provides a fully object oriented interface.|
|o||Supports SOAP 1.1 spec. The current version does not yet handle arrays.|
|o||Supports serializing/deserializing of sophisticated object graphs which may have cycles (a circular queue would serialize just fine, for instance).|
|o||Provides full namespace support for SOAP 1.1, which is recommended by the spec.|
|o||Implements full support for SOAP 1.1 references, including correctly dealing with shared references between header and body elements.|
|o||Experimental support for extensibility of the serialization/deserialization architecture has been included; see SOAP::TypeMapper for details, and SOAP::Struct and SOAP::StructSerializer for a specific example.|
|o||Supports servers using CGI or Apache+mod_perl. Tested with Apache on Linux as well as IIS on Windows 2000.|
SOAP::EnvelopeMaker takes as input an array of header objects and a single body object (currently these objects are either Perl hashes, or instances of SOAP::Struct), and produces as output an XML stream.
SOAP::Parser takes as input a string (or a file/file handle) and parses the content as a SOAP envelope. This results in an array of header objects and a single body element.
To avoid coupling the SOAP serialization/deserialization code to HTTP, a set of loadable transports is also provided. See the following modules for documentation of the transport architecture:
See SOAP::EnvelopeMaker for a client-side example that shows the serialization of a SOAP request, sending it over HTTP and receiving a response, and the deserialization of the response.
This table should give you a quick overview of the classes provided by the library.
-- High-level classes you should begin with
SOAP::Struct Ordered collection often used to
hold SOAP requests and responses
SOAP::TypedPrimitive Adds an explicit xsi:type to stream
SOAP::EnvelopeMaker Serializes objects into SOAP bars
SOAP::Parser Deserializes SOAP bars into objects
SOAP::Transport Description of transport architecture
SOAP::Transport::HTTP Description of HTTP transport
SOAP::Transport::HTTP::Client Client side support for HTTP,
SOAP::Transport::HTTP::Server Server side support for HTTP,
decoupled from web server APIs
SOAP::Transport::HTTP::Apache Apache/mod_perl support
SOAP::Transport::HTTP::CGI Vanilla CGI support
-- Serialization architecture --
SOAP::Envelope -- Low level access to SOAP serialization SOAP::OutputStream -- used in conjunction with SOAP::Envelope for Low level access to SOAP serialization SOAP::Packager -- Helps to implement SOAP 1.0 packages, used by SOAP::Envelope and SOAP::OutputStream SOAP::GenericHashSerializer -- Generic serializer for Perl hash references SOAP::GenericScalarSerializer -- Generic serializer for Perl scalars SOAP::TypedPrimitiveSerializer -- Specialized serializer SOAP::StructSerializer -- Specialized serializer
-- Deserialization architecture --
SOAP::GenericInputStream.pm -- Look here if you are interested in extending the deserialization framework to be able to deserialize your own objects -- Miscellaneous -- SOAP::TypeMapper -- An experimental extensibility point for the serialization architecture SOAP::Defs -- Constants used by the other modules
All modules contain detailed information on the interfaces they provide.
The serialization framework does not yet handle arrays, and the HTTP transport does not handle M-POST.
Keith Brown is the original and current author of this work, but he worked very closely with Don Box in developing a common design and implementation architecture (Don was building a Java implementation side-by-side, and Keith and Don worked together in a kind of XP style of programming - it was fun). GopalK at Microsoft was tremendously helpful in ferreting out issues in the SOAP spec. Mike Abercrombie at DevelopMentor (where Keith and Don work) was very supportive of the effort as well. Thanks Mike!
Copyright 1999-2000, DevelopMentor. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The latest version of this library is normally available from CPAN as well as:
The best place to discuss this code is on the SOAP mailing list at:
|perl v5.20.3||SOAP (3)||2000-09-05|