MECANISME PENTRU COMUNICATII
In toate
exemplele anterioare in care procesarea aplicatiilor de pe un calculator
se face prin mai multe calculatore, in sensul fizic, am presupus ca in
aceste cazuri exista o retea de
comunicatie, care permite unui calculator sa schimbe informatia
cu un altul.
Intr-un mediu client-server, comunicatiile
prin retea pot fi simple (sau inexistente, in cazul in care componenta client si server ruleaza
pe acelasi calculator).
Intr-un exemplu simplu de folosire a doua calculatoare, reteaua
poate consta dintr-un singur cablu folosit la conectarea clientului de
server. Calculatorul client trimite cereri la calculatorul server prin cablu, iar
calculatorul server trimite inapoi rezultatele la client prin acelasi
cablu.
De vreme ce
sunt doar doua calculatoare, calculatorul
client nu are nici o greutate in a gasi serverul adecvat. Serverul e pur si simplu calculatorul de la capatul celalalt al cablului.
Intr-un caz complex, pot exista multe calculatoare client si mai
multe calculatoare server,toate plasate in locuri
diferite de pe glob. Reteua de comunicatie poate consta intr-un numar
de retele cu arie locala (LAN) separate, sau de retele
interconectate folosind o arie mare de retea (WAN) folosite pentru
usurarea transmisiei. Legaturile dintre subretele pot fi implementate
prin folosirea unei varietati de dispozitive de interconectare , cum
ar fi magistrale, porti((in engleza).
O mare parte a softului folosit de
organizatii la introducerea
arhitecturii aplicatiei client-server
permit ca componente ale aplicatiei individuale sa fie construite ca si cum ar fi o simpla
legatura punct la punct intre un computer client si unul
serverul sau asociat.
Protocoalele de transport de date
Transmiterea actuala a datelor intr-o
retea de calculatoare e facuta de softwareul retelei ce respecta o arhitectura particulara de
retea. Fiecare arhitectura de retea defineste o smultime de
protocoale, uneori numite familii de protocoale sau suite de protocoale, ce
controleaza comunicatiile in retea. Acestea sunt cateva
arhitecturi de retea sau familii de protocoale ce sunt deseori folosite in introducerea
calculului client-server: TCP/IP, NetWare IPX/SPX, AppleTalk, System Network
Arhitecture(SNA), Netbios Open System Interconection(OSI).
Uneltele de dezvoltare ce sunt folosite la construirea
aplicatiilor de calcul in mediul client-server, pentru cea mai mare parte a lor, permit
aplicatiilor sa fie construite fara date privitoare la
mecanismele de transport folosite. Aplicatiile client-server pot folosi in
mod normal mecanisme de comunicare ce ruleaza pe baza facilitatilor
de transport ale
datelor puse la dispozitie de softul retea. Inainte de a examina aceste mecanisme de comunicare, ne vom
opri mai intai la un set de functii suport care ar trebui puse la
dispozitie de mediul de lucru pentru a sustine aplicatiile
client-server.
Functii suport de distributie
S-a indentificat un numar de
functii ale transportului de distributie cateva dintre cele mai importante dintre ele
sunt :
Independenta transportului in
retea In zilele noastre se folosesc arhitecturi de
retea WAN, fiecare cu protocoale de
transport proprii. Aceste arhitecturi includ SNA, OSI, TCP/IP
Novell IPX/SPX si s.a.m.d. Cea mai mare parte din aceste
familii de protocoale de transport date sunt inzestrate cu mulate functii. Cele mai multe softwareuri client-server
suporta o varietate de mecanisme de transport si dezvoltatorul BD are nevoie deseori sa examineze
protocoalele specifice ce vor fi folosite pentru
transmiterea datelor prin retea.
Mecanismul de activare a proceselor Aplicatiile distribuite folosesc de
obicei un numar mare de procese independente ce ruleaza pe un sistem
distribuit intr-o retea. Pentru a
se folosi cel mai bine resursele de calcul, e de dorit ca, componentele software
sa fie executate doar cand prelucrarea pe care o executa
e ceruta cu adevarat. De aceea sistemele de operare si subsistemele software
de retea trebuie sa ofere mecanisme de incarcare a componentelor aplicatiei
in memorie si sa le execute la cerere.
Mecanismul de intilnire client-server. O activitate fundamentala trebuie facuta cand
o componenta client face o cerere pentru un serviciu este sa
localizeze sistemul
de calcul pe care este dispomnibial pe componenta server cea mai apropiata.
Mecanismele de gestiune
a firelor. Un fir consta din executia unei proceduri ce poate opera in concurenta cu executia aceleiasi
sau a altor proceduri diferite din
acelasi program de aplicatie. Serverele permit deseori operatii
"multi thread" pentru a executa aceleasi
proceduri in mod concurent, cu scopul de a servi
mai multi clienti in acelasi timp. Procesarile
client pot beneficia si de operatii multifir prin punerea de
intrebari la mai multe servere in mod concurent. Multimea de sisteme de operare ce sunt in mod obisnuit
folosite in mediul client-server sunt sisteme de operare multifir.
Mecanisme de
securitate. Mecanismele de securitate sunt la fel de importante pentru
aplicatiile distribuite ca si pentru aplicatiile centralizate.
Oricum, sunt mult mai greu de introdus intr-un mediu distribuit. Un aspect important al securitatii e autentificarea. Mecanismele Network-wide fac posibil ca o
componenta software sa verifice identitatea utilizatorilor sau ale altor componente
software. Alt aspect al securitatii este autorizarea. Autorizarea
faciliteaza controlul asupra accesului dat utilizatorului la resursele din
mediul distribuit. O a treia importanta facilitate a
securitatii este criptarea datelor. Criptarea e folosita sa
previna parti neautorizate sa inteleaga o
transmisie ce are loc intre doua parti ce comunica.
Mecanismele de codare si definire a datelor. Acestea ar trebui sa fie disponibile pentru ca permit
structurilor de date
ce sunt schimbate intre partenerii de comunicatie sa fie definite
si codate pentru
transmisia in orice fel, care e independenta de orice tehnologie de calcul
sau comunicatie. Tehnologia
distributiei implica un grad mare de metode pentru a defini
structurile de date cum ar fi notatia
definitiilor datelor Abstract Syntax Notation One(ASNI).In final, asemenea mecanisme suport vor
fi p
use pe toate calculatoarele
dintr -o organizatie retea, probabil prin marirea sistemelor de
operare si a
suportului de retea
Mecanisme pentru comunicatii
La un nivel mai ridicat decat protocoalele de
transport suportul de distributie comuna exista un numar de mecanisme de
comunicatie pe care componentele aplicatiei il folosesc pentru a face
munca actuala de schimb de informatii intre client si aplicatie,
si care consta in caduri nedocumentate care vor fi greu de tranformat pentru un mediu client
-server.
Ca si insasi componentele
aplicatie, mecanismele de comunicatie pe care componentele
aplicatie le folosesc pentru a schimba informatii, pot fi facute
independent de protocolul de transport al datelor specific folosit in
retea.
Tehnologiile ce sunt disponibile in mod
curent pentru a crea aplicatii de calcul distribuite au "marit " punctul in care multe dintre
variante se confrunta acum cu producatorul aplicatiilor care
doreste sa creeze aplicatii client-server. Fiecare dintre aceste variante reprezinta
un tip particular de mecanism de distributie, ce
au un set de caracteristici specifice si fiecare este potrivit pentru
tipuri specifice de aplicatii.
Alegerea unei tehnologii de comunicatii,
are unele similaritati cu alegerea unui limbaj de programare
particular pentru o aplicatie. Un producator de aplicatii poate alege un
limbaj particular pentru un numar de motive. Limbajul ales poate oferi cea mai buna
performanta in mediul ales, poate avea constructii de limbaj
care sunt potrivite aplicatiei.
In acest fel, tehnologia comunicatiilor particulare e
guvernata de un numar de factori pe care un
"producator" alege sa ii foloseasca. Ca si alegerea unui
limbaj de programare, deseori nu exista nici o alegere clara
in selectarea mecanismului de distributie si deseori un numar de
de mecanisme de distributie diferite pot ajunge sa trebuiasca
sa fie combinate sa intalneasca nevoile unei aplicatii
particulare.
Urmatoarea sectiune descrie
patru tehnologii diferite ce sunt folosite in mod
comun in mediul client-server pentru manipularea comunicatiilor intre
componentele aplicatie:
Mecanisme de transmitere de mesaje
Mecanisme de apelare a procedurii la distanta
Mecanisme de comunicatie
peer-to peer
Mecanisme mesaje
Fiind data o
situatie a unei aplicatii particulare, este
probabil ca mai mult de unul din cele patru mecanisme de comunicatie
de mai sus vor fi potrivite pentru acea aplicatie. Deasemenea, in aplicatiile distribuite
complicate, este probabil sa fie necesar sa
se foloseasca mai mult de un mecanism de comunicatie. De aceea, cele patru patru tehnologii
distincte descrise aici ar trebui sa nu fie considerate in nici un caz
exclusive, caci nu sunt singurele mecanisme de comunicatie posibile ce pot fi
folosite si mult mai mult vor fi introduse
ca si calcul client -server. Sectiunea urmatoare descrie
fiecare din cele patru mecanisme de comunicatie de mai sus care sunt
folosite adesea la introducerea
comunicatiilor in mediul client-server.
Independenta transportului in retea
O mare varietate de arhitecturi de retea se folosesc
azi, fiecare cu propriile protocoale de transport. Aceste arhitecturi includ SNA,OSI,TCP/IP Novell IPX/SPX si
s. a. m. d.
Pentru cea mai mare parte, toate aceste
familii de protocoale de date pun la dispozitie o mare arie de functii. Cele mai multe softuri client-server
suporta o varietate de mecanisme de transport si producatorul BD are nevoie deseori
sa fie preocupat cu protocoalele specifice ce vor fi folosite sa
"care" datele prin retea.
Mecanismul activarii procesului
Aplicatiile distribuite "folosesc " de obicei un numar mare
de procese independente ce ruleaza pe un sistem distribuit print-o
retea. Pentru a se folosi cel mai bine resursele de calcul, e de dorit ca,
componentele soft sa fie executate doar cand
prelucrarea pe care o fac e ceruta cu adevarat. De aceea sistemele de
operare si subsistemele "soft retea" trebuie sa
ofere mecanisme "retea" pe
scara larga, pentru incarcarea componentelor aplicatie in
memorie si sa le execute la cerere.
Mecanismul de intilnire client-server
O cerere fundamentala trebuie
facuta cand o componenta client face o cerere pentru un serviciu.
Mecanismele de conducere "fir
Un fir consta in executia unei
proceduri ce poate opera in concurenta cu executia acelorasi sau a
diferitelor proceduri din acelasi program de aplicatie. Serverele
permit deseori operatii "multiple fire" pentru a
executa aceleasi proceduri in mod concurent, cu scopul de a fi sa
serveasca multi clienti in acelasi timp. Procesarile
client pot beneficia si de operatorii multifir prin punerea de
intrebari la mai multe servere in mod concurent. Multe sisteme de
operare ce sunt folosite in mod comun in mediul
client-server sunt sisteme de operare multifir.
Mecanisme de securitate
Mecanismele de
securitate sunt la fel de importante pentru aplicatiile distribuite ca
si pentru aplicatiile centralizate. Oricum, sunt mult mai greu de introdus intr-un
mediu distribuit. Un aspect important al
securitatii e autentificarea. Mecanismele Networkwide fac posibil ca o
componenta soft sa verifice identitatea
utilizatorilor sau alte componente soft. Alt aspect al securitatii este autorizatia. Autorizatia
faciliteaza controlul asupra accesului dat utilizatorului la resursele din
mediul distribuit. O a treia importanta facilitate a
securitatii este criptarea datelor. Criptarea e folosita sa
previna parti neautorizate sa inteleaga o
transmisie ce are loc intre doua parti ce comunica.
Mecanismele de codare si definire a datelor
Acestea ar trebui sa fie disponibile pentru ca permit structurilor
de date ce sunt schimbate intre partenerii de comunicatie sa fie
definite si codate pentru transmisia in orice fel, care e
independenta de orice tehnologie de calcul sau comunicatie. Tehnologia
distributiei implica un grad mare de metode pentru a defini
structurile de date cum ar fi notatia definitiilor datelor Abstract
Syntax Notation One(ASNI).
Mecanismul de transmitere al mesajelor
Mecanismul
de transmitere al mesajelor consta in schimbul direct de unitati
de date intre componentele client si server ce
ruleaza pe sisteme de calcul diferite. Cu acest transfer de mesaje clientul A trimite
in retea un mesaj al carei destinatie e serverul B. Serverul B
primeste mesajul, face prelucarile cerute si apoi transmite un
set de mesaje ce poarta rezultate inapoi la clientul A. (fig7. 6). Aplicatiile distribuite de mare
complexitate ce introduc
orice configuratie client-server, pot fi construite folosind simple
mecanisme de transmitere (trecere de la A la B) de mesaje. Doua forme de mecanisme de transfer a mesajelor
pot fi puse la dispozitie pentru introducerea aplicatiilor distribuite
:mecanisme de conectare-orientata si neconectare.
Fig. 7. 6 Mecanism de transmitere a mesajelor
Mecanisme de conectare cu pierderi
Cu un mecanism de livrarea datelor prin conectare cu pierdere
numit uneori si mecanism datagram,
aplicatia sursa transmite doar un mesaj in retea si
indica destinatia sau destinatiile la care mesajul trebuie
transmis. Mecanismul de transfer al mesajelor face eforturi foarte mari de a
livra msajul la destinatie, dar aplicatia sursa nu e
informata daca livrarea a fost cu adevarat facuta.
Mecanismele
orientate pe conexiuni
Cu un mecanism
de trecere a mesajelor orientate pe conectari, doua procese de comunicare
fac schimb de mesaje de control cu scopul de a stabili o asociere logica
intre ele numita conexiune. Conexiunea e folosita
cu scopul de a se asigura ca mesajele sunt schimbate intre cele doua
procesoare. Cu un serviciu orientat pe conexiune, mecanismele sunt puse
la dispozitie in
general pentru detectarea si recuperarea din situatii in care
mecanimele sunt pierdute copiate sau recuperate pe durata transmisiei. Cu un mecanism de transmitere de mesaje orientate pe conexie, o
aplicatie sursa poate transmite un mesaj intr-o singura
operatie doar la o destinatie. E nevoie de o conexiune separata pentru fiecare destinatie
daca sunt implicate mai multe destinatii.
Si mecanismele de trecere a mesajelor
fara conexiune si cele orientate pe conexiune pot fi folosite
pentru crearea de aplicatii distribuite fiabile.
Mecanismul
de apelare a functiilor
la distanta
Mecanismele Remote procedure call(RPC) extind paradigma programarii apelarii de
proceduri de la mediul sistemului de calcul local la un mediu distribuit. Cu o
facilitate RPC, procedura ce apeleaza si
procedura apelata se pot executa in sisteme diferite din retea (fig 7.
7).
| | | |
|
Procedura de
apelare(client)
|
| |
Procedura de apelare(server)
|
|
Fig. 7. 7
Mecanismul RPC face posibila sa se ascunda de programatorul aplicatiei
faptul ca are loc distributia. Un scop
principal al unui mecanism RPC este sa faca sa para pentru
programator ca procedurile indepartate sunt invocate in exact aceeasi maniera ca si
procedurile locale. Nu este posibil sa se
ajunga la transparenta totala pentru ca sintaxele
operatiilor distribuite sunt deseori diferite in mare masura de
acelea a acelorasi operatii facute local. De exemplu, cand procedura apelata se
executa pe un sistem de calcul diferit de acela care apeleaza, pot aparea un numar de
probleme, care nu apar atunci cand cele doua proceduri ruleaza pe
acelasi sistem de calcul, incluzind urmatoarele:
Poate exista o pierdere
temporara a conexiunii intre cele doua componente in perioada
executiei.
Cele doua aplicatii nu au acces la
memoria partajata care poate fi folosita pentru transferul de
parametrii si rezultate.
Pot aparea probleme care sunt legate gesiune
si securitate si care nu apar in mediul local.
Majoritatea mecanismelor RPC pun la dispozitie
facilitati pentru mentinerea metodelor de programare
conventionale pe cat posibil si pentru manevrarea multor din
complexitatile care sunt mostenite in mediul distribuit. Mecanismele
RPC sunt construite de obicei din mecanismele de trecere a mesajelor si introduc un
protocol simplu de cerere raspuns. Procedura apelanta face o cerere
de executie a procedurii apelate si poate trece o serie de parametrii
la procedura apelata. Procedura apelata executa atunci isi
poate transmite un set de rezultate la procedura
apelanta. Un mecanism RPC foloseste formatarea si livrarea
mesajelor in retea, care trebuie sa circule intre cele doua proceduri, folosind un
proces numit marshaling. Motivul principal pentru folosirea mecanismului RPC in
mediile distribuite, este ca depun mult mai multa
munca pe care o implica functiile de distributie si
face mai usor de realizat aplicatia pentru dezvoltatori.
Mecanismele de comunicatie "peer to -peer "
Mecanismele de comunicare " de la egal la
egal" sunt similare cu mecanismul de transfer a mesajelor dar pun la
dispozitie un suport integrat
pentru folosirea operatiilor commit in doua faze intr-un context de procesare de tranzactii. Aceste mecanisme permit aplicatiilor
client si server sa comunice asincronic
si totusi sa retina o legatura
partajata a unui dialog ce poate consta in interactiuni multiple. Cu acest tip de mecanism de comunicatie, comunicatiile
au loc intre doua sau mai multe componente soft care organizate
ierarhic cu un initiator al schimbului de mesaje cu root ..
Sunt cateva protocoale de interfete de programe de aplicatii(API) standard
pentru mecanismele de comunicatie "de la egal la egal". Cel mai cunoscut este
protocolul 6. 2 SMA de la IBM si asociatul sau Interfata
programabila comuna pentru comunicatii(CPI-C)
si Comunicatii Avansate de la Program la Program (APPC
)-interfete programabile de aplicatii.
Mecanisme " de punere in asteptare " a mesajelor
Cu un mecanism "asteptare" uneori numit serviciu de
maesaje de incredere, o componenta aplicatie ce ruleaza pe un
sistem de calcul poate cerceta o multime mesaje ce sunt adresate altor
componente de aplicatii ce pot rula
pe alte sisteme de calcul (fig7. 8) In multe cazuri mesajele spuse de
componenta sursa nu cer raspunsuri imediate. Un proces sursa
spune un mesaj si nu asteapta un raspuns dar face imediat
alta treaba. Componenta destinatie poate fi
sau nu activa in momentul cand mesajul e ajuns. Daca
componenta destinatie nu e activa, mecanismul poate
astepta ca, componenta destinatie sa devina activa
pentru transmiterea mesajului, sau poate face pasi pentru activarea procesului
de destinatie, depinzind de cererile aplicatiei.
Message
-Queuing Facility