2009-06-28 9 views
1

In Patterns of Enterprise Application Architecture, Martin Fowler schreibt:Muster für nicht geschichtete Anwendung

Dieses Buch also darüber, wie Sie in Schichten eine Unternehmensanwendung zersetzen und wie diese Schichten arbeiten zusammen. Die meisten nicht trivialen Unternehmen Anwendungen verwenden eine geschichtete Architektur von irgendeiner Form, aber in einigen Situationen andere Ansätze, wie Rohre und Filter, sind wertvoll. I gehen Sie nicht in diese Situationen, Fokussierung stattdessen auf den Kontext einer geschichteten Architektur, weil es die am meisten nützlich ist.

Welche Muster existieren für den Aufbau nicht geschichteter Anwendungen/Teile einer Anwendung? Nehmen Sie eine statistische Modellierungs-Engine für ein Finanzinstitut. Es könnte eine Schicht für den Datenzugriff geben, aber ich erwarte, dass der Großteil des Codes in einer einzigen Schicht liegt. Würden Sie immer noch erwarten, Gang of Four-Muster in einer solchen Schicht zu sehen? Wie wäre es mit einem Domänenmodell? Würdest du OO überhaupt benutzen oder wäre es rein funktional?

Das Zitat erwähnt Rohre und Filter als alternative Modelle zu Schichten. Ich kann mir leicht einen solchen Motor vorstellen, der Rohre benutzt, um die Datenverarbeitung zu durchbrechen. Welche anderen Muster existieren? Gibt es gängige Muster für Bereiche wie Aufgabenplanung, Ergebnisaggregation oder Arbeitsverteilung? Was sind einige Alternativen zu MapReduce?

Antwort

1

Ich denke, was Fowler bedeutet, ist, dass in einer mehrschichtigen Anwendung der Fokus auf der Organisation "vertikaler" entkoppelter Kommunikation zwischen Schichten liegt.

Eine weitere Architektur ist SOA (Services Oriented), bei der der Schwerpunkt auf der Organisation der "horizontalen" entkoppelten Kommunikation zwischen Komponenten liegt. (Innerhalb einer Komponente kann die Implementierung eines der beiden Modelle verwenden). Das ist nichts Neues. Andere Instanzen dieses horizontalen Musters sind COM/COM +, CORBA, Workflows und jetzt "Messaging" oder ESB-Architekturen.