Message Patterns and Asynchronous Messaging
The request-response and the solicit-response patterns are generally synchronous, as their usage usually assumes that the requestor will receive an immediate response.
The one-way and the notification patterns are inherently asynchronous in that the requestor expects no response.
While one of the strengths of WSDL is that it allows any mix of message patterns and transports in a single service, it is important to be aware that the behavior of a service is tied to the type of transport being used. For example, an asynchronous service will not behave asynchronously if it is sent using a synchronous transport, such as HTTP. This is because HTTP requires a response as a receipt. Even if the C++ function calling the web service is multithreaded and returns before the response is received, the transport itself must block until the HTTP response is received. This becomes important if multiple messages are sent over the same channel.
For this reason, it may be wise to build one-way and notification messages asynchronously to avoid having the client block for a transport receipt. In addition, using the asynchronous methods for one-way and notification builds more responsiveness and adaptability into your program without much more complication.
For a general discussion on building services asynchronously, see
Chapter 13.