Re: Marking operations safe

At 04:37 AM 2004-02-27, Hugo Haas wrote:
>The safeness and idempotency of a Web service request are independent
>from the binding used, so it makes sense to express them at the
>operation level. Since an operation could involve any MEP, we need to
>specify that we are talking here about state from the service's point
>of view.

The SOAP 1.2 Web method feature [1] implies both safe and idempotent when 
the property value is GET.

Has WSDWG come up with a way to use the web method feature in WSDL?


I suppose there is probably a need to split "safe" and "idempotent" 
apart.  You can then assume web method feature (WMF) is GET if both safe 
and idempotent (but perhaps not).

Note that WMF could be POST, and the operation is both safe and 
idempotent.  POST is appropriate for other reasons [2] (for example, if 
SOAP header blocks are needed).

An interesting twist is when the service endpoint can be described with 
WMF=GET, but a pair of intermediaries (i1, i2) need to use SOAP header blocks.

         a.  sender ->GET -> i1 -> POST -> i2 -> GET -> receiver, or
         b.  sender -> POST -> i1 -> POST -> i2 -> GET -> receiver

In case (a), the sender's request could be based on the WSDL of the receiver.
In case (b), perhaps there is an internal policy that senders use a certain 
SOAP header block (e.g., WS-Security), so it would have to POST to the 
first intermediary.  The sender's request would need to use a different 
WSDL than that at the receiver.  Both would be safe and idempotent, but WMF 
would be different due to the need for SOAP header blocks from the sender.

[1] http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#WebMethodFeature
[2] http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#RPCResourceRetrieval

Paul

Received on Friday, 27 February 2004 09:41:13 UTC