RE: Protocol Bindings

If might be useful to step back a bit and look at why we have a notion
of protocol bindings in the first place. The reason why one might want
to use different underlying protocols is that they provide different
levels of functionality (in the broadest possible sense).

If I use SOAP in combination with HTTP it is because I am after what
effectively is an HTTP application style interaction. If I use SOAP in
combination with UDP, it is because I want the services provided by UDP.
If I am looking for a underlying protocol that both provides URP's
service and a request/response mechanism, then I have to find a protocol
that does that or define this extra functionality in some manner.

In the latter case, I have two choices: I can define it as part of an
underlying protocol(s) or I can define it as a SOAP extension. These are
effectively the two slots that we have available as there are no other
places that I can augment the functionality of the stack.

If it is defined as a SOAP extension then we have a model for how to go
about defining that extension including how it can be added to the SOAP
envelope etc. If it is defined as part of the underlying protocol then
the protocol binding will likely have to talk about how these features
can be used.

However, just as we don't provide mechanisms for how SOAP extensions are
to advertise their services or features to the rest of the world,
neither can we really tell underlying protocols how to advertise their
services. For both SOAP extensions and for protocol bindings this can
happen in any number of ways - using declarative means, writing a spec,
etc etc.

Much of this is really metainformation about how services are to be used
and here something like WSDL can be leveraged to describe what
combinations are possible for accessing specific services and where they
can be accessed. For example, WSDL enables you to describe where to send
messages and to a certain degree what bindings they should use.

In addition to what types of messages one can send to which endpoints,
we also need to figure out what message exchange patterns these messages
are part of. Just like information about the type, information about
message patterns is also metainformation. It is effectively a
description of the orchestration of messages.

No doubt that both message description and message exchange pattern
descriptions are important but neither seem to be within scope of what
the core SOAP specification is supposed to do according to our charter. 

I would also strongly urge us not to get into specific implementation
questions regarding how certain APIs may cover the differences between
certain protocol bindings. I have no doubt that tool builders will work
hard on making use of various bindings very easy within their
environment.

All I think we have to do is to look at the (rather narrow) protocol
speciation that we are working on and define what the requirements of
that protocol are to underlying protocol.

Henrik

Received on Thursday, 5 July 2001 15:08:13 UTC