Model-View-Controller-Paradigma: Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
KKeine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 18: Zeile 18:
=Bemerkungen=
=Bemerkungen=
==Geschichte==
==Geschichte==
Ursprünglich wurde das Model-View-Controller Paradigma 1978/79 von der Firma Xerox für die [[GUI|GUI]]-Programmierung eingeführt. Zum Einsatz kam die damals ebenfalls von Xerox entwickelte [[Objektorientierung|objektorientierte]] Programmiersprache [[Smalltalk|Smalltalk]].
In den Anfängen der Informatik war es nicht unüblich in [[Spaghetti-Code|Spaghetti-Code]] zu entwickeln, was mit vielen Nachteilen verbunden ist. Erst die Einführung der strukturierten Programmierung in den 70ern und später die objektorientierte Programmierung in den 80ern schaffte Abhilfe und ermöglichte das Programmieren nach dem Model-View-Controller Paradigma.


Damals war es nicht unüblich in [[Spaghetti-Code|Spaghetti-Code]] zu entwickeln, was mit vielen Nachteilen verbunden ist.
Ursprünglich wurde das MVC-Paradigma 1978/79 von der Firma Xerox für die [[GUI|GUI]]-Programmierung eingeführt. Zum Einsatz kam die damals ebenfalls von Xerox entwickelte [[Objektorientierung|objektorientierte]] Programmiersprache [[Smalltalk|Smalltalk]].
In neueren Programmiersprachen wie [[Verweis|Java]] kommt MVC ebenfalls bei der [[GUI|GUI]]-Programmierung zum Einsatz und ist allgemeiner Standard beim Entwurf komplexer Softwaresysteme, bei denen die Anwendungslogik von anderen Teilen des Systems getrennt werden soll.
 
In neueren Programmiersprachen wie [[Verweis|Java]] kommt MVC ebenfalls bei der [[GUI|GUI]]-Programmierung zum Einsatz. MVC ist heute allgemeiner Standard beim Entwurf komplexer Softwaresysteme, bei denen die Anwendungslogik von anderen Teilen des Systems getrennt werden soll.


Eine Variante ist '''MVC2''' (MVC Model 2 bzw. MVC Version 2), die speziell für Webanwendungen gedacht ist.
Eine Variante ist '''MVC2''' (MVC Model 2 bzw. MVC Version 2), die speziell für Webanwendungen gedacht ist.
Zeile 37: Zeile 38:
==Nachteile==
==Nachteile==
Auch wenn die Vorteile überwiegen, gibt es dennoch ein paar Nachteile:
Auch wenn die Vorteile überwiegen, gibt es dennoch ein paar Nachteile:
* Bei der Planung und Implementierung ist wesentlich mehr Gründlichkeit erforderlich
* Bei der Planung und Implementierung ist wesentlich mehr Gründlichkeit erforderlich.
* Erheblicher Mehraufwand bei kleinen Applikationen
* Erheblicher Mehraufwand bei kleinen Applikationen. Dieser Aufwand rechtfertigt andere Programmierung.


==Konzept==
==Konzept==
In Arbeit ...
Es gibt kein hundertprozentiges Patentrezept, wie MVC umzusetzen ist. Je nach Anwendungsgebiet sind manche Komponenten wichtiger als andere. Auch kann nicht immer pauschal festgelegt werden, wo gewisse Funktionen eindeutig hingehören, da weitere Aspekte der Planung und des Entwurfs die Entscheidung beeinflussen können. Zum Beispiel kann es sinnvoll sein, aus Sicherheitsgründen eine Benutzerauthentifizierung einer Webanwendung nicht im Controller sondern im Modell abzulegen.
 
----
 
Im Prinzip lassen sich die Bereiche jedoch grob eingrenzen:


==Anwendungsgebiete==
===Model===
In Arbeit ...
Das Modell speichert als zentrale Komponente sämtliche Daten und enthält die Applikationslogik. Die Kommunikation nach außen (außerhalb der Anwendung) findet ebenso im Modell statt. Beispielsweise Zugriffe auf Datenbanken oder auch Kommunikation mit anderen Anwendungen. Zudem speichert das Modell den aktuellen Anwendungsstatus, also den Zustand, in dem sich die Anwendung bei der Interaktion mit dem Benutzer befindet.


=Beispiele=
Eine weitere Aufgabe des Modells ist das Verwalten der Views, die es zu benachrichtigen gilt, wenn sich der Zustand des Modells ändert. Änderungen werden unmittelbar mitgeteilt. Oftmals wird hierfür das [[Observer Design Pattern | Observer Design Pattern]] verwendet.
Beispiele machen sich auch nicht schlecht.


=Quellen=
===View===
Wenn die Definitionen und/oder die Anmerkungen nicht von einem selbst stammen, sollte man die Quellen angeben
Die View ist die zuständige Komponente für die Ausgabe und bildet eine Abstraktionsschicht zwischen der Präsentation der Anwendung, dem Modell und dem Benutzer. Es können mehrere Views ein und dasselbe Modell auf technische oder optische Art und Weise repräsentieren. Verschiedene logische Sichtweisen bleiben dem Modell vorbehalten (bspw. verschiedene Benutzeransichten: Administrator, Normaluser).
(das sind natürlich nur Beispiele, keine echten Quellen dieses Artikels :-) ):


*Hinz und Kunz, "Der Bau einer Musterseite", 7. Auflage, Wiki-Verlag, 1931
===Controller===
Der Controller nimmt Eingaben aus verschiedensten Quellen entgegen und leitet diese standardisiert auf das Modell weiter. Er ist somit eine weitere Abstraktionsschicht, der Interaktionen des Benutzers mit der View wieder dem Modell zuführt.  


Besser ist es spezielle Quellendokumente zu erstellen (und diese dann auch mit Inhalt zu füllen):
==Anwendungsgebiete==
* allgemein: größere Softwareprojekte
* [[GUI|GUI]]-Programmierung (bspw. [[Framework|Frameworks]] wie [[Swing|Swing]])
* Webanwendungen


=Quellen=
*[[Kowarschick, W. et al. (2005): Musterquelle (Buch)]]
*[[Kowarschick, W. et al. (2005): Musterquelle (Buch)]]
*[[Goldratt, E.; Cox , J. (2004): The Goal]]
*[[Goldratt, E.; Cox , J. (2004): The Goal]]
Zeile 69: Zeile 77:
=Siehe auch=
=Siehe auch=
[[Wikipedia:MVC]]
[[Wikipedia:MVC]]
[[en:GlossaryWiki:MVC]]
[[Kategorie:Programmierung]]
[[Kategorie:Programmierung]]
[[en:GlossaryWiki:MVC]]

Version vom 9. Januar 2007, 06:10 Uhr

Dieser Artikel wird derzeit von einem Autor gründlich bearbeitet. Die Inhalte sind daher evtl. noch inkonsistent.

Dieser Artikel sollte überarbeitet werden.
Die Regeln für GlossarWiki-Artikel sollten beachten werden.
Die Aussagen sollten inhaltlich verbessert bzw. präzisiert werden.
In diesem Artikel sollten die Quellenangaben überarbeitet werden.
Bitte die Regeln der GlossarWiki-Quellenformatierung beachten.
Es sollten nicht nur Wikipedia-Artikel als Quelle verwendet werden.

Dieser Artikel ist nicht korrekt kategorisiert (siehe Regeln für GlossarWiki-Artikel).

Definition

MVC ist die Abkürzung für Model View Controller.

Das MVC-Paradigma bezeichnet ein Architekturmuster zur Trennung eines Programms in drei separate Einheiten: Datenmodell (Model), Präsentation (View) und Programmsteuerung (Controller). Vorteile dieses Paradigmas ist ein flexibles Programmdesign, welches Wiederverwendbarkeit der einzelnen Komponenten und reduzierte Komplexität gewährleistet, insbesondere bei großen Anwendungen.

Bemerkungen

Geschichte

In den Anfängen der Informatik war es nicht unüblich in Spaghetti-Code zu entwickeln, was mit vielen Nachteilen verbunden ist. Erst die Einführung der strukturierten Programmierung in den 70ern und später die objektorientierte Programmierung in den 80ern schaffte Abhilfe und ermöglichte das Programmieren nach dem Model-View-Controller Paradigma.

Ursprünglich wurde das MVC-Paradigma 1978/79 von der Firma Xerox für die GUI-Programmierung eingeführt. Zum Einsatz kam die damals ebenfalls von Xerox entwickelte objektorientierte Programmiersprache Smalltalk.

In neueren Programmiersprachen wie Java kommt MVC ebenfalls bei der GUI-Programmierung zum Einsatz. MVC ist heute allgemeiner Standard beim Entwurf komplexer Softwaresysteme, bei denen die Anwendungslogik von anderen Teilen des Systems getrennt werden soll.

Eine Variante ist MVC2 (MVC Model 2 bzw. MVC Version 2), die speziell für Webanwendungen gedacht ist.

Vorteile

Das MVC-Paradigma bietet eine Reihe von Vorteilen:

  • Gut strukturiertes Design durch klare Trennung der Anwendungslogik von den dazugehörenden Daten und der Benutzerinteraktion.
  • Änderungen an einer Komponente sind möglich, ohne dass andere Komponenten davon betroffen werden; sogar ganze Komponenten können ausgetauscht werden.
  • Mehrere Ansichten des Systems können durch Austausch verschiedener Views realisiert werden.
  • Im Fehlerfall ist die Suche nach dem Fehler in der Regel auf eine Komponente beschränkt.
  • Erweiterbarkeit bestehender Systeme, indem neue Komponenten hinzugefügt werden. Alte Komponenten können aus Kompatibilitätsgründen erhalten bleiben.

Insgesamt sind Programmcode und Komponenten übersichtlicherer und einfacher zu warten, zu ändern und auszutauschen.

Nachteile

Auch wenn die Vorteile überwiegen, gibt es dennoch ein paar Nachteile:

  • Bei der Planung und Implementierung ist wesentlich mehr Gründlichkeit erforderlich.
  • Erheblicher Mehraufwand bei kleinen Applikationen. Dieser Aufwand rechtfertigt andere Programmierung.

Konzept

Es gibt kein hundertprozentiges Patentrezept, wie MVC umzusetzen ist. Je nach Anwendungsgebiet sind manche Komponenten wichtiger als andere. Auch kann nicht immer pauschal festgelegt werden, wo gewisse Funktionen eindeutig hingehören, da weitere Aspekte der Planung und des Entwurfs die Entscheidung beeinflussen können. Zum Beispiel kann es sinnvoll sein, aus Sicherheitsgründen eine Benutzerauthentifizierung einer Webanwendung nicht im Controller sondern im Modell abzulegen.


Im Prinzip lassen sich die Bereiche jedoch grob eingrenzen:

Model

Das Modell speichert als zentrale Komponente sämtliche Daten und enthält die Applikationslogik. Die Kommunikation nach außen (außerhalb der Anwendung) findet ebenso im Modell statt. Beispielsweise Zugriffe auf Datenbanken oder auch Kommunikation mit anderen Anwendungen. Zudem speichert das Modell den aktuellen Anwendungsstatus, also den Zustand, in dem sich die Anwendung bei der Interaktion mit dem Benutzer befindet.

Eine weitere Aufgabe des Modells ist das Verwalten der Views, die es zu benachrichtigen gilt, wenn sich der Zustand des Modells ändert. Änderungen werden unmittelbar mitgeteilt. Oftmals wird hierfür das Observer Design Pattern verwendet.

View

Die View ist die zuständige Komponente für die Ausgabe und bildet eine Abstraktionsschicht zwischen der Präsentation der Anwendung, dem Modell und dem Benutzer. Es können mehrere Views ein und dasselbe Modell auf technische oder optische Art und Weise repräsentieren. Verschiedene logische Sichtweisen bleiben dem Modell vorbehalten (bspw. verschiedene Benutzeransichten: Administrator, Normaluser).

Controller

Der Controller nimmt Eingaben aus verschiedensten Quellen entgegen und leitet diese standardisiert auf das Modell weiter. Er ist somit eine weitere Abstraktionsschicht, der Interaktionen des Benutzers mit der View wieder dem Modell zuführt.

Anwendungsgebiete

  • allgemein: größere Softwareprojekte
  • GUI-Programmierung (bspw. Frameworks wie Swing)
  • Webanwendungen

Quellen

Auch externe Quellen können zitiert werden.

Siehe auch

Wikipedia:MVC