我有一个支持单回调方法的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);
}
答案 0 :(得分:1)
你不能这样做 - 你最多只能有一个回调。
您可以查看的是一个发布 - 订阅服务,您的源会发送一条消息,然后将消息路由到订阅它的任何人。这将需要额外的零碎,例如像NServiceBus这样的本地场景,或类似.NET Service Bus的东西,用于“在云端”的面向互联网的解决方案。
马克