- From: Jacek Kopecky <jacek@systinet.com>
- Date: Wed, 6 Mar 2002 10:38:36 +0100 (CET)
- To: Mark Baker <distobj@acm.org>
- cc: xml-dist-app@w3.org
Mark,
your example is a fine use of REST as far as I can see, but
there is no SOAP there. I think I could see before how such an
example application could be done, although not so prettily.
What I wanted is an example where you would use SOAP together
with the current web architecture.
It seems to me that taking REST+XML(+RDF) we don't need SOAP at
all. On the other hand, it seems to me that SOAP is a thingie
that does "in the old way" what the above do "in the web way".
Unless I'm shown the two can be combined simply and naturally, I
won't be persuaded to leave the "tunneling" view, I'm afraid.
Kind regards,
Jacek Kopecky
Senior Architect, Systinet (formerly Idoox)
http://www.systinet.com/
On Tue, 5 Mar 2002, Mark Baker wrote:
> Jacek,
>
> > Mark,
> > you admit that it's easy to think that the web architecture is
> > only good for "serving web pages", and therefore not applicable
> > to bigger "e-business" tasks (or indeed, any distributed task or
> > computation); that's almost exactly what I think.
> > You say that the current web architecture is a big leap, and I
> > don't oppose this, it's just that not many people have made the
> > leap yet. Like myself.
> > I think it will be helpful if you describe on a real scenario
> > (say reservation and payment of plane tickets) how you'd do it
> > using SOAP _and_ the current web architecture.
>
> Sure, I'd be happy to. I try to use examples whenever I can, and I came
> up with one last year that I sent to the group[1], though it's obviously
> not very "e-business"-y. It also isn't machine processable, as it
> requires a human to understand some things (such as what to expect when
> a vCard is POSTed to another vCard).
>
> For airline ticket reservations, as with any problem, you first have to
> start by modelling your resources. In this case, I'd have the following
> types of resources;
>
> - credit card
> - itinerary
> - flight/flights
> - reservation
>
> Without any human intervention, we have to assume that we have a piece
> of software with knowledge about my flight info (from/to, when, return,
> etc..), the price I'm willing to pay, and my credit card info. This is
> typically called an "agent".
>
> Assuming my agent knows to start at United Airlines, it could do this;
>
> GET / HTTP/1.1
> Host: www.ua.com
> Accept: application/rdf+xml
>
> response;
>
> HTTP/1.1 200 Ok
> Content-Type: application/rdf+xml
> [blank line]
> <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
> <Description about="http://www.ua.com/ticket-purchase/">
> <rdf:type resource="http://www.airline-standards-r-us.org/TicketPurchaser" />
> </Description>
> </RDF>
>
> so at this point my agent knows that http://www.ua.com/ticket-purchase
> is a TicketPurchaser, which it knows (it's hardcoded) is a container that
> accepts an itinerary. So next it does this;
>
> POST /ticket-purchase/ HTTP/1.1
> Host: www.ua.com
> Content-Type: application/xml
> [blank line]
> <itinerary xmlns="http://www.airline-standards-r-us.org/foo/">
> <departing>
> <location>YOW</location>
> <date>2002-03-03 15:20 EDT</date>
> etc..
> </itinerary>
>
> which yields a response of;
>
> HTTP/1.1 200 Ok
> Content-Type: application/xml
> [blank line]
> <flights xmlns="http://www.airline-standards-r-us.org/bar/">
> <flight id="UA9333">
> <departs>11:30</departs>
> <purchase>http://www.ua.com/ticket-purchase/123456</purchase>
> </flight>
> <flight id="UA9334">
> <departs>12:30</departs>
> <purchase>http://www.ua.com/ticket-purchase/123457</purchase>
> </flight>
> </flights>
>
> this response presents the agent with information about each flight
> matching my itinerary with a URI for each.
>
> So the agent either asks me if I want to leave at 11:30 or 12:30,
> or picks one by itself. So assuming we wanted the 11:30 departure,
> and that the agent knows that the "purchase" element means that the
> URI identifies a resource which accepts credit cards, the next step
> would be;
>
> POST /ticket-purchase/123457 HTTP/1.1
> Host: www.ua.com
> Content-Type: application/xml
> [blank line]
> <credit-card xmlns="http://credit-card-standards.org/foo/">
> <number>92384293849234982394</number>
> <expiry>2004/11</expiry>
> </credit-card>
>
> and the response to that is;
>
> HTTP/1.1 200 Ok
> Content-Type: application/xml
> Location: http://www.ua.com/confirm/23429348234
> [blank line]
> <reservation xmlns="http://www.airline-standards-r-us.org/baz/">
> <number>23429348234</number>
> <uri>http://www.ua.com/reservation/23429348234</uri>
> </reservation>
>
> and here the agent knows how to check reservations. To cancel the
> ticket, it could invoke DELETE on that reservation resource, I
> suppose.
>
> Anyhow, hopefully you get the idea. That I used XML and not RDF
> (except to start) means that the agent is less general (it can only
> buy plane tickets, not DVDs, etc..), but at least it makes for a
> reasonably easy to understand example (I hope).
>
> > As I see it, either we want SOAP as it stands (as a messaging
> > protocol), in which case we either tunnel through HTTP (and any
> > other application protocol) or we ditch the so called application
> > protocol bindings altogether; or we want the web architecture as
> > it stands, in which case we'll probably need to redefine SOAP and
> > maybe tie it to HTTP completely.
>
> That wouldn't be necessary. It's still a good idea that SOAP is able
> to be bound to different application protocols. Besides, we've done the
> work already.
>
> > I'm not opposed to being enlightened, but sometimes I do need to
> > see a real scenario in the new paradigm before I see that the
> > paradigm can be used in such class of scenarios.
>
> That's the case for many people. I hope my example was helpful.
>
> [1] http://www.markbaker.ca/2001/07/SoapUses/
>
> MB
>
Received on Wednesday, 6 March 2002 04:38:38 UTC