Hi Kona -
On Tue, 31 Oct 2006, Kona Andrews wrote:
> Doug wrote:
>
>> Furthermore, if we look at the service interface for TAP it will
>> probably have a number of operations such as the following:
>>
>> query data
>> query metadata (various, TBD)
>> stageData (async operations, TBD)
>> getCapabilities
>> state-of-health
>
> Is it correct that all these services apart from the stageData ones
> are intended to be purely synchronous?
Yes, except that for TAP a large query could be a long running operation (these are operations or methods on a single service, not services).
For something like SIA, queryData is always synchronous, and getData is synchronous, and if it will take a long time to generate the data, the data staging operations would be used and you have a stateful service. But one can still come in at the end and get the data with a synchronous operation.
Exactly how this should look for TAP is not yet clear since for TAP a data query can be a long running operation. Most TAP queries however (>90% ?) are probably simple synchronous queries as well, especially if we have a way to page through a large query response with a succession of calls, something which all queries probably require.
Ideally the interface should be structured to make simple queries simple synchronous operations, with the ability to handle large long running queries an advanced capability which simple service implementations need not support.
> If so, why not implement these services using pure HTTP-GET calls?
> Or is that what you actually mean by REST in this case?
Yes. REST generally means the GET URL contains everything. However, HTTP POST is not much different and may be required in some cases to pass large amounts of data with a simple HTTP-based interface, and so technically the two cases are probably actually HTTP GET/POST and SOAP. But in mose cases a simple GET is sufficient for the non-SOAP interface.
> In terms of results delivery, are we expecting results to come back
> directly to the querying client a la simple conesearch?
Yes, unless it is a long running operation and we need to stage data in a VOStore.