[CBF] As I read this, all I could think of was the scene from "Goodfellas"... "funny how?" ;-)
One way to approach this is to say something like this: SOAP doesn't really define an application, but because we want to make a variety of typical applications easy to support, we define a set of properties that are typical of commonly used applications. In many ways this is consistent with the definition of the RPC convention which I see as a particular application - it defines certain behaviors, a particular message exchange pattern, and has certain expected QoS behaviors.
[CBF] Agreed.
I also believe that saying that such applications can be part of the binding is a consistent way of approaching this. I tend to see the RPC convention as effectively a binding and because we have a nested binding model, one can nest the RPC binding with the SMTP binding. We can even model SOAP attachments in the same way allowing one to nest the RPC binding with the SOAP attachments binding with the SMTP binding, say.
[CBF] Agreed.
However, it also seems feasible not to use a binding that implies some sort of application but rather have the application be defined within the SOAP message using the SOAP extensibility mechanism. This is for example the case with the DIME binding. DIME doesn't define an application but completely leaves this up to the SOAP layer.
[CBF] Okay, now you've lost me... [CBF reads on...]
I think we have to accommodate both models—if for nothing else then because we have real examples of both types of bindings. The model provided here is rather simple but I think it might allow for much of what I think we have been talking about
[CBF] yes.
A set of properties describing the binding. Properties also have names that can allow them to be reused by other bindings and to be referred to by nestable bindings
[CBF] right.
A description of how that binding may be nested with other bindings. Each nested binding has its own name and nested bindings can be made by anybody independent of who has made the bindings that are nested
[CBF] I have always felt that this would be expressed by the pre/post conditions/constraints. Also, it seems to me that a crucial aspect of a binding, missing from your proposal is a specified canonical mapping of the abstract properties in to the bound "protocol". For instance, say there is a property defined as "media-type". In a MIME binding, this property is mapped to/from the MIME Content-Type header. In a DIME binding, this property is mapped to/from the Type field and the length of the value of the media-type property is computed and mapped to the Type-Length field, etc.
SMTP: message correlation but no particular message exchange pattern
[CBF] I'm not sure that I grok the relationship with the aforementioned set of properties with those you've outlined here.
[CBF] again, I would prefer that any nesting constraints be expressed in terms of any properties that the binding uses/requires as input as well as those "output" (e.g. any properties that are generated by the binding itself) For example, SMTP would likely generate a unique MID for the message. This would be reflected back up the stack at a receiving SOAP node in the set of properties for the message.
[CBF] should also consider cardinality (e.g. zero or more)
SMTP: message correlation but no particular message exchange pattern
ATTACHMENT: an attachment property that allows data to be carried with the SOAP message but outside the SOAP message itself
[CBF] Hmmm... I would have thought that this would constitute a separate binding, or an optional property of the SMTP binding.
RPC: request/response message exchange pattern with certain expectations about timing etc.
RPC: message correlation between a request and a response
SMTP: message correlation but no particular message exchange pattern
RPC: a request message type and a response message type
RPC: request/response message exchange pattern with certain expectations about timing etc.
RPC: message correlation between a request and a response
SMTP: message correlation but no particular message exchange pattern
ATTACHMENT: an attachment property that allows data to be carried with the SOAP message but outside the SOAP message itself
RPC: a request message type and a response message type
RPC: request/response message exchange pattern with certain expectations about timing etc.
RPC: message correlation between a request and a response