Par*_*shi 8 android soap web-services sql-server-2008
我刚刚完成了一个使用Web服务连接到远程数据库的Android应用程序.我正在使用localhost.
现在,我计划在服务器上托管我的Web服务.假设我在任意数量的不同客户端智能手机上安装了我的Android应用程序.每个智能手机用户同时调用Web服务.
现在服务器如何处理这些请求?它是否每个请求执行一个线程?我想详细了解服务器处理.考虑到所有手机都使用GPRS,在这种情况下会有任何延迟吗?
顺便说一下,我的Web服务都是基于SOAP的,我打算稍后使用的服务器将是一个SQL Server.我使用.NET框架来创建Web服务.
它适用于一般概念,而不是Android特定的概念
通常,每个用户都发送该页面的HTTP请求.服务器接收请求并将它们委托给不同的工作者(进程或线程).
根据给定的URL,服务器读取文件并将其发送回用户.如果文件是动态文件(如PHP文件),则在将文件发送回用户之前执行该文件.
一旦请求的文件被发回,服务器通常会在几秒钟后关闭连接.
编辑:
对于HTTP使用TCP,这是一种基于连接的协议.也就是说,客户端在与服务器通信时建立TCP连接.
允许多个客户端同时连接到同一目标计算机上的同一目标端口.服务器只打开多个同时连接.
Apache(以及大多数其他HTTP服务器)具有多处理模块(MPM).这负责分配Apache线程/进程来处理连接.然后,这些进程或线程可以在它们自己的连接上并行运行,而不会相互阻塞.即使没有打开任何连接,Apache的MPM也倾向于保持打开"备用"线程或进程,这有助于加快后续请求.
注意:
多线程最常见的问题之一是"竞争条件" -你有两个请求做同样的事情("竞争"做同样的事情),如果它是一个单一的资源,其中一个就是赢得.如果他们都将记录插入到数据库中,则他们不能同时获得相同的ID - 其中一个将获胜.因此,在编写代码时需要小心,以实现其他请求同时进行,并可能修改数据库,写入文件或更改全局变量.