24

我知道对于 WCF,TCP 比 HTTP 快,但我很想知道多少。我有一个使用 HTTP 的大型应用程序的性能问题,并且正在考虑迁移到 netTcp 是否会产生足够的性能改进以使投资值得。

有谁知道 netTCP 发送的数据量与 Http 绑定的区别?

4

5 回答 5

43

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

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

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

这表明,对于本测试中的消息,TCP/binary 提供的吞吐量几乎是 HTTP/xml 的 2 倍。此测试的瓶颈是服务器 CPU,而不是网络。您的结果会有所不同,因为您的消息将更加(或不那么)复杂,您的网络将受到更多(或更少)的限制,并且您的应用程序代码将更多(或更少)CPU 密集型。但这给了你一个想法。

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

下载完整的 Stocktrader 报告

于 2010-12-23T17:51:47.150 回答
5

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

更新:由于您更改了问题,我还应该注意,您需要找出导致性能损失的原因,而不是探讨测量理论数据包大小。就像其他人所说的那样,运行测试。

于 2010-12-23T15:21:10.960 回答
5

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

一般来说。如果 HTTP 解决了相当多的应用程序层问题,那么请使用它,因为它已被完善、高度互操作且经过验证。如果即使您的应用程序使用 HTTP,您也需要做一些工作才能让事情顺利进行,并且使用 TCP 会变得更好更简单,那么请务必使用较低级别的协议。

特别是关于 WCF,我不知道他们的仅 TCP 实现是什么样的。不过我敢打赌它比 HTTP 更简单。HTTP 可能被用作“防弹”通信介质,HTTP 开销的成本是由协议轻松遍历代理服务器等事实证明的。

于 2010-12-23T15:42:19.440 回答
4

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

于 2010-12-23T15:25:12.493 回答
2

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

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

于 2010-12-23T15:15:39.167 回答