我正在使用IIS上的Web应用程序,并与[remote] Service-Machine交谈.我不确定是选择TCP还是Http作为主协议.
更多细节:
我将有多个服务\端点
其中一些将是单向的
另一种是双向的
网页将在服务面前工作
我们正在谈论高规模的网站
我非常了解差异,但我正在寻找一个好的基准测试,它显示了TCP的速度有多快?
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来托管其服务.
您真正需要回答的问题是"TCP或HTTP对我的应用程序来说会更快".答案是它取决于应用程序的性质,以及在应用程序中使用TCP和/或HTTP的方式.通用HTTP与TCP基准测试无法回答您的问题,因为基准测试可能与您的应用程序行为不匹配.
理论上,使用TCP的最佳设计/实现的解决方案将比使用HTTP的解决方案更快.但实施起来可能还要多得多......取决于您的应用程序的详细信息.
还有其他问题可能会影响您的选择.例如,如果使用HTTP,则不太可能遇到防火墙问题,而不是在某个随机端口上使用TCP.另一个是HTTP可以更容易地在IIS服务器和后端系统之间实现负载均衡器.
最后,在一天结束时,您的系统可靠,可维护且(可能)可扩展性可能比快速更重要.一个明智的策略是首先实现简单版本,但是如果简单的解决方案太慢,那么你就可以计划如何更快地实现它.
你总能对它进行基准测试.
一般来说,如果您想要完成的任务可以通过HTTP轻松完成(也就是说,否则您考虑使用原始TCP的唯一原因是为了提高性能),您应该只使用HTTP.当然,你可以做套接字编程,但为什么要这么麻烦?许多人花费了大量的时间和精力来构建HTTP客户端库和服务器,并且他们花了更多的时间来优化和测试代码,而不是花在TCP套接字上.您可能需要处理的错误很多,边缘情况和优化都可以完成,使用HTTP库函数通常更容易,更安全.
此外,HTTP规范定义了各种功能(以及客户端/服务器实现,您可以免费使用它们,即没有额外的实现工作),这使得任何第三方互操作性变得更加容易."这是我的网址,以下是您发送内容的规则,以下是我返回的规则......"