informatica
chiedi all'esperto LOGOhome

Come si sviluppa l'architettura client-server?  Che cos'è la rete hardware? 
(risponde Luca Fini) 
   
Come si sviluppa l'architettura client-server? 
Il termine "client-server" si riferisce normalmente all'architettura di una applicazione software (un "programma", in termini semplici) che è in effetti divisa in due parti ben distinte, anzi in due programmi, fra loro indipendenti: un programma "server", quello che fornisce il servizio richiesto; ed un programma "cliente", ovvero quello utilizzabile per accedere al servizio. Quest'ultimo normalmente consiste principalmente in una "interfaccia di utente" che accetta le richieste di un utilizzatore umano, ne verifica la correttezza e compone un "messaggio" di richiesta al server, il quale risponde appropriatamente. A questo punto il "cliente" può convertire il messaggio di risposta in una forma più adatta ad essere compresa dall'utilizzatore e presentarlo. 

 I motivi per cui le architetture di tipo client-server hanno ottenuto grande successo sono di vario tipo e riguardano vari aspetti dell'ingegneria del software. Alcuni dei principali vantaggi derivano dal fatto che cliente e server hanno funzioni radicalmente diverse e sono in larga misura indipendenti fra loro: l'unica cosa che li "lega" è l'insieme di messaggi che possono scambiarsi. 

 Più in particolare: 

  • L'architettura si presta naturalmente ad applicazioni in cui è richiesto un solo server che fornisce servizio a molti clienti. 
  • L'architettura si presta naturalmente ad essere utilizzata in ambiente distribuito (in rete). 
  • La parte cliente e la parte server di una applicazione possono essere sviluppate separatamente in modo semplice da gruppi di lavoro diversi. 
  • Le due parti possono essere ottimizzate, ciascuna per il suo compito, indipendentemente. 
  • È possibile sostituire i clienti o i server con programmi di tipo diverso, purché accettino lo stesso "linguaggio" di messaggi. Ad esempio un utente può scegliere fra diverse interfaccie utente quella che preferisce (o a cui è abituato). 
Alcuni tipici esempi di servizi implementati con architetture client-server sono: 
  • I servizi di posta elettronica forniti dai provider Internet: il provider fornisce un server che ha il solo compito di trasmettere e ricevere messaggi (e mantenerli memorizzati fino a che un cliente non li richiede). Ogni utente del provider è provvisto di un cliente (Netscape, Eudora, Pine, MS-Exchange, ecc.) che gli mostra l'elenco dei messaggi, gli consente di leggerli, cancellarli, archiviarli, scriverne di nuovi, ecc. Ogni cliente "parla" con il server secondo un "linguaggio" (protocollo) detto POP3
  • I database di tipo "SQL server". In questo caso il server si occupa della gestione di un database (scrittura e lettura dei records, ricerche, mantenimento degli indici, ecc.) e riceve comandi in un linguaggio standard detto SQL attraverso collegamenti di rete. I clienti da un lato ricevono le richieste di operazione dagli utenti e le traducono in linguaggio SQL per trasmetterle al server, dall'altro ricevono le risposte dal server e le presentano nel formato opportuno all'utente.
  • I "printer server". In questo caso il server fornisce un servizio di stampa ed i clienti non sono di norma utenti "umani" direttamente, ma "driver" di stampa su computer remoti non dotati di stampante che sono in grado di attivare una richiesta di stampa sul server. 
Che cos'è la rete hardware? 
Nel gergo informatico hardware rappresenta tutto ciò che è materiale in una installazione: apparecchiature, cavi, ecc. Nel nostro caso si parla più esattamente di rete (senza specificare il termine "hardware") per indicare i cablaggi e le apparecchiature accessorie (Hub, Bridges, ecc.) che occorrono per consentire ad un gruppo di elaboratori di scambiarsi messaggi. 

 Si parla invece di "software di rete" per indicare l'insieme di programmi che sono necessari ad inviare sulla rete i messaggi necessari allo scambio di informazioni fra due diversi computer.