Pattern per applicazioni non a strati
-
20-08-2019 - |
Domanda
In Patterns of Enterprise Application Architecture, Martin Fowler scrive:
Questo libro parla quindi di come decomporre un'applicazione aziendale in livelli e come funzionano questi livelli insieme. La maggior parte delle imprese non banali le applicazioni usano un livello architettura di qualche forma, ma in alcuni situazioni altri approcci, come tubi e filtri, sono preziosi. io non entrare in quelle situazioni, concentrandosi invece sul contesto di a architettura a strati perché è il molto utile.
Quali schemi esistono per la creazione di applicazioni / parti di un'applicazione senza livelli? Prendi un motore di modellazione statistica per un istituto finanziario. Potrebbe esserci un livello per l'accesso ai dati, ma mi aspetto che la maggior parte del codice sia in un singolo livello. Ti aspetteresti ancora di vedere i modelli Gang of Four in un tale livello? Che ne dici di un modello di dominio? Utilizzeresti OO o sarebbe puramente funzionale?
La citazione menziona tubi e filtri come modelli alternativi ai livelli. Posso facilmente immaginare un tale motore che utilizza le pipe come un modo per interrompere l'elaborazione dei dati. Quali altri modelli esistono? Esistono modelli comuni per aree come la pianificazione delle attività, l'aggregazione dei risultati o la distribuzione del lavoro? Quali sono alcune alternative a MapReduce?
Soluzione
Penso che Fowler significhi che in un'applicazione stratificata il focus è sull'organizzazione " vertical " comunicazioni disaccoppiate tra i livelli.
Un'altra architettura è SOA (Orientamento ai servizi), dove l'attenzione è rivolta all'organizzazione " orizzontale " comunicazioni disaccoppiate tra i componenti. (All'interno di un componente l'implementazione può utilizzare uno dei due modelli). Questa non è una novità. Altre istanze di questo modello orizzontale sono COM / COM +, CORBA, flussi di lavoro e ora & Quot; messaggistica & Quot; o architetture ESB.