Clean Architecture
  • Clean Architecture
  • Che cosa si intende per struttura e architettura
  • Due diversi oggetti di valore
  • Panoramica sui paradigmi
  • La programmazione strutturata
  • La programmazione ad oggetti
  • La programmazione funzionale
  • Principi di progettazione
  • Il principio SRP (Single Responsibility Principle)
  • Il principio OCP (Open-Closed Principle)
  • Il principio LSP (Liskov Substitution Principle)
  • Il principio ISP (Interface Segregation Principle)
  • Il principio DIP (Dependency Inversion Principle)
  • I componenti
  • Coesione dei componenti
  • Accoppiamento dei componenti
  • Che cos'è l'architettura?
  • Indipendenza
  • Delimitazioni: tracciare una linea
  • Anatomia di una delimitazione
  • Politiche e livelli
  • Regole operative
  • Architettura "da urlo"
  • Architettura clean
  • Presenter e Humble Objects
  • Delimitazioni parziali
  • Livelli e delimitazioni
  • Servizi: grandi e piccoli
  • Delimitazione di test
  • Il database è un dettaglio
  • Il Web è un dettaglio
  • I framework sono un dettaglio
  • Caso di studio: vendita di video
  • Manca ancora qualcosa...
Powered by GitBook
On this page
  • Il tanto temuto monolito
  • Componenti di deployment
  • Processi locali
  • Servizi

Was this helpful?

Anatomia di una delimitazione

PreviousDelimitazioni: tracciare una lineaNextPolitiche e livelli

Last updated 5 years ago

Was this helpful?

Le delimitazioni possono assumere varie forme. In questo capitolo tratteremo alcune delle più comuni.

Il tanto temuto monolito

La forma più semplice delle delimitazioni è rappresentata dall'architettura monolitica, dove si ha un unico file eseguibile (.jar, .exe e così via) contenente un insieme di file. Pertanto, in questa architettura, il disaccoppiamento dei componenti non è fisico, ma solo a livello di codice sorgente. L'attraversamento delle delimitazioni avviene prevalentemente tramite una semplice chiamata a funzione. Questo assicura una comunicazione tra i vari componenti molto veloce ed economica.

Componenti di deployment

Questa è la più semplice rappresentazione fisica di una delimitazione. Consiste in un insieme di librerie raccolte all'interno di un file .war o anche in una semplice directory. In questa modalità il disaccoppiamento avviene solo a livello di deployment. A parte quest'unica eccezione, i componenti si comportano come nell'architettura monolitica. Essi continuano a comunicare tra di loro attraverso semplici chiamate a funzione.

Processi locali

Una delimitazione fisica ancora più forte è rappresentata dal processo locale. I processi locali operano nello stesso processore o nello stesso set di processori, ma in spazi di indirizzamento distinti. La comunicazione tra processi locali avviene tramite socket o code di messaggi. La strategia di segregazione tra processi locali è la stessa dei monoliti e dei componenti di deployment. Pertanto, il codice sorgente dei processi di alto livello non deve contenere riferimenti al codice dei processi di basso livello. Quest'ultimi devono fungere da semplici plugin.

Servizi

La delimitazione più forte a livello fisico è rappresentata dal servizio. I servizi, infatti, non dipendono dalla loro posizione fisica. Possiamo avere servizi dislocati anche in macchine differenti. La comunicazione tra servizi avviene tramite lo scambio di pacchetti di rete. Questo significa che le comunicazioni sono più lente rispetto le semplici chiamate a funzione. Per il resto valgono le stesse regole di disaccoppiamento viste precedentemente. Il codice sorgente dei servizi di alto livello non deve contenere alcun riferimento (nemmeno un url) di un servizio di basso livello.