[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: [Fwd: [wsrm] asap/wsrm]
As requested in our Monday teleconference, please find attached the position paper sent on the WS-Reliability (WSRM) list this week regading WSRM and ASAP. JJ, Dale and others, perhaps you can review this and advise. Thanks.
--- Begin Message ---
- From: John Fuller <jfuller@wernervas.com>
- To: "'wsrm@lists.oasis-open.org'" <wsrm@lists.oasis-open.org>,ASAP <asap@lists.oasis-open.org> (E-mail)
- Date: Fri, 23 Jul 2004 18:10:39 -0500
Here's a draft of a position paper for the ASAP TC regarding how ASAP can be used with WSRM. Any comments or corrections are welcome.ASAP provides a protocol for managing asynchronous instances of service using SOAP. To create a service instance, an Observer sends a request to a Factory containing an extensible context data element to provide data for the creation and execution of the service. Requests may be made of instances, and Instances may produce messages for Observers when states change. When service completes, a completion request message for the instance is sent to Observers containing an extensible data element for the result. Interactions between Observer and Factory, Observer and Instance, and Instance and Observer are all request-response operations, and information model data is conveyed in the extensible context and result elements. WSRM provides a protocol supporting at-least-once, at-most-once and exactly-once message delivery for SOAP messages. The protocol specifies the behavior of message producing and message consuming Reliable Message Processors which use data provided in WS-Reliabilty headers. Reliable Message Processors encapsulate a service layer for providing reliability in the web service protocol stack. For request-response operations, the message producer submits a request to its message processor, the request crosses the wire and is delivered by the message consuming message processor to the message consumer. The message consumer responds to its message processor with the response message, the request crosses the wire, and the message producer is notified by its message processor. WSRM supports three reply patterns: Response, which uses a single SOAP request-response, Callback, where the reply is made as a SOAP request, and Poll, where the reply is made as a SOAP request given a Poll SOAP request. Callback and Poll reply patterns allow for high-throughput and fire-and-forget scenarios. While the service of delivery may be thought of as asynchronous in these cases, an application sends a SOAP message to invoke a application layer service operation: as far as the application is concerned that operation isn't the quality of service feature that the SOAP message arrive at the service. Creation and completion of asynchronous service are good examples where reliable delivery would be desirable and the WSRM protocol could be applied for these messages. ASAP WSDL provides bindings that define operations for Factory, Observer and Instance services. WSRM WSDL provides a way to extend WSDL elements with compositors to specify features and properties of the reliability feature for the element. The factory and observer WSDL could specify their reliability feature support with a syntax like that given below. The factory's WSDL may specify <operation name="CreateInstance"> <fnp:compositor uri="http://docs.oasis-open.org/wsrm/2004/06/fnp-1.1.xsd/compositor/all"> <fnp:feature uri="http://docs.oasis-open.org/wsrm/2004/06/wsrmfp-1.1.xsd"> <fnp:compositor uri= http://docs.oasis-open.org/wsrm/2004/06/fnp-1.1.xsd/compositor/zero-or-more" name="DeliverySemantics"> <fnp:property name= "wsrmfp:NoDuplicateDelivery"><fnp:value>true</fnp:value></fnp:property> <fnp:property name= "wsrmfp:OrderedDelivery"><fnp:value>true</fnp:value></fnp:property> <fnp:property name= "wsrmfp:GuaranteedDelivery"><fnp:value>true</fnp:value></fnp:property> </fnp:compositor> <fnp:compositor uri= http://docs.oasis-open.org/wsrm/2004/06/fnp-1.1.xsd/compositor/choice" name="ReplyPatternChoice"> <fnp:property name= "wsrmfp:ReplyPattern"><fnp:value>Response</fnp:value></fnp:property> <fnp:property name= "wsrmfp:ReplyPattern"><fnp:value>Callback</fnp:value></fnp:property> <fnp:property name= "wsrmfp:ReplyPattern"><fnp:value>Poll</fnp:value></fnp:property> </fnp:compositor> </fnp:feature> </fnp:compositor> <soap:operation soapAction="http://www.oasis-open.org/asap/0.9/asap/factory/CreateInstance" style="document" /> <input> <soap:body use="literal" /> <soap:header message="s1:CreateInstanceRequest" part="Request" use="literal" /> </input> <output> <soap:body use="literal" /> <soap:header message="s1:CreateInstanceResponse" part="Response" use="literal" /> </output> </operation> The observer's WSDL may specify <operation name="Completed"> <fnp:compositor uri="http://docs.oasis-open.org/wsrm/2004/06/fnp-1.1.xsd/compositor/all"> <fnp:feature uri="http://docs.oasis-open.org/wsrm/2004/06/wsrmfp-1.1.xsd"> <fnp:compositor uri= http://docs.oasis-open.org/wsrm/2004/06/fnp-1.1.xsd/compositor/zero-or-more" name="DeliverySemantics"> <fnp:property name= "wsrmfp:NoDuplicateDelivery"><fnp:value>true</fnp:value></fnp:property> <fnp:property name= "wsrmfp:OrderedDelivery"><fnp:value>true</fnp:value></fnp:property> <fnp:property name= "wsrmfp:GuaranteedDelivery"><fnp:value>true</fnp:value></fnp:property> </fnp:compositor> <fnp:compositor uri= http://docs.oasis-open.org/wsrm/2004/06/fnp-1.1.xsd/compositor/choice" name="ReplyPatternChoice"> <fnp:property name= "wsrmfp:ReplyPattern"><fnp:value>Response</fnp:value></fnp:property> <fnp:property name= "wsrmfp:ReplyPattern"><fnp:value>Callback</fnp:value></fnp:property> <fnp:property name= "wsrmfp:ReplyPattern"><fnp:value>Poll</fnp:value></fnp:property> </fnp:compositor> </fnp:feature> </fnp:compositor> <soap:operation soapAction="http://www.oasis-open.org/asap/0.9/asap/observer/Completed" style="document" /> <input> <soap:body use="literal" /> <soap:header message="s1:CompletedRequest" part="Request" use="literal" /> </input> <output> <soap:body use="literal" /> <soap:header message="s1:CompletedResponse" part="Response" use="literal" /> </output> </operation> In WSRM, Reliable message replies maybe included with requests to allow piggybacking. Elements Cardinality soap:Envelope {1} soap:Header {1} wsrm:Request {0,1} wsrm:MessageId {1} wsrm:SequenceNum {0,1} wsrm:ExpiryTime {1} wsrm:ReplyPattern {1} wsrm:Value {1} wsrm:ReplyTo {0,1} wsrm:AckRequested {0,1} wsrm:DuplicateElimination {0,1} wsrm:MessageOrder {0,1} xsd:any {0,1} wsrm:Response {0,1} wsrm:NonSequenceReplies {0,1,..n} wsrm:SequenceReplies {0,1,..n} wsrm:ReplyRange {0,1,..n} xsd:any {0,1} xsd:any {0,1} soap:Body {1} The simplest implementation maybe the SOAP request-response message exchange pattern and Response reliability reply pattern where the reliable message reply for a message rides on the SOAP response, so really only the ASAP requests need be WSRM requests and ASAP responses WSRM responses. Elements Cardinality soap:Envelope {1} soap:Header {1} wsrm:Request {0,1} wsrm:MessageId {1} wsrm:SequenceNum {0,1} wsrm:ExpiryTime {1} wsrm:ReplyPattern {1} wsrm:Value {1} wsrm:ReplyTo {0,1} wsrm:AckRequested {0,1} wsrm:DuplicateElimination {0,1} wsrm:MessageOrder {0,1} xsd:any {0,1} asap:Request {1} asap:SenderKey {0,1} asap:ReceiverKey {1} asap:ResponseRequired {0,1} asap:RequestID {0,1} soap:Body {1} asap:CreateInstanceRq {1} asap:StartImmediately {1} asap:Observerkey {0,1} asap:Name {0,1} asap:Subject {0,1} asap:Description {0,1} asap:ContextData {1} Elements Cardinality soap:Envelope {1} soap:Header {1} wsrm:Response {0,1} wsrm:NonSequenceReplies {0,1,..n} wsrm:SequenceReplies {0,1,..n} wsrm:ReplyRange {0,1,..n} xsd:any {0,1} xsd:any {0,1} asap:Response {1} asap:SenderKey {1} asap:ReceiverKey {0,1} asap:RequestID {0,1} soap:Body {1} asap:CreateInstanceRs {1} asap:InstanceKey {1} Elements Cardinality soap:Envelope {1} soap:Header {1} wsrm:Request {0,1} wsrm:MessageId {1} wsrm:SequenceNum {0,1} wsrm:ExpiryTime {1} wsrm:ReplyPattern {1} wsrm:Value {1} wsrm:ReplyTo {0,1} wsrm:AckRequested {0,1} wsrm:DuplicateElimination {0,1} wsrm:MessageOrder {0,1} xsd:any {0,1} asap:Request {1} asap:SenderKey {0,1} asap:ReceiverKey {1} asap:ResponseRequired {0,1} asap:RequestID {0,1} soap:Body {1} asap:CompletedRq {1} asap:InstanceKey {1} asap:ResultData {1} Elements Cardinality soap:Envelope {1} soap:Header {1} wsrm:Response {0,1} wsrm:NonSequenceReplies {0,1,..n} wsrm:SequenceReplies {0,1,..n} wsrm:ReplyRange {0,1,..n} xsd:any {0,1} xsd:any {0,1} soap:Body {1} asap:CompletedRs {1}To unsubscribe from this mailing list (and be removed from the roster of the OASIS TC), go to http://www.oasis-open.org/apps/org/workgroup/wsrm/members/leave_workgroup.php.--- End Message ---
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]