Model View Controller - Model–view–controller

Diagramm der Wechselwirkungen innerhalb des MVC-Musters

Model-View-Controller (normalerweise als MVC bekannt ) ist ein Software-Entwurfsmuster, das häufig für die Entwicklung von Benutzeroberflächen verwendet wird , die die zugehörige Programmlogik in drei miteinander verbundene Elemente aufteilen. Dies geschieht, um interne Darstellungen von Informationen von der Art und Weise zu trennen, wie Informationen dem Benutzer präsentiert und von ihm angenommen werden.

Dieses Muster wird traditionell für grafische Desktop- Benutzeroberflächen ( GUIs ) verwendet und ist beim Entwerfen von Webanwendungen beliebt geworden . Beliebte Programmiersprachen haben MVC-Frameworks, die die Implementierung des Musters erleichtern.

Komponenten

Modell
Der zentrale Bestandteil des Musters. Es ist die dynamische Datenstruktur der Anwendung, unabhängig von der Benutzeroberfläche. Es verwaltet direkt die Daten, Logik und Regeln der Anwendung.
Sicht
Beliebige Darstellung von Informationen wie Diagramme, Diagramme oder Tabellen. Es sind mehrere Ansichten derselben Informationen möglich, z. B. ein Balkendiagramm für das Management und eine tabellarische Ansicht für Buchhalter.
Regler
Akzeptiert Eingaben und konvertiert sie in Befehle für das Modell oder die Ansicht.

Neben der Aufteilung der Anwendung in diese Komponenten definiert das Model-View-Controller-Design die Interaktionen zwischen ihnen.

  • Das Modell ist für die Verwaltung der Daten der Anwendung verantwortlich. Es empfängt Benutzereingaben vom Controller.
  • Die Ansicht rendert die Präsentation des Modells in einem bestimmten Format.
  • Der Controller reagiert auf die Benutzereingabe und führt Interaktionen an den Datenmodellobjekten durch. Der Controller empfängt die Eingabe, validiert sie optional und übergibt die Eingabe dann an das Modell.

Wie bei anderen Software-Mustern drückt MVC den "Kern der Lösung" eines Problems aus, während es gleichzeitig für jedes System angepasst werden kann. Bestimmte MVC-Designs können hier erheblich von der traditionellen Beschreibung abweichen.

Geschichte

Als eine der bahnbrechenden Erkenntnisse in der frühen Entwicklung grafischer Benutzeroberflächen wurde MVC zu einem der ersten Ansätze, um Softwarekonstrukte hinsichtlich ihrer Verantwortlichkeiten zu beschreiben und zu implementieren .

Trygve Reenskaug führte MVC in Smalltalk -79 ein, als er in den 1970er Jahren das Xerox Palo Alto Research Center (PARC) besuchte. In den 1980er Jahren implementierten Jim Althoff und andere eine Version von MVC für die Smalltalk-80-Klassenbibliothek. Erst später drückte ein Artikel von 1988 im Journal of Object Technology (JOT) MVC als allgemeines Konzept aus.

Das MVC-Muster hat sich in der Folge weiterentwickelt und führte zu Varianten wie hierarchischer Model-View-Controller (HMVC), Model-View-Adapter (MVA), Model-View-Presenter (MVP), Model-View-Viewmodel (MVVM), und andere, die MVC an verschiedene Kontexte angepasst haben.

Die Verwendung der MVC - Muster in Web - Anwendungen explodierte in der Popularität nach der Einführung von NeXT ‚s WebObjects im Jahr 1996, die ursprünglich in geschrieben wurde Objective-C (das stark von Smalltalk entlehnt) und half MVC Prinzipien durchzusetzen. Später wurde das MVC-Muster bei Java-Entwicklern populär, als WebObjects auf Java portiert wurde . Spätere Frameworks für Java, wie Spring (veröffentlicht im Oktober 2002), setzten die starke Verbindung zwischen Java und MVC fort. Die Einführung der Frameworks Django (Juli 2005, für Python ) und Rails (Dezember 2005, für Ruby ), die beide einen starken Schwerpunkt auf schnelle Bereitstellung legten, steigerte die Popularität von MVC außerhalb der traditionellen Unternehmensumgebung, in der es seit langem beliebt ist.

Verwendung in Webanwendungen

Obwohl MVC ursprünglich für Desktop-Computing entwickelt wurde, wurde es weithin als Design für World Wide Web- Anwendungen in den wichtigsten Programmiersprachen übernommen . Es wurden mehrere Web-Frameworks erstellt, die das Muster erzwingen. Diese Software-Frameworks unterscheiden sich in ihrer Auslegung, hauptsächlich in der Art und Weise, wie die MVC-Verantwortlichkeiten zwischen Client und Server aufgeteilt sind .

Einige Web-MVC-Frameworks verfolgen einen Thin-Client- Ansatz, der fast das gesamte Modell, die Ansicht und die Controller-Logik auf dem Server platziert. Bei diesem Ansatz sendet der Client entweder Hyperlink- Anforderungen oder Formulareinsendungen an den Controller und erhält dann eine vollständige und aktualisierte Webseite (oder ein anderes Dokument) aus der Ansicht; das Modell existiert vollständig auf dem Server.

Siehe auch

Verweise

Literaturverzeichnis