W3C home > Mailing lists > Public > www-ws-desc@w3.org > May 2002

Re: Issue: Can One-Way operations return faults?

From: Jacek Kopecky <jacek@systinet.com>
Date: Wed, 22 May 2002 22:00:18 +0200 (CEST)
To: Prasad Yendluri <pyendluri@webMethods.com>
cc: www-ws-desc@w3.org
Message-ID: <Pine.LNX.4.44.0205222148050.31247-100000@mail.idoox.com>
 Prasad, please see inline. 8-)

                   Jacek Kopecky

                   Senior Architect, Systinet (formerly Idoox)
                   http://www.systinet.com/



On Wed, 22 May 2002, Prasad Yendluri wrote:

 > >  Prasad,
 > >  I respectfully disagree with making fire-and-forget a special case of
 > > one-way-with-fault.
 > >  Your example of email is not correct because email is unreliable by definition.
 > 
 > <PY>Where does reliability enter into picture at the abstract message exchange
 > pattern level? Reliability is a feature of the transport/message service. A service
 > definition at the abstract level makes no guarantees about reliability. Email was an
 > example for the use case where the sender of one-way message would want to lean of a
 > failure but not a success. Substitute anything else for email something that uses
 > SOAP/HTTP at the message level (which are unreliable as well !!).
 > </PY>

In HTTP you get to know about a failure. In case of _any_ 
failure, you will at least know something went wrong. In fact, 
sometimes you may think the call failed but the server thinks the 
call succeeded.

On the other hand in email, you don't know something went wrong 
unless you receive a failure message. This is where the seemingly 
irrelevant text below comes in - you may think the message was 
successful and the server may have never received the message or 
it may have failed.

 > > Messages may disappear without anyone knowing. The
 > > fact that this doesn't happen much and the fact that most systems
 > > do report failures doesn't really change that - you can never
 > > rely on email.
 > 
 > <PY>Sorry, irrelevant to the issue per above.</PY>
 > 
 > >  Anyway, my point is that for fire-and-forget you only need
 > > one-way data channel. One end can be an SMTP sender and the other
 > > end can be a POP3 receiver.
 > 
 > <PY>I guess this is not related to the subject issue as well but, I don't believe
 > SMTP<->POP3 interaction is valid. SMTP is an email MTA level protocol and POP3 is a
 > UA protocol.</PY>

SMTP is used to send email to a mailserver. POP3 is used to
receive email from a mailbox. The stuff in between doesn't matter 
now. So while in HTTP this protocol is sufficient to send *and* 
receive a message, in email you need two protocols because it is 
extremely unusual that email be sent directly. No mail receiving 
agent I know is capable of receiving an email message from a mail 
sending agent.

 > > If a node is able to receive failures, it is able to receive success responses,
 > > too. A
 > > one-way-with-fault is a special case of request/response with empty response.
 > > Already doable in WSDL, I believe.
 > 
 > <PY> Not True! Here is the grammar for request/response in the current spec. Note
 > that note that wsdl:output is "required" and not optional.
 > 
 > <wsdl:definitions .... >
 >     <wsdl:portType .... > *
 >         <wsdl:operation name="nmtoken" parameterOrder="nmtokens">
 >            <wsdl:input name="nmtoken"? message="qname"/>
 >            <wsdl:output name="nmtoken"? message="qname"/>
 >            <wsdl:fault name="nmtoken" message="qname"/>*
 >         </wsdl:operation>
 >     </wsdl:portType >
 > </wsdl:definitions>
 > 
 > The point is one-way with failure notification is a very valid and practical usage
 > pattern. If that can be realized as a special case of request/response or enhanced
 > one-way is acceptable. We need to cover the case and either one requires a change to
 > the current spec.
 > </PY>

What I imagined was something like this:

 <message name="request">
    ... parts ...
 </message>
 <message name="response"/>
 <message name="failure">
    ... parts ...
 </message>

 <operation>
   <input message="request"/>
   <output message="response"/>
   <fault message="failure"/>
 </operation>

This is what I meant by an empty response (as opposed to no 
response).

If you can have a oneway-with-faults as a special case of 
request/response, I suggest that's what we agree on.

Best regards,

Jacek
Received on Wednesday, 22 May 2002 16:00:22 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:58:20 GMT