我正在使用 NetTcpBinding 编写双工 WCF 服务,并且遇到了一个体系结构问题,我认为我知道答案,但希望我错了。
我们的服务是有状态的,我们选择了 NetTcpBinding 和PerSession
InstanceContextMode
. 由于各种原因,这是我们需要的。我正在尝试将我们较大的接口(其中大块操作不适用于许多客户端)分解为多个较小的接口,并将操作按逻辑分组。虽然让一个服务实现实现所有合同很简单,但我不确定是否有可能让多个服务合同共享一个通道(或者,更符合我的要求,一个会话),我会绝对需要能够做到这一点才能完成这项工作。
当然,我可以将所有内容都包含在一个合同中,并FaultException
在执行无效操作时抛出 s,但我真的希望能够分解这些内容,甚至不为不适用的合同添加端点。我正在寻找的可能吗?
TL;DR 版本:
我需要能够做到这一点:
[ServiceContract]
public interface IServiceA
{
[OperationContract]
void Foo();
}
[ServiceContract]
public interface IServiceB
{
[OperationContract]
void Bar();
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class Service : IServiceA, IServiceB
{
...
}
并且能够建立从客户端到服务的一个会话,但同时使用IServiceA
和IServiceB
。