【问题标题】:need to choose between NamedPipe or UDP需要在 NamedPipe 或 UDP 之间进行选择
【发布时间】:2015-02-09 04:28:57
【问题描述】:

我与一位同事就选择发生了争执。 我们有两个进程在同一台机器上运行。

=> NamedPipe 和 UDP 是内核对象,据我所知这是相同的开销。

UDP 的优势在于,如果明天我们将这两个进程分开,它们将在两台不同的计算机上运行,​​所以我不必进行任何更改。

我认为 NamedPipe 性能更好,因为不需要使用网卡将信息发送到同一台机器(我是对的..发送 localhost 将使用网卡 - 对吗?)

任何人都可以告诉我们吗?

谢谢

【问题讨论】:

  • 网络硬件即使使用UDP也不会被使用,只要I/O被限制在那台机器上。操作系统足够聪明,可以将流量路由到自己。但还有其他更重要的考虑因素。 Kumar 的回答很好地概述了这些内容。
  • 不确定如何在两台计算机之间使用 UDP 优于使用命名管道...请澄清。
  • “UDP 的优势在于,如果明天我们将这两个进程分开,它们将在两台不同的计算机上运行” - 也许。 Native 管道将在本地或 LAN 上工作,您无需更改应用程序。如果您想以 LAN 为目标并且不想采用本地方式,请查看 .NET 的 NamedPipeServerStream。只有 WCF 的 NetNamedPipeBinding 似乎是 localhost-only

标签: c# .net udp named-pipes udpclient


【解决方案1】:

在实施之前,您可以关注以下几点:

命名管道:

  1. 命名管道提供管道服务器和一个或多个管道客户端之间的进程间通信。

  2. 它们支持基于消息的通信,并允许多个客户端使用相同的管道名称同时连接到服务器进程。

  3. 命名管道还支持模拟,这使连接进程能够在远程服务器上使用它们自己的权限。

用户数据报协议:

  1. 用户数据报协议 (UDP) 是一种简单的协议,可尽最大努力将数据传送到远程主机。
  2. UDP 协议是无连接协议,发送到远程端点的 UDP 数据报不能保证到达,也不能保证按照发送的顺序到达。
  3. 使用 UDP 的应用程序必须准备好处理丢失、重复和无序的数据报。

【讨论】:

    猜你喜欢
    • 2014-08-30
    • 1970-01-01
    • 2013-10-07
    • 2010-12-18
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    相关资源
    最近更新 更多