我可以拥有多少个命名管道?

时间:2013-08-02 13:03:45

标签: c# wcf client named-pipes

没有人正确回答我或者有官方资源回答此问题。 我有一个服务器和许多模块。 每个模块将创建一个命名管道,服务器将为每个模块创建一个命名管道。 我需要知道我可以同时拥有多少个命名管道。

我不打算将它们连接到10个客户端到1个服务器,没有。 我想总是将1个客户端连接到1个服务器,但是我可以制作多少个这样的管道?

请注意,我在C#中使用WCF。

2 个答案:

答案 0 :(得分:4)

在Windows中创建的每个命名管道都使用一些系统资源,这意味着可以创建的管道数量存在实际限制。 See:

  

每次创建命名管道时,系统都会创建入站管道   和/或使用非分页池的出站缓冲区,这是物理的   内核使用的内存。管道实例的数量(以及   您可以创建的对象(如线程和进程)是有限的   由可用的非分页池。

确切的数字限制将取决于您的系统,但它可能至少在数百甚至数千的数量级。

使用WCF命名管道绑定创建管道时,由于此绑定发布有关正在使用的管道的元数据的方式,因此每个基址只能创建一个管道。因此,最好使用绝对URI地址而不是基址+相对来定义WCF端点。如果你这样做,并设计一个合理的方案来为每个端点创建一个唯一的绝对地址,我就知道你可以创建的WCF端点数量没有固定的限制。

任何特定系统的实际实际限制只能凭经验发现。如果您的目标是拥有几十个端点,我猜您将能够轻松实现这一目标。如果您希望同时运行数千个,则可以使系统资源的实际限制发挥作用。只有测试才能确定。

答案 1 :(得分:1)

首先我想告诉你,你应该正确解释这个问题,否则没有人会帮助你。解释你遇到的问题在哪里,并向我们展示一些代码。

根据你的解释,我发现你想要的是这个: Number of Clients that can connect to a Named Pipe

相关问题