Software Architecture Patterns de Mark Richards

Concepte cheie

Observați în figura 1-2 că fiecare dintre straturile arhitecturii este marcat ca fiind închis. Acesta este un concept foarte important în modelul de arhitectură stratificată. Un strat închis înseamnă că, în timp ce o solicitare se deplasează de la un strat la altul, trebuie să treacă prin stratul aflat chiar sub el pentru a ajunge la următorul strat de sub acela. De exemplu, o cerere care provine din stratul de prezentare trebuie să treacă mai întâi prin stratul de afaceri și apoi prin stratul de persistență înainte de a ajunge în cele din urmă la stratul bazei de date.

Figura 1-2. Straturile închise și accesul la cereri

Atunci de ce să nu permitem stratului de prezentare accesul direct fie la stratul de persistență, fie la stratul de bază de date? La urma urmei, accesul direct la baza de date din stratul de prezentare este mult mai rapid decât să treacă printr-o grămadă de straturi inutile doar pentru a prelua sau salva informații din baza de date. Răspunsul la această întrebare se află într-un concept cheie cunoscut sub numele de straturi de izolare.

Conceptul de straturi de izolare înseamnă că modificările efectuate într-un strat al arhitecturii, în general, nu au impact sau nu afectează componentele din alte straturi: modificarea este izolată de componentele din acel strat și, eventual, de un alt strat asociat (cum ar fi un strat de persistență care conține SQL). Dacă permiteți accesul direct al stratului de prezentare la stratul de persistență, atunci modificările aduse la SQL în cadrul stratului de persistență ar avea un impact atât asupra stratului de afaceri, cât și asupra stratului de prezentare, producând astfel o aplicație foarte strâns cuplată, cu multe interdependențe între componente. Acest tip de arhitectură devine apoi foarte greu și costisitor de modificat.

Conceptul de straturi de izolare înseamnă, de asemenea, că fiecare strat este independent de celelalte straturi, având astfel puține sau deloc cunoștințe despre funcționarea internă a altor straturi din arhitectură. Pentru a înțelege puterea și importanța acestui concept, luați în considerare un efort mare de refactorizare pentru a converti cadrul de prezentare de la JSP (Java Server Pages) la JSF (Java Server Faces). Presupunând că contractele (de exemplu, modelul) utilizate între stratul de prezentare și stratul de afaceri rămân aceleași, stratul de afaceri nu este afectat de refactorizare și rămâne complet independent de tipul de cadru de interfață cu utilizatorul utilizat de stratul de prezentare.

În timp ce straturile închise facilitează straturile de izolare și, prin urmare, ajută la izolarea schimbărilor în cadrul arhitecturii, există momente în care are sens ca anumite straturi să fie deschise. De exemplu, să presupunem că doriți să adăugați un strat de servicii partajate la o arhitectură care să conțină componente de servicii comune accesate de componentele din cadrul stratului de afaceri (de exemplu, clase de utilități de date și șiruri de caractere sau clase de audit și logare). Crearea unui strat de servicii este, de obicei, o idee bună în acest caz, deoarece, din punct de vedere arhitectural, restricționează accesul la serviciile partajate la nivelul de afaceri (și nu la nivelul de prezentare). Fără un strat separat, nu există nimic din punct de vedere arhitectural care să restricționeze accesul stratului de prezentare la aceste servicii comune, ceea ce face dificilă guvernarea acestei restricții de acces.

În acest exemplu, noul strat de servicii ar sta probabil sub stratul de afaceri pentru a indica faptul că componentele din acest strat de servicii nu sunt accesibile din stratul de prezentare. Cu toate acestea, acest lucru prezintă o problemă în sensul că stratul de afaceri este acum necesar să treacă prin stratul de servicii pentru a ajunge la stratul de persistență, ceea ce nu are niciun sens. Aceasta este o problemă veche a arhitecturii stratificate și se rezolvă prin crearea unor straturi deschise în cadrul arhitecturii.

Așa cum este ilustrat în figura 1-3, stratul de servicii în acest caz este marcat ca fiind deschis, ceea ce înseamnă că cererile pot să ocolească acest strat deschis și să meargă direct la stratul de sub el. În exemplul următor, din moment ce stratul de servicii este deschis, stratului de afaceri i se permite acum să îl ocolească și să meargă direct la stratul de persistență, ceea ce este perfect logic.

Figura 1-3. Straturile deschise și fluxul de cereri

Utilizarea conceptului de straturi deschise și închise ajută la definirea relației dintre straturile de arhitectură și fluxurile de cereri și, de asemenea, oferă proiectanților și dezvoltatorilor informațiile necesare pentru a înțelege diferitele restricții de acces la strat în cadrul arhitecturii. Eșecul de a documenta sau de a comunica în mod corespunzător care straturi din arhitectură sunt deschise și închise (și de ce) are ca rezultat, de obicei, arhitecturi strâns cuplate și fragile, care sunt foarte dificil de testat, de întreținut și de implementat.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.