- From: Mark Jones <jones@research.att.com>
- Date: Mon, 16 Jul 2001 15:29:04 -0400 (EDT)
- To: jones@research.att.com, mnot@mnot.net, xml-dist-app@w3.org
Mark, Date: Mon, 9 Jul 2001 16:36:45 -0700 From: Mark Nottingham <mnot@mnot.net> To: Mark Jones <jones@research.att.com> Cc: xml-dist-app@w3.org Subject: Re: infoset and bindings Mark, To make sure I get it; would this be a reasonably accurate summary of your proposal: Bindings must define an Infoset representation of the services that they provide and the restrictions that they impose on the uses of SOAP messages. These representations should be able to be serialized into SOAP Header Blocks. Cheers, I think of sending the message from the sender's perspective in the following way: 1) The sender knows the basic content to be delivered and any ancillary sender-specified services. (Delivery paths may also invisibly provide other "services" en route that are transparent to the sender.) 2) The sender also determines an overall messaging pattern (fire-and-forget, request-response, etc.) from its perspective. 3) The sender must also construct some delivery plan that is consistent with 1) and 2). The sender may be hardwired or use meta-data (obtained via some unspecified mechanism) to determine this delivery plan. The sender may completely determine the routing path, protocols, etc., for all hops or its plan may include the delegation of some of these decisions to routing intermediaries, but nonetheless it has a delivery plan. (In particular, the next hop of the plan must be concretely determined at the sender and each intermediary.) An infoset representation of the message at any given point along the message path includes all of the above information that is still required for subsequent delivery and processing. Abstractly, I think of a "binding" as functionality that can properly execute the next step in the delivery plan given an infoset representation of the message. This involves the choice of an appropriate set of transport/transfer/encapsulation protocols (serialization, etc.) for the next hop in such a way that the receiver at the end of the hop can continue to maintain the invariant -- to preserve the message infoset necessary for the remaining delivery and processing. Although a particular binding will typically specify a principal transport protocol (HTTP, SMTP, BEEP, etc.), I think we should reserve the term "binding" for the functionality that maps the message infoset into as many protocol layers as may be required. (I'm also a "layerist" in terms of the implementation; a binding is a plan/rules/method for mapping a message infoset to the appropriate layers.) Senders (or other nodes that take an active part in determining a delivery plan) will, of course, be well advised to select paths that support bindings with suitable functionality for the message at hand. As an example, suppose that a sender S could obtain service either from recipient R1 using binding B1 or from recipient R2 using binding B2. Furthermore, let's assume that the (abstract) message infoset includes a sizeable chunk of non-XML data, and that binding B1 supports a MIME-encapsulation layer, but B2 does not (with B2, the data might need to be base64 encoded and placed inside the envelope). (Assume that both B1 and B2 specify the same underlying transport protocol such as HTTP.) The sender may intelligently use such considerations to prefer a delivery plan that incorporates binding B1 to R1 instead of B2 to R2. The above example could have as easily picked on other services such as security that may be better supported via some bindings/paths than others, perhaps because the associated protocols provide better support native for those services. A truly extensible infrastructure would allow the (dymanic) constuction of delivery plans that take into account any (open-ended) set of service parameters. --mark
Received on Monday, 16 July 2001 15:29:15 UTC