Aug 26

Magento 2 Architektur

Magento developer working a big eCommerce project on his PC

Machen wir uns mit der Architektur und Terminologie von Magento 2 vertraut.

Magento hat eine sehr spezifische Architektur, die mit der Absicht entworfen wurde, den Quellcode so modularisiert und erweiterbar wie möglich zu machen (dies bezieht sich hauptsächlich auf Dependency Injection und die Verwendung von Design Patterns wie dem Model-View-Controller (MVC), die in den folgenden Abschnitten genauer behandelt werden). 

Dadurch lässt es sich leicht einführen und, was noch wichtiger ist, schnell an die spezifischen Bedürfnisse eines jeden Projekts anpassen. Darüber hinaus funktionieren neue Funktionalitäten, die oft in Form von Erweiterungen integriert werden, als eigenständige Einheiten (hier ist es wichtig zu betonen, dass Erweiterungen zwar normalerweise separate Komponenten sind, aber nicht völlig unabhängig vom Kernsystem). Dies unterstützt die sich ständig ändernden eCommerce-Trends und unterstützt eine Vielzahl von Geschäftsstrategien und -ansätzen. 

Wenn Sie die Basis Ihres Adobe Commerce- oder Magento-Open-Source-Produkts grundlegend anpassen, hat die Modulentwicklung höchstwahrscheinlich oberste Priorität. Der Code ist in Modulen organisiert, die eine bestimmte Aufgabe oder Funktion unterstützen. Der Code eines Moduls kann einige zusätzliche Funktionen bereitstellen oder die vorhandenen ändern und das Aussehen und die Funktionen Ihres Shops beeinflussen. 

Andere Ansätze zur Anpassung von Magento-Basisprodukten umfassen die Entwicklung von Themen, die Integration mit APIs und die Anpassung durch die Verwendung von Konfigurationsoptionen.

Das Model-View-ViewModel (MVVM) Architektur-Muster

Some Magento Architecture elements being analyzed on a laptop.

Magento 2 verfügt über ein Model-View-ViewModel (MVVM) Architekturmuster. Diese MVVM-Architektur bietet eine viel robustere Trennung zwischen der Modell- und der Ansichtsschicht, da sie eng mit dem Model View Controller (MVC) verwandt ist. 

Lassen Sie uns kurz die Logik hinter MVVC erklären:  

  • Das Modell enthält die Geschäftslogik der Anwendung und hängt für den Datenbankzugriff von einer zugehörigen Klasse (dem ResourceModel) ab. Modelle stützen sich auf Dienstverträge, um ihre Funktionalität den anderen Schichten der Anwendung zur Verfügung zu stellen.
  • Die Ansicht ist die Struktur und das Layout dessen, was ein Benutzer auf dem Bildschirm sieht – das eigentliche HTML. Dies wird in den PHTML-Dateien erreicht, die mit den Modulen verteilt werden. Die PHTML-Dateien sind mit jedem ViewModel in den Layout-XML-Dateien verbunden, die im MVVM-Dialekt als Binder bezeichnet werden. Die Layout-Dateien können auch JavaScript-Dateien zuweisen, die auf der endgültigen Seite verwendet werden sollen.
  • Das ViewModel interagiert mit der Model-Schicht und gibt nur die notwendigen Informationen an die View-Schicht weiter. In Magento 2 wird dies von den Block-Klassen des Moduls übernommen. Beachten Sie, dass dies normalerweise ein Teil der Controller-Rolle eines MVC-Systems war. Bei MVVM ist der Controller nur für die Abwicklung des Benutzerflusses verantwortlich, d.h. er nimmt Anfragen entgegen und weist das System entweder an, eine Ansicht zu rendern oder den Benutzer auf eine andere Route umzuleiten.

Die Module funktionieren mit dem Kern-Produkt-Code, und wenn Sie die Grundlagen von Adobe Commerce und Magento Open Source Produkt Organisation verstehen wollen, sind feste Trauben von geschichteten Software-Muster unerlässlich.

Magento 2-Ebenen

A nice cozy office with a big monitor on the central table showing some MySQL scheme.

Magento 2 besteht aus 4 Schichten:  

1) Präsentationsschicht

Die Präsentationsschicht ist die oberste Schicht der Magento 2 Architektur. Wenn Sie mit dem Webinterface von Magento interagieren, interagieren Sie mit dem Code der Präsentationsschicht. Diese Schicht enthält alle Controller und Views-Elemente wie Layouts, Vorlagen, Blöcke, css.js usw. und wird hauptsächlich von Webnutzern und Systemadministratoren verwendet.

2) Dienstschicht

Die Dienstschicht ist die mittlere Schicht zwischen der Darstellungsschicht und der Domänenschicht. Sie bildet eine Brücke zwischen der Präsentations- und Domänenschicht und den ressourcenspezifischen Daten. Die Serviceschicht implementiert Serviceverträge, die mit Hilfe der PHP-Schnittstelle definiert werden. Diese Dienstverträge ermöglichen es uns, das Ressourcenmodell der Geschäftslogik hinzuzufügen oder zu ändern, ohne das System zu zerstören. Dies geschieht mithilfe der Konfigurationsdatei für die Injektion von Abhängigkeiten (di.xml).

Die Dienstschicht ermöglicht den Zugang zu API (REST/SOAP oder andere Module). Sie befindet sich oberhalb der Domänenschicht und unterhalb der Präsentationsschicht.

3) Domänenebene

Die Domänenschicht ist für die Geschäftslogik zuständig. Sie enthält keine datenbank- oder ressourcenspezifischen Informationen. Die Domänenschicht definiert die generischen Magento-Datenobjekte oder -Modelle, die Geschäftslogik enthalten. Diese Logik beschreibt, welche Operationen mit bestimmten Datentypen, wie z. B. Kundenobjekten, durchgeführt werden können.

Um die Daten mit den MySQL-Aufrufen aus der Datenbank abzurufen, hat jedes Modell der Domänenschicht einen Verweis auf ein Ressourcenmodell.

4) Persistenzschicht

Diese robuste Plattform verwendet das aktive Datensatzmuster zum Speichern. In Magento enthält das Modellobjekt ein Ressourcenmodell, das das Objekt mit einem oder mehreren Datenbankeinträgen vergleicht. Das Ressourcenmodell ist verantwortlich für die Durchführung von Funktionen wie:

  • Ausführung aller CRUD-Anfragen – das Ressourcenmodell enthält den SQL-Code für die Ausführung dieser Abfragen
  • Durchführung zusätzlicher Geschäftslogik (z. B. kann ein Ressourcenmodell eine Datenvalidierung durchführen, Prozesse vor oder nach dem Speichern von Daten ablaufen lassen oder andere Operationen in der Datenbank durchführen)

Wenn Sie erwarten, mehrere Elemente aus einer Datenbankabfrage zurückzugeben, müssen Sie einen speziellen Typ von Ressourcenmodell implementieren, der als Sammlung bekannt ist. Collection ist eine Klasse, die mehrere Modelle in eine Struktur ähnlich einem Array lädt, basierend auf einer Reihe von Regeln.

Ich hoffe, dass dies Ihnen ein umfassenderes Bild der Magento 2-Architektur vermittelt und wie diese eCommerce-Plattform auf Daten zugreift und diese manipuliert.

Über den Autor

Sinisa ist der CTO von Lobbster und ein brillanter Magento Solution Architect