RE: What does WSDL describe?

Anne,

Thank you for your message.


I agree with all the alternatives you've provided. It is indeed the
service provider who chooses the names of operations and the message
exchange patterns that are offered.

So, you are correct that the service provider can offer an operation
called "SubmitOrder" accepting just one order form or a choice between
two. Or, it could offer two separate operations or, even, interfaces. No
disagreement. Many ways of achieving similar things.

However, I was trying to suggest in my message that there wasn't an
actual need for having "operations". A service receives messages. If one
of the messages on the wire looks like this:

<orderForm1>
  <carOrMotorcycle>car</carOrMotorcycle>
  <colour>blue</colour>
  <cc>1800</cc>
  <model>blabla</model>
</orderForm1>

then the service receiving it knows what needs to be done. There doesn't
need to be a verb there indicating the existence of an operation, like
"submit order", "buy car or motorcycle", etc.

In the second case, the messages will look like this:

<orderForm2>
  <colour>blue</colour>
  <cc>1800</cc>
  <model>blabla</model>
</orderForm2>

<orderForm3>
  <colour>red</colour>
  <cc>1600</cc>
  <model>blabla</model>
</orderForm3>

Again, no need for names of operations. Just message exchanges.

That's the reasoning behind the recommendation for renaming "operation"
to "messageExchange". 

<messageExchangeGroup>
  <messageExchange name="exchange1">
    <input message="tns:orderForm1"/>
    <output message="tns:invoice1"/>
  </messageExchange>
  <messageExchange name="exchange2">
    <input message="tns:orderForm2"/>
    <output message="tns:invoice2"/>
  </messageExchange>
</messageExchangeGroup>

I believe such an approach helps us in better describing web services as
being agents (does the WSA document still use this term?) that can
receive/send messages and not entities/objects/components on which we
call operations.

One would argue that "exchange1" and "exchange2" are effectively the
same as the "SubmitOrder1" and "SubmitOrder2" operations. I believe that
the only reason for having a name for a "messageExchange" is because we
need to make the association between the abstract part of WSDL with the
binding part. By using "messageExchange" there is no suggestion that
there are operations at the service end. Hence, there isn't the
perceived requirement that the names of those operations are transmitted
on the wire, as it is suggested by other messages.

Also, I agree with the argument that uniqueness on the wire should not
be mandated.

I hope you see where I am coming from. Of course, I may be way off on
this.

Best regards,
.savas.

Received on Sunday, 26 October 2003 09:28:58 UTC