Async WCF中的AsyncCallback和AsyncState是什么?

Alw*_*wyn 3 .net c# wcf

在以下操作(服务端)实现中,WCF框架对AsyncState和AsyncCallback做了什么?

IAsyncResult BeginWork(<<Service call params>>, AsyncCallback callback, object state);
Run Code Online (Sandbox Code Playgroud)

我想了解

  1. 谁在填充这些?
  2. 他们的目的是什么?
  3. 与(2)相关,使用这些的最佳实践是什么?

Nic*_*ler 5

.NET中有一些用于公开异步方法的设计模式.

这种模式BeginXEndX方法被称为Asynchronous Programming Model

在此模式中,您始终可以传递这两个额外参数:

1)AsyncCallback callback是操作完成时调用的委托.

2)object state是您要与请求关联的任何对象.

调用者可以提供这两个参数,或者保留它们null,具体取决于用例.

请参阅MSDN: Asynchronous Programming Model (APM)


附录:

在异步WCF服务实现的情况下,WCF本身是"客户端"并填充两个额外参数.

这是工作流程:

1)请求来自客户.
2)WCF构造一个AsyncCallback和一个状态object
3)WCF调用你的BeginX方法并传递参数
4)在你的方法中,你IAsyncResult使用WCF的参数构造一个对象
5)你启动一些后台工作并返回你的IAsyncResult对象
6)WCF等待它AsyncCallback是调用
7)WCF调用您的EndX方法并将响应返回给Web服务客户端.

客户端对此一无所知,可以使用客户端同步或异步调用来调用此Web服务.