WCF NetTCPBinding与HttpBinding在线上发送的数据差异

时间:2011-03-31 12:45:14

标签: wcf wcf-binding nettcpbinding wshttpbinding basichttpbinding

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

电线上发送的内容有何不同?

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

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

欣赏这个问题有点模糊,但希望有人会知道我想问的问题:)

1 个答案:

答案 0 :(得分: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可以控制两端。