为什么WCF限制我们只为每台机器打开一个命名管道?

时间:2011-01-05 21:21:22

标签: asp.net wcf named-pipes

每台机器只打开一次命名管道的原因是什么?我的意思是这种限制背后的原因是什么?

1 个答案:

答案 0 :(得分:0)

我没有对此进行过测试,但有意义的是,只有一个侦听器可以在一个命名管道上打开。允许打开两个管道实例会产生一系列问题,首先是:

  1. 当我们向服务发送消息时,我们如何知道哪个倾听者会接受我们的消息?
  2. 当两个听众试图收到相同的消息时,我们真的需要避免竞争条件的开销吗?
  3. 我们希望每个听众都能收到这个消息,还是只有一个?
  4. 请记住,在同一个命名管道上允许两个侦听器将允许两个完全不同的服务接收相同的消息。没有理由允许这种情况发生。

    更新
    Chris Dickson指出允许同一管道上的两个侦听器会产生一个称为squatting attack的安全问题,其中欺诈性主机可以接收请求并窃取调用者的身份。这是上述第1点的分支。