See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Model View Controller – Wikipedia

Model View Controller

aus Wikipedia, der freien Enzyklopädie

Model-View-Controller (MVC, „Modell / Präsentation / Steuerung“) bezeichnet ein Architekturmuster zur Strukturierung von Software-Entwicklung in die drei Einheiten Datenmodell (engl. Model), Präsentation (engl. View) und Programmsteuerung (engl. Controller).

Model-View-Controller-Konzept
Model-View-Controller-Konzept

Ziel des Musters ist es, einen flexiblen Programmentwurf zu machen, der u. A. eine spätere Änderung oder Erweiterung erleichtert und eine Wiederverwendbarkeit der einzelnen Komponenten ermöglicht.

Inhaltsverzeichnis

[Bearbeiten] Komponenten

Die drei Komponenten hängen je nach Realisierung unterschiedlich stark voneinander ab:

[Bearbeiten] Modell (model)

Das Modell enthält die darzustellenden Daten und gegebenenfalls (abhängig von der Implementation des MVC-Patterns) auch die Geschäftslogik. Da das MVC-Muster in verschiedenen Programmiersprachen unterschiedlich realisiert werden muss, gibt es selbst keine genaue Definition über die Positionierung der Geschäftslogik innerhalb der MVC-Klassen. Diese kann je nach Anwendungsfall besser im Controller aufgehoben sein oder auch in das Modell verlagert werden. In der Praxis finden sich unterschiedliche MVC-Programmiergerüste: Einige schreiben strikt vor, wohin die Geschäftslogik gehört, andere überlassen diese Entscheidung dem Softwareentwickler.

Das Modell ist von Präsentation und Steuerung unabhängig. Änderungen an relevanten Daten im Modell werden durch das Entwurfsmuster „Beobachter“ bekannt gemacht.

[Bearbeiten] Präsentation (view)

Die Präsentationsschicht ist für die Darstellung der benötigten Daten aus dem Modell und die Entgegennahme von Benutzerinteraktionen zuständig. Sie kennt sowohl ihre Steuerung als auch das Modell, dessen Daten sie präsentiert, ist aber nicht für die Weiterverarbeitung der vom Benutzer übergebenen Daten zuständig. Im Regelfall wird die Präsentation über Änderungen von Daten im Modell unterrichtet und besorgt sich daraufhin die aktualisierten Daten. Die Präsentation entspricht dem Entwurfsmuster „Kompositum“.

[Bearbeiten] Steuerung (controller)

Die Steuerung verwaltet die Präsentation(en), nimmt von ihnen Benutzeraktionen entgegen, wertet diese aus und agiert entsprechend. Zu jeder Präsentation existiert ein Modell. Es ist nicht die Aufgabe der Steuerung, Daten zu manipulieren. Die Steuerung entscheidet aufgrund der Benutzeraktion in der Präsentation, welche Daten im Modell geändert werden müssen. Sie enthält weiterhin Mechanismen, um die Benutzerinteraktionen der Präsentation einzuschränken. Präsentation und Steuerung entsprechen zusammen dem Entwurfsmuster „Strategie“, wobei die Steuerung die Strategie ist.

Bedingt durch die Kapselung werden bei der Implementierung von Dialogen und Fenstern häufig Steuerung und Präsentation zusammengefasst. Dieses modifizierte Muster wird Document-View-Muster genannt, in dem das Dokument dem Modell und die Präsentation (View) der Vereinigung von Steuerung und Präsentation (Control & View) entspricht.

[Bearbeiten] Struktur

Üblicherweise spielen ein View- und ein Control-Modul zusammen, welche sich gegenseitig kennen und sich auf ein Modell beziehen. Ein Modell kann aber von mehreren View-Control-Paaren gesteuert werden.

Das MVC-Konzept wurde zunächst für Benutzungsoberflächen in Smalltalk durch Trygve Reenskaug beschrieben (Seeheim-Modell), gilt mittlerweile aber als De-facto-Standard für den Grobentwurf aller komplexen Softwaresysteme; teils mit Differenzierungen und oftmals mehreren jeweils nach dem MVC-Muster aufgeteilten Modulen.

Das Model-View-Controller-Muster ist eine Zusammensetzung von mehreren Entwurfsmustern. Es publiziert mit Hilfe des Beobachter-Musters Änderungen. Die Präsentation ist ein Kompositum, die Steuerung eine Strategie für die Präsentation.

[Bearbeiten] Beispiele

MVC-Modell für eine einfache Web-Registrierung

Die obige Abbildung zeigt das MVC-Modell für eine einfache Web-Registrierung. Der Benutzer (Client) fragt als erstes die Seite register.jsp an. Er bekommt eine Seite mit einem HTML-Formular als Antwort. Als Action ist im Formular die validate.jsp angegeben. Also schickt der Browser nach dem Ausfüllen des Formulars die eingegebenen Daten an die validate.jsp. Validate.jsp, welches in diesem Fall das Control-Modul ist, prüft die eingegebenen Werte. Es ist nur für die Prüfung und Verarbeitung der Daten zuständig. Selbst gibt validate.jsp dem Benutzer kein Feedback. Das Control-Modul gibt dazu die Kontrolle an die entsprechenden Views weiter. In diesem Fall entweder an register.jsp, wenn die Eingaben ungültig waren, sonst an die ok.jsp. Wird die Kontrolle wieder zurück an die register.jsp übergeben, zeigt register.jsp dem User erneut das Formular mit z. B. einem Fehler-Hinweis an. Der Browser schickt die korrigierten Daten wieder an die validate.jsp. Sind die Eingaben korrekt, werden die Daten zur Speicherung an die UsersBean übergeben. Die Kontrolle wird daraufhin an die ok.jsp abgegeben. Diese zeigt dem User beispielsweise eine Erfolgsbestätigung.

Die Bedeutung des MVC-Entwurfsmusters wird noch klarer, wenn man sich in die Lage der Entwickler von GUI-Frameworks versetzt. Hier besteht die Herausforderung darin, dass zum Entwicklungszeitpunkt der GUI Widgets (View) nicht feststeht, welche fachliche Daten und Datenstrukturen (Modell) repräsentiert und welche fachlichen Abläufe (Control) realisiert werden sollen. Damit besteht die Aufgabe der Entwickler eines GUI-Frameworks auch darin, eine Abstraktion für das Modell in Form von Schnittstellen bereitzustellen. An der Abbildung lässt sich gut erkennen, dass einzelne Teile, wie die Datenspeicherung oder das Aussehen, problemlos ausgetauscht werden können.

Das MVC-Entwurfsmuster definiert auch den Rahmen für die Entwickler von GUI-Frameworks. Ein fertiges GUI-Framework beinhaltet:

  1. eine Präsentation (view) in Form ausimplementierter GUI Widgets,
  2. die Vereinbarung eines zugrundeliegenden Datenmodells in Form von Schnittstellen,
  3. die Vereinbarung von Ereignissen (engl. events) auf Grund von Benutzerinteraktionen in Form von Schnittstellen und ausimplementierten Klassen, sowie
  4. die Vereinbarung von Ereignissen auf Grund von Modelländerungen in Form von Schnittstellen und ausimplementierten Klassen.

[Bearbeiten] Implementierungen

1979 wurde MVC das erste Mal von Trygve Reenskaug beschrieben, der damals an Smalltalk im Xerox PARC arbeitete. Diese ursprüngliche Implementierung inspirierte viele andere (GUI) Frameworks wie:

[Bearbeiten] Model 2

Die Begriffe „Model 1“ und „Model 2“ stammen aus einem frühen Entwurf der JSP-Spezifikation:

Model 1 wurde eine Architektur für Webanwendungen genannt, bei der nur JSP-Seiten eingesetzt werden, welche HTTP-Requests direkt beantworten. Es handelt sich nicht um eine MVC-Architektur.

Model 2 ist eine daran anschließende, für Webanwendungen spezialisierte, serverseitige Implementierung des Model-View-Controller Musters. Es beschreibt insbesondere die Aufteilung der Anfragebearbeitung in eine Front-Komponente (Controller) und eine Präsentationskomponente (View). HTTP-Anfragen werden von einem Controller entgegengenommen und verarbeitet. Dieser stellt aufgrund der Anfrage Objekte im Session- oder Request-Kontext bereit und entscheidet, zu welcher Präsentationskomponente er intern weiterleitet. Diese errechnet ihre Ausgaben dann aus den Objekten.

[Bearbeiten] Siehe auch

[Bearbeiten] Literatur

  • Hanspeter Mössenböck, Objektorientierte Programmierung, Springer-Verlag, 1993, ISBN 3-540-55690-7

[Bearbeiten] Weblinks


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -