android - 服务器如何处理来自多个客户端的 Web 服务请求

标签 android web-services sql-server-2008 soap

我刚刚完成了一个使用 Web 服务连接到远程数据库的 Android 应用程序。我在本地主机上工作。

现在,我计划在服务器上托管我的 Web 服务。假设我在任意数量的不同客户端智能手机上安装了我的 Android 应用程序。每个智能手机用户同时调用网络服务。

现在服务器如何处理这些请求?它是否为每个请求执行一个线程?我想详细了解服务器处理。考虑到所有手机都使用GPRS,在这种情况下会不会有任何延迟?

顺便说一句,我的网络服务都是基于 SOAP 的,我打算稍后使用的服务器将是 SQL Server。我使用 .NET 框架来创建 Web 服务。

最佳答案

它是针对一般概念,而不是特定于 Android 的

通常,每个用户都会为该页面发送一个 HTTP 请求。服务器接收请求并将它们委托(delegate)给不同的工作人员(进程或线程)。

根据给定的 URL,服务器读取文件并将其发回给用户。如果文件是动态文件,例如 PHP 文件,则在将文件发送回用户之前执行该文件。

一旦请求的文件被发回,服务器通常会在几秒钟后关闭连接。

How Web Servers Work

编辑:

HTTP 使用 TCP,它是一种基于连接的协议(protocol)。也就是说,客户端在与服务器通信时会建立 TCP 连接。

允许多个客户端同时连接到同一目标机器上的同一目标端口。服务器只是打开多个同时连接。

Apache(和大多数其他 HTTP 服务器)有一个多处理模块 (MPM)。它负责分配 Apache 线程/进程来处理连接。然后这些进程或线程可以在它们自己的连接上并行运行,而不会相互阻塞。即使没有打开连接,Apache 的 MPM 也倾向于保持打开的“备用”线程或进程,这有助于加快后续请求。

注意:

多线程最常见的问题之一是“竞争条件”——您的两个请求正在做同样的事情(“竞相”做同样的事情),如果是单个资源,其中一个将获胜。如果他们都向数据库中插入一条记录,则他们不能都获得相同的 ID——其中一个将获胜。因此,您在编写代码时需要小心,以了解同时进行的其他请求可能会修改您的数据库、写入文件或更改全局变量。

关于android - 服务器如何处理来自多个客户端的 Web 服务请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8278887/

相关文章:

java - Spring org.springframework.web.multipart.support.MissingServletRequestPartException,所需的请求部分 'file' 不存在

sql - 1 :N relationship where N must be at least one entry

azure - SQL Server Management Studio - 登录错误 < token 标识的主体>

java - onTouch 方法 - 跟踪已单击或按下的按钮实例

java - 如何在整个应用程序中保持 session 直到用户在 android 中注销?

java - 我可以在同一 REST API 响应中发送 excel 文件和 JSON 正文以及文件描述吗

apache - 无法使用 mpirun 使 apache mod_perl 工作

sql-server-2008 - 在 SQL 中转换时间没有毫秒

java - 如何修复 : java. lang.ClassCastException : java. util.ArrayList 无法转换为 double[]

android - 如何调试广播接收器?