So far we have been thinking mostly about synchronous communication between our client and server. This means that the client is effectively blocked, waiting for a response from a remote server (be it a business object or a pool manager), and cannot carry on with any other work while it waits.
An asynchronous link lets the client do something else while its request is being processed. So it can request an object type to use, and while that object is being created or supplied, the client can carry on with some other work. Incidentally, identifying work to carry out asynchronously is often an art in itself. The Application Performance Explorer (APE) that ships with Visual Basic 5 Enterprise and Professional Editions implements a queue manager. The essential difference between a pool manager and a queue manager is that with a queue manager, requests from a client are never refused. If a business object cannot be provided immediately, the queue manager stores the request and, working on a first come–first served basis, services the request for an object when such an object is available. In this way, the server machine is providing the best service it is capable of, and the server objects are servicing requests as fast as they can. Returning information in this kind of a scenario is usually done through ActiveX callbacks to provide an asynchronous link.