5

假设我有一个暴露两个端点的服务,第一个是 NetTCPBinding,第二个是任何风格的 HttpBinding。它们都执行完全相同的服务合同。

在线上发送的内容有什么区别?

  • 使用 netTcp 我的消息是否仍被序列化为 XML?或者我的对象的一些二进制表示?
  • 在接收消息方面有什么区别?http 端点是否只理解 http 命令(get/post 等),而 nettcp 端点理解不同的东西?
  • 为什么 nettcp 比 http 更有效(在这种情况下我不需要互操作性) - 开销在哪里?

我认为在所有情况下,在将消息放到网络上之前,它将被转换为二进制,因此,http 在网络方面也位于 tcp 之上 - 所以 http 通信需要额外的地方。

感谢这个问题有点含糊,但希望有人会知道我想问什么:)

4

1 回答 1

7

在 WCF 中,特定的绑定不一定意味着特定的编码。可以配置各种绑定以使用各种编码。Net.TCP 默认使用二进制编码(我认为是 MTOM),HTTP 默认使用 text/xml 编码。

使用 net.tcp,您的消息会发送到发送者 -> net.tcp -> 接收者。使用 HTTP,它们从发送者 -> http -> tcp -> http -> 接收者开始。有一个额外的层。tcp 的优势在于:额外层和默认编码。

具有二进制编码的 HTTP 接近 net.tcp 性能。

编辑:实际上我认为 Net.TCP 中可能还有其他优化。这是一个 WCF-WCF 通信场景,所以 MS 可以控制两端。

于 2011-03-31T12:57:02.710 回答