Sunteți pe pagina 1din 9

1.3.

Caracteristici ale arhitecturii client/server


Arhitectura client/server este o arhitectură de reţea în care fiecare calculator sau proces din reţea
este un client sau un server. În mod normal, această arhitectură împarte o aplicaţie în trei
componente de bază: clientul, infrastructura reţelei (marcată prin caracterul slash) şi server-ul, fiind
o arhitectură stratificată. Din punct de vedere al arhitecturii client/server, un client este un calculator
personal (PC) sau o staţie de lucru (workstation) pe care utilizatorul rulează diverse aplicaţii şi care
cere server-ului efectuarea unor operaţii. Server-ele sunt calculatoare puternice sau procese dedicate
să administreze: unităţile de disc (file server), imprimante (print server), traficul pe reţea (network
server) etc.
Calculatorul client este acela care interacţionează cu un utilizator şi care în majoritatea tipurilor de
arhitecturi client/server are două sarcini: logica prezentării (interfaţa cu utilizatorul) şi logica
aplicaţiei (afacerii). Într-o aplicaţie tradiţională client/server, clientul conţine partea de prezentare
(afişarea folosind o interfaţă prietenoasă), lucrul efectuat de aplicaţie (calcule, algoritmi) şi
manipularea datelor (conectivitatea cu bazele de date).
Logica prezentării se referă la acea parte a programului care asigură coordonarea interacţiunii dintre
utilizator şi aplicaţie şi include detalii privitoare la afişarea tuturor informaţiilor pe ecranul
calculatorului. De asemenea, mai include şi partea de preluare a datelor de la utilizator.
Logica aplicaţiei (afacerii) se referă la acea parte a programului care decide ce acţiuni trebuie să se
execute în diferite situaţii şi ea implementează regulile afacerii. Această parte mai este denumită
uneori şi logica afacerii deoarece ea reprezintă acea porţiune din program care implementează
regulile afacerii (business rules). În funcţie de tipul arhitecturii client/server logica aplicaţiei poate fi
plasată în totalitate pe calculatorul server, sau ea poate fi împărţită între client şi server.
Calculatorul server poate fi orice calculator de birou puternic, superservere specializate bazate pe
microprocesoare Intel, minicalculatoare, calculatoare mainframe sau chiar supercalculatoare şi al
cărui rol într-o reţea este acela de a furniza servicii şi resurse utilizatorilor. Funcţia de bază a
acestuia este responsabilitatea administrării accesului la baza de date: sortarea datelor, selectarea
acelora de care are nevoie clientul, asigurarea că alţi clienţi nu încearcă modificarea unor înregistrări
pe care alţi clienţi le vizualizează etc.

Arhitecturile client/server sunt de mai multe tipuri, dar toate prezintă în comun anumite avantaje şi
dezavantaje ale utilizării lor. Astfel dintre avantajele utilizării sistemelor client/server pot fi
menţionate:

1
• au o securitate mai bună;
• performanţele pot fi îmbunătăţite uşor, deoarece o mai bună proiectare a server-ului poate
duce la o mai bună coordonare a utilizatorilor care doresc servicii în acelaşi timp şi, de aici,
performanţe mai bune;
• raportul calitate / preţ este mai bun.
Iar dintre dezavantajele sistemelor client/server:
• complexitatea: sistemele client/server nu sunt simplu de configurat şi de administrat;
• necesităţi: pentru a putea deservi un număr mare de clienţi, server-ul trebuie să fie un
calculator foarte performant (deci scump);
• preţ: performanţele server-ului scad o dată cu creşterea numărului de utilizatori.

Arhitectura client/server a apărut datorită limitărilor arhitecturii file sharing. Această arhitectură
înlocuieşte server-ul de fişiere cu un server de baze de date. Utilizând un sistem de gestiune a
bazelor de date, cererile utilizatorilor pot fi soluţionate direct, reducându-se totodată traficul pe reţea
prin furnizarea datelor strict necesare utilizatorului, şi nu a întregului fişier. Ea îmbunătăţeşte
actualizarea multi-user direct prin intermediul unei interfeţe utilizator grafice (GUI - Graphical User
Interface) front-end către o bază de date partajată. Arhitectura client/server fiind o arhitectură
stratificată, straturile pot fi proiectate independent unul faţă de celălalt şi realizate de diferiţi
specialişti, dar care trebuie să se asigure că legăturile dintre aceste straturi (numite interfeţe) sunt
proiectate corect.
Datorită faptului că arhitectura client/server are la bază trei componente (clientul, server-ul şi
reţeaua), modalitatea în care sarcinile sunt distribuite celor doi participanţi (clientul şi server-ul)
determină şi tipurile de arhitecturi client/server utilizate în proiectarea aplicaţiilor. Astfel, putem
clasifica arhitecturile client/server în următoarele tipuri:
• arhitectura pe două niveluri;
• arhitectura pe trei niveluri;
• arhitecturi pe mai multe niveluri.

Arhitectura client/server pe două niveluri

Arhitectura client/server pe două niveluri a fost dezvoltată în anii 1980 având drept sursă arhitectura
file server, şi a avut drept scop îmbunătăţirea următoarele caracteristici: utilizabilitatea prin

2
intermediul unei interfeţe prietenoase, bazate pe forme; scalabilitatea prin deservirea până la 100 de
utilizatori (arhitectura file server este potrivită numai pentru un număr mic de utilizatori) şi
flexibilitatea care permite partajarea datelor, în mod normal în interiorul unui mediu eterogen.
Această arhitectură este utilizată în mod frecvent în sistemele de prelucrare a informaţiilor în care
gestiunea şi operaţiile sistemului nu sunt complexe.

Prima generaţie a aplicaţiilor client/server a fost în general implementată în două niveluri logice şi
două niveluri fizice (hardware). O aplicaţia client/server pe două niveluri este împărţită în două părţi
distincte unde o porţiune rulează pe calculatorul client şi o porţiune separată rulează pe calculatorul
server. Astfel, aplicaţia este împărţită între client şi server.

Modelul client/server pe două niveluri


Această arhitectură constă din trei componente distribuite pe două niveluri: clientul (consumatorul
de servicii) şi server-ul (furnizorul serviciilor). Aceste trei componente sunt:
• interfaţa de sistem cu utilizatorul;
• logica aplicaţiei (administrarea prelucrării);
• gestiunea bazei de date.
În cadrul acestei arhitecturi interfaţa de sistem cu utilizatorului (logica prezentării) este plasată în
mod exclusiv în mediul de lucru al utilizatorului (clientul) şi serviciile de gestiune a bazei de date
(logica accesului la baza de date) sunt plasate pe un server care este cel mai puternic calculator care
deserveşte reţeaua. Administrarea prelucrării este împărţită între client şi server, prin crearea celor
două niveluri: un nivel corespunzător aplicaţiei (logica afacerii – reprezintă partea programului care
implementează condiţiile în care se desfăşoară afacerea) şi un nivel corespunzător bazei de date
(validarea din partea server-ului).

În proiectarea celor mai multe aplicaţii care au la bază această arhitectură, majoritatea porţiunii de
prelucrare a aplicaţiei este plasată în mediul clientului, iar serverul de gestiune a bazei de date
furnizează porţiunea de prelucrare privind accesul la date.

3
Arhitectura client/server pe trei niveluri

Arhitectura pe trei niveluri apărută în anii 1990 încercă să elimine deficienţele arhitecturii
client/server pe două niveluri. În cadrul acestei arhitecturi, este adăugat un nivel suplimentar (numit
nivel de mijloc, sau server de aplicaţii), între client (interfaţa de sistem cu utilizatorul) şi server-ul
bazei de date, care are rolul de a prelucra regulile afacerii, deci eliberează clientul de logica
aplicaţiei şi a tranzacţiei. Motivul amplasării regulilor afacerii pe un nivel separat este dat de
frecvenţa destul de mare a modificărilor la care sunt supuse acestea, iar amplasarea acestora într-un
nivel separat, permite în acest mod o actualizare a acestora mult mai uşoară decât în cazul în care
acestea erau incluse în interfaţa cu utilizatorul.

Arhitectura client/server pe trei niveluri este utilizată atunci când noua aplicaţie client/server
distribuită trebuie să permită (comparativ cu arhitectura pe două niveluri) performanţe mai bune,
flexibilitate, mentenabilitate (întreţinere), reutilizabilitate, şi scalabilitate, în timp ce se ascunde
complexitatea prelucrării distribuite faţă de utilizator. Aceste caracteristici fac din arhitectura
client/server pe trei niveluri o alegere des întâlnită pentru aplicaţiile Internet şi pentru sistemele
informatice axate pe reţea (net-centric information systems).

O primă diferenţă între aplicaţiile pe două şi pe trei niveluri este dată de prezenţa unui nivel software
suplimentar pe server. Dacă aplicaţiile client/server pe două niveluri tind să pună logica afacerii fie
pe partea client şi trecerea înregistrărilor (datele) în baza de date (model cu client subţire), sau
trecerea înregistrărilor în baza de date unde proceduri stocate şi declanşatoare (trigger-e)
implementează logica aplicaţiei (model cu client gras), aplicaţiile pe trei niveluri tind să treacă
mesaje între porţiunile client şi server ai codului aplicaţiei. Porţiunea de server îndeplineşte logica
aplicaţiei, apoi trimite tranzacţii către baza de date. În comunitatea client/server logica aplicaţiei este
numită regulile afacerii (business rules).

Beneficiile aduse de arhitectura client/server pe trei niveluri includ:


• scalabilitate;
• un trafic de reţea în general redus;
• flexibilitate.

4
Scalabilitatea este îmbunătăţită deoarece codul server-ului şi bazele de date sunt separate (ele pot
exista iniţial pe un singur calculator gazdă şi mai târziu pot fi separate). Mai multe servere de
aplicaţii pot comunica cu o bază de date centrală sau un server de aplicaţie poate deservi clienţii în
timp ce accesează mai multe baze de date ca un sistem extins.

Flexibilitatea este îmbunătăţită deoarece clientul, server-ul şi sistemele de baze de date pot fi fiecare
înlocuite fără să afecteze celelalte componente, furnizând interfeţe care de asemenea nu trebuiesc
modificate.

Cele mai multe aplicaţii comerciale care folosesc baze de date utilizează modelul client/server pe
trei niveluri cu scopul de a obţine scalabilitate şi flexibilitate. Aplicaţiile intranet bazate pe Web sunt
de asemenea în general aplicaţii client/server pe trei niveluri.

Modelul client/server pe trei niveluri

Primul nivel (clientul) al arhitecturii client/server pe trei niveluri este reprezentat de interfaţa
sistemului cu utilizatorul (sesiuni de lucru, ferestre de dialog, ferestre pentru introducerea datelor,
administrarea afişării etc.), adică logica prezentării.

Al treilea nivel (server-ul de baze de date) furnizează funcţionalitatea gestiunii bazei de date şi este
dedicată serviciilor de fişiere şi date, respectiv logica accesului la baza de date şi validarea din
partea server-ului. Componenta de gestiune a datelor garantează că datele sunt consistente de-a
lungul mediului distribuit prin utilizarea unor caracteristici precum blocarea datelor, consistenţa şi
replicarea acestora. Conectivitatea între niveluri poate fi modificată în mod dinamic în funcţie de
cererile utilizatorilor pentru date şi servicii.

Nivelul de mijloc (server-ul de aplicaţii) furnizează servicii de administrare a regulilor afacerii şi a


prelucrării datelor care sunt partajate de mai multe aplicaţii. Acest nivel de mijloc asigură
performanţă, flexibilitate, mentenabilitate, reutilizabilitate şi scalabilitate prin centralizarea logică a
5
proceselor. Această centralizare face ca administrarea şi gestiunea modificărilor să fie mai uşoară
prin localizarea funcţionalităţii sistemului astfel încât modificările sunt executate o singură dată şi
plasate pe server-ul nivelului de mijloc pentru a fi disponibile de-a lungul întregului sistem. În plus,
acest nivel controlează tranzacţiile şi interogările asincrone pentru a se asigura că acestea sunt
efectuate complet.

Arhitectura client/server pe trei niveluri

O altă sarcină a nivelului de mijloc este de a gestiona integritatea bazelor de date distribuite prin
intermediul unui proces numit actualizarea în două faze a bazei de date care furnizează accesul la
resurse bazat pe nume în loc de locaţii, îmbunătăţind astfel scalabilitatea şi flexibilitatea pe măsură
ce componentele sistemului sunt adăugate sau mutate.

Pentru implementarea nivelului de mijloc există mai multe modalităţi, precum:


• monitorizarea procesării tranzacţiei;
• server-e de mesaje;
• server-e de aplicaţii.
Nivelul de mijloc permite deservirea unui număr mare de utilizatori (peste 100, comparativ cu
arhitectura client/server pe două niveluri), prin furnizarea unor funcţii precum: organizarea prin
aşteptare, interogări, execuţia aplicaţiei şi coordonarea bazei de date (database staging). De
exemplu, dacă nivelul de mijloc îndeplineşte organizarea prin aşteptare, clientul poate preda cererile
sale nivelului de mijloc care va accesa datele şi va returna răspunsul către client. În plus nivelul de
mijloc are şi rolul de a planifica şi a acorda priorităţi pentru aplicaţiile în execuţie.

6
Arhitectura client/server pe mai multe niveluri

În cazul în care nivelul de mijloc este împărţit în două sau mai multe niveluri cu funcţiuni diferite
arhitectura este o arhitectură client/server pe mai multe niveluri. Cele mai cunoscute aplicaţii cu
o astfel de arhitectură sunt aplicaţiile Internet. Aceste aplicaţii au caracteristic clienţi scrişi în HTML
şi aplicaţia server scrise în C++ sau Java, dar golul între aceste două niveluri este prea mare pentru a
le putea lega împreună. În schimb, există un nivel intermediar (server-ul de Web) implementat într-
un limbaj de scriptare (scripting). Acest nivel primeşte cererile de la clienţii Internet şi generează
pagini html utilizând serviciile oferite de nivelul afacerilor. Totodată el furnizează suplimentar o
separare între organizarea (amplasarea) aplicaţiei şi logica aplicaţiei. În acest scop, mai recent
mainframe-urile au început să fie din nou utilizate drept server-e în arhitecturi distribuite pentru a
stoca baze de date de dimensiuni mari şi pentru a implementa securitatea reţelei (arhitectura
întreprinderii colaborative/distribuite).

Arhitectura client/server modernă

În momentul de faţă arhitecturile client/server utilizează drept server-e nu numai calculatoare


personale puternice ci şi mainframe-uri, care permit stocarea unei cantităţi mari de date, precum şi
minicalculatoare, numite acum midrange.

S-a observat că există mai multe tipuri de arhitecturi client/server. Atunci când se doreşte
implementarea unei noi arhitecturi trebuie să se aibă în vedere o multitudine de factori care pot duce
la succesul acestei implementări, cum ar fi:
• Maturitatea tehnologiei de implementare. Este de preferat să fie adoptată o tehnologie
care este deja recunoscută şi implementată în mai multe sisteme, decât una care este încă în
stadiul de experiment. De asemenea, trebuie să se aibă în vedere tehnologiile care deja au

7
fost încorporate într-un sistem real, instrumentele care permit implementarea, sau produsele
comerciale existente.
• Costurile şi limitările de implementare. Atunci când se decide adoptarea unei anumite
tehnologii pentru implementarea unui sistem trebuie să se aibă în vedere faptul că nu există o
tehnologie care să poată fi aplicată pentru orice situaţie şi că fiecare tehnologie are asociate
anumite costuri.
• Dependenţele de alte tehnologii. Trebuie avută în vedere identificarea altor tehnologii care
pot influenţa sau sunt influenţate de tehnologia adoptată.
• Alternativele existente. O tehnologie alternativă este acea tehnologie care poate fi utilizată
pentru atingerea aceluiaşi scop; această tehnologie este diferită de o tehnologie dependentă
sau complementară, care trebuie să fie utilizată cu tehnologia care a fost aleasă pentru scopul
propus. De exemplu, alternativele pentru arhitecturile client/server pot fi arhitecturile
mainframe sau file sharing.
• Tehnologii complementare. O tehnologie complementară este una care în combinaţie cu
tehnologia utilizată va realiza beneficii sau capacităţi care nu pot fi obţinute când
tehnologiile sunt utilizate separat. Tehnologiile complementare pentru arhitecturile
client/server sunt instrumentele CASE deoarece ele facilitează dezvoltarea arhitecturală
client/server şi sistemele deschise deoarece ele facilitează dezvoltarea arhitecturilor care
îmbunătăţesc scalabilitatea şi flexibilitatea sistemului.

Aplicaţii client/server

O aplicaţie distribuită constă dintr-o parte server (back-end), unde sunt executate majoritatea
procesărilor şi memorate bazele de date, şi o parte client (front-end) care furnizează o interfaţă
utilizator, prin intermediul căreia utilizatorul poate executa cereri către server.

În modelul client/server, o aplicaţie este împărţită într-o componentă client şi o componentă server.
Partea client a aplicaţiei rulează pe o staţie de lucru şi primeşte date care sunt introduse de utilizator.
Componenta client pregăteşte datele pentru server, şi apoi trimite informaţiile procesate server-ului.
Componenta server primeşte cererea clientului, o procesează şi returnează informaţia clientului.
Clientul primeşte informaţia returnată de server şi o prezintă utilizatorului prin intermediul interfeţei
utilizator.

8
O aplicaţie client/server este o aplicaţie distribuită alcătuită dintr-o parte server (back-end) şi o
parte client (front-end). Prin aplicaţie distribuită se înţelege o aplicaţie care constă din două sau
mai multe părţi care rulează pe calculatoare diferite dar care acţionează împreună. Exemple de
aplicaţii client/server:
• un server de poştă (mail), cum ar fi Microsoft Exchange Server (back-end), cu utilizatori
care utilizează pe calculatoarele client Microsoft Outlook (front-end);
• un server de baze de date, Microsoft SQL Server (back-end), iar utilizatorii rulează pe
calculatoarele client Microsoft Access (front-end);
• aplicaţie Web care este scrisă utilizând ASP (Active Server Page) pentru IIS (Internet
Information Services), care reprezintă partea back-end (server-ul), şi care este accesată de la
un calculator client (partea front-end) ce utilizează un browser Web precum Microsoft
Internet Explorer.

Aplicaţiile client/server cele mai uzuale sunt:


• Aplicaţii de baze de date – într-o astfel de aplicaţie software-ul bazei de date se execută pe
calculatorul server, iar programul care accesează baza de date se execută pe calculatorul
client. Programul client permite utilizatorilor să acceseze informaţiile stocate în baza de date
folosind de exemplu o interfaţă Windows. Programul care rulează pe partea server
corespunde părţii care realizează controlul bazei de dare în aplicaţia respectivă. În acest tip
de aplicaţie client/server clientul solicită servicii de interogare a bazei de date server-ului.
Aceste interogări se fac de obicei prin intermediul comenzilor limbajului de interogare
structurată (SQL). Este o aplicaţie tipică arhitecturii client/server pe două niveluri.
• Poşta electronică – este una din aplicaţiile client/server cele mai obişnuite, care are rolul de a
stoca şi de a transmite mesaje.
• Groupware – este o aplicaţie client/server care permite lucrul eficient în comun în cadrul
unor proiecte colaborative etc.