gpt4 book ai didi

wcf - 在同一 WCF channel 或 session 上使用多个服务契约

转载 作者:行者123 更新时间:2023-12-01 22:33:37 24 4
gpt4 key购买 nike

我正在使用 NetTcpBinding 编写双工 WCF 服务,并且遇到了一个架构问题,我认为我知道答案,但希望我是错的.

我们的服务是有状态的,并且我们选择了带有 PerSession InstanceContextMode 的 NetTcpBinding。由于各种原因,这是我们所需要的。我正在尝试将较大的接口(interface)(其中大块操作不适用于许多客户端)分解为多个较小的接口(interface),并将操作逻辑分组。虽然让单个服务实现实现所有合约很简单,但我不确定是否可以让多个服务合约共享一个 channel (或者,更符合我的要求,单个 session ),我肯定需要能够做到这一点才能使这项工作成功。

当然,我可以将所有内容包含在一个合约中,并在执行无效操作时抛出 FaultException,但我真的希望能够将它们分解,甚至不添加不适用契约(Contract)的端点。我正在寻找的可能吗?

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
{
...
}

并且能够建立从客户端到服务的一个 session ,但同时使用IServiceAIServiceB

最佳答案

session channel 上的默认实例提供程序将为您的情况下的每个连接提供一个实例。不过,您可以扩展 instance provider从您自己的缓存中选取现有对象并返回相同的对象。

如何关联实例将取决于您使用一些特殊的消息头等。每个代理的底层 channel /连接将不同,并且还使用不同的缓冲区/并发模型,但您可以允许服务模型使用相同的实例。 http://msdn.microsoft.com/en-us/magazine/cc163590.aspx

关于wcf - 在同一 WCF channel 或 session 上使用多个服务契约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7854311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com