- From: Assaf Arkin <arkin@intalio.com>
- Date: Fri, 21 Feb 2003 19:30:45 -0800
- To: "Cutler, Roger \(RogerCutler\)" <RogerCutler@chevrontexaco.com>, "David Booth" <dbooth@w3.org>, "Martin Chapman" <martin.chapman@oracle.com>, <www-ws-arch@w3.org>
- Cc: "Hugo Haas" <hugo@w3.org>
People who come from the programming world often equate synchronous with blocking since most client libraries are blocking. That's not a definition of synchronous, only how certain implementations work. David already corrected himself in a private e-mail. He was thinking along the lines of waiting, not necessarily blocking in terms of implementation. And I've made the same mistake in the past. Apparently, it's all too easy to think in terms of implementation details, which explains all the different definitions of synchronous. Neither is incorrect, but they are all based on some way in which you would implement them. If you think in terms of application code you may say 'blocking', if you think in terms of protocols like HTTP you may say 'single connection', and if you think in terms of protocol selection (e.g. IIOP vs JMS) you may say 'no store-and-forward'. But these are all implementation choices. There is indeed one definition of synchronisity. We'll try to hammer out something that's generic and not dependent on a particular choice of protocol/implementation. Speed is also an implementation choice. A synchronous interaction doesn't have to be fast, it can take days and weeks. But, implementation wise you would want to only use synchronous operations when they take a short amount of time, say in the order of magnitude of an HTTP request/response. And you would tend to bind them to protocols that can achieve that. So while we would not constrain the time factor, it would make sense to say something along the lines that 'synchronous operations are expected to complete in a short amount of time', and for long interactions use a pair of asynchronous operations. arkin > -----Original Message----- > From: Cutler, Roger (RogerCutler) [mailto:RogerCutler@chevrontexaco.com] > Sent: Friday, February 21, 2003 7:10 PM > To: Cutler, Roger (RogerCutler); Assaf Arkin; David Booth; Martin > Chapman; www-ws-arch@w3.org > Cc: Hugo Haas > Subject: RE: Snapshot of Web Services Glossary > > > Oh, perhaps I should express an opinion about the alternatives. My > druthers, for what they are worth, is that the "blocking" definition is > the least desirable. I base this on two factors: 1)I don't really know > what it means in a world where applications can easily have multiple > threads; 2)It does not seem to have any aspect of timeliness, or > shortness of time, in it -- and my intuitive understanding of > synchronous is that it has something to do with things happening in a > timely manner. I personally like the ones that are based on how fast > things happen the best. > > That's my opinion, but I am MORE than willing to accept any of the > approaches to the concept, as long as it is just one definition. > > -----Original Message----- > From: Cutler, Roger (RogerCutler) > Sent: Friday, February 21, 2003 9:05 PM > To: 'Assaf Arkin'; David Booth; Martin Chapman; www-ws-arch@w3.org > Cc: 'Hugo Haas' > Subject: RE: Snapshot of Web Services Glossary > > > Yeah, this is the approach to synchronous that I recall impressed me as > being MOST different from the others. I recall that there was a > considerably more formal definition along these lines some months ago. > Well, if not more formal at least longer, but along the same lines with > the concept of agreeing about the time of day being the key factor. > > OK, there is the "blocking" thing, as in David's definition, there is > this thing with agreeing about timing of clocks, and there have also > been other definitions that were pretty formal but which ran along the > lines of "how soon" things happen. > > IMHO there are at least three completely different understandings of > what synchronous means floating around. They all sound really good to > me, but they are not the same. I would REALLY like it if we could agree > on one of them and make sure that when we use the word we agree that we > are using the word in that sense. Or, perhaps we could subset them > somehow, as in synchronous(1) ... Synchronous(N). > > -----Original Message----- > From: Assaf Arkin [mailto:arkin@intalio.com] > Sent: Friday, February 21, 2003 12:26 PM > To: David Booth; Martin Chapman; www-ws-arch@w3.org > Cc: 'Hugo Haas' > Subject: RE: Snapshot of Web Services Glossary > > > > > > > -----Original Message----- > > From: www-ws-arch-request@w3.org [mailto:www-ws-arch-request@w3.org]On > > Behalf Of David Booth > > Sent: Friday, February 21, 2003 10:09 AM > > To: Martin Chapman; www-ws-arch@w3.org > > Cc: 'Hugo Haas' > > Subject: RE: Snapshot of Web Services Glossary > > > > > > > > At 04:35 PM 2/20/2003 -0800, Martin Chapman wrote: > > >hmmm don't like the defn of synchronous: > > > > I struggled with this one, and I'm not sure my proposed wording is > > ideal, but what I was trying to do was more clearly differentiate > between > > synchronous and asynchronous. The old definition was very vague. > > > > Somehow we need to convey the idea that with "synchronous" > > interactions the parties are synchronized in some way. (!) This > > could mean "at the same time", but in the case of two communicating > > parties it generally means the > > sending party waits for the receiving party to do something before the > > sending party continues. Thus, they are "synchronized". I > > couldn't figure > > out any better way to precisely capture this. Any ideas? > > Define that operation involves sending/receiving at initiator site, and > receiving/sending at respondent site. Define "time" to be bound by T1 > (lower) and T2 (upper). I assume we can all agree to that. > > Given just sending and receiving primitives (e.g. TCP send()/receive()), > initiator and respondent can agree on T1/T2 after concluding operation. > With just these two communication primitives they can synchronize their > clock within some resolution (but don't look for atomic clock type of > synchronization here). > > > > I agree that store-and-forward would NOT be synchronous, but I don't > > see store-and-forward as the opposite of direct communication. > > Communication can certainly be indirect (i.e., go through > > intermediaries) but still be synchronous. So although synchronous > > communication is often direct, I don't see that as a distinguishing > > characteristic. > > An interaction can be synchronous even if it uses some store-and-forward > mechanism, even if both request and response are stored and forwarded. > > Test for synchronisity of interaction is something like that: > > If initiator sent request at time T1 then it can conclude that > respondent did not start performing interaction before time T1 If > initiator received request at time T2 then it can conclude that > respondent did not continue performing interaction after time T2 (and > vice versa) > > You can clearly see this is not true for asynchronous interaction. > > arkin > > > > > >and > > >the fact that the reply (if any) comes back on the same communication > > >channel as the request. > > > > Interesting thought. Must that always be true? I could certainly > > imagine an input-output operation in which the input uses one > > communication channel > > and the output uses another. So again, I don't see this as a > > distinguishing characteristic of synchronous communication. > > > > Anyone else have other suggestions for this definition? > > > > > > -- > > David Booth > > W3C Fellow / Hewlett-Packard > > Telephone: +1.617.253.1273 > >
Received on Friday, 21 February 2003 22:32:17 UTC