gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:02:52 24 4
gpt4 key购买 nike

我刚刚完成了一个使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com