【问题标题】:transport protocol in WCFWCF 中的传输协议
【发布时间】:2012-08-29 13:34:11
【问题描述】:

在学习 WCF 的过程中,我发现 WCF 支持 HTTP、TCP、Named Pipes 和 MSMQ 作为传输协议。但是,Http 是应用层协议,它使用 TCP 作为传输协议。 那么,当它使用 TCP 作为传输层时,Http 作为 WCF 中的传输协议意味着什么。

【问题讨论】:

    标签: wcf


    【解决方案1】:

    从网络堆栈的角度来看,除了 TCP,您列出的所有内容都是通过 TCP 进行通信的应用层协议(至少在任何现代系统上都是如此)。

    不过,就 WCF 而言,这些都不重要。从这个意义上说,“传输协议”正是它所说的——它是一种用于在端点之间传输信息的协议。从这个意义上说,传输协议定义了消息的内部结构、传递机制、可用的额外功能等。当您查看所有这些方面时,HTTP、HTTPS、MSMQ 和命名管道协议是都彼此不同。但在幕后,最终它们都会生成 TCP 数据包。 (您可以为使用 UDP 的 WCF 构建自定义传输,但我认为任何内置传输都不能这样做。)

    在这种情况下,将 TCP 传输称为“原始 TCP”传输可能更合适。它使用 WCF 独有的自定义低级二进制消息格式,并且比任何其他传输协议具有低得多的开销。从技术上讲,该消息格式是一种在 TCP 之上的应用协议,但它没有名称,完全在 WCF 内部,因此简称为“TCP 传输协议”。

    【讨论】:

    • 谢谢@Michael,但是net.tcp绑定的应用层是什么协议。
    • 它的“WCF 二进制 TCP 协议”,我认为没有其他正式名称。 AFAIK 它只允许二进制消息编码(一种紧凑的 XML-ish 消息格式),但就实际的协议机制而言,我不知道。如果您想了解更多信息,则必须获取 WCF 参考源并深入了解 NetTcpBinding 类。
    猜你喜欢
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多