【发布时间】: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