Proposed Clarification: Special status of bodyNumber: 1
Identifier: ClarifyBody Description: |
Proposed Clarification: Clarify rules for delivering fault messages.Number: 2
Identifier: FaultDelivery Description: |
Proposed Clarification: Precisely describe message path semanticsNumber: 3
Identifier: MessagePath Description: |
Proposed Clarification: Use Infoset to define messages?Number: 4
Identifier: UseInfoset Description: |
Proposed Clarification: Clarify message patterns (e.g. Request/Response)Number: 5
Identifier: MessagePattern Description: (this description is taken from the cited e-mail message) Although SOAP messages are fundamentally one-way, the HTTP binding serves as an example of the possibility for transport bindings to introduce higher level message patterns such as request/response. Presumably, other bindings could also support a request response model, but the SOAP specification does not mandate any particular relation between request/responses implemented by HTTP for example and SMTP (I think it should). Interestingly, the request/response model is explicitly exploited in a transport independent way by the RPC specification in chapter 7. The specification does not state, but strongly implies that RPC responses will indeed be returned to the originator of the request, and that the transport binding will be responsible for doing the necessary addressing. Certainly the HTTP binding does this. The relationship of faults to message patterns is even more subtle, and perhaps will need improvement or clarification. Specifically, section 4.4 of the SOAP specification gives information about what must be in a fault message. However, since messages are fundamentally one-way, and since there is no general-purpose notion of a request/response or other higher level pattern, nothing is stated in general as to where if at all faults are delivered. In this respect, the specification is nearly vacuous: it mandates that a fault message be constructed in certain manner, but it allows it to be dropped on the floor before anyone sees it. That's what the spec says. Reading between the lines, here's what I think it is really trying to say: "Although SOAP messages are fundamentally one-way, SOAP supports the construction of higher level message patterns on top of that. In addition to one-way, this specification includes a well architected notion of request/response, which certain applications and SOAP processors may choose to use when sending SOAP messages. SOAP transport bindings are responsible for supporting the request/response abstraction (always? optionally?). Transport bindings that support request/response are responsible for providing the ability for an intermediary or SOAP end point to return response or fault messages back to the originator of a request. Response messages can be assumed to take the exact reverse path of requests; so response and fault messages can be inspected if desired by the same actors the processed the outbound request {not sure about that..maybe we should make request/resp apply only to the endpoints?}. SOAP RPC uses the request/response message pattern, and is therefore usable only on with transport bindings that support request/response. The delivery rules for Fault messages are message pattern specific. The rules for the two message patterns supported by this version of the SOAP specification are:
|
Proposed Clarification: Check all must understands first & process atomically?Number: 6
Identifier: AtomicMustUnderstand
Description: |
Proposed Clarification: Clarify the terms application, actor & related notions of identity.Number: 7
Identifier: ActorIdentity Description: The SOAP specification contains statements such as "A SOAP application receiving a SOAP message MUST process that message by performing the following actions in the order listed below: ... Identify all parts of the SOAP message intended for that application (see section 4.2.2)", etc. and also "The SOAP actor global attribute can be used to indicate the recipient of a header element. The value of the SOAP actor attribute is a URI. The special URI "http://schemas.xmlsoap.org/soap/actor/next" indicates that the header element is intended for the very first SOAP application that processes the message. This is similar to the hop-by-hop scope model represented by the Connection header field in HTTP. Omitting the SOAP actor attribute indicates that the recipient is the ultimate destination of the SOAP message" SOAP thus makes clear that in certain circumstances, the same actor can have more than one URI identifier (e.g. as "next" and also something explicit). The SOAP specification should be clarified to remove all ambiguities relating to such aliases. For example, the specification should be unambiguous regarding the processing of mustUnderstand headers, generation of faults, etc. Furthermore, the specification should make clear whether users can or cannot choose to create their own aliases, and if so what processing rules apply. A special case of this issue arises at the end of the message path. It seems that this point can be addressed by at least two means, an explicit "next" and the more common absence of an actor. Can there be other user supplied names that also are acted upon by the end point? |