MVCIT 'S A PAT TERN
SWE FS2015, ADP
CHRISTIAN WALPEN
MARIO ZEHR
AgendaEinleitung
Problemstellung / Anwendungskontext
Aufbau
Beispiel
Vorteile
Nachteile
Entwurfsmuster oder Architekturmuster?
Verwandte Muster
EinleitungDas Konzept von MVC wurde bereits 1979 von Trygve Reenskaug (Norwegen), einem Xerox PARC Mitarbeiter beschrieben
Ursprünglich entwickelt für Benutzeroberflächen in SmallTalk
MVC ist englisch und steht für Model-View-Controller, d.h. eine Applikation oder Applikationskomponente wird in drei eigenständige Module aufgeteilt, das (Daten-)Modell, die Präsentationsschicht und die Programmsteuerung
Wird verwendet in Java Swing, C++ Qt4 (und höher), Adobe ColdFusion, Apache Struts, ASP.Net, Joomla CMS, Ruby on Rails
Problemstellung / AnwendungscontextBenutzerschnittstelle eines Systems wird häufig geändert Muss deshalb einfach austauschbar sein (am Besten zur Laufzeit)
Gleiche Informationen müssen auf der Bedienoberfläche in verschiedener Form dargestellt werden können Jede View hat einen Controller
Ein Controller kann mehrere Views bedienen
Änderungen der Daten sollen gleichzeitig auf allen Darstellungen sichtbar sein Controller können sich beim Modell anmelden um über Änderungen informiert zu werden
ZieleFlexibler Programmentwurf
Einfache Erweiterung / Änderung
Wiederverwendung von Komponenten
Nur ein Modell für verschieden Views (z.B. Desktop, Tablet, Mobile)
Trennen der Verantwortlichkeiten (separation of concern)
Aufbau
Benutzer-oberfläche
ModelBusiness Logik
Behandelt die Datenobjekte (Erstellen, Ändern, Löschen)
Die registrierten Views über Änderungen informieren Push, schlecht wiederverwendbar, da fix auf eine View gebunden
Pull, die View holt sich die neuen Daten selber
ViewAbstraktion der Ansicht für den Benutzer
Änderungen in der View werden von Anzeigeelementen übernommen
Benutzeraktionen werden über grafische Eingabeelemente an den Controller weitergeben
ControllerBenutzer Aktionen werden hier behandelt
Routing der Anfragen
Brücke zwischen Benutzer und Daten Validiert die Eingaben des Benutzers
Ruft die Aktionen auf
Bestimmt, was der Benutzer nach der Aktion sehen soll
BeispielMVC 4 in ASP.Net
VorteileDie Applikation lässt sich für die Entwicklungen in Teile aufteilen
Das Routing für alle Anfragen kann zentral im Controller geregelt werden
Flexibilität Benutzeroberfläche
Datendarstellung
Testbarkeit
TestbarkeitUnitTest
Coded UI-Tests
Präsentation (HTML)+
Code Behind (C#)
Geschäftslogik (C#)
Präsentation (HTML)
View (C#) Controller (C#)Geschäftslogik
(C#)
ASP.NET
ASP.NET MVC
NachteilePerformance kann bei häufigen Aktualisierungen schlecht sein Immer Round-Trip über Controller -> Model -> View
Der Entwicklungsaufwand ist höher Fixe Unterteilung in Klassen
Entwurfs- oder Architekturmuster?
Verwandte MusterMVP Mode-View-Presenter
In den 1990er-Jahren von IBM erstmals eingesetzt
Model und View werden komplett voneinander getrennt und über den Presenter verbunden
Um die Vorteile gegenüber MVC zu entfalten, für Model und View nur Interfaces verwenden (vollständige Austausch- und Wiederverwertbarkeit)
MVVM Model-View-ViewModel
2005 von John Gossman
Anstatt Controller ViewModel mit Binding
Moderne UI-Plattformen wie WPF, JavaFX, HTML5
Fragen?
Ressourcen Buch: Joachim Goll, Architektur und Entwurfsmuster
http://c2.com/cgi/wiki?ModelViewController
https://de.wikipedia.org/wiki/Model_View_Controller
https://msdn.microsoft.com/en-us/library/ff649643.aspx
JavaScript: https://developer.chrome.com/apps/app_frameworks
ASP .Net: https://www.microsoftvirtualacademy.com/en-US/training-courses/introduction-to-asp-net-mvc-8322