[Techtalk] Open source SOAP/REST servers

Kelly Jones kelly.terry.jones at gmail.com
Mon May 11 13:42:59 UTC 2009


I probably should've said SOAP, since that's what I'm focusing on.

If I understand correctly, SOAP lets you make a function call across
the web. In other words, instead of saying:

f(x1,x2,x3,x4,x5,...)

where f is defined in some local library, you say:

http://some.path/foo.xml with POST variables that effectively call f
on the arguments x1,x2,x3,x4,x5,etc.

Of course, x1 may be an integer, x2 may be a list, x3 may be a hash,
x4 may be an object, and x5 may be another function. In other words,
f's arguments need not be "simple".

I want a SOAP server that does this for me:

 % Listens for SOAP requests.

 % When it gets one, demangles the XML to create a simple Perl (or
 Ruby) function call.

 % Takes the function's return value and wraps it in SOAP-like XML.

 % Returns the wrapped value to the caller.

A client-side partial example of what I want (Ruby):

require 'soap/wsdlDriver'
wsdl_url = 'http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl'
proxy = SOAP::WSDLDriverFactory.new(wsdl_url).create_rpc_driver
print proxy.NDFDgen(35.05,-106.65,"glance","2009-05-11T00:00:00","2009-05-11T12:00:00","temp")

This converts my function request into SOAP, though it displays the
return value in XML.

I want something that does the "reverse": converts a SOAP XML request
into a function.

-- 
We're just a Bunch Of Regular Guys, a collective group that's trying
to understand and assimilate technology. We feel that resistance to
new ideas and technology is unwise and ultimately futile.

On 5/10/09, Daniel Pittman <daniel at rimspace.net> wrote:
> Kelly Jones <kelly.terry.jones at gmail.com> writes:
>
>> I want to serve data by responding to SOAP/REST requests w/o the
>> overhead of running Apache.
>>
>> Are there any open source SOAP/REST servers?
>
> Are you looking for "either SOAP or REST" or "SOAP and REST" here?
>
>> IE, lightweight servers designed to handle SOAP/REST requests, not
>> HTTP requests in general?
>
> In any case your question is at the wrong level.  For a start, REST is
> about mapping the HTTP protocol verbs to data manipulation actions, so
> it isn't actually possible to have a REST server that doesn't handle
> "HTTP requests in general".
>
> Also, using SOAP and using REST are ... fairly antithetical design
> goals.  SOAP is a complex RPC mechanism that you can transport over
> HTTP, REST is a lightweight design strategy that tries to match HTTP
> verbs and data manipulation actions.[1]
>
>
> Anyway, once you get past that you can find a couple of REST oriented
> application server frameworks in Perl (on CPAN), and presumably also in
> Python, Ruby, Java and whatever other language you please.
>
> You can't have one of those without HTTP, though, and your server will
> have to handle enough HTTP to talk to the real world -- at least as much
> as saying no to it.
>
>
> You can also use the standard Perl SOAP modules to transport SOAP over
> random protocols; the system ships with TCP, UDP and SMTP transports as
> examples, and it can probably handle a bunch more.
>
> Again, if you want to transport SOAP over HTTP you will need to handle
> generic HTTP enough to reject the requests, at least.
>
> Anyway, maybe you can tell us what your actual problem is and we can try
> and help you with that?  That might be more effective than guesswork. :)
>
> Regards,
>         Daniel
>
> Footnotes:
> [1]  ...typically, a good implementation includes a work-around for the
>      fact that the standard HTTP clients can only use three verbs, and
>      only two in practice, being GET, POST, and PUT if you love pain.


More information about the Techtalk mailing list