五分鐘讓你深入理解WCF回調(diào)契約
經(jīng)過長時間學習WCF,本人還是有很多的收獲的,現(xiàn)在就把我的知識財富分享給大家一些,讓大家也充實一些,這里我們先就定義WCF回調(diào)契約開始吧。一個服務契約最多只能包含一個回調(diào)契約。通過ServiceContract特性,可以指定回調(diào)契約:
- interface ISomeCallbackContract
- {
- [OperationContract]
- void OnCallback( );
- }
- [ServiceContract(CallbackContract = typeof(ISomeCallbackContract))]
- interface IMyContract
- {
- [OperationContract]
- intDoSomething( );
- }
#T#WCF回調(diào)契約無須標記ServiceContract特性,但是在回調(diào)契約中必須為服務的操作標記OperationContract特性。在導入回調(diào)契約的元數(shù)據(jù)中,回調(diào)契約以Callback結尾。為簡便起見,我們在定義回調(diào)契約時,***以Callback為后綴。為了托管一個回調(diào)對象,客戶端需要實例化回調(diào)對象,然后通過它創(chuàng)建一個上下文對象 ,注意,如果使用了WCF回調(diào)契約,則客戶端生成的代理類必須繼承自DuplexClientBase
- class MyCallback : IMyContractCallback
- {
- public void OnCallback( )
- {...}
- }
- IMyContractCallback callback = new MyCallback( );
- InstanceContext context = new InstanceContext(callback);
假定客戶端的代理類為MyContractClient,則在客戶端就可以通過上下文對象獲得代理對象:
- MyContractClient proxy = new MyContractClient(context);