One issue with the previous versions of WCF was that its service contracts did not contain definitions of its asynchronous members, resulting in unnecessary complexity in the WCF code when using asynchronous calls. Furthermore, the code was prone to timeouts and error-handling issues.
There are some scenarios that require these kinds of asynchronous calls:
Executing multiple requests in parallel and continuing when they have finished.
Executing a sequence of requests and stopping if one of them fails.
Performing a hierarchy of operations that can occur sequentially, and also executing various requests in parallel after a given one. This is, in effect, a combination of the previous two types.
WCF 4.5 simplifies this behavior and also makes the web services easily testable.
Next, we will explore how to implement an asynchronous web service and consume it.