多线程客户端 - 服务器Web服务 - 使服务器端数据具有线程安全性

时间:2009-03-17 19:17:31

标签: multithreading dom soap client-server tcp

我正在实现一个多线程的Web服务。每个传入请求都会产生一个线程。对于每个客户端,创建一个会话,每个会话包含一个数据部分 - 比如一个DOM树。客户端请求基本上是get / set方法,服务器将读/写DOM。

所以DOM数据是每个客户端。

现在我的问题是,服务器是否应将此DOM树视为关键部分?

基本上问题是,是否存在服务器有两个线程为同一客户端提供服务的情况?

请求/响应是SOAP over tcp。根据我的理解,即使客户端是多线程的,tcp客户端也无法发送同步请求。所以在服务器端,我不会遇到两个线程用于同一个客户端的情况。如果我错了,请纠正我,我是tcp / ip客户端 - 服务器编程的新手。

感谢。

3 个答案:

答案 0 :(得分:1)

  

根据我的理解,即使客户端是多线程的,tcp客户端也无法发送同步请求。

??它来自哪里?

在HTTP中,当然基于TCP,需要并发客户端请求。 RFC2616表示HTTP客户端(浏览器,REST客户端等)应该将对特定服务器的并发出站请求数限制为2.但这不是协议的严格要求,本指南在某些架构中,有时会故意不遵循。

我提出这个问题只是为了说明TCP本身支持客户端的多个并发出站请求。在一般情况下,TCP客户端可以打开许多并发的出站请求。

您使用的特定通信框架可能不支持客户端的多个并发出站请求。但那是另一回事。

答案 1 :(得分:0)

您应该考虑到每个请求的线程无法针对更高的请求率进行扩展,您将失去大部分时间进行线程切换

答案 2 :(得分:0)

您需要使用服务器的文档进行检查。高级服务器最有可能允许您配置请求处理策略(例如,顺序,每个连接的线程,每个请求的线程,线程池等)。

我担心客户端可以发送同步请求(如果它是多线程的)。