2009-07-19 33 views
0

我有一个支持单一回调方法的nettcp WCF服务。如何使一个WCF服务支持多个回调?

我想添加新的回调方法,通过添加包含新方法的新接口而不破坏旧方法,因为还有一些事情取决于旧接口。

我试图添加新的接口,它从旧的接口继承,但客户端应用程序中的gerenated代理不包含旧的回调接口。

的代码如下

interface IOldCallback 
    { 
     [OperationContract(IsOneWay = true)] 
     void OnMethod1(int x); 
    } 

interface INewCallback : IOldCallback 
{ 
[OperationContract(IsOneWay = true)] 
     void OnMethod2(float x); 

[OperationContract(IsOneWay = true)] 
     void OnMethod3(bool x); 


} 
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(INewCallback))] 
    public interface IMyService 
{ 
} 

PS

我作出快速和肮脏的解决方案,所以我会不会打破旧的客户端代码

interface INewCallback : IOldCallback 
{ 
[OperationContract(IsOneWay = true)] 
     void OnMethod2(float x); 

[OperationContract(IsOneWay = true)] 
     void OnMethod3(bool x); 

[OperationContract(IsOneWay = true)] 
     new void OnMethod1(int x); 


} 

回答

1

你不能做到这一点 - 你最多可以有一个回调。

你可以看到的是一个发布和订阅服务,你的源会发送一条消息,然后路由到任何订阅它的人。这将需要额外的零碎和碎片,例如例如NServiceBus用于本地场景,或者像.NET Service Bus这样的用于更多面向互联网的“云中”解决方案。

Marc