Windows 7 为什么命名管道是本地的?

Windows 7 为什么命名管道是本地的?,windows-7,windows-vista,named-pipes,Windows 7,Windows Vista,Named Pipes,我记得使用命名管道在两台机器之间进行通信(回到WindowsNT)。 为什么现在我读到命名管道只用于同一台机器中的进程间通信?(在Vista和Windows 7中)因为如果它们是非本地的,则称为套接字 编辑:实际上,这是一个相当轻率、以UNIX为中心的回答。在UNIX上,命名管道仅用于本地通信。相反,套接字可以用于本地和非本地通信,并且可以使用多种传输协议。另一个区别在于你找到它们的方式。命名管道通常位于文件系统名称空间中。套接字(或者更准确地说,套接字端点)由某种网络地址标识,这种地址通常在某

我记得使用命名管道在两台机器之间进行通信(回到WindowsNT)。
为什么现在我读到命名管道只用于同一台机器中的进程间通信?(在Vista和Windows 7中)

因为如果它们是非本地的,则称为套接字


编辑:实际上,这是一个相当轻率、以UNIX为中心的回答。在UNIX上,命名管道仅用于本地通信。相反,套接字可以用于本地和非本地通信,并且可以使用多种传输协议。另一个区别在于你找到它们的方式。命名管道通常位于文件系统名称空间中。套接字(或者更准确地说,套接字端点)由某种网络地址标识,这种地址通常在某种名称服务器/服务中查找。

因为如果它们是非本地的,则称为套接字


编辑:实际上,这是一个相当轻率、以UNIX为中心的回答。在UNIX上,命名管道仅用于本地通信。相反,套接字可以用于本地和非本地通信,并且可以使用多种传输协议。另一个区别在于你找到它们的方式。命名管道通常位于文件系统名称空间中。套接字(或者更准确地说,套接字端点)由某种网络地址标识,该地址通常在某种名称服务器/服务中查找。

作为操作系统基础设施的命名管道完全可用于机器间通信-请参阅

命名管道可用于提供 网络上进程之间的通信 同一台计算机或上的进程之间 网络中的不同计算机。 如果服务器服务正在运行,all 可以远程访问命名管道。 如果要使用命名管道 仅本地,拒绝访问NT 授权\网络或切换到本地 RPC

然而,我假设您可能正在谈论WCF绑定“NetNamedPipe”,它实际上是在同一台机器上的纯通信。为什么会出现这种情况,你必须问问WCF设计团队——我没有这方面的任何信息

但是正如Stephen C正确地说的那样——如果您需要机器对机器的通信(在WCF中),请改用netTcpBinding——这两个版本在功能、速度和功能集上都非常相似

有关命名管道,请参见此


Marc

命名管道作为操作系统基础设施完全可用于机器间通信-请参阅

命名管道可用于提供 网络上进程之间的通信 同一台计算机或上的进程之间 网络中的不同计算机。 如果服务器服务正在运行,all 可以远程访问命名管道。 如果要使用命名管道 仅本地,拒绝访问NT 授权\网络或切换到本地 RPC

然而,我假设您可能正在谈论WCF绑定“NetNamedPipe”,它实际上是在同一台机器上的纯通信。为什么会出现这种情况,你必须问问WCF设计团队——我没有这方面的任何信息

但是正如Stephen C正确地说的那样——如果您需要机器对机器的通信(在WCF中),请改用netTcpBinding——这两个版本在功能、速度和功能集上都非常相似

有关命名管道,请参见此


马克

我不确定我是否同意(或理解你)。管道在插座上增加了大量的手工操作。他们不一样。@Nestor-我同意。但我认为我的观点仍然有效。对于非本地通信,最好使用套接字。特别是如果您可能希望远程计算机不是Windows。。。在将来的某个时候,“那些不懂UNIX的人注定要彻底改造它,但效果很差。”-亨利Spencer@Stephen:是的,绝对-我想这就是为什么WCF只为同一台机器通信实现命名管道,并为机器之间的通信使用NetTcp(即套接字)-他们遵循了您的建议:-)我不确定是否同意(或理解您). 管道在插座上增加了大量的手工操作。他们不一样。@Nestor-我同意。但我认为我的观点仍然有效。对于非本地通信,最好使用套接字。特别是如果您可能希望远程计算机不是Windows。。。在将来的某个时候,“那些不懂UNIX的人注定要彻底改造它,但效果很差。”-亨利Spencer@Stephen:是的,绝对-我想这就是为什么WCF只为同一台机器通信实现命名管道,并为机器之间的通信使用NetTcp(即套接字)-他们遵循了您的建议:-)还有。。。我认为将SQL配置为只接受管道是可行的locally@Nestor:不,我相信SQL server的命名管道实际上是跨机器的;“映射内存”方法仅限于本地。而且。。。我认为将SQL配置为只接受管道是可行的locally@Nestor:不,我相信SQL server的命名管道实际上是跨机器的;“映射内存”方法仅适用于本地。