Mike Edwards of IBM discusses the need for asynchronous services when
you build an application using a service-oriented architecture.
Building asynchronous services can get complicated, but is made
straightforward using Service Component Architecture (SCA). The steps
involved in using SCA to create an asynchronous service and asynchronous
service client are described in this article. "Asynchronous services,
where responses are returned a long time after an initial request is
made, are simply a fact of life -- not everything happens immediately!
[...] Facilities for writing clients to synchronous services are well
provided by most programming models and frameworks. The same can be
said for writing synchronous services. The synchronous call-and-return
model is the standard form for writing code in most programming languages.
As a result, writing a synchronous service or a synchronous service
client is usually not much more than a simple extension of the regular
programming model. In Java, for example, this usually means that a
service is implemented as a method in a class, while the service client
is the invocation of a method on a class... Providing Asynchronous
service implementations and also providing clients to asynchronous
services is made simpler with Service Component Architecture. SCA
provides a request followed by callback response model for asynchronous
services, allied with the use of callbackID to tie the original request
to the callback response. SCA enables this to be done for a variety of
underlying communication methods between the client and the service,
eliminating the need for the code to be dependent on complex middleware