RE: Proposed text on reliability in the web services architecture

Hao He <[email protected]>
Newsgroups gmane.comp.web.services.ws-arch
Message-ID <686B9E7C8AA57A45AE8DDCC5A81596AB046AE26A@sydthqems01.INT.TISA.COM.AU>
hi, Walden,

Let me try again.  I was trying to provide a simple way of coordinating
between a client and its server.

Let's start with " a client X deposites $100 into server Y".  This is a
logical operation and it is non-idempotent.  Let's identify this operation
as "http://example.com/bank/depo/1234". 

To perform this operation, the client has to send a request to the server.
The request identifies itself
as a request instance of "http://example.com/bank/depo/1234".  Now, I want
the physical operation of sending such requests to be idempotent.  So, if
something goes wrong for whatever reason, or even the client is unsure about
what has happened, the client simply sends the request again without causing
the logical operation to be performed more than once.

So, would you consider this still RM?

Hao

-----Original Message-----
From: Walden Mathews [mailto:[email protected]]
Sent: Friday, January 17, 2003 1:31 AM
To: Hao He; Assaf Arkin; Peter Furniss; Champion, Mike;
[email protected]
Subject: Re: Proposed text on reliability in the web services
architecture


Hao,

> I think Walden has made a good point. We don't really care about RM, which
> itself has been solved in the TCP/IP layer or other messaging layer
already.
> The whole RM thing is misleading within Web Services context. What we
really
> care is a reliable way of coordinating a client and its server, although
RM
> might be helpful.

Agreed.

>
> Making an operation idempotent seems to be a simple and effective
solution.

I'm leery of this.  If you mean making it idempotent by enclosing it
within a message and giving the message identity, then I'd say you were
doing RM.  If you mean recognizing that something like a deposit has
identity from the client's perspecitive, and allow the client to set the
value of the deposit directly, then fine.  I'd call it "finding", not
"making".

> What we need to distinguish
> is the difference between logical operations and physical operations.
>
> In the bank account example, depositing money into an account is a logical
> operation while sending
> a request to the bank's Web Services to achieve such an operation is
> physical. A logical operation can
> be idempotent or not, but we do want all physical operations to be
> idempotent.  More precisely, we mean:
> 1. r=f(u,x,t), where f is a physical operation on a Web Services
identified
> by u, x is a request, and t is time, and r is the results returned by the
> WS.
> 2. r'=f(u,x',t')
> 3. if x eq. x', and r eq. r', then we say that f is idempotent, where eq.
> stands for "is equivalent to".
> This idempotent def is different than the one in math.
>
> Is this summary good enough?

It's not clear enough.  When you say "sending a request", and having
that be idempotent, what is the thing that has identity?  If it's a message,
then the above summarizes RM.  If it's a "deposit", then the above
summarizes an application level coordination.

Thanks,

Walden
InterScan_Disclaimer.txt (text/plain, 438 B)
=====================================================================
WARNING -This e-mail, including any attachments, is for the 
personal use of the recipient(s) only.
Republication and re-dissemination, including posting to news 
groups or web pages, is strictly prohibited without the express
prior consent of
Thomson Legal & Regulatory Limited
ABN 64 058 914 668
=====================================================================
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.