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