- From: marwan sabbouh <ms@mitre.org>
- Date: Mon, 19 Mar 2001 07:14:06 -0500
- To: Yuhichi Nakamura <NAKAMURY@jp.ibm.com>
- CC: Mark Jones <jones@research.att.com>, xml-dist-app@w3.org, skw@hplb.hpl.hp.com
In Stuarts Williams's abstract processing documents, module and handler > are explicity distinguished. A module is a collection of blocks, and > a handler is a component which processes module(s). I may just memorize > the terminology wrongly. I don't agree with this at all. one o or more Block is an instantiation of a module. I thought ( and hope ) that we do not distinguish between them in the AM document. Stuart? Yuhichi Nakamura wrote: > > Hi Mark, > Great job! I have some questions and comments. > > Module or Handler?: > In Stuarts Williams's abstract processing documents, module and handler > are explicity distinguished. A module is a collection of blocks, and > a handler is a component which processes module(s). I may just memorize > the terminology wrongly. > > Actor: > In SOAP, an actor targets an "application" in my opinion because there is > no > handler concept. Once we introduce the handler concept, should we > introduce > two kinds of actor attribute, i.e. applicationActor and handlerActor? > I am not sure how handlers and applications are properly targeted with > a single Actor attribute. > > Removal of Blocks: > We had a long discussion on this in Apache Axis project. In the > discussion, > I always a digital signature usecase. Assume that there is a message that > includes SOAP digital signature header according to W3C SOAP Security > spec, and it is sent from a one company to another company. The receiver > company wants verify the signature, and "log" the singed message only > when valid. There are some ways of system configuration within the > receiver side, i.e. (1) a single SOAP application, (2) a Gateway (SOAP > intermediary) > and an ulitmate destination, and so on. In this scenario, the sender does > not > care (even should no know) whether the signature header is logged. > I am not sure if giving "non-targeted" is responsibility of the sender. > > Regards, > > Yuhichi Nakamura > IBM Tokyo Research Laboratory > Tel: +81-462-73-4668 > > From: Mark Jones <jones@research.att.com>@w3.org on 2001/03/16 05:26 > > Please respond to Mark Jones <jones@research.att.com> > > Sent by: xml-dist-app-request@w3.org > > To: jones@research.att.com, moreau@crf.canon.fr > cc: Lynne.Thompson@unisys.com, SISAACSON@novell.com, > frystyk@microsoft.com, John Ibbotson/UK/IBM@IBMGB, ksankar@cisco.com, > marc.hadley@uk.sun.com, marting@develop.com, > nick.smilonich@unisys.com, ohurley@iona.com, skw@hplb.hpl.hp.com, > xml-dist-app@w3.org, ylafon@w3.org > Subject: Re: mid-course correction on abstract model for module processing > > Thanks for the comments. As I mentioned in the AM meeting, I will be > updating this to reflect the glossary, but here are some quick responses. > > Date: Thu, 15 Mar 2001 17:44:34 +0100 > From: "Jean-Jacques Moreau" <moreau@crf.canon.fr> > To: "Mark A. Jones" <jones@research.att.com> > Cc: Henrik Frystyk Nielsen <frystyk@microsoft.com>, > Stuart Williams <skw@hplb.hpl.hp.com>, > John Ibbotson <john_ibbotson@uk.ibm.com>, > Krishna Sankar <ksankar@cisco.com>, > Lynne Thompson <Lynne.Thompson@unisys.com>, > Marc Hadley <marc.hadley@uk.sun.com>, > Martin Gudgin <marting@develop.com>, > Nick Smilonich <nick.smilonich@unisys.com>, > Oisin Hurley <ohurley@iona.com>, Scott Isaacson > <SISAACSON@novell.com>, > Yves Lafon <ylafon@w3.org>, xml-dist-app@w3.org > Subject: Re: mid-course correction on abstract model for module > processing > > Mark, > > Thanks for the rewriting and the hard work, although I must admit I > preferred the original version. :( > > "Mark A. Jones" wrote: > > > 1. An XML Protocol Message consists of zero or more header blocks > > and one body block. [...] > > > There has been some discussion in the past as to whether we should > keep the (somewhat artificial) distinction between headers and body. > Are you suggesting that we should keep both, instead of just having > blocks? > > This will become zero or more blocks in a header and zero or more > blocks in a body -- blocks are various referred to as "entries" or > "parts" in SOAP. The main distinction as I see it is where the > responsibility lies for generating responses. Some handler in some > module at the destination must take on that responsibility, and having > a body makes a convenient place to designate that responsibility. > > Also, how would I be able to send two RPCs to an XMLP Receiver via a > single XMLP Message if a Message can only carry one body > block? > > I don't think having multiple body blocks is a problem, but it seems > like a single module must be given responsibility for processing them > and determining a result. In the case of header blocks, they can all > be individually targeted. > > > 1. Each header has an optional associated id (identifier), an > > optional actor and an optional mustUnderstand flag. The body > > has an optional associated id (identifier) and an optional > > actor. The body must be understood. The id is an ID that > > identifies the block for the purposes of reference by other > > blocks. The actor is a URI used by the XML Protocol Processor > > for determining which module to apply to the block. [...] > > > Noah has suggested (cf issue 41) that we use two different URIs, one > for physically identifying the host, one for the identifying the > service. Wouldn't this have an impact on the actor attribute? > > I think the transport level needs to have a way of physically > identifying the host, since it has to eventually get the bits > to some computational engine. The actor URI's on the other hand > are really naming either default or particular functionality > at the site. They are really URN's IMHO. > > > 1. There are reserved actor URI's with special significance: > > http://.../none // matches no module (i.e., an > > untargeted header) > > http://.../next // matches a default module at the next > > processor > > http://.../final // matches a default module at the > > final processor > > http://.../body // matches the module selected at the > > final processor (can be used as a target for headers) > > [...] > > > Don't we need some lower level of granularity in these URIs, so we can > address, for example, a particular handler? > > Here's how I think about the dispatching rules. > > (1) Some actors are like "locations": > > <m:foo xmlns:m="some-URI" XMLP-ENV:actor="some-place-URI"> ... </m:foo> > > Here you think of the actor as a spce where the processor lives. > SOAP has a predefined URI for the "next" place, for example. > It could also be a URL (but probably not) or another means of describing > a place. > In SOAP, the application/processor makes the handler dispatch > presumably based on the m:foo tag. In XMLP, we seem to be taking the > view that modules know the rules, so you would think of > "some-place-URI" as a default module for the place that knew how to > select a handler and do the dispatch. > > (2) Actors that are "modules": > > <m:foo xmlns:m="some-URI" XMLP-ENV:actor="some-module-URI"> ... </m:foo> > > This seems to be the natural case to me. The module > ("some-module-URI") knows about the block types (such as m:foo) > in its sphere of influence and it determines what handler to > dispatch for m:foo, whether to treat it as RPC, etc. > In the general, non-RPC case, a single handler > may work on many different types of blocks. > > Also, shouldn't the URIs be HTTP agnostic, if we claim we are > transport independent? > > Generally, yes, but see above. > > > 1. When a header is selected for processing by a module at an > > intermediary, the header is removed from the envelope. [...] > > > I am concerned by us automatically removing blocks as soon as they are > consummed. I think there are cases where you do want to keep consummed > blocks from one intermediary to the next, and I would be reluctant to > us having to use the push(pop()) kludge, instead of solving the issue > properly. If we really want this functionality, shouldn't we at least > make it optional? > > This is the purpose of "none". Multiple targeted blocks could link > to a non-targeted block. Each targeted block gets removed as it > finds a module capable of processing it, but the non-targeted blocks > would not be removed. If the sender wanted to target several > different intermediaries/modules with the same info, he would include > separate targeted blocks linking to the common block. Each targeted > block will disappear one-by-one, but the untargeted block would survive. > > > The processing of a header may result in a fault or a > > successful evaluation. A fault terminates processing and > > causes a return message containing the fault to be generated if > > a return path is available. [...] > > > Does a fault terminate all processing, including forwarding to the > next hop; or does it only terminate processing at the current node, > with forwarding still happening? The text probably requires some > amount of clarification. > > I currently see the simplest model as distinguishing between (1) a real > fault (no point in going on), and (2) not that serious, continue. In > case (2), a block can be inserted into the message to reflect the > issue that arose and the response that eventually gets generated can > incorporate it if desired. > > I hope this helps, > > Jean-Jacques. > > Thanks... > > Mark Jones
Received on Monday, 19 March 2001 07:13:58 UTC