当前位置:  开发笔记 > 编程语言 > 正文

TCP与 Http基准

如何解决《TCP与Http基准》经验,为你挑选了3个好方法。

我正在使用IIS上的Web应用程序,并与[remote] Service-Machine交谈.我不确定是选择TCP还是Http作为主协议.

更多细节:

    我将有多个服务\端点

    其中一些将是单向的

    另一种是双向的

    网页将在服务面前工作

    我们正在谈论高规模的网站

我非常了解差异,但我正在寻找一个好的基准测试,它显示了TCP的速度有多快?



1> Darwyn..:

HTTP是在TCP层的顶部构建的层,用于标准化数据传输的一些层.所以使用TCP套接字自然会比使用HTTP更重.如果性能是您唯一关心的,那么普通TCP是最适合您的解决方案.

您可能需要考虑HTTP,因为它易于使用且简单,最终缩短了开发时间.如果您正在做一些可能被浏览器直接使用的东西(通过AJAX调用),那么您应该使用HTTP.对于非现代浏览器直接使用没有HTTP的TCP连接,您必须使用Flash或Silverlight,这通常适用于视频和/或音频等丰富内容.但是,现在许多现代浏览器(截至2013年)都支持API直接通过JavaScript访问网络,音频和视频资源.唯一要考虑的是用户之间现代Web浏览器的使用率; 有关浏览器兼容性的最新信息,请访问caniuse.com.

至于基准测试,这是我发现的唯一的东西.见第5页,它有性能图表.请注意,它并不真正比较苹果和苹果,因为它将TCP /二进制数据选项与HTTP/XML数据选项进行比较.这引出了一个问题:您的服务输出的是哪种数据?二进制(视频,音频,文件)或文本(JSON,XML,HTML)?

一般来说,与军事或金融部门相似的性能导向系统可能会使用普通的TCP连接.一般网络公司将选择使用HTTP并使用IIS或Apache来托管其服务.


真正; 在我的原始帖子发布4年后,现在可以使用JS和HTML5工具(WebSocket,WebGL,Canvas,音频,拖放,WebWorkers,WebRTC,Geolocation,Web存储,TypedArrays等)访问音频,视频和网络API. )

2> Stephen C..:

您真正需要回答的问题是"TCP或HTTP对我的应用程序来说会更快".答案是它取决于应用程序的性质,以及在应用程序中使用TCP和/或HTTP的方式.通用HTTP与TCP基准测试无法回答您的问题,因为基准测试可能与您的应用程序行为不匹配.

理论上,使用TCP的最佳设计/实现的解决方案将比使用HTTP的解决方案更快.但实施起来可能还要多得多......取决于您的应用程序的详细信息.

还有其他问题可能会影响您的选择.例如,如果使用HTTP,则不太可能遇到防火墙问题,而不是在某个随机端口上使用TCP.另一个是HTTP可以更容易地在IIS服务器和后端系统之间实现负载均衡器.

最后,在一天结束时,您的系统可靠,可维护且(可能)可扩展性可能比快速更重要.一个明智的策略是首先实现简单版本,但是如果简单的解决方案太慢,那么你就可以计划如何更快地实现它.


使用HTTP时,您可以从SSL和授权实施中获益,与自制解决方案相比,这显着降低了风险和工作量

3> Adam Batkin..:

你总能对它进行基准测试.

一般来说,如果您想要完成的任务可以通过HTTP轻松完成(也就是说,否则您考虑使用原始TCP的唯一原因是为了提高性能),您应该只使用HTTP.当然,你可以做套接字编程,但为什么要这么麻烦?许多人花费了大量的时间和精力来构建HTTP客户端库和服务器,并且他们花了更多的时间来优化和测试代码,而不是花在TCP套接字上.您可能需要处理的错误很多,边缘情况和优化都可以完成,使用HTTP库函数通常更容易,更安全.

此外,HTTP规范定义了各种功能(以及客户端/服务器实现,您可以免费使用它们,即没有额外的实现工作),这使得任何第三方互操作性变得更加容易."这是我的网址,以下是您发送内容的规则,以下是我返回的规则......"


警告 - 如果它是一个对话,HTTP可能效率不高 - 通过每次打开TCP连接在HTTP中的多个请求是昂贵的,并且我已经看到服务器资源匮乏,因为底层TCP连接没有干净地关闭.是的,HTTP/1.1支持保持连接打开以获得更多请求,但不清楚这个其他服务是否支持此功能.
这是真的,但如果其他服务器确实支持它,那就是那些"免费"优化之一.至于没有干净地关闭的连接,这是库中的一个错误,并且将是一个严重的问题,但是"自己滚动"的情况再次需要警惕可能导致相同资源的每种可能情况饥饿.
推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有