【发布时间】:2014-12-31 14:56:18
【问题描述】:
最初,我在启用 keep-alive 选项时遇到问题(它会阻止下一个客户端呼叫。只有第一个收到应答的呼叫)。
现在,我需要使用 gSoap 实现一些异步 Web 服务。
那么我是否必须启用 keep-alive 才能实现异步 Web 服务?
非常感谢!
【问题讨论】:
标签: asynchronous keep-alive gsoap
最初,我在启用 keep-alive 选项时遇到问题(它会阻止下一个客户端呼叫。只有第一个收到应答的呼叫)。
现在,我需要使用 gSoap 实现一些异步 Web 服务。
那么我是否必须启用 keep-alive 才能实现异步 Web 服务?
非常感谢!
【问题讨论】:
标签: asynchronous keep-alive gsoap
为了提供一些背景知识,建立 TCP 连接有很大的设置开销。 keep-alive 的目的是通过重用已经打开的 TCP 连接而不是完全从头开始构建新连接来避免后续连接的这种开销,从而减少延迟。
不使用keep alive也可以得到web服务的功能(毕竟keep alive是在HTTP/1.1中引入的,HTTP/1.0在不使用keep alive的情况下已经工作了很长时间了)。但是,与正确支持 keep alive 相比,您肯定会遇到更差的性能。还应该注意的是,在移动设备上建立连接时,拆除以前的连接并完全从头开始创建新连接,而不是保持连接打开并重复使用它也可能对电池产生影响。特别是,关闭和打开连接可能会导致无线电进入睡眠状态,然后再次唤醒,并且无线电从睡眠状态转换到唤醒状态时通常比稳定状态消耗更多的电量。
【讨论】:
您的服务应该是多线程的以支持多个客户端,这里 gsoap 文档解释了它http://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc19.11
【讨论】: