RE: Web services messaging

"Assaf Arkin" <[email protected]> Sun, 16 Mar 2003 12:04:26 -0800
Newsgroups gmane.comp.web.services.ws-arch
Message-ID <[email protected]>
This is a multi-part message in MIME format.

------=_NextPart_000_00C9_01C2EBB4.30DAEE10
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

+1

And another +1 for deciding that "defining the behavior of Web services
messaging relative to software agents" is what the WSA should discuss before
delving into the particular way in which various protocols would enable
that.

arkin
  -----Original Message-----
  From: [email protected] [mailto:[email protected]]On
Behalf Of Newcomer, Eric
  Sent: Sunday, March 16, 2003 11:04 AM
  To: [email protected]
  Subject: Web services messaging


  If we can agree to discuss Web services messaging from the application or
"actor" viewpoint rather than the viewpoint of the transport, I think we
have a better chance of gaining agreement and adding useful text to the
document.

  Defining such terms as "synchronous" and "asynchronous" are not likely to
be viewed as much of a contribution to industry, whereas defining the
behavior of Web services messaging relative to software "agents"  probably
would be.

  In the context of application to application communication paradigms, Web
services are basically a peer-to-peer system since the agents perform
operations to send and receive messages in various patterns.  Web services
do not perform RPCs since there is no equivalent of a local procedure call.
Web services also do not define queueing, although persisting messages can
be viewed as the same thing.

  Eric
    -----Original Message-----
    From: Newcomer, Eric
    Sent: Sunday, March 16, 2003 11:58 AM
    To: Champion, Mike; [email protected]
    Subject: RE: Friendly amendment to friendly amendment (was RE: Friendly
amendm ent #2c [Re: Straw poll on "synchronous" definitions]


    I'd like to say that I'm not sure that defining synchronous and
asynchronous are going to help us very much.  I'd like to offer a quote from
a book Phil Bernstein and I wrote in 1997 on transaction processing
("Principles of Transaction Processing," page 74):

    "TP application programs communicate with each other when they run in a
distributed setting on different computers.  Even on a single computer, for
modularity reasons, it's often convenient to break up the application
programs into separate processes.  Application programs therefore have to
communicate between processes, which means the programs have to exchange
messages.  There are three ways to do this:

    1.  Use remote procedure calls, which mimic the behavior of local
procedure calls within a single process.  When a program in one process
calls a program in another process (in another address space), it does so by
calling a procedure and getting a value returned just as if the two
procedures were running within a single address space.

    2.  Explicitly send and receive messages, called peer-to-peer messaging.
Rather than use a procedure call with a return, application programs issue
operations that send and receive messages.

    3.  Move messages among queues.  An application sends a message from one
program to another by putting the message in a queue.  The queue is a third
object, with which both programs communicate.  One program enqueues the
message to the queue, and sometime later the receiver program dequeues the
message from the queue.

    These communication paradigms apply to all distributed applications, not
just in TP. ..."

    I think this approach is much clearer and more helpful than trying to
define how the technology works under the covers, or describing the
messaging systems on which these paradigms are based.  It's clearly possible
to use a synchronous protocol to implement a message queuing paradigm, and
possible to implement a remote procedure call paradigm using peer-to-peer.
If we look at the capability of Web services based communication technology
from this perspective, we can fairly easily decide which of these paradigms
it really supports, and how, rather than argue over synchronous vs.
asynchronous, which is really a detail rather than an indication of
application level behavior.

    Eric
      -----Original Message-----
      From: Champion, Mike
      Sent: Sunday, March 16, 2003 11:18 AM
      To: [email protected]
      Subject: Friendly amendment to friendly amendment (was RE: Friendly
amendm ent #2c [Re: Straw poll on "synchronous" definitions]



        -----Original Message-----
        From: Anne Thomas Manes [mailto:[email protected]]
        Sent: Saturday, March 15, 2003 6:12 PM
        To: Walden Mathews; Christopher B Ferris; [email protected]
        Subject: RE: Friendly amendment #2c [Re: Straw poll on "synchronous"
definitions]


        The biggest issue I have with Ugo's definition (and all the others)
is that they tie synchrony with blocking versus non-blocking. Synchronous
means "at the same time". Asynchronous means "not at the same time". Whether
or not the sender has to wait idly for a response is a separate issue.

        An interaction (one-way, two-way, or multi-way) is synchronous if
the sender and receiver must communicate at the same time (the reciever must
be available to receive the message when the sender sends it). A one-way
message is asynchronous if the sender and receiver do not need to
communicate at the same time (the message may be stored and delivered at a
later time).
      I must say that I like Anne's wording that synchronous means that "the
receiver must be available to receive the message"  better than notions of
blocking or simultaneity.  What about changing Ugo's suggestion to:

      Asynchronous: A request/response interaction is said to be
asynchronous
      when the request and response are chronologically and procedurally
decoupled. In other
      words, the client agent can process the response at some indeterminate
point in the future when its existence is discovered, for example, by
polling, notification by receipt of another message, etc.

      Synchronous:  A request/response interaction is said to be synchronous
when the client agent must be available to receive and process the response
message from the time it issues
      it issues the initial request until it is actually received or some
failure condition is determined. The exact meaning of "available to receive
the message" depends on the characteristics of the client agent (including
the transfer protocol it uses); it may, but does not necessarily, imply
tight time synchronization, blocking a thread, etc.


------=_NextPart_000_00C9_01C2EBB4.30DAEE10
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2800.1141" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DTahoma color=3D#0000ff size=3D2><SPAN=20
class=3D524155319-16032003>+1</SPAN></FONT></DIV>
<DIV><FONT face=3DTahoma color=3D#0000ff size=3D2><SPAN=20
class=3D524155319-16032003></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DTahoma color=3D#0000ff size=3D2><SPAN =
class=3D524155319-16032003>And=20
another +1 for deciding that "<FONT face=3DArial>defining the behavior =
of Web=20
services messaging relative to software agents</FONT><SPAN=20
class=3D524155319-16032003><FONT face=3DTahoma>" is what the WSA should =
discuss=20
before delving into the particular way in which various protocols would =
enable=20
that.</FONT></SPAN></SPAN></FONT></DIV>
<DIV><FONT face=3DTahoma color=3D#0000ff size=3D2><SPAN =
class=3D524155319-16032003><SPAN=20
class=3D524155319-16032003></SPAN></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DTahoma color=3D#0000ff size=3D2><SPAN =
class=3D524155319-16032003><SPAN=20
class=3D524155319-16032003>arkin</SPAN></SPAN></FONT></DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px =
solid; MARGIN-RIGHT: 0px">
  <DIV class=3DOutlookMessageHeader dir=3Dltr align=3Dleft><FONT =
face=3DTahoma=20
  size=3D2>-----Original Message-----<BR><B>From:</B> =
[email protected]=20
  [mailto:[email protected]]<B>On Behalf Of </B>Newcomer,=20
  Eric<BR><B>Sent:</B> Sunday, March 16, 2003 11:04 AM<BR><B>To:</B>=20
  [email protected]<BR><B>Subject:</B> Web services=20
  messaging<BR><BR></FONT></DIV>
  <DIV><SPAN class=3D216524718-16032003><FONT face=3DArial =
color=3D#0000ff size=3D2>If=20
  we can agree to discuss Web services messaging from the application or =
"actor"=20
  viewpoint rather than the viewpoint of the transport, I think we have =
a better=20
  chance of gaining agreement and adding useful text to the=20
  document.&nbsp;&nbsp; </FONT></SPAN></DIV>
  <DIV><SPAN class=3D216524718-16032003><FONT face=3DArial =
color=3D#0000ff=20
  size=3D2></FONT></SPAN>&nbsp;</DIV>
  <DIV><SPAN class=3D216524718-16032003><FONT face=3DArial =
color=3D#0000ff=20
  size=3D2>Defining such terms as "synchronous" and "asynchronous" are =
not likely=20
  to be viewed as much of a contribution to industry, =
whereas&nbsp;defining the=20
  behavior of Web services messaging relative to software "agents<SPAN=20
  class=3D524155319-16032003><FONT face=3DTahoma>"&nbsp;</FONT></SPAN> =
probably=20
  would be.</FONT></SPAN></DIV>
  <DIV><SPAN class=3D216524718-16032003><FONT face=3DArial =
color=3D#0000ff=20
  size=3D2></FONT></SPAN>&nbsp;</DIV>
  <DIV><SPAN class=3D216524718-16032003><FONT face=3DArial =
color=3D#0000ff size=3D2>In=20
  the context of application to application communication paradigms, Web =

  services are&nbsp;basically a peer-to-peer system since the agents =
perform=20
  operations to send and receive messages in various patterns.&nbsp; Web =

  services do not perform RPCs since there is no equivalent of a local =
procedure=20
  call.&nbsp; Web services also do not define queueing, although =
persisting=20
  messages can be viewed as the same thing.</FONT></SPAN></DIV>
  <DIV><SPAN class=3D216524718-16032003><FONT face=3DArial =
color=3D#0000ff=20
  size=3D2></FONT></SPAN>&nbsp;</DIV>
  <DIV><SPAN class=3D216524718-16032003><FONT face=3DArial =
color=3D#0000ff=20
  size=3D2>Eric</FONT></SPAN></DIV>
  <BLOCKQUOTE dir=3Dltr style=3D"MARGIN-RIGHT: 0px">
    <DIV class=3DOutlookMessageHeader dir=3Dltr align=3Dleft><FONT =
face=3DTahoma=20
    size=3D2>-----Original Message-----<BR><B>From:</B> Newcomer, Eric=20
    <BR><B>Sent:</B> Sunday, March 16, 2003 11:58 AM<BR><B>To:</B> =
Champion,=20
    Mike; [email protected]<BR><B>Subject:</B> RE: Friendly amendment =
to=20
    friendly amendment (was RE: Friendly amendm ent #2c [Re: Straw poll =
on=20
    "synchronous" definitions]<BR><BR></FONT></DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff=20
    size=3D2>I'd like to say that I'm not sure that defining synchronous =
and=20
    asynchronous are going to help us very much.&nbsp; I'd like to offer =
a quote=20
    from a book Phil Bernstein and I wrote in 1997 on transaction =
processing=20
    ("Principles of Transaction Processing," page =
74):</FONT></SPAN></DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff=20
    size=3D2></FONT></SPAN>&nbsp;</DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff=20
    size=3D2>"TP application programs communicate with each other when =
they run in=20
    a distributed setting on different computers.&nbsp; Even on a single =

    computer, for modularity reasons, it's often convenient to break up =
the=20
    application programs into separate processes.&nbsp; Application =
programs=20
    therefore have to communicate between processes, which means the =
programs=20
    have to exchange messages.&nbsp; There are three ways to do=20
    this:</FONT></SPAN></DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff=20
    size=3D2></FONT></SPAN>&nbsp;</DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff=20
    size=3D2>1.&nbsp; Use remote procedure calls, which mimic the =
behavior of=20
    local procedure calls within a single process.&nbsp; When a program =
in one=20
    process calls a program in another process (in another address =
space), it=20
    does so by calling a procedure and getting a value returned just as =
if the=20
    two procedures were running within a single address=20
    space.</FONT></SPAN></DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff=20
    size=3D2></FONT></SPAN>&nbsp;</DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff=20
    size=3D2>2.&nbsp; Explicitly send and receive messages, called =
peer-to-peer=20
    messaging.&nbsp; Rather than use a procedure call with a return, =
application=20
    programs issue operations that send and receive=20
messages.</FONT></SPAN></DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff=20
    size=3D2></FONT></SPAN>&nbsp;</DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff=20
    size=3D2>3.&nbsp; Move messages among queues.&nbsp; An application =
sends a=20
    message from one program to another by putting the message in a =
queue.&nbsp;=20
    The queue is a third object, with which both programs =
communicate.&nbsp; One=20
    program enqueues the message to the queue, and sometime later the =
receiver=20
    program dequeues the message from the queue.</FONT></SPAN></DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff=20
    size=3D2></FONT></SPAN>&nbsp;</DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff=20
    size=3D2>These communication paradigms apply to all distributed =
applications,=20
    not just in TP. ..."</FONT></SPAN></DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff=20
    size=3D2></FONT></SPAN>&nbsp;</DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff size=3D2>I=20
    think this approach is much clearer and more helpful than trying to =
define=20
    how the technology works under the covers, or describing the =
messaging=20
    systems on which these paradigms are based.&nbsp; It's clearly =
possible to=20
    use a synchronous protocol to implement a message queuing paradigm, =
and=20
    possible to implement a remote procedure call paradigm using=20
    peer-to-peer.&nbsp; If we look at the capability of Web services =
based=20
    communication technology from this perspective, we can fairly easily =
decide=20
    which of these paradigms it really supports, and how, rather than =
argue over=20
    synchronous vs. asynchronous, which is really a detail rather than =
an=20
    indication of application level behavior.</FONT></SPAN></DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff=20
    size=3D2></FONT></SPAN>&nbsp;</DIV>
    <DIV><SPAN class=3D515394816-16032003><FONT face=3DArial =
color=3D#0000ff=20
    size=3D2>Eric</FONT></SPAN></DIV>
    <BLOCKQUOTE dir=3Dltr style=3D"MARGIN-RIGHT: 0px">
      <DIV class=3DOutlookMessageHeader dir=3Dltr align=3Dleft><FONT =
face=3DTahoma=20
      size=3D2>-----Original Message-----<BR><B>From:</B> Champion, Mike =

      <BR><B>Sent:</B> Sunday, March 16, 2003 11:18 AM<BR><B>To:</B>=20
      [email protected]<BR><B>Subject:</B> Friendly amendment to =
friendly=20
      amendment (was RE: Friendly amendm ent #2c [Re: Straw poll on=20
      "synchronous" definitions]<BR><BR></FONT></DIV>
      <DIV><FONT face=3DArial color=3D#0000ff =
size=3D2></FONT>&nbsp;</DIV>
      <BLOCKQUOTE dir=3Dltr=20
      style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff =
2px solid; MARGIN-RIGHT: 0px">
        <DIV class=3DOutlookMessageHeader dir=3Dltr align=3Dleft><FONT =
face=3DTahoma=20
        size=3D2>-----Original Message-----<BR><B>From:</B> Anne Thomas =
Manes=20
        [mailto:[email protected]]<BR><B>Sent:</B> Saturday, March 15, 2003 =
6:12=20
        PM<BR><B>To:</B> Walden Mathews; Christopher B Ferris;=20
        [email protected]<BR><B>Subject:</B> RE: Friendly amendment #2c =
[Re:=20
        Straw poll on "synchronous" definitions]<BR><BR></FONT></DIV>
        <DIV><SPAN class=3D460020123-15032003><FONT face=3DArial =
color=3D#0000ff=20
        size=3D2>The biggest issue I have with Ugo's definition (and all =
the=20
        others) is that they tie synchrony with blocking versus =
non-blocking.=20
        Synchronous means "at the same time". Asynchronous means "not at =
the=20
        same time". Whether or not the sender has to wait idly for a =
response is=20
        a separate issue. </FONT></SPAN></DIV>
        <DIV><SPAN class=3D460020123-15032003><FONT face=3DArial =
color=3D#0000ff=20
        size=3D2></FONT></SPAN>&nbsp;</DIV>
        <DIV><SPAN class=3D460020123-15032003><FONT face=3DArial><FONT=20
        color=3D#0000ff><FONT size=3D2>An interaction&nbsp;(one-way, =
two-way, or=20
        multi-way) is synchronous if the sender and receiver must =
communicate at=20
        the same time (the reciever must be available to receive the =
message=20
        when the sender sends it). A one-way message is asynchronous if =
the=20
        sender and receiver do not need to communicate at the same time =
(the=20
        message may be stored and delivered at a later time).&nbsp;<SPAN =

        =
class=3D299350016-16032003>&nbsp;</SPAN></FONT></FONT></FONT></SPAN></DIV=
></BLOCKQUOTE>
      <DIV dir=3Dltr><SPAN class=3D460020123-15032003><FONT =
face=3DArial><FONT=20
      color=3D#0000ff><FONT size=3D2><SPAN class=3D299350016-16032003>I =
must say that=20
      I like Anne's wording that synchronous means that "the receiver =
must be=20
      available to receive the message" &nbsp;better than notions of =
blocking or=20
      simultaneity.&nbsp; What about changing Ugo's suggestion=20
      to:</SPAN></FONT></FONT></FONT></SPAN></DIV>
      <DIV dir=3Dltr><SPAN class=3D460020123-15032003><FONT =
face=3DArial><FONT=20
      color=3D#0000ff><FONT size=3D2><SPAN=20
      =
class=3D299350016-16032003></SPAN></FONT></FONT></FONT></SPAN>&nbsp;</DIV=
>
      <DIV dir=3Dltr><SPAN class=3D460020123-15032003><FONT =
face=3DArial><FONT=20
      color=3D#0000ff><FONT size=3D2><SPAN =
class=3D299350016-16032003>Asynchronous: A=20
      request/response interaction is said to be asynchronous<BR>when =
the=20
      request and response are chronologically and procedurally =
decoupled. In=20
      other<BR>words, the client agent can&nbsp;process the response at =
some=20
      indeterminate point in the future when&nbsp;its existence is=20
      discovered,&nbsp;for example, by polling, notification&nbsp;by=20
      receipt&nbsp;of another message,=20
      etc.&nbsp;</SPAN></FONT></FONT></FONT></SPAN></DIV>
      <DIV dir=3Dltr><SPAN class=3D460020123-15032003><FONT =
face=3DArial><FONT=20
      color=3D#0000ff><FONT size=3D2><SPAN=20
      =
class=3D299350016-16032003></SPAN></FONT></FONT></FONT></SPAN>&nbsp;</DIV=
>
      <DIV dir=3Dltr><SPAN class=3D460020123-15032003><FONT =
face=3DArial><FONT=20
      color=3D#0000ff><FONT size=3D2><SPAN=20
      class=3D299350016-16032003>Synchronous:&nbsp;&nbsp;A =
request/response=20
      interaction is said to be synchronous when the client agent must =
be=20
      available to receive and process the response message from the =
time it=20
      issues<BR>it issues the initial request until it is actually =
received or=20
      some failure condition is determined. The exact meaning of =
"available to=20
      receive the message" depends on the characteristics of the client =
agent=20
      (including the transfer protocol it uses); it may, but does not=20
      necessarily, imply tight time synchronization, blocking a thread,=20
      etc.</SPAN></FONT></FONT></FONT></SPAN></DIV>
      <DIV dir=3Dltr><SPAN class=3D460020123-15032003><FONT =
face=3DArial><FONT=20
      color=3D#0000ff><FONT size=3D2><SPAN=20
      =
class=3D299350016-16032003></SPAN></FONT></FONT></FONT></SPAN>&nbsp;</DIV=
>
      <DIV dir=3Dltr><SPAN class=3D460020123-15032003><FONT =
face=3DArial><FONT=20
      color=3D#0000ff><FONT size=3D2><SPAN=20
      =
class=3D299350016-16032003></SPAN></FONT></FONT></FONT></SPAN>&nbsp;</DIV=
></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>

------=_NextPart_000_00C9_01C2EBB4.30DAEE10--