Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

In che modo un server gestisce le richieste di servizi Web da più client

È per il concetto generale, non per Android specifico

Di solito, ciascuno degli utenti invia una richiesta HTTP per la pagina. Il server riceve le richieste e le delega a diversi lavoratori (processi o thread).

A seconda dell'URL fornito, il server legge un file e lo rimanda all'utente. Se il file è un file dinamico come un file PHP, il file viene eseguito prima di essere rispedito all'utente.

Una volta che il file richiesto è stato rispedito, il server di solito chiude la connessione dopo alcuni secondi.

Guarda Come funzionano i server Web

MODIFICA:

Per HTTP utilizza TCP che è un protocollo basato sulla connessione. Cioè, i client stabiliscono una connessione TCP mentre comunicano con il server.

Più client possono connettersi contemporaneamente alla stessa porta di destinazione sulla stessa macchina di destinazione. Il server apre solo più connessioni simultanee.

Apache (e la maggior parte degli altri server HTTP) hanno un modulo di elaborazione multipla (MPM). Questo è responsabile dell'allocazione di thread/processi Apache per gestire le connessioni. Questi processi o thread possono quindi essere eseguiti in parallelo sulla propria connessione, senza bloccarsi a vicenda. L'MPM di Apache tende anche a mantenere aperti thread o processi "di riserva" anche quando non ci sono connessioni aperte, il che aiuta a velocizzare le richieste successive.

Nota:

Uno dei problemi più comuni con il multi-threading è "condizioni di gara"-- dove voi due richieste state facendo la stessa cosa ("correre" per fare la stessa cosa), se si tratta di una singola risorsa, una di loro vincerà. Se entrambi inseriscono un record nel database, non possono ottenere entrambi lo stesso ID:uno di loro vincerà. Quindi è necessario prestare attenzione durante la scrittura del codice per rendersi conto che altre richieste sono in corso contemporaneamente e potrebbero modificare il database, scrivere file o cambiare globali.