【问题标题】:WCF TCP binding or Named pipes for grid computing?用于网格计算的 WCF TCP 绑定或命名管道?
【发布时间】:2012-10-24 13:51:29
【问题描述】:

我正在构建一个分布式系统。有几个应用程序(一些是基于 .Net(C#),其他是基于 C++(不是 C++/CLI!))。 这些应用程序将安装在集群中的每台计算机上(当前由 Windows 驱动)。 在本地 PC 上我用于 IPC:用于 C# 应用程序的 MemoryMappedFiles、用于 C++ 应用程序的共享内存、用于 C# 和 C++ 之间的 IPC 的命名管道。 在 Internet 上,我使用 WCF TCP 绑定,使用 C# 应用程序作为 C++ 应用程序的桥梁。

LAN 通信使用什么更好? MPICH2,似乎,使用 TCP ...... 典型的命名管道是否比带有优化(禁用安全等)的 WCF TCP 绑定更快?消息将非常大,主要是双重类型。 WCF 在我的情况下非常方便(所有数学方法都是简单的契约),但它的性能是一个问题。

【问题讨论】:

    标签: .net wcf named-pipes grid-computing


    【解决方案1】:

    阅读本文,http://weblogs.asp.net/spano/archive/2007/10/02/choosing-the-right-wcf-binding.aspx

    您可以看到选择取决于服务所在的位置。希望对您有所帮助。

    【讨论】:

    【解决方案2】:

    你正在混合两个不同的层,你也可以运行WCF over NamedPipes。命名管道(虽然可以使用很多设置字)并非旨在在两台计算机上的两个进程之间进行通信。

    请参阅Choosing a Transport 上的此 MSDN 页面,以帮助您了解何时使用哪种传输方式。

    每种传输方式的优势

    本节描述了选择其中任何一种的主要原因 三种主要运输方式,包括详细的决策图 在其中进行选择。

    何时使用 HTTP 传输

    HTTP 是客户端和服务器之间的请求/响应协议。这 最常见的应用程序由 Web 浏览器客户端组成,这些客户端 与 Web 服务器通信。客户端向服务器发送请求, 它侦听客户端请求消息。当服务器收到一个 请求时,它会返回一个响应,其中包含请求的状态 要求。如果成功,可选数据,如网页,错误 消息,或返回其他信息。有关更多信息 HTTP 协议,请参阅 HTTP - 超文本传输​​协议。

    HTTP 协议不是基于连接的——一旦发送响应, 不维持任何状态。为了处理多页事务, 应用程序必须保持任何必要的状态。

    在 WCF 中,HTTP 传输绑定针对互操作性进行了优化 与旧的非 WCF 系统。如果所有通信方都使用 WCF,基于 TCP 或基于命名管道的绑定更快。更多 有关信息,请参阅 NetTcpBinding 和 NetNamedPipeBinding。

    何时使用 TCP 传输

    TCP 是一种基于连接、面向流的传送服务,具有 端到端的错误检测和纠正。基于连接意味着 在交换之前建立主机之间的通信会话 数据。主机是 TCP/IP 网络上由逻辑 IP 地址。

    TCP 提供可靠的数据传输和易用性。具体来说,TCP 通知发送方数据包已送达,保证数据包在 以与发送它们相同的顺序交付,重新传输丢失 包,并确保数据包不重复。注意 这种可靠的传递适用于两个 TCP/IP 节点之间,而不是 与 WS-ReliableMessaging 相同,适用于 端点,无论它们可能包含多少中间节点。

    WCF TCP 传输针对两端的场景进行了优化 通信使用 WCF。此绑定是最快的 WCF 用于涉及不同通信的场景的绑定 机器。消息交换使用 BinaryMessageEncodingBindingElement 用于优化消息传输。 TCP提供双工通信,因此可以用来实现 双工合约,即使客户端在网络地址后面 翻译(NAT)。

    何时使用命名管道传输

    命名管道是 Windows 操作系统内核中的一个对象,例如 作为进程可以使用的共享内存的一部分 沟通。命名管道有一个名字,可以用于单向或 单台机器上的进程之间的双工通信。

    当不同 WCF 应用程序之间需要通信时 单台计算机,并且您想阻止来自 另一台机器,然后使用命名管道传输。额外的 限制是从 Windows 远程桌面运行的进程可能 被限制在同一个 Windows 远程桌面会话中,除非他们 拥有提升的权限。

    【讨论】:

      猜你喜欢
      • 2011-07-08
      • 2010-09-16
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 2010-10-22
      • 2011-03-05
      相关资源
      最近更新 更多