C# 为什么有人希望使用Tcp协议而不是基本Http协议来承载WCF?

C# 为什么有人希望使用Tcp协议而不是基本Http协议来承载WCF?,c#,asp.net,wcf,tcp,C#,Asp.net,Wcf,Tcp,我是WCF的新手,我了解到使用WCF可以通过各种协议和消息格式在两个或多个分布式系统之间进行通信。到目前为止,出于实践目的,我使用了basicHttpBinding。但出于演示目的,我想真正确信在何处使用netTcpBinding等。请告诉我net.TcpBinding变得非常有用并且几乎是必须选择的场景。 据我所知,WCF与传统的各种对等服务(如ASP.NETWeb服务)相比,它的一个主要优势是它可以通过各种协议进行无缝通信,而其他传统Web服务无法做到这一点。 这是真的吗?请澄清。每个绑定都

我是WCF的新手,我了解到使用WCF可以通过各种协议和消息格式在两个或多个分布式系统之间进行通信。到目前为止,出于实践目的,我使用了basicHttpBinding。但出于演示目的,我想真正确信在何处使用netTcpBinding等。请告诉我net.TcpBinding变得非常有用并且几乎是必须选择的场景。 据我所知,WCF与传统的各种对等服务(如ASP.NETWeb服务)相比,它的一个主要优势是它可以通过各种协议进行无缝通信,而其他传统Web服务无法做到这一点。
这是真的吗?请澄清。

每个绑定都有不同的目标

每个绑定都有不同的目标

使用二进制协议时,性能要好得多。序列化速度更快,网络使用更少

此外,NetTcp绑定还支持更多的.NET功能,例如泛型。它基于
BinaryFormatter


另请看燃烧军团的图表,我不打算复制它。

二进制协议的性能要好得多。序列化速度更快,网络使用更少

此外,NetTcp绑定还支持更多的.NET功能,例如泛型。它基于
BinaryFormatter


另请看燃烧军团的图表,我不打算复制它。

这里有一些不同之处,可以帮助您理解答案

BasicHttpBinding-主要功能:使用WS-I基本配置文件1.1标准,主要用于使用旧的ASMX Web服务。其他重要功能,您必须注意:

在http协议上工作 根据BasicHttpSecurityElement支持安全性(None/Transport/Message/TransportWithMessageCredential/TransportCredentialOnly) 支持使用Mtom(消息传输组织机制1.0(Mtom)编码器)进行消息编码,用于传输带有大型二进制附件的消息

NetTcpBinding-主要功能:使用WS-*标准(比WS-I基本配置文件1.1具有更多功能)在跨机器通信环境中部署和使用.NET WCF服务。其他重要特征:

在tcp协议上工作 根据NetCPSecurityElement(无/传输/消息/两者)支持安全性 支持事务 支持可靠的会话(可以完全支持一次交付保证)


这个链接值得一看

这里有一些不同之处,可以帮助您理解答案

BasicHttpBinding-主要功能:使用WS-I基本配置文件1.1标准,主要用于使用旧的ASMX Web服务。其他重要功能,您必须注意:

在http协议上工作 根据BasicHttpSecurityElement支持安全性(None/Transport/Message/TransportWithMessageCredential/TransportCredentialOnly) 支持使用Mtom(消息传输组织机制1.0(Mtom)编码器)进行消息编码,用于传输带有大型二进制附件的消息

NetTcpBinding-主要功能:使用WS-*标准(比WS-I基本配置文件1.1具有更多功能)在跨机器通信环境中部署和使用.NET WCF服务。其他重要特征:

在tcp协议上工作 根据NetCPSecurityElement(无/传输/消息/两者)支持安全性 支持事务 支持可靠的会话(可以完全支持一次交付保证)


此链接值得一看

使用NetTcpBinding的主要原因是性能。与HTTP协议+二进制序列化相比,开销更小。缺点是互操作性。使用NetTcpBinding的主要原因是性能。与HTTP协议+二进制序列化相比,开销更小。缺点是互操作性。非常感谢。但是我不能通过Http绑定进行跨平台或者更确切地说跨机器的通信吗(尽管我知道Tcp是面向连接的,而Http不是)?如果在这种情况下尝试使用Http而不是Tcp,我会遇到什么问题?求你了,我只是想澄清我的疑虑。非常感谢。但是我不能通过Http绑定进行跨平台或者更确切地说跨机器的通信吗(尽管我知道Tcp是面向连接的,而Http不是)?如果在这种情况下尝试使用Http而不是Tcp,我会遇到什么问题?求你了,我只是想澄清我的疑虑。非常感谢。但是我不能通过Http绑定进行跨平台或者更确切地说跨机器的通信吗(尽管我知道Tcp是面向连接的,而Http不是)?如果在这种情况下尝试使用Http而不是Tcp,我会遇到什么问题?请允许我澄清我的疑问。@user3655102如果没有黑魔法或自定义绑定,您无法通过tcp接收其他平台的数据。但是我不能通过Http绑定进行跨平台或者更确切地说跨机器的通信吗(尽管我知道Tcp是面向连接的,而Http不是)?如果在这种情况下尝试使用Http而不是Tcp,我会遇到什么问题?请允许我澄清我的疑问。@user3655102如果没有黑魔法或自定义绑定,您无法通过tcp接收其他平台的数据