Asynchronous Web Services - Apache Software Foundation

Download Report

Transcript Asynchronous Web Services - Apache Software Foundation

Asynchronous Web
Services
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
Application
 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
provider.
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
Client
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.
Service
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
2 Send
1 Invoke
Client
Proxy
Client
3 Return
a Poll Object
Polling and
getting back
the result

Poll Object
Set the Response
Issues
 Client has to wait polling
 Client has to handle the complexity of this polling operation
 Response can be retrieved asynchronously
Service
Polling

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
3 Send
2 Invoke
Client
Proxy
Client
1 Creates a
Callback
Object

Callback
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
Service
Callback

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
Service
Receiver
M
Client

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.
Summery




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
References






http://msdn.microsoft.com/library/default.asp?url=/library/enus/dnmaj/html/aj2mpsoarch.asp
http://msdn.microsoft.com/library/default.asp?url=/library/enus/cpguide/html/cpconinvokingwebservicesasynchronously.asp
www.fawcette.com/xmlmag/ 2003_02/magazine/practice/dchappell/
http://www.c-sharpcorner.com/Code/2004/April/AsyncWebServices.asp
http://www.esecurityplanet.com/prodser/article.php/2235201
http://xml.coverpages.org/ni2004-04-15-a.html
Thank You!