【发布时间】:2012-08-29 13:34:11
【问题描述】:
在学习 WCF 的过程中,我发现 WCF 支持 HTTP、TCP、Named Pipes 和 MSMQ 作为传输协议。但是,Http 是应用层协议,它使用 TCP 作为传输协议。 那么,当它使用 TCP 作为传输层时,Http 作为 WCF 中的传输协议意味着什么。
【问题讨论】:
标签: wcf
在学习 WCF 的过程中,我发现 WCF 支持 HTTP、TCP、Named Pipes 和 MSMQ 作为传输协议。但是,Http 是应用层协议,它使用 TCP 作为传输协议。 那么,当它使用 TCP 作为传输层时,Http 作为 WCF 中的传输协议意味着什么。
【问题讨论】:
标签: wcf
从网络堆栈的角度来看,除了 TCP,您列出的所有内容都是通过 TCP 进行通信的应用层协议(至少在任何现代系统上都是如此)。
不过,就 WCF 而言,这些都不重要。从这个意义上说,“传输协议”正是它所说的——它是一种用于在端点之间传输信息的协议。从这个意义上说,传输协议定义了消息的内部结构、传递机制、可用的额外功能等。当您查看所有这些方面时,HTTP、HTTPS、MSMQ 和命名管道协议是都彼此不同。但在幕后,最终它们都会生成 TCP 数据包。 (您可以为使用 UDP 的 WCF 构建自定义传输,但我认为任何内置传输都不能这样做。)
在这种情况下,将 TCP 传输称为“原始 TCP”传输可能更合适。它使用 WCF 独有的自定义低级二进制消息格式,并且比任何其他传输协议具有低得多的开销。从技术上讲,该消息格式是一种在 TCP 之上的应用协议,但它没有名称,完全在 WCF 内部,因此简称为“TCP 传输协议”。
【讨论】:
NetTcpBinding 类。