据我所知,TCP比WCF的HTTP快,但我很想知道多少。我对使用HTTP的大型应用程序存在性能问题,并且正在考虑转向netTcp是否会产生足够的性能提升以使投资变得有价值。
任何人都知道netTCP发送的数据与Http绑定相比有何不同?
答案 0 :(得分:42)
到目前为止,答案很多但没有具体数据。
Microsoft制作了一项测试来测量完全您所询问的内容--WCF服务的HTTP和TCP之间的性能(吞吐量)差异。 (测试没考虑数据包大小!)
这表明TCP /二进制文件的吞吐量几乎是HTTP / xml的2倍,对于此测试中的消息。此测试的瓶颈是服务器CPU,而不是网络。您的结果会有所不同,因为您的消息会更复杂(或更少),您的网络会受到更多(或更少)的限制,并且您的应用代码会更多(或更少)占用大量CPU资源。但这给了你一个想法。
实际上,Stocktrader基准测试是一项具有竞争力的事情,将Windows Server上的WCF性能与Linux上的WebSphere性能进行比较。但作为其中的一部分,MS还将使用HTTP的WCF性能与使用TCP的WCF性能进行了比较。
答案 1 :(得分:5)
它不那么简单。 HTTP,TCP和other传输选项可以选择在速度之外进行平衡。可靠性可以在应用程序的稳定性方面发挥重要作用,具体取决于它实际上做什么。不要只是翻转协议并运行你的程序几次,并认为这是一个很好的测试。阅读有关协议的信息,并根据您的要求权衡选项。运行一些程序,负载,性能和网络测试,最好是在合格的网络管理员的帮助下。
更新:由于您更改了问题,我还应该注意,您需要弄清楚导致性能损失的原因,而不是考虑测量理论数据包大小。像其他人一样说,运行测试。
答案 2 :(得分:5)
根据ISO / OSI模型,TCP是传输层。 HTTP是在TCP之上实现的应用程序层。因此,无论如何,HTTP总是会增加开销。
一般。如果HTTP解决了相当多的应用程序层问题,那么就使用它,因为它已经建立良好,高度可互操作并且经过验证。如果你的应用程序使用HTTP,你需要做一些工作才能使事情顺利进行,而且使用TCP会变得更好更简单,那么一定要选择更低级别的协议。
特别是关于WCF,我不知道他们的TCP实现是什么样的。我打赌它比HTTP更简单。 HTTP可能被用作“防弹”通信介质,并且HTTP开销的成本是合理的,因为协议容易遍历代理服务器等。
答案 3 :(得分:4)
我认为WCF中最昂贵的部分是序列化。与此相比,Web服务器堆栈的开销约为5-10%,而纯TCP传输确实消除了这些开销。问题是,您是否需要网络服务器的额外好处。
答案 4 :(得分:2)
做一些测试!这取决于您的网络以及您的服务实际在做什么。
通常它会更快,因为堆栈中的TCP连接较低,并且在连接打开后没有创建新请求的开销。