WCF has support for both client-side and server-side asynchronous programming scenarios. By "client-side" programming, I mean that a service built with a request/response operation can appear asynchronous to the client. For example, let's look at a simple sequence diagram that shows what I mean.
The WCF client proxy class is responsible for simulating the asynchronous communication, while the actual service still exposes only a synchronous operation. Let's look at an example of how we would physically create a client-side asynchronous experience in a WCF solution.
We start out by creating a new, empty Visual Studio.NET 2008 solution. Then we add a project of type WCF Service Library to the solution. This project type automatically adds an interface class, service class, and application configuration file. I've changed the interface class content so that it reflects the adverse event object that we'll be working with throughout...