Model View Controller

From Lexikon (Strato)
Revision as of 18:47, 26 December 2005 by Dkracht (talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

MVC steht für Model-View-Controller und ist ein sog. Design Pattern (Entwurfsmuster) für objektorientierte Client-Server-Anwendungen. Mit anderen Worten MVC ist eine Architektur für eine Anwendung; d.h. ein grundsätzlicher Plan, aus welchen wesentlichen Teilen die Anwendung bestehen soll und wie diese Teile im Prinzip zusammenarbeiten sollen.

MVC ist schon recht alt, es kam erstmals mit der Verbreitung von Smalltalk (1980) auf. Für Web-Anwendungen, bei denen die Kommunikation zwischen Web-Browser und Web-Server "stateless" vor sich geht, hat man eine Variante von MVC, das sog. MVC Model 2 entwickelt.

Der Controller erhält die Benutzer-Eingaben (HTTP-Request) und muss entscheiden, was damit zu tun ist ("dispatchen"). D.h. er instanziiert das erforderliche ModelBean und übergibt ihm die Benutzer-Eingaben vermittels der Setter-Methoden. Danach ruft der Controller die erforderliche View-Page auf.

Das Model enthält die eigentliche Geschäftslogik und verwaltet die dazu erforderlichen persistenten Geschäftsdaten. Typischerweise wird es in der Technik eines Beans (JavaBean) realisiert. Ergebnisdaten werden durch Getter-Methoden der Aussenwelt zur Verfügung gestellt. Es findet keine (HTML-)Formatierung statt, das macht die getrennte View-Page.

Ein View wird typischerweise als JavaServer Page (JSP) realisiert und holt sich per Getter-Methoden die Ergebnisdaten vom ModelBean und bereitet sie als HTML-Seite (Form) auf. Durch das Betätigen des Submit-Buttons auf der Form wird erneut der Controller aktiviert.

Sinn der MVC-Architektur ist es, bei grösseren Web-Anwendungen Änderungsfreundlichkeit zu erreichen, durch die Entkopplung von Benutzerschnittstelle, Geschäftslogik und Daten. Durch diese Trennung ist es auch möglich, Aufgaben, die ganz unterschiedliche Skills erfordern wie Java-Geschäftlogik und HTML-Benutzeroberfläche unterschiedlichen Teams zuzuordnen.

Siehe: Architektur, Entwurfsmuster, HTML, JavaBean, JSP, Smalltalk