【问题标题】:Multiple WCF named pipe clients connecting without repeatedly invoking the endpoint's constructor?多个 WCF 命名管道客户端连接而不重复调用端点的构造函数?
【发布时间】:2014-08-23 01:11:28
【问题描述】:

我有一个使用命名管道的 WCF 服务器/客户端设置,我的客户端连接到主机进程(已经在运行),如下所示:

var pipeFactory = new DuplexChannelFactory<IArbiter>(this, new NetNamedPipeBinding(), new EndpointAddress(new Uri("net.pipe://localhost/IArbiter")));
arbiter = pipeFactory.CreateChannel();

这对于第一个客户端连接很好,但是当第二个客户端连接时,会创建一个新的 IArbiter 实现实例(每次连接发生时都会调用仲裁器的构造函数)。

有没有办法在端点地址找到该仲裁器的“现有”实例?

【问题讨论】:

  • 这是 WCF 的默认行为 - 每个请求都有自己的服务类实例。而且我个人会保持这种方式 - 这是运行 WCF 服务的最简单和最具可扩展性的方式。为什么这对你来说是个问题?
  • 因为仲裁类旨在将多个 WCF 客户端引导到一个 tcp/ip 消息接口。我想我可以将其实现为单例。

标签: wcf named-pipes duplex


【解决方案1】:

想通了,只需要在我的类实现上面设置这个:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多