WCF TCP比HTTP快多少

Mar*_*909 23 c# wcf nettcpbinding

我知道TCP对于WCF比HTTP更快,但我很想知道多少.我对使用HTTP的大型应用程序存在性能问题,并且正在考虑转向netTcp是否会产生足够的性能提升以使投资变得有价值.

有谁知道netTCP发送的数据与Http绑定相比有何不同?

Che*_*eso 42

到目前为止,答案很多,但没有具体数据.

Microsoft制作了一个测试来准确测量您所询问的内容--WCF服务的HTTP和TCP之间的性能(吞吐量)差异.(测试没考虑数据包大小!)

图1:Web服务测试的峰值TPS速率. IBM WebSphere Trade 6.1在其默认的EJB/Entity Beans中运行,具有容器管理持久性(CMP).

这表明,对于此测试中的消息,TCP /二进制文件的吞吐量几乎是HTTP/xml的2倍.此测试的瓶颈是服务器CPU,而不是网络.您的结果会有所不同,因为您的消息会更复杂(或更少),您的网络会受到更多(或更少)的限制,并且您的应用代码会更多(或更少)占用大量CPU资源.但这给了你一个想法.

实际上,Stocktrader基准测试是一项具有竞争力的事情,它将Windows Server上的WCF性能与Linux上的WebSphere性能进行了比较.但作为其中的一部分,MS还将使用HTTP的WCF性能与使用TCP的WCF性能进行了比较.

下载完整的Stocktrader报告

  • 我完全不同意你轻易驳回这个答案.本文清楚地记录了基准测试方法,因此如果他觉得自己需要进行自己的测试,那么这一点非常值得.此外,*Stocktrader的所有源代码*都可用,包括测试脚本,因此他可以使用它来实现自己的基准测试.最后,它提供了比这里其他人更好的答案,就像"哦,我猜TCP会更快." 对于一种情况,这是一个实数.不是猜测. (11认同)

P.B*_*key 5

它不那么简单.HTTP,TCP和其他传输选项可以选择在速度之外进行平衡.可靠性可以在应用程序的稳定性中发挥重要作用,具体取决于它的实际功能.不要只是翻转协议并运行你的程序几次,并认为这是一个很好的测试.阅读有关协议的信息,并根据您的要求权衡选项.运行一些程序,负载,性能和网络测试,最好是在合格的网络管理员的帮助下.

更新:由于您更改了问题,我还应该注意,您需要弄清楚导致性能损失的原因,而不是考虑测量理论数据包大小.像其他人一样说,运行测试.


mar*_*ona 5

根据ISO/OSI模型,TCP是传输层.HTTP是在TCP之上实现的应用程序层.因此,无论如何,HTTP总是会增加开销.

通常.如果HTTP解决了相当多的应用程序层问题,那么就使用它,因为它已经建立,具有高度的互操作性并且经过验证.如果你的应用程序使用HTTP,你需要做一些工作才能使事情顺利进行,并且使用TCP会变得更好更简单,那么请务必使用更低级别的协议.

特别是关于WCF,我不知道它们的TCP实现是什么样的.我打赌它比HTTP更简单.HTTP可能被用作"防弹"通信介质,并且HTTP开销的成本是合理的,因为协议容易遍历代理服务器等.