Asynchronous processing is a way of distributing the processing of an application between connected systems. In contrast to distributed transaction programming, the processing is asynchronous.
In distributed transaction programming, a session is held by two transactions for the period of a "conversation" between them, and requests and replies (if any) can be directly correlated.
In asynchronous processing, requests and replies are transmitted on different sessions. No processing dependency exists between a request and a reply, and no assumptions are made about the timing of the reply. The differences between synchronous and asynchronous processing are illustrated in Figure 9. The starting of TRAN4 can be time-dependent and can be delayed by scheduling constraints in System B.
In general, asynchronous processing is applicable to any situation in which it is not necessary or desirable to tie up local resources while a remote request is being processed.
Asynchronous processing is not suitable for applications that require synchronized changes to local and remote resources; for example, it cannot be used to process concurrent logically-related updates to data in different systems.
Note that, in Figure 9, any changes made by the synchronous transactions TRAN1 and TRAN2 can be co-ordinated for recovery purposes; any changes made by the asynchronous transactions TRAN3, TRAN4, and TRAN5 cannot.