W3C home > Mailing lists > Public > xml-dist-app@w3.org > March 2001

RE: Causality/Correlation

From: Williams, Stuart <skw@hplb.hpl.hp.com>
Date: Thu, 29 Mar 2001 19:31:56 +0100
Message-ID: <5E13A1874524D411A876006008CD059F192374@0-mail-1.hpl.hp.com>
To: "'marwan sabbouh'" <ms@mitre.org>
Cc: xml-dist-app@w3.org
H Marwan,

> -----Original Message-----
> From: marwan sabbouh [mailto:ms@mitre.org]
> Sent: 29 March 2001 17:57
> To: Williams, Stuart
> Cc: Ray Denenberg; David Fallside (E-mail); w3c-archive@w3.org;
> xml-dist-app@w3.org
> Subject: Re: Causality/Correlation
> 
> 
> Hi Stuart,
> Thanks for your prompt reply. 
> >Were you ok. with the XMLP_DATA operation in the abstract 
> model, or is >that
> > something whose presence you would also question? My guess 
> would be the
> > later
> 
> The model that I favor is that of a simple one-way messaging system
> (XMLP_UNITDATA without the correlation parameter). By looking at the XML
> protocol abstract model, you introduce XMLP_DATA on page 4. 
> However, in Figure 3.1 you define XMLP_DATA in terms of XMLP_UNITDATA
events. (The
> only other reference to XMLP_Data comes before Section six or near the
> end.) This tells me that XMLP_DATA is redundant. However, I can live
> with it. 

Unfortunately, all references to XMLP_DATA are typo's in the current (27th
March) snapshot. That was my error, I didn't do a thorough enough job
cleaning up the consequences of removing what was the section on XMLP_DATA.

The caption on Figure 3.1 should just be XMLP_UNITDATA only.

XMLP_DATA was *never* redundant and was *never* presented as simply two
one-way operations. It was always presented was a two-way operation where
there is an explicit causal relationship between the request message and the
response message. That causal relationship is what is lost when you simply
switch to two one-way messages.

> My stronger objection is to the correlation parameter. 
> 
> > Simply looking at an XMLP message it is not possible to determine
whether it is a 
> > response to an earlier one.
> 
> Isn't that the point? That is why it is fundamentally a one-way
> messaging system.

The point is that that is how it would be *IF* you consider it to be two
just one-way messages (ie. broken). That is how it would be with SOAP if
*ALL* you did was look at one-way messages. The fact is that it *isn't* like
that with SOAP so, IMO, there is more than on-way messaging going on here,
there *is* an operation whose semantics give you correlation.

> Again, you could determine whether it is a response to an earlier message
by examining the transfer 
> protocol layer, or this functionality could be implemented in a module
(such as a biztalk 2.0
> module). 

But... this is an abstraction. It would be precisely the wrong thing to do
to grunge around for the application in the mire of the underlying protocol
and have to know the vaguaries of different underlying protocols.

Certainly, the functionality could be implemented in a module - and may very
well be in the future. Point is it isn't right now and SOAP/HTTP delivers
that functionality now - which is why it entered the model in the first
place.

> In the example described in [1], the answer could be that the XMLP
> application uses a module that tracks the correlation ID of the two
> requests. Alternatively, a web browser does this today. I'm  guessing 
> it keeps track of the two requests by virtue of using different TCP
> connections. 

Sure, but now from an XMLP user point-of-view your are delving around in the
details of the underlying protocol. *IF* you are going to go for one-way
messaging as an abstraction of *WHAT* you do (the service that you provide)
that's what you have to stick with. You send a message in one side and (with
reasonable probablity) it comes out the other end. It may leap-frog eariler
messages, it may get lost. That's pretty much all you should have to know
*if* you are sticking with one-way messaging. Reaching around the side to
derive correlation information from particular knowledge of the underlying
protocol mechanism is fine from a focussed and pragmatic implementation
point-of-view, but it is no way to present an abstraction.

> Also, if you insist on the current model, aren't you suggesting that the
> correlation ID is somewhere in the envelope? 

Firstly, I don't think in a position to insist. Certainly I have my opinons
and we may differ, but in the end it will be the WG that decides what it
wishes to publish as a WD.

To answer the main point here, the answer is no I'm not suggesting that the
correlation ID is somewhere in the envelope. The Correlation.MessageRef is
local and abstract (its not some externally significant URI or GUID). The
mechanism that 'generate' the local MessageRef may be intrinsic to the
underlying protocol, as is the case with SOAP over HTTP; they may be
generically included in the design of XMLP (but we havent yet done that);
they may be introduced with a protocol binding - this model is *not*
precriptive on *HOW* it aims to present a model of *WHAT* the XMLP layer
does.

Request/response looks something like this.

       Node X                       Node Y

  .send(Message=MsgAX)
  ------------------->|     |
                      |     |
  .status(status=sent)|     |.receive(Message=MsgAY)
  <-------------------|     |----------------------->
                      |     |
                      |     |.send(Message=MsgB,
                      |     |      Correl.MsgRef=&MsgAY)
                      |     |<-----------------------
 .receive(Message=MsgB|     |
 Correl.Msgref=&MsgAX)|     |.status(status=sent)
  <-------------------|     |----------------------->
                      |     |
NB, the &MsgAX and &MsgAY references are locally only.

> Best regards,
> Marwan

Best regards

Stuart

<snip/>
Received on Thursday, 29 March 2001 13:32:14 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:58:59 GMT