OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[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)



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