Come si sviluppa l’architettura client-server? Che cos’è la rete hardware?

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.