[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: So what do SOAP and XML-RPC buy you? (was Re: MassiveCross-Post:The State of XML-RPC, April 2001)
- From: Jonathan Borden <jborden@mediaone.net>
- To: Matt Sergeant <matt@sergeant.org>, Edd Dumbill <edd@usefulinc.com>
- Date: Tue, 17 Apr 2001 17:58:15 -0400
Matt Sergeant wrote:
> On Tue, 17 Apr 2001, Edd Dumbill wrote:
>
> > Seriously, I'm interested in what the perceived buy is from the XML
> > protocols over straight XML+HTTP. My suspicion is that the main two
> > reasons are the lack of perception of HTTP in this light, and the lack
> > of friendly enough APIs (esp. on Microsoft platforms) to enable HTTP to
> > be used between applications.
>
> Exactly. CGI really isn't enough - it doesn't give you the control you
> need over the server to implement this stuff, which is why it's going in
> the mod_perl track (For the uninitiated, mod_perl just allows you to write
> Apache modules in Perl). Servlets are probably too abstract (don't quote
> me on that - I'm not a servlets programmer). So SOAP/XMLRPC layers
> everything on top of simple HTTP GET/POST with only 200 return codes. Ick.
>
A very quick and dirty way to consider an RPC is simply as an HTML form.
This can be virtually converted into an XML message: <form foo="bar"
baz="bop" /> ... one can even do datatyping via something like:
<form>
<foo type="xsd:string">bar</foo>
</form>
By virtual I mean the XML is never created rather I inject these CGI form
variables into a SAX processing chain via the Servlet code:
AttributesImpl atts = new AttributesImpl();
Enumeration paramNames = request.getParameterNames();
while (paramNames.hasMoreElements())
{
String paramName = (String) paramNames.nextElement();
try
{
String[] paramVals = request.getParameterValues(paramName);
if (paramVals != null)
{
atts.addAttribute("",paramName,paramName,"CDATA",paramVals[0]);
}
}
catch (Exception e)
{
}
}
The SAX chain I typically start with is an XSLT complied by Saxon into a SAX
Filter. So I guess using HTML forms is the very simplest type of RPC.
-Jonathan