五分钟让你深入理解WCF回调契约
经过长时间学习WCF,本人还是有很多的收获的,现在就把我的知识财富分享给大家一些,让大家也充实一些,这里我们先就定义WCF回调契约开始吧。一个服务契约最多只能包含一个回调契约。通过ServiceContract特性,可以指定回调契约:
- interface ISomeCallbackContract
- {
- [OperationContract]
- void OnCallback( );
- }
- [ServiceContract(CallbackContract = typeof(ISomeCallbackContract))]
- interface IMyContract
- {
- [OperationContract]
- intDoSomething( );
- }
#T#WCF回调契约无须标记ServiceContract特性,但是在回调契约中必须为服务的操作标记OperationContract特性。在导入回调契约的元数据中,回调契约以Callback结尾。为简便起见,我们在定义回调契约时,***以Callback为后缀。为了托管一个回调对象,客户端需要实例化回调对象,然后通过它创建一个上下文对象 ,注意,如果使用了WCF回调契约,则客户端生成的代理类必须继承自DuplexClientBase 代理类,这是一个专门的支持双向通信的代理类。注意,该类的构造函数参数既可以接收InstanceContext类型的上下文对象,也可以接收object类型的回调契约对象。
- class MyCallback : IMyContractCallback
- {
- public void OnCallback( )
- {...}
- }
- IMyContractCallback callback = new MyCallback( );
- InstanceContext context = new InstanceContext(callback);
假定客户端的代理类为MyContractClient,则在客户端就可以通过上下文对象获得代理对象:
- MyContractClient proxy = new MyContractClient(context);
版权声明:
作者:后浪云
链接:https://www.idc.net/help/409119/
文章版权归作者所有,未经允许请勿转载。
THE END