1.0rc1 WSDL issues
Dave Morris
dave at ast.cam.ac.uk
Wed Jun 14 05:44:04 PDT 2006
Paul Harrison wrote:
> 3. DIME transfers - the 0.21 spec mentions a usage of DIME that
> implies that there should be a specific operation that the files
> could be attached to, and by implication this operation should be in
> the interface definition. This was not how I would have envisaged
> DIME working if we allow it as a transport, as it loses the principal
> advantage of attachments anyway, i.e. that the HTTP SOAP call with
> all the necessary data is atomic and synchronous. Would it not be
> better to say that if DIME is specified as a transport then the data
> be attached to the pullDataFromVoSpace or pullDataToVoSpace calls
> themselves?
I agree, we should have both, plus leave it open to include others in
the future.
Initially, there are two ways that we could use DIME and MTOM attachments.
The first is to send the data as an attachment to the VOSpace message or
response, as you describe above.
The second is to send the data via a separate SOAP message (I know, not
optimal, but there may be cases where this makes sense).
This requires details of the receiving web service, the WSDL, the
endpoint, and possibly some form of service specific identifier.
An example of this would be the original VOStore get and put methods we
demonstrated at ADASS.
We can distinguish between the different forms by defining different a
protocol URI for each one.
ivo://...../vospace.01.00.dime.put
This VOSpace protocol sends the data to the target service as a DIME
attachment to the PullDataToVoSpace method.
To use this transfer method, the <protocol> element should be set to
this URI, and the <location> element is empty (the data is already
attached to the SOAP message).
ivo://...../vospace.01.00.dime.get
This VOSpace protocol sends the data to the client as a DIME attachment
to the PushDataFromVoSpace method.
To use this transfer method, the <protocol> element should be set to
this URI, and the <location> element is empty (the data will be attached
to the SOAP response).
ivo://...../vostore.01.00.dime.get
This VOSpace protocol gets the data from a separate web service that
supports the original VOStore get method.
To use this transfer method, the <protocol> element should be set to
this URI, and the <location> element should be set to the endpoint of
the target web service.
Note - this may need an additional element in the VOSpace message to
supply some form of path or identifier to specify what data to get from
the target service.
ivo://...../vostore.01.00.dime.put
This VOSpace protocol sends the data to a separate web service that
supports the original VOStore put method.
To use this transfer method, the <protocol> element should be set to
this URI, and the <location> element should be set to the endpoint of
the target web service.
Note - this may need an additional element in the VOSpace message to
supply some form of path or identifier to specify where to put the data
within the target service.
ivo://...../other.project.dime.get
This VOSpace protocol gets the data from a separate web service that
supports <new type of DIME get service>.
To use this transfer method, the <protocol> element should be set to
this URI, and the <location> element should be set to the endpoint of
the target web service.
Note - this may need an additional element in the VOSpace message to
supply some form of identifier.
Using a different protocol URI for each of the different forms means
that all of these can be listed in the capabilities of the particular
VOSpace service.
The first two (attaching the data to the VOSpace messages) means we have
a simple way to implement DIME get and put for a VOSpace service.
However, it does not mandate this as the only way of using DIME and
MTOM, leaving things open for others to provide different web service
interfaces is they want.
If a different Grid project already have their own DIME or MTOM
implementation, if they add a new protocol URI that describes their
interface, we can create VOSpace clients that can send and receive data
from their services too.
Note that the indirect forms of DIME get and put may need an additional
element in the VOSpace message to supply some form of identifier.
Could we handle this by defining the <protocol> or <location> elements
as a ComplexType, and then using xsi:type to replace it with extended
forms when the protocol requires it.
Another example of this would be FTP or HTTP transfers with unusual
authentication methods may need separate name and password elements if
they can't be encoded in the URL.
A service should only receive messages with the extended type if they
have listed that particular protocol in their capabilities.
If the protocol isn't listed in the service capabilities, then it should
reject the message anyway.
Dave
More information about the vospace
mailing list