OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

business-transaction message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Subject: RE: Open-top coordinators and protocol


Alastair,

> > I am not suggesting that we should define the spec in this 
> form. This 
> > is the mapping of the spec to the Web Services arena. A decision we 
> > took in the Boston f2f. There has to be a WSDL interface for every 
> > actor in BTP that participates in a defined-by the 
> model-interaction.
> 
> This is the first that I have heard of such a decision. I 
> have consulted the document issued by Pal as an update to the 
> document issued by me before the meeting. I see no reference 
> to WSDL. I have consulted the minutes issued by PAL. There is 
> no mention of WSDL. I have also consulted Peter (who attended 
> in person) and he does not remember any such decision.
> 

I hope others from the Boston f2f will remember this. There was never a
decision to use WSDL. I agree with that but, then again, I never
suggested that there was such a decision. There was a decision to map
the protocol down to Web Services as a proof-of-concept. That's why I
was asked to update the Use Cases document to talk about Web Services.

Having made the decision to target the Web Services world, I thought
that we had to agree on an interface to the actors (again a Boston f2f
decision) was required. That's why I suggested WSDL. It doesn't make a
difference whether XML schemas or plain text are used in the BTP specs
document to describe the protocol. I am suggesting (again) that there
has to be an agreement that is reflected by the specs document on the
interface of those actors that participate in a BTP-defined interaction
for the mapping of BTP to Web Services (Initiator-Coordinator,
Coordinator-Participant, Initiator-Service). Perhaps, it could be an
appendix.

When talking about the Web Services world, I think that WSDL is the
simplest way to go. I agree that it is possible to transfer XML
documents using SOAP without having a WSDL agreement on what interfaces
exist. If I want to switch my application from a BEA Coordinator Web
Service to an HP Coordinator Web Service, I will have to change my
implementation if there isn't an agreement on the interface used.

> Why don't we concentrate on what does have to happen, which 
> is defining the message sets using XML schemas? Let's leave 
> the WSDL issue as a second-order problem. WSDL levers on 
> schemas, so that road should be open, as I see it, if and 
> when required.
> 

I agree that WSDL is a secondary issue. We need to define the message
set for BTP before anything else.

> I think it would be restrictive and wrong to suggest that 
> this protocol can only be used through WSDL-advertised interfaces.
> 

I never suggested that. If that's what came across, I apologise.

> [...]
> 

[...] as well :-)

> >
> > The service does not enrol. The participants do.
> 
> Really? Why? You suppose (impose) a special case. This is 
> analogous to the argument that "applications shouldn't send 
> prepare". As I have pointed out, coordinators only send 
> prepare as servants to (delegates of) applications. Likewise, 
> the service is the active, controlling entity in this case. 
> There are several ways that I can think of, off hand, to 
> write a participant. (I'll assume I'm using an OO language: 
> it doesn't matter): its instantiation causes it to enroll 
> itself; a post-construction method causes it to enroll 
> itself, one can obtain via an accessor the information 
> (address/participant ID in this case) needed to enroll; one 
> instantiates via a factory, which returns the enrollment 
> information ...
> 
> Regardless of implementation details, the stimulus that 
> causes enrollment, the decision to enroll, the timing of 
> enrollment: all of these come from the application, in this 
> case the service. Like coordinators, participants don't self-start.
> 
> If you find that unpalatable, then I would say "it is 
> undefined who enrolls the Participant". It is not necessary 
> to stipulate who does it or why they do it. In practice the 
> service will "make it happen" when prodded by some other 
> application element, probably the initiator via an app request.
> 

If the Service is allowed to use the messages that are assigned to the
Participant actor, then why have the distinction in the first place?
People at the Boston f2f will remember that I was arguing against having
this kind of separation. I actually wanted the Service actor to "look
like" a participant of a cohesion. However, the decision was to treat
them separately. Because of that, distinct routes of (logical) message
exchanges were identified. Of course, I accepted that decision and I am
trying to support it.

To my mind, you're suggesting that it is possible for the Service to use
messages from the Participant's set, which is against Choreology's
diagram of actor interactions. This was the original reason for this
disagreement if you remember. At the Mt. Laurel f2f, I was given the
impression that you were trying to utilise the Coordinator's message set
from the Initiator. I objected then and continue to do so now :-)

If you can provide an implementation of the protocol that can achieve
the optimisations you're suggesting at the application level, then
that's fine, provided the interactions between the actors are honoured.
If that means that an Interceptor (an actor that has to be
implementation-specific) is required in order to give applications the
'illusion' that they talk to the appropriate actor, then that's fine as
well.

[...]

> 
> > The
> > service call cannot continue until the participant is registered.
> 
> No, that's not true. There is no need to delay or send 
> network messages up and down before the return of the 
> application response. The reason for ENROL/ENROLLED in the 
> standard (de-optimized case) is to ensure that the 
> application response will be a fault in the event that a 
> participant enrolment failed. This will prevent orphaned participants.
> 
> In the optimized case you get a different mechanism, which 
> achieves the same checking effect. The INT(I) receives the 
> boxcarred messages. It must send ENROLL + VOTE to the C and 
> get an ack (which should be ENROLLED) before sending the 
> *RESP* to the I. This ensures, once again, that there is no 
> dangling participant. This would not be a network message in 
> a collocated environment, and would be (likely a LAN message) 
> in a distributed environment. If the enrollment on the 
> "initiator side" fails, there are two ways that the dangle is 
> overcome: either the participant times out (with the usual 
> consequences) or some failure recovery mechanism will inform 
> the participant that it should cancel (which is a normal part 
> of the protocol).
> 

However, you have still done all the work at the Service side. In order
to avoid the exchange of a pair of messages, you may have allowed an one
hour long method to execute at the Service.

> > >
> > > 2 net messages between I and S, instead of 5 in the standard case.
> > >
> >
> > That should be 4 messages instead of 6 :-)
> 
> Actually, it should be 2 instead of 6, which would be really nice.
> 

:-) 


Best regards,
.savas.



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Powered by eList eXpress LLC