Three cheers for GET services - but we still have to SOAP the VO
Martin Hill
mchill at dial.pipex.com
Mon Jun 7 04:11:57 PDT 2004
Ooooh flame bait....
All these things are fine about what you call GET. [I'm not sure about
this, but I think SOAP is run over http GET too - rather than POST - but
I know what you mean].
In fact I will add that although SOAP can also take more complex types,
this doesn't preclude GET, which could take URLs to them instead.
Similarly you can use GET to run different methods.
SOAP gives you a *defined interface* with WSDL; that is, you can define
explicitly which parameters are expected and their types, and you can
define the different methods that can be called on a service. This gives
us enough information that we can use to connect services together;
there is no 'service metadata', or descriptions about how to use a
service, with a GET. For example, with GET there is no way of knowing
that one service allows BANDPASS=z and another doesn't.
This is why our VO services as a minimum need to support SOAP (or
something similarly well-described); we won't have a VO that can
interoperate if we don't! We could of course follow the Astronomer Way
and invent our own description language based on GETs, so that we can't
interoperate with any non-VO services... :->
(As an aside, it is awkward, but not impossible, to build GET URLs for
anything other than a few simple parameters; for example building a
reasonable-sized ADQL query would in practice require some kind of
client software to help. Imagine trying to build a GET service for
SExtractor, with its 100+ arguments, some of which are enumerations.
How would the user know what the parameters are, and which parameters
take which values?)
more below:
Roy Williams wrote:
> Three cheers for GET services
>
> (This subject line is just to stir up the SOAP fundamentalists). As I start
> moving to the world of SOAP, I want to know how to do all the nifty things I
> used to be able to do with GET.
>
> (1) Please find below an email that I sent to myself yesterday. It is a pointer
> to a GET-based web service, and that is why it is easy to send the email. Just
> click on it in your email spool. It is a virtual finding chart, bringing not
> just a picture, but a browser of many layers and other drilldown features. It is
> nifty to send a complete "service request" to a colleague, and all they need to
> do is to click on it.
>
> But when we are running things on SOAP services, how can we do the same thing?
> Suppose I write to my colleague saying "use the http://blah service with x=2 and
> y=3", how long would it take them to figure out how to see the result?
Remember that when a VO service has been called, we would expect the
results to be put somewhere in MySpace (or similar). So instead of
passing around a URL to the call (and therefore requiring the query to
be run again - what a waste of processing power!) you email to your
colleages (or yourself) a URL to the results.
> (3) There are a lot of nice read/parse qualities about GET requests. It would be
> nice to have both GET and SOAP at the same time. To somehow send keyword-value
> by the GET channel, but the complex objects and binary through the SOAP channel.
As you say, supporting GET is handy for the end user for simple service
calls, and so it makes sense that services that provide data to the end
user provide a GET interface as well. But do we need to get involved in
this? Is this up to the individual service to decide how much they want
to implement, or should we specify a minimum for each service type?
We certainly don't want to start *mixing* GET and SOAP, if that's what
you mean. Let's allow services to provide two separate points of access
if they want, but SOAP is what we need for the VO to interoperate.
>
> People know and trust the GET method. Crossing the bridge to SOAP should be
> possible by gradual steps.
Unfortunately there's no 'gradual' step to deciding whether you support
a (for example) SOAP SkyNode interface or not. What we can do is make
sure there are simple interfaces that don't require too much backend
code, and so as the SkyNode folks have done is to define a simple
SkyNode interface and ways of extending it. But you can't 'gradually'
add SOAP methods to build a standard interface and still expect it to
interoperate, until the full (minimum) interface has been implemented.
I do feel we should also provide standard 'client API' software for the
common astronomer languages - (FORTRAN?, Python?, Perl?, .NET?) - so
that astronomers can reach remote services easily with all the power of
SOAP but without caring about it.
Me? Fundamentalist? Is that the same as being Loud? :-)
Cheers,
Martin
--
Martin Hill
www.mchill.net
07901 55 24 66
More information about the grid
mailing list