SOAPjr
Traditional SOAP is no longer the Simple Object Access Protocol it was
initially designed to be. It's bloated and overly verbose making it
bandwidth hungry and slow. It's also based on XML, making it expensive
to parse and manipulate - especially on mobile or embedded clients.
However, it's core Envelope/Head/Body design pattern is really useful
for AJAX style API's.
SOAPjr uses a similar Envelope/Head/Body model, but instead of bloated
and verbose XML it uses lightweight and easy to manipulate JSON.
After all, there's no X in SOAP and it's Envelope/Head/Body concept
is not bound in any way to requiring XML.
In contrast to SOAP, JR (JSON-RPC) is overly simplistic and basically
tunnels HTTP GET style key/value pairs within a query string using JSON.
However, within JR there is no Head/Body separation leaving metadata
to pollute the main data space.
SOAPjr combines the best of these two concepts and is designed to
create modern AJAX API's that can easily be used by mobile devices,
embedded systems or PC browsers.
So how does this make building AJAX API's any easier?
Getting a browser to talk to make XMLHttpRequest calls is easy enough.
But the complex part is defining what data structures each request and
response will contain, and debugging invisible requests to find out if
it's an HTTP transport error, a Server error, a JSON parser error or a
web server or DB error. SOAPjr makes all of this simple by providing a
simple and clean framework and associated data structures.
SOAPjr even let's you work with and extend common data models across
specific domains (e.g. contacts, calendars, payments, etc.) helping
standardise API's even further.
A common model would be to use POSH, CSS and Microformats at the
presentation layer bound together with a Javascript toolkit like jQuery.
SOAPjr is the glue between the browser and the Server, and on the
Server-side you can use Perl, Java, PHP, Python, Ruby or any HTTP
aware language.
These modules are an example of a pre-built SOAPjr toolkits in Perl.
So if you want to create clean, fast AJAX API's then
SOAPjr is what you've been looking for.
INSTALLATION
To install this module, run the following commands:
perl Makefile.PL
make
make test
make install
SUPPORT AND DOCUMENTATION
After installing, you can find documentation for this module with the
perldoc command.
perldoc SOAPjr
You can also look for information at:
SOAPjr.org
http://SOAPjr.org
RT, CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=SOAPjr
AnnoCPAN, Annotated CPAN documentation
http://annocpan.org/dist/SOAPjr
CPAN Ratings
http://cpanratings.perl.org/d/SOAPjr
Search CPAN
http://search.cpan.org/dist/SOAPjr/
TODO
Need to write t/ tests and add detailed documentation then replace t/pod-coverage.t.
Need to add more utility methods for generating/handling errors in reponse objects.
Also need to create Server and Client modules ala JSON::RPC and more detailed example scripts.
COPYRIGHT AND LICENCE
Copyright (C) 2008 Rob Manson, Sean McCarthy and
http://SOAPjr.org, some rights reserved.
This file is part of SOAPjr.
SOAPjr is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
SOAPjr is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with SOAPjr. If not, see <
http://www.gnu.org/licenses/>.