Re: Which operation?

On Tue, Jun 15, 2004 at 08:12:57PM +0200, Liu, Kevin wrote:
> Hi Mark,

Hey Kevin,

> 
> Can you elaborate why wsdl:operation is used to define the contract? To my understanding, the contract is the messages to be exchanged. Operation names provides some application semantics, but have no significance in the run time message. 

Well, as I see it, the contract is the thing that says "If you do this,
I'll do this for you".  For example, "if you send a company name to me,
I'll respond with a stock quote".  You can label that with an operation
such as "getStockQuote", or not, and include that operation in the
message, or not.  But in all those cases, the same contract exists.

> One might define some operation style (such as RPC style as defined in part 1)  to require that the top element of a message must be named same as the operation name, but the "contract" is still in the message schema. 

I don't believe that a schema transform can represent a contract.  An
example I like to use for this (any Godel Escher Bach fans? 8-), is a
service that an application exposes which returns the last fault raised
by the application.

Now consider if that service were to itself raise a fault; how does the
client distinguish that fault from the last fault raised by the app?
That's what a contract is supposed to define; there's a whole bunch of
metadata/signalling information out-of-band of the document payload that
has been methodically stripped away under the banner of Web services, in
the pursuit of a more loosely coupled architecture.  But none of that
changes the part of the architecture that affects the coupling, the
contract (the "connector" in software architectural parlance).  All it
really does is make for a very poorly self-descriptive messaging
infrastructure with an abundance of ambiguity, as we've recently been
discovering.

There is a better way!

Mark.
-- 
Mark Baker.   Ottawa, Ontario, CANADA.        http://www.markbaker.ca

Received on Tuesday, 15 June 2004 15:48:45 UTC