如何使WCF服务支持多个回调?

时间:2009-07-19 13:54:09

标签: c# wcf

我有一个支持单回调方法的nettcp 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
{
}

P.S

我制作快速而肮脏的解决方案,因此我不会破坏旧的客户端代码

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 个答案:

答案 0 :(得分:1)

你不能这样做 - 你最多只能有一个回调。

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

马克