[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: So what do SOAP and XML-RPC buy you?
- From: Ken MacLeod <ken@bitsko.slc.ut.us>
- To: David Brownell <david-b@pacbell.net>
- Date: Thu, 19 Apr 2001 11:26:24 -0500
David Brownell <david-b@pacbell.net> writes:
> > One thing that XML-RPC or SOAP buy you (today) over straight
> > XML+HTTP is automatic marshalling. Specifically, what is missing
> > is that you can't do:
> >
> > http.put(url, anyObject)
> >
> > and have 'anyObject' marshalled and serialized to XML
> > automatically by the library, and then sent over HTTP.
>
> If "anyObject" is literally any object, then there's a HUGE downside
> to that: Application developers start to "think" in terms of APIs
> that work within a particular programming environment, rather than
> in terms of interoperable data. They rely on automagic marshaling
> code they don't/can't control. And bit by bit, interoperability
> starts to disappear...
>
> Of course, for folk controlling those programming environments, that
> is a feature (customers then can't switch vendors so easily). And
> some customers may even be comfortable ceding control over those
> parts of their business strategies, given time-to-market wins.
No need to convince me about the fragility and lock-in of APIs :-)
(considering my "Web RPCs Considered Harmful" article[1]).
> If that's "any object defined using an Interface Definition Language
> (IDL)" then that's less of an issue.
I typically associate IDLs with APIs, so I'm not sure how that
relates to "interoperable data"???
When I think of "interoperale data" at a higher level than straight
XML (or via DOM), I'm thinking of data that interoperable because it
is an encoding format (in XML), a la RDF, SOAP Encoding, or via some
XML Schema magic yet to be developed, that unmarshals to something
more approachable from programming languages than straight XML in a
DOM or via SAX. More like:
http.put(url, rdfStatementSet)
http.put(url, soapObject)
http.put(url, tupleSpaceTuple)
http.put(url, xmlSchemableInstance)
http.put(url, grove)
and, of course, I don't mean to exclude the very basic:
http.put(url, domObject)
So, I'm agreeing with you, by 'anyObject' I did not mean to imply
literally any object. Interoperable data first, internal
representation follows.
-- Ken
[1] <http://monkeyfist.com/articles/514>