WCF TCP的速度比HTTP快多少

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

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

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

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

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

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

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

下载完整的Stocktrader报告

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

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

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

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

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

我认为,WCF中最昂贵的部分是序列化。 与此相比,Web服务器堆栈的开销约为5-10%,而纯TCP传输确实消除了这些开销。 问题是,您是否需要网络服务器的额外好处?

做一些测试! 这取决于您的网络以及您的服务实际在做什么。

通常它会更快,因为堆栈中的TCP连接较低,并且在连接打开后没有创建新请求的开销。