WCF 框架在以下操作(服务端)实现中对 AsyncState 和 AsyncCallback 做了什么?
IAsyncResult BeginWork(<<Service call params>>, AsyncCallback callback, object state);
我在努力理解
- 谁在填充这些?
- 他们的目的是什么?
- 关于 (2),使用这些的最佳实践是什么?
最佳答案
.NET 中有几个设计模式用于公开异步方法。
这种具有BeginX
和EndX
方法的模式称为异步编程模型
在此模式中,您始终可以传递这两个额外参数:
1) AsyncCallback 回调
是一个在操作完成时调用的委托(delegate)。
2) object state
是您想要与请求关联的任何对象。
调用者可以提供这两个参数,或将它们保留为 null
,具体取决于用例。
参见 MSDN:Asynchronous Programming Model (APM)
附录:
在异步 WCF 服务实现的情况下,WCF 本身就是“客户端”并填充两个额外的参数。
工作流程如下:
1) 请求来自客户端。
2) WCF构造一个AsyncCallback
和一个状态object
3) WCF调用你的BeginX
方法并传递参数
4) 在您的方法中,您使用 WCF 的参数构造一个 IAsyncResult
对象
5) 您启动一些后台工作并返回您的 IAsyncResult
对象
6) WCF 等待它的 AsyncCallback
被调用
7) WCF 调用您的 EndX
方法并将响应返回给 Web 服务客户端。
客户端对此一无所知,可能会使用客户端同步或异步调用来调用此 Web 服务。
关于c# - 什么是 AsyncWCF` 中的 AsyncCallback 和 AsyncState?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15757790/