您正在混合两个不同的层,您也可以在 NamedPipes 上运行 WCF。命名管道(虽然可以使用很多设置字)并非旨在在两台计算机上的两个进程之间进行通信。
请参阅有关选择传输的 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 远程桌面会话中,除非它们具有提升的权限。