Client-server
In Informatica, il client-server è un modello di architettura software costituito da due parti, sistemi client e sistemi server, che comunicano entrambi attraverso una rete di computer o sullo stesso computer. Un'applicazione client-server è un sistema distribuito composto da software sia client che server. Il processo client avvia sempre una connessione al server, mentre il processo server attende sempre le richieste di qualsiasi client.
Quando sia il processo client che il processo server sono in esecuzione sullo stesso computer, questo si chiama "single seat setup".
Un altro tipo di architettura software correlata è nota come peer-to-peer, perché ogni istanza di host o applicazione può agire contemporaneamente sia come client che come server (a differenza dei server centralizzati del modello client-server) e perché ognuno ha responsabilità e stato equivalenti. Le architetture peer-to-peer sono spesso abbreviate con l'acronimo P2P.
Il rapporto cliente-server descrive la relazione tra il cliente e il modo in cui effettua una richiesta di servizio al server, e come il server può accettare tali richieste, elaborarle e restituire le informazioni richieste al cliente. L'interazione tra client e server è spesso descritta utilizzando diagrammi di sequenza. I diagrammi di sequenza sono standardizzati nel linguaggio di modellazione unificato.
Sia l'architettura client-server che quella P2P sono oggi ampiamente utilizzate.
Il tipo base dell'architettura software client-server impiega solo due tipi di host: client e server. Questo tipo di architettura viene talvolta definito a due livelli. L'architettura a due livelli significa che il client agisce come un livello e il processo server agisce come l'altro livello.
L'architettura software client-server è diventata uno dei modelli di base del network computing. Molti tipi di applicazioni sono stati scritti utilizzando il modello client-server. Le funzioni standard in rete, come lo scambio di e-mail, l'accesso al web e l'accesso al database, si basano sul modello client-server. Ad esempio, un browser web è un programma client sul computer dell'utente che può accedere alle informazioni su qualsiasi server web nel mondo.
Una rete basata su un solo server.
Una rete peer-to-peer.
Caratteristiche dei clienti
Caratteristiche del server
- Attendere sempre la richiesta di uno dei clienti.
- Serve le richieste dei clienti e poi risponde ai clienti con i dati richiesti.
- Un server può comunicare con altri server per soddisfare una richiesta del cliente.
- Se sono necessarie informazioni aggiuntive per elaborare una richiesta (o viene implementata la sicurezza), un server può richiedere ulteriori dati (password) a un cliente prima di elaborare una richiesta.
- Gli utenti finali di solito non interagiscono direttamente con un server, ma utilizzano un client.
Vantaggi
- Nella maggior parte dei casi, un'architettura client-server consente di distribuire il peggioramento dei ruoli e delle responsabilità di un sistema informatico tra diversi computer indipendenti che sono conosciuti solo attraverso una rete, quindi uno dei vantaggi di questo modello è una maggiore facilità di manutenzione. Ad esempio, è possibile sostituire, riparare, aggiornare o persino riposizionare un server mentre i suoi client rimangono sia inconsapevoli che non sono interessati da tale cambiamento. Questa indipendenza dal cambiamento viene anche chiamata incapsulamento.
- Tutti i dati sono memorizzati sui server, che in genere hanno controlli di sicurezza migliori rispetto alla maggior parte dei clienti. I server possono controllare meglio gli accessi e le risorse, per garantire che solo i clienti con i permessi appropriati possano accedere e modificare i dati.
- Poiché la memorizzazione dei dati è centralizzata, l'aggiornamento di tali dati è molto più facile per gli amministratori rispetto a quanto sarebbe possibile con un'architettura P2P. In un'architettura P2P, gli aggiornamenti dei dati potrebbero dover essere distribuiti e applicati a ciascun "peer" della rete, il che richiede tempo ed è soggetto a errori, poiché ci possono essere migliaia o addirittura milioni di peer.
- Sono già disponibili molte tecnologie client-server avanzate che sono state progettate per garantire sicurezza, interfacce facili da usare e facilità d'uso.
- Funziona con diversi clienti di diverse specifiche.
Svantaggi
- Il blocco del traffico di rete è uno dei problemi legati al modello client-server. Con l'aumento del numero di richieste simultanee di client a un determinato server, il server può diventare sovraccarico. A differenza di quanto accade in una rete P2P, dove la sua larghezza di banda aumenta con l'aggiunta di un numero maggiore di nodi, poiché la larghezza di banda complessiva della rete P2P può essere calcolata approssimativamente come la somma delle larghezze di banda di ogni nodo di quella rete.
- Confrontando il modello client-server con il modello Peer to Peer, se un server fallisce, le richieste dei clienti non possono essere servite, ma nel caso di reti P2P, i server sono di solito distribuiti tra molti nodi. Anche se uno o più nodi falliscono, ad esempio se un nodo non è riuscito a scaricare un file, i nodi rimanenti dovrebbero comunque avere i dati necessari per completare il download.
Esempi
- Tipi specifici di clienti includono: browser web, client di posta elettronica e client di chat online.
- Tipi specifici di server sono: server web, server FTP, server di database, server di posta elettronica, file server, server di stampa. La maggior parte dei servizi web sono anche tipi di server.
Domande e risposte
D: Che cos'è l'architettura software client-server?
R: L'architettura software client-server è un modello composto da due parti, sistemi client e sistemi server, entrambi comunicanti su una rete di computer o sullo stesso computer.
D: Come funziona un'applicazione client-server?
R: Un'applicazione client-server è un sistema distribuito composto da software client e server. Il processo client avvia sempre una connessione al server, mentre il processo server attende sempre le richieste di qualsiasi client.
D: Cosa succede quando il processo client e il processo server sono in esecuzione sullo stesso computer?
R: Quando il processo client e il processo server sono in esecuzione sullo stesso computer, si parla di configurazione single seat.
D: Quali vantaggi offre l'utilizzo di un'applicazione client server?
R: L'utilizzo di un'applicazione Client Server offre un modo migliore per condividere i carichi di lavoro tra più computer o utenti.
D: Chi avvia le connessioni nelle Applicazioni Client Server?
R: Il processo client avvia sempre le connessioni nelle applicazioni server client.
D: Chi attende le richieste nelle Applicazioni Client Server?
R: Il Processo Server attende sempre le richieste nelle Applicazioni Server Client.
D: Come possono più computer o utenti condividere i carichi di lavoro tra loro?
R: Più computer o utenti possono condividere i carichi di lavoro utilizzando un sistema distribuito come un'Applicazione Client Server.