Model-View-Controller-Service-Paradigma

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg

Definition

Das Model-View-Controller-Services-Paradigma oder -Pattern, kurz MVCS, ist eine Erweiterung des Model-View-Controller-Paradigmas (MVC). Es bezeichnet ein Architekturmuster zur Trennung eines Programms in vier separate Einheiten: Model (Modell), View (Darstellung), Controller (Steuerung) und Service (Zugriff auf externe Daten).

Der MVC-Prozess

gerahmt||rechts|MVCS-Prozess: File:MVC-Process.png]) Das MVCS-Paradigma basiert auf folgender Grundüberlegung: Der aktuelle Zustand der Anwendungsdomäne wird im so genannten Model nachgebildet. Dem Benutzer (User) wird der aktuelle Zustand des Models mit Hilfe beliebig vieler Views präsentiert. Über einen Controller kann der Benutzer das Model manipulieren, das heißt, dessen Zustand (und damit auch die zugehörigen Views) ändern. Er kann auch veranlassen, dass die Daten des Models in einer externen Datenbank, Anwendung, XML-Datei o.Ä. dauerhaft gespeichert oder von dort in das Model eingelesen werden. Es ist sogar möglich, dass sich das Model selbstständig mit einem externen Daenpool synchroniesiert.

Dieser so genannte MVCs-Prozess wird in der nebenstehenden Abbildung visualisiert.

Beispiel Warenkorb

In einer Warenkorb-Anwendung werden im Model Daten über den Warenkorb und den Benutzer (sobald dieser eingeloggt ist) gespeichert: eine aktuelle Auswahl des Warenkataloges, die Waren, die im Korb enthalten sind, der Gesamtpreis und die Versandkosten der aktuellen Bestellung etc. Der Gesamtwarenbestand wird hingegen nicht im Model, sondern in einer externen Datenbank abgelegt.

Die View visualisiert Elemente der aktuellen Auswahl des Warenkataloges (siehe Model) mit Hilfe von Texten, Bildern und Videos. Der Benutzer kann die Auswahl der visualierten Elemente durch Filter oder Navigation abändern, er kann Elemente des Kataloges in seinen Warenkorb legen und dort wieder entfernen etc. Für all diese Aktionen werden dem Benutzer in der View spezielle Eingabefelder ([Checkbox]]es, Drop-Down-Menüs, Textfelder, Links etc.) präsentiert. Jedes mal, wenn der Benutzer eine dieser Felder mit Hilfe der Maus oder der Tastatur bedient, leitet die View eine entsprechende Nachricht an den Controller weiter.

Der Controller analysiert die gewünschte Aktion des Benutzers und führt die entsprechenden Änderungen am Model durch. Zum Beispiel kann er veranlassen, die die aktuellen Auswahl des Warenkataloges den Wünschen des Benutzers gemäß geändert, indem er die entsprechende Service-Kompenente veranlässt, die neuen Daten aus der Datenbank in das Model zu übertragen. Wenn der Benutzer zu guter Letzt eine Bestellung tätigt, veranlassst der Controller, dass die Bestellung aus dem Model mit Hilfe eines Services in die Datenbank übertragen wird.

Verfeinerung des MVC-Prozesses

gerahmt|zentriert|MVCS-Prozess 2 (mit Trennung in Frame und Domain) Dieser Prozess beschreibt das allgemeine Vorgehen häufig etwas ungenau. Viele Anwendungen bestehen aus zwei (oder noch mehr) Teilen: Der eigentlichen Kern-Anwendung (Domain) und einer Rahmen-Anwendung (Frame), die den Zugang zur Kern-Anwendung und evtl. weiteren Anwendungen steuert. In diesem Fall gibt es zwei (oder mehrere) relativ unabhängige MVCS-Prozesse. Die Frame-Komponenten können dabei auf Domain-Komponenten zugreifen. Der umgekehrte Weg sollte vermieden werden, damit die Kern-Komponente problemlos in andere Umgebungen integriert werden kann.

Die Verknüpfung eines Frame-Prozesses mit einem Domain-Prozess wird in der nebenstehenden Abbildung visualisiert. Man beachte, dass die Domain-View in die Frame-View eingebettet werden kann. Ansonsten sind die einzelnen Komponenten möglichst eingenständig und kommunizieren nur über wohldefinierte und möglichst schlanke Schnittstellen miteinander.

Enie typische Aufgabe eines Frame-Services ist es, XML-Dateien zum Initialisieren des Systems einzulesen. Die Domain-Services greifen dagegen häufig auf Datenbanken oder Web-Anwendungen zu, die bestimmte Daten des Domain-Models dauerhaft speichern (vgl obiges Beispiel).

Quellen