Client-server: Differenza tra architettura a Due livelli, Tre livelli e N-livelli

Client-server: Differenza tra architettura a Due livelli, Tre livelli e N-livelli

Modelli strutturali

Quando si parla di topologia nei sistemi client-server ci si riferisce alla disposizione e alla struttura fisica della rete client-server, in cui tutti i client e tutti i server sono connessi gli uni con gli altri, includendo tutte le stazioni di lavoro. I diversi schemi di topologie e strategie usate sono i seguenti:

  • Unico client, unico server: in questa topologia un unico client è connesso al server
  • Più client, unico server: i client sono multipli e sono connessi ad un unico server
  • Più client, più server: i client sono multipli e sono connessi a molteplici server

La struttura dei primi due casi è tale da introdurre il problema legato alla presenza di un unico server, infatti nel caso di non disponibilità di quest’ultimo i servizi non sono più accessibili. Questo problema è conosciuto come Single Point of Failure. L’indisponibilità di tale servizio pùo essere legata a un attacco maligno, un problema di rete o la semplice manutenzione del server. La soluzione ridondante dei server permette di avere un servizio più stabile dal punto di vista della disponibilità, in quanto è basata su server multipli. Questi introducono la capacità di cambiare server quando quello precedentemente contattato è terminato inaspettatamente o non è stato proprio possibile contrattarlo (failover). Tale tecnica avviene in modo trasparente senza l’intervento umano e senza nessun avvertimento.

Classificazione dei sistemi client-server in base alla topologia

Esistono tre tipi di sistemi client-server:

  1. Due livelli (Two-tiers)
  2. Tre livelli (Three-tiers)
  3. N-livelli (N-tiers)
Modello a due livelli (two-tiers)

I due livelli di un’applicazione basata su questo tipo di sistema sono generalmente collegati dalla rete, ma in alcuni casi entrambi i livelli possono essere presenti sulla stessa macchina. La tendenza è quella di centralizzare la logica dell’applicazione sul server, rendendo la manutenzione del codice più semplice. L’architettura client-server
è per definizione composta da almeno due livelli, dove il client è il primo livello mentre il secondo livello è costituito dal server. Il client richiede i servizi al server, comunicando direttamente con esso senza nessun altra entità intermedia.

Modello a tre livelli (three-tiers)

Più la logica dell’applicazione è distribuita fra i vari livelli dell’architettura più diventa difficile raggiungere un buon livello di riusabilità. Per evitare di includere la logica dell’applicazione sia a livello del server che lato client, un terzo livello software pùo essere inserito nel mezzo. In questo caso si parla di un’architettura a tre livelli (threetiers), dove la maggior parte della logica si trova nel livello intermedio e dove ogni livello corrisponde ad un servizio che viene messo a disposizione dal sistema. Con questo tipo di struttura quando è necessario cambiare la logica dell’applicazione è sufficiente modificare solo il livello intermedio. Ogni livello architetturale pùo essere associato ad un specifica categoria logica:

  • Rappresentazione (GUI) dei servizi per l’utente: include la manutenzione dell’interfaccia grafica per l’utente e la presentazione di ciò che gli utenti vedono sul monitor.
  • Servizi dell’applicazione e della logica: includono l’esecuzione di applicazioni e il flusso del programma di controllo, cioè la logica che si occupa della convalida dei dati e delle richieste/risposte nella comunicazione fra i processi dei vari livelli.
  • Core server: si riferisce al server che esegue effettivamente le richieste e che eventualmente gestisce la base di dati sottostante. In questo caso la logica del server interagisce con la gestione, l’accesso e la sicurezza dei dati.

Il server del livello intermedio funziona come un proxy per tutte le richieste che vengono dai client, inoltrandole al Core server e restituendo il risultato al client dopo che la richiesta è stata processata. Oltre a funzionare come un livello intermedio, il proxy server coordina l’esecuzione dei lavori sul Core server.
Quest’architettura permette di creare un ambiente di lavoro più sicuro per il server che svolge le richieste. Ma anche per questo modello ci sono un paio di inconvenienti:

  • la necessità di avere un piccolo processo (listener) all’interno del server intermedio;
  • tutte le richieste del client devono essere trasmesse in una rete tramite un protocollo ben definito.

I confini fra i vari livelli sono di tipo logico.

  1. Primo livello (client). La responsabilità principale di questo livello è quella di ricevere gli eventi degli utenti, controllare l’interfaccia utente e rappresentare i dati sull’interfaccia. Poich´e con questa architettura la maggior parte del software è rimosso dal client, questo è sottile (thin).
  2. Secondo livello (application/proxy server). La parte complessa della logica dell’applicazione è all’interno di questo livello ed è disponibile per il livello client, quando questo la richiede. Tale livello costituisce l’entità centrale per la soluzione dei problemi presenti nel modello a due livelli, anche proteggendo l’accesso diretto di dati.
  3. Terzo livello (core server). Questo livello è responsabile della memorizzazione dei dati, spesso tramite un File Server e un gestore di basi di dati.

I livelli sopra elencati possono essere eseguiti tutti in un’unica e medesima macchina, in quanto è importante che il sistema sia ben strutturato e che la progettazione dei confini fra i vari software esistenti nei diversi livelli sia ben definita. Alcuni dei vantaggi derivanti dall’utilizzo del modello a tre livelli includono:

  • La manutenzione delle applicazioni è centralizzata perchè la logica necessaria agli utenti finali è nel server intermedio. Ci`o permette di eliminare una delle problematiche più importanti che è presente nel modello tradizionale a due livelli: la distribuzione del software.
  • Attraverso la separazione netta fra l’interfaccia utente, il controllo e la presentazione dei dati dalla parte logica dell’applicazione più client possono accedere ad una vasta gamma di applicazioni messe a disposizione dal server. I vantaggi principali per le applicazioni client sono due: uno sviluppo più rapido grazie al riutilizzo delle componenti logiche già esistenti ed una fase di test più breve, in quanto le componenti del server sono già state testate a parte.
  • Molti utenti sono in grado di accedere ad una vasta gamma di applicazioni server, proprio perchè tutte le applicazioni logiche sono messe a disposizione sul server del terzo livello.

L’architettura a tre livelli pùo essere facilmente estesa a N livelli, con dei livelli aggiuntivi necessari a fornire una maggiore flessibilità e scalabilità. Ad esempio, il livello intermedio del modello a tre livelli potrebbe essere diviso in due, con un livello per il server Web e un altro per il server delle applicazioni.

Architettura a tre livelli e Internet

Con il rapido sviluppo di Internet e delle tecnologie Web, le applicazioni clientserver in esecuzione su Internet e intranet stanno diventando un nuovo tipo di calcolo distribuito. Una tipica applicazione web utilizza la seguente architettura su tre livelli.

  • L’interfaccia utente viene eseguita sul desktop come client.
  • Il client è collegato (attraverso uno o più collegamenti immediati al server) ad un Web server, che pùo essere un magazzino per delle applicazioni scaricabili (le componenti software).
  • Il server web è, a sua volta, sostenuto da un Database Server che tiene traccia delle informazioni specifiche per l’interesse del client e la relativa storia.
  • Queste applicazioni web si basano su standard di Internet (HTTP, HTML, XML, ecc).

Client-server: Differenza tra architettura a Due livelli, Tre livelli e N-livelli

Modello a N livelli (N-tiers)

Nel modello computazionale a N livelli gli sviluppatori sono obbligati a progettare le componenti secondo un ben preciso schema che rappresenti le entità, i rapporti, le attività e le regole, per una distribuzione ottimale delle funzioni tra livelli logici e fisici, consentendo un migliore utilizzo delle piattaforma hardware e delle risorse condivise. Un altro aspetto della suddivisione su N livelli è che sia gli sviluppatori di applicazioni che gli amministratori sono in grado di identificare i colli di bottiglia e quindi:

  • aggiungere più hardware dove necessario, permettendo un bilanciamento migliore del carico;
  • duplicare i servizi per avere una disponibiltà continua in caso di fallimento (failover).

La suddivisione pùo essere effettuata fra la logica delle componenti dell’applicazione, la sicurezza logica e la logica di presentazione, il calcolo ad alta intensità e le componenti con un alto I/O e così via. Nella progettazione di un sistema con questa topologia l’approccio che viene più comunemente utilizzato è quello con un’architettura su tre livelli. I modelli su tre o N livelli sono simili, se non per il fatto che quello su quest’ultimo permette di definire un maggior scomposizione e quindi modularità dei servizi. Perciò, per la distribuzione dei servizi di alcuni sistemi spesso si opta per una struttura con ben più di tre livelli, infatti un’infrastruttura che supporta tre livelli è spesso composta da svariate macchine e servizi, le cui funzionalità non fanno parte della progettazione.

Un sistema client-server su N livelli offre numerosi vantaggi rispetto ai modelli tradizionali su uno o due livelli, fra cui:

  • migliori prestazioni complessive;
  • logica dell’applicazione centralizzata;
  • raggiunto un livello di protezione nettamente più avanzato.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *