Asynchronous Web Services - People by wulinqing


									               Asynchronous Web

Jaliya N. Ekanayake
Basics of Web Services
Simple Web Service Invocations

   Example of Synchronous Service Invocation.
      Service takes some time to complete
      Client is waiting for the response

   Example of Asynchronous Service Invocation
      Service takes some time to complete
      Client is waiting for the response
Some Use Cases
   Time consuming web services
      long-lived operations
          batch processing

          peer to peer programs

          event driven application models.

      Web services that leverage The client can be a Reactive
          Client can be a server to some other clients. So the blocking
           is not acceptable.
Some Use Cases contd..

   User may not need to wait for the responses
      User is doing some batch submission.
      E.g. A bank submitting credit card information to a service
   User can check for responses after sending few invocations.
      The response from a service represents a collective information.
   User need the response after some time.
      E.g. A batch submission process, the result will be available in
       the next day.
Supporting the Asynchrony

   Protocol level asynchrony
      E.g. JMS can be used to invoke the services asynchronously.
          Client subscribes to a topic and return

          Response will be delivered to client through the JMS Queue

   Client Asynchrony Patterns
      Fire and Forget
      Callbacks
      Polling
   Service Asynchrony
Client Side Asynchrony
   Fire and Forget.
      Invokes the service and return immediately without ever bothering about
        a response.

    Client Machine                                              Server
                     1 Invoke                         2 Send
        Client                           Proxy                      Service
                     3 Return

   Issues
      No waiting. Client can immediately resume the thread.
      Easy for the developers
      Loosely coupled
      No way to verify whether the request has been sent or not.
Fire and Forget
   Code Snippet

   Example>>
Client Side Asynchrony
   Polling
      Client repeatedly poll for the availability of the results, while performing
         some other task.

    Client Machine                                                         Server
                        1 Invoke                                  2 Send
                                                       Proxy                   Service
                                   3 Return
                                   a Poll Object
    Polling and
    getting back     Poll Object
    the result                                 Set the Response

   Issues
      Client has to wait polling
      Client has to handle the complexity of this polling operation
      Response can be retrieved asynchronously
   Code Snippet

   Example>>
Client Side Asynchrony
    Result Callbacks
       Client provides a callback method. Proxy will dispatch the result using
        the callback method.
    Client Machine                                                              Server
                      2 Invoke                                         3 Send
                                                      Proxy                         Service

    1 Creates a
    Callback         Callback
    Object                        4 Response is dispatched
                                 to the callback by the client proxy

    Issues
       Client has to provide the callback method
       Client has to handle the additional complexity
       Response can be retrieved asynchronously
   Code Snippet

   Example>>
Asynchronous Web Service Model
   The service does not “return” anything.
   It can send the response (if any) by itself.
   Transport may or may not be synchronous
       E.g. 1 (HTTP Transport)
           Service has a void return type and it will send a response after a
             while using different HTTP connection
       E.g. 2 (One way transport -JMS)
           Service sends a response using a new one way transport.

   What is required.
       Service should have the capability to send the response by itself.
       Client should be able to correlate the request and the response
       Client should have an addressable endpoint.

   Can use WS-Addressing <wsa:relatesTo> for standard correlation.
    Asynchronous Web Service Model contd..
   The model

                  Sender                 M

                 Receiver                M


   Features
      Service sends the response by itself.
      Correlation information contains in the SOAP message itself.
      Client has both a Sender and a Receiver.
Support from the Existing Technologies
   Microsoft .NET supports the client side asynchrony.
   With the WSE 2.0 the service asynchrony is also supported.
   Systinet WASP supports the client side asynchrony and WS-Addressing.
   Axis 2 (Currently under development) will support both.
   There are many advantages of using asynchronous patterns in
    implementing web services for B2B, EAI scenarios.
   Client Side Asynchrony
      Fire & Forget
      Polling
      Callbacks
   Service Asynchrony
   Technology support
 2003_02/magazine/practice/dchappell/
Thank You!

To top