Bei der Vorstellung der Neuerungen von Magento 2 hatte ich das Thema Service Layer schon einmal angerissen und erwähnt, dass sich dadurch die Erweiterbarkeit des Magento-Frameworks verbessert und Entwicklungsaufwände sinken. Dieses Thema will ich heute noch etwas vertiefen.

 

Schichtenmodell im Software Engineering

Mit den Begriffen Ebenen, Schichten, Layern oder „Tiers“ beschreibt man mögliche Abstraktionsebenen in einer Softwarearchitektur. In einer Schicht werden im weitesten Sinne Komponenten mit einer bestimmten Aufgabe zusammengefasst und im Idealfall gekapselt. So sind der Präsentationsschicht eines Magento-Shopsystems alle Komponenten für die Interaktionen eines Nutzers mit dem Shop zugewiesen, d. h. die Templates, Blocks aber auch die entsprechenden Regeln welche Events bei der Interaktion ausgelöst werden sollen. Die Interaktion eines Nutzers, z.B. ein Mausklick auf den Bestellbutton, löst dann eine Anfrage an die unter der Präsentationsschicht liegende Schicht aus.

 

Das Ziel der Schichtenarchitektur ist es, die Komplexität von Software-Systemen beherrschbarer zu machen. Durch die Definition der verschiedenen Layer werden komplexe Systeme in kleinere, hierarchisch organisierte, funktionale Einheiten aufgeteilt. Deren Bestandteile wiederum sollen innerhalb ihrer Schicht eine hohe Kohäsion aufweisen aber hinsichtlich der Anwendungslogik keine oder nur geringe Abhängigkeiten über die Schichtengrenzen hinweg. Das gesamte System wird damit modularer und Änderungen an einzelnen Komponenten lassen sich gezielter und damit effizienter durchführen.

 

Die Architektur von Magento 2

Quelle: Alan Kent

 

 

Magento 2 – Service Layer

Bei der Entwicklung von Magento wird auf die Einhaltung eines bestimmten Strukturprinzips geachtet (MVC-Modell = Model, View, Controller). Mit der Version Magento 2 wird diese Struktur noch weiter ausdifferenziert. Die neue Service-Schicht (Service Layer) führt zu einer besseren Trennung der Präsentationsschicht (View) und der Anwendungslogik.

 

Vorteile der neuen Magento Architektur

Damit lässt sich umso besser eine Vermischung von Anwendungslogik und Templates bzw. Blocks verhindern, wodurch deren Komplexität gering bleibt und das Customizing erleichtert wird. Bei Magento Modulen kann der Service Layer außerdem als stabile Schnittstelle fungieren, durch die alle Anfragen externer Anwendungen/Module laufen. Werden Datenfluss und Programmlogik strukturiert abgebildet, verbessert das die Updatefähigkeit, erleichtert die Wiederverwendbarkeit von Modulen und senkt zudem auch mit der Zeit die Entwicklungskosten in Kundenprojekten.

 

Mit diesem Architekturprinzip können also E-Commerce-Plattformen auf Basis von Magento 2 noch besser und kosteneffizienter an neue Anforderungen angepasst werden.

 

Mehr zum Thema Service Layer gibt es auch auf dem Blog von Alan Kent