Arquitectura per capes¶
El servidor és el nucli de l'aplicació, ja que és l'encarregat de gestionar tota la lògica de negoci i l'accés a les dades. Per a mantindre'l organitzat, mantenible i fàcil d'ampliar, la seua implementació ha de seguir una arquitectura per capes, que permeta separar les diferents responsabilitats de l'aplicació i facilite la seua evolució i manteniment.
Capes de l'arquitectura¶
Figura 1. Arquitectura per capes de l'aplicació.
Les capes que s'han de definir en el servidor són les següents:
-
Controladors: és la "cara visible" del servidor. Defineix les rutes (endpoints) de l'API REST i s'encarrega de gestionar les peticions de l'usuari i de retornar les respostes adequades.
Responsabilitats:
- Definir les rutes (
/productes,/usuaris, etc.). - Extraure les dades de la petició (paràmetres de la URL, cos JSON, capçaleres).
- Cridar a la funció corresponent de la capa de Domini.
- Retornar el codi d'estat HTTP adequat (
200,201,400,404,500).
- Definir les rutes (
-
Domini: és el "cervell" de l'aplicació, on resideix la lògica de negoci. Ací es decideix què es pot fer i què no, seguint les regles del projecte.
Aquesta capa conté:
- Entitats: Classes que representen els objectes de negoci de l'aplicació.
- Serveis: Classes que contenen la lògica de negoci de l'aplicació.
Responsabilitats:
- Realitzar validacions de seguretat o de coherència.
- Processar dades (filtrar, ordenar, transformar).
- Coordinar múltiples operacions.
- Cridar a la capa de Persistència per llegir o guardar informació.
-
Persistència: és l'única capa que té permís per a parlar amb la base de dades. El seu objectiu és abstreure la resta de l'aplicació dels detalls concrets de com es guarden i es consulten les dades.
Aquesta capa conté:
- Repositoris: Classes que s'encarreguen de gestionar l'accés a les dades de l'aplicació.
- DAOs: Classes que s'encarreguen de realitzar les consultes a la base de dades.
- RowMappers: Classes que s'encarreguen de mapar les files de la base de dades a entitats de domini.
Responsabilitats:
- Executar les consultes SQL.
- Convertir el resultat de les consultes a entitats de domini.
- Gestionar la connexió amb la base de dades.
Importància de les interfícies¶
Dins d'una arquitectura per capes, les interfícies actuen com un contracte entre les diferents capes del sistema: defineixen què fa un component sense determinar com ho fa.
L'ús d'interfícies aporta:
-
Desacoblament: la implementació de cada capa és independent de les altres, i es pot canviar sense afectar la resta del sistema.
Per exemple, si es vol canviar la base de dades de MariaDB a MongoDB, sols cal modificar la capa de persistència.
-
Facilitat per a fer proves: permeten substituir una implementació real per un objecte simulat (mock) que emula el seu comportament, per a provar cada capa de manera aïllada.
-
Inversió de dependències: seguint els principis SOLID, les capes superiors no depenen de les capes inferiors, sinó d'abstraccions. Això minimitza l'impacte de futurs canvis o migracions de tecnologia.

