Synchronous remote invocations are a natural extension of local method calls that leverage the programmer’s experience with object-oriented programming and ease the learning curve for programmers who are new to distributed application development. However, the blocking nature of synchronous invocations makes some application tasks more difficult, or even impossible, therefore Ice provides a straightforward interface to its asynchronous facilities.
Using asynchronous method invocation, a calling thread is able to invoke an operation and regain control immediately, without blocking while the operation is in progress. When the results are received, the Ice run time notifies the application via a callback.
Similarly, asynchronous method dispatch allows a servant to send the results of an operation at any time, not necessarily within the operation implementation. A servant can improve scalability and conserve thread resources by queuing time-consuming requests for processing at a later time.