VON MVC ZU MODEL-VIEW-VIEWMODEL

Ähnliche Dokumente
Model-View-ViewModel (MVVM)

Skalierbare Enterprise Architekturen für Universal Windows Platform Apps

MVVM in Windows 8 und Windows Phone 8

Model View Controller Pattern

GUI-Entwicklung 2: Windows Presentation Foundation

Model-View-Controller

WPF und Silverlight Architektur

CROSS PLATFORM DEVELOPMENT MIT PORTABLE CLASS LIBRARIES

Windows Presentation Foundation

Ein UI in zwei Welten - Controls in HTML5 und WPF. Timo Korinth

Design Patterns 2. Model-View-Controller in der Praxis

JavaFX auf Mobile. von Stefan Barth und Stefan Heinze

WPF Steuerelemente Listbox, ComboBox, ListView,

Mathematik Seminar WS 2003: Simulation und Bildanalyse mit Java. Software-Architektur basierend auf dem Plug-in-Konzept

WPF - Windows Presentation Foundation

Textbausteine. C# WPF-Framework Model-View-Viewmodel-Architektur Blog-Client-Applikation

Cross-Platform Mobile mit.net

Architektur Pattern. Organisation und Interaktion zwischen den Komponenten

MVC Ein wichtiges Konzept der Software-Architektur

WPF Steuerelemente. Dr. Beatrice Amrhein

Line-of-Business-Apps mit der Universal Windows Platform entwickeln. Thomas Claudius

Eine Untersuchung der Funktionen des Apache Wicket Webframeworks

Model-View-Controller

Fragen Arthur Zaczek. Apr 2015

Heiko Barth und Thorsten Schenkel, compeople AG. Databinding in Eclipse

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Programmieren 2 07 JavaFX-Properties und Data-Binding

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Annotation based presentation models for view rendering and data binding with Linkki and Vaadin

Übung Einführung in die Softwaretechnik

WPF Bindung. Dr. Beatrice Amrhein

Hochschule Darmstadt Fachbereich Informatik

FORTGESCHRITTENE ANDROID ENTWICKLUNG Max Wielsch

Objektorientierte und Funktionale Programmierung SS 2014

Oliver Paulus, 7. Februar Spring Framework Einführung. Oliver Paulus, Was ist Spring?

Musterhafte Hilfe. Das Entwurfsmuster Model-View-View- Frameworks zum Trennen von Daten, Oberfläche und Geschäftslogik einer Anwendung.

3-Tier-Architecture und J2EE

Vorlesung Usability and Interaction. Sommersemester 2009

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Thomas Claudius Huber Trivadis AG. Silverlight 4.0 vier gewinnt?

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Norbert. Eder. Windows Presentation Foundation 4. Einführung und Praxis. inklusive CD-ROM

Anspruchsvolle Client Lösungen mit der Windows Presentation Foundation, Silverlight und Surface. Oliver Scheer Microsoft Deutschland

Dabei sollen die Nutzern nach einer Authentifizierung entsprechend ihren Rechten Begriffe ändern, anlegen und kommentieren können.

Multimedia im Netz Wintersemester 2012/13

Komponentenbasierte Softwareentwicklung mit PHP. Oliver Schlicht - bitexpert

XAML Extensible Application Markup Language. Manuel Naujoks (IB3)

Von WinForms nach WPF

Business Applika-onen schnell entwickeln JVx Framework - Live!

Rich Internet Applications, Flex & Mate. (Ja, das ist Grafische Benutzeroberflächen!) Jakob Külzer jakob.kuelzer@gmail.

Klausur GUI-Entwicklung WS10/11 1.Termin

Going Crazy mit JavaScript: Grafik im Browser. Martin Marinschek, Stefan Schuster IRIAN.at

Windows Presentation Foundation

Design Patterns MVC. Marcus Köhler Markus Merath Axel Reusch. Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 1

Die Alternative zum Web-Form Modell

Visual Studio 2012 Windows 8 und.net 4.5. Hans Peter Bornhauser, Noser Engineering AG Fachbereichsleiter.NET, Digicomp AG

Verbesserung des Prototyping Prozesses von Infotainment Systemen mit der Hilfe von Adobe Flash und Flex

Thomas Claudius Huber Trivadis Services AG. Endlich Cross-Platform: Universal- Windows-Apps für Windows 10

Windows Presentation Foundation (WPF) -Grundlagen -Steuerelemente. Dr. Beatrice Amrhein

Universal-Apps. Gordon Breuer Senior IT Consultant Software Engineer / Architect msg systems ag. activevb Workshop

Entwicklung und Integration mobiler Anwendungen. <Speaker> Oracle Deutschland B.V. & Co. KG

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Knockout MVVM für Javascript und HTML5. W3L AG

.NETUser. Daniel Schädler. schaedlerdaniel.wordpress.com schaedld. Group Bern

BESSER SPÄT ALS FRÜH ARCHITEKTURENTSCHEIDUNGEN AUF DEM PRÜFSTAND. AIT GmbH & Co. KG Ihr Software effizienter entwickelt.

Cross Platform Development mit SharePoint

Application Frameworks

bsc Education Center bsc solutions GmbH & Co. KG Industriestr. 50 b, Walldorf Tel:

Wissenschaftliche Vertiefung Web Services. Esslingen, 22. Januar 2016 Simon Schneider

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

UI-Architekturen mit JSF

Moderne App-Entwicklung am Beispiel waipu.tv

Eine Business-Anwendung ist ohne Eingabevalidierung

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

Mobile Development in.net mit Xamarin

Cross-Platform Mobile Development mit Xamarin Mark

Echte Cross-Plattform Anwendungen mit Angular 2 in Action!

Business Objekte. Der Schlüssel für Applikationen mit Zukunft TMN Systemberatung GmbH Folie 1

Javakurs für Fortgeschrittene

Matthias Geirhos. Entwurfsmuster. Das umfassende Handbuch. Rheinwerk. Computing

Aufbau einer Web 2.0 Community mit Grails. DOAG Konferenz + Ausstellung 2010 Nicole Hoock, esentri consulting GmbH

Matthias Fischer dotnetautor.de. Windows-Phone und Windows-8-Apps: Shared Code mit C# und XAML

Aufbau des Beispiels. Arthur Zaczek. Feb 2015

Architekturen mobiler Multi Plattform Apps

WPF Ein neues Konzept für Windowsoberflächen

Dependency Injection mit dem Unity Container

<Insert Picture Here> Generierung von ADF-Applikationen aus Metadaten des Oracle Designer

Model-View-Controller. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1

ZenQuery - Enterprise Backend as a Service Single Page Applications mit AngularJS und Spring MVC. - Björn Wilmsmann -

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Das Model View Controller (MVC) Konzept

WINDOWS PRESENTATION FOUNDATION (WPF) Martin Kühn

Anwendertage Neues in Elvis Mobile

Windows Presentation Foundation - Crashkurs

Mit Cloud Power werden Sie zum

Mit unseren Expert Sessions bleiben Sie und Ihre Kollegen immer up-to-date.

Das Model/View/Controller Paradigma

Aktuelle Kurstermine

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Konzepte der Programmiersprachen

Transkript:

VON MVC ZU MODEL-VIEW-VIEWMODEL Wissenschaftliche Vertiefung von Lukas Jaeckle Studiengang Softwaretechnik und Medieninformatik Folie 1 von 18

Agenda 1. Architekturmuster 2. Architekturmuster für interaktive Systeme Model-View-Controller Model-View-Presenter Presentation Model 3. Model-View-ViewModel Komponenten Abläufe Vergleich MVC & MVVM Bewertung Folie 2 von 18

Architekturmuster Beschreiben: die Zerlegung eines Systems in Komponenten und deren Zusammenwirken Dienen zur einfachen Klärung von komplexen Sachverhalten Beispiele: Schichtenmodelle Pipes and Filters Plug-in Model-View-Controller Definition Folie 3 von 18

Architekturmuster für interaktive Systeme Umsetzung von Separation-of-Concerns durch Trennung von: Darstellung Eingabeverarbeitung Transiente Datenhaltung Ferner: Verarbeitung von Geschäftsprozessen und Persistente Datenhaltung Unabhängige Entwicklung der Komponenten Parallelisierung der Entwicklung Vereinfachter Austausch des schnelllebigen MMI Wiederverwendbarkeit von Komponenten Einfachere Fehlerfindung Angestrebte Ziele für die Muster zu interaktiven Systemen Folie 4 von 18

Architekturmuster für interaktive Systeme Trennung von: Datenhaltung und Geschäftslogik (Model) Darstellung (View) und Benutzereingaben sowie Zustand der Darstellung (Controller) Abhängigkeiten: Die View übergibt Eingaben an den Controller Der Controller steuert aufgrund der Eingaben: Datenübergabe an das Model Verarbeitungsprozesse des Model Der Controller kann die Darstellung der View ändern Die View stellt Daten des Model dar View Model Controller Model-View-Controller (1979 Reenskaug) Folie 5 von 18

Architekturmuster für interaktive Systeme Heutige Bedeutung: Erster Ansatz, das MMI austauschbar zu gestalten Ermöglicht mehrere Darstellungen von denselben Daten Findet sich in vielen Techniken wieder Aber: Gegenseitige Abhängigkeit zwischen View und Controller erschwert das Testen der Eingabeverarbeitung Unterstützt Separation-of-Concerns nur eingeschränkt: View Synchronisation (Observable) & Konvertierung in der View Geschäftslogik & Datenhaltung im Model Model Model-View-Controller (1979 Reenskaug) Controller Folie 6 von 18

Verwandte Architekturmuster Presenter (ehem. Controller): verliert Abhängigkeit zu konkreter View durch zusätzliches Interface beinhaltet Eingabe-/Verarbeitungslogik (inkl. Konvertierung) stellt Daten für View bereit Vorteile: Testbarkeit des Presenters erhöht Observable-Muster zur Synchronisation (inkl. Abhängigkeit) entfällt View definiert nur die Darstellung Nachteile: Zusätzliches Interface Presenter und View weiterhin gegenseitig abhängig (wenn auch indirekt über IView) View <<interface>> IView Model MVP (90er, Def. Fowler) - Variante Passive View <<use>> Presenter Folie 7 von 18

Verwandte Architekturmuster Löst ggs. Abhängigkeit durch synchronisierte Data Fields Synchronisation erfolgt über Getter-/Setter-Methoden, die entsprechend bei Eingaben aufgerufen werden müssen. Ort der Synchronisation nach Bedarf: Synchronisation im Presentation Model (ehem. Controller) Schmale View und testfähige Synchronisation Abhängigkeit vom Presentation Model zur View bzw. IView IView nur zum einfacheren Testen benötigt Alternative: Synchronisation in der View IView entfällt Abhängigkeit von der View zum Presentation Model Aber: View nicht nur Darstellung (Separation-Of-Concerns verletzt) Unschön: Boilterplate Code für Synchronisation benötigt Presentation Model (2004 Fowler) Folie 8 von 18

Model-View-ViewModel Historie: 2005 mit Windows Presentation Foundation (WPF) entstanden Erstmalig von John Gossman vorgestellt Basiert auf dem Muster Presentation Model Aufteilung der Verantwortlichkeiten: Transiente Datenhaltung (Model) Darstellung (View) Eingabelogik und Datenaufbereitung (ViewModel) Model Verarbeitungslogik wird getrennt betrachtet Trick: Synchronisation mithilfe.net-event-mechanismus -> daher View nur Darstellung Komponenten View ViewModel Folie 9 von 18

Model-View-ViewModel <Window x:class="hw.mainwindowview > <TextBox Value="{Binding Text}" /> </Window> public class MainWindowViewModel : INotifyPropertyChanged { } public event PropertyChangedEventHandler PropertyChanged; private string _text = "Hello World!"; public string Text { } get{ return _text; } set{ _text = value; PropertyChanged?.Invoke( ); } Code-Beispiel Data Bindung Folie 10 von 18

Model-View-ViewModel <Window x:class="hw.mainwindowview > <TextBox Value="{Binding Text}" /> </Window> [ImplementPropertyChanged] public class MainWindowViewModel { public string Text { get; set; } = "Hello World!"; } Code-Beispiel Aspektorientierte Programmierung Folie 11 von 18

Model-View-ViewModel Model: Zuständig für transiente Datenhaltung Realisiert durch Entity-Klassen View: Bestimmt Anordnung von Kontrollelementen (z. B. TextBox) Bestimmt Animation von Kontrollelementen (z. B. Ausgrauen) Bestimmt Darstellung der Daten Bindet Kontrollelemente an Datenfelder bzw. an die Eingabeverarbeitungslogik des ViewModel Aktualisiert Anzeige bei Änderungen Model & View Folie 12 von 18

Model-View-ViewModel ViewModel hat Vermittlerrolle zwischen View und Model ViewModel stellt für die View bereit: Datenfelder (Properties) Eingabeverarbeitungslogik (Commands) z. B. Verarbeitung von Formulardaten nach Schaltflächendruck Zustand der Kontrollelemente z. B. Schaltflächen aktiviert/deaktiviert ViewModel nutzt vom Model die transiente Datenhaltung ViewModel ruft ferner die Verarbeitungslogik der Business Component (ehem. Model) auf ViewModel Folie 13 von 18

Model-View-ViewModel Weniger Abhängigkeiten Eindeutigere Trennung der Concerns (SoC) Benutzer Benutzer View Controller View ViewModel Model Business Component Model Model (Entity-Obj.) Vergleich MVC & MVVM Folie 14 von 18

Model-View-ViewModel MVVM nativ nur bei: XAML-Anwendungen (.NET Framework) WPF, Silverlight und Universal Apps Web-Frameworks wie AngularJS und KnockoutJS Aber es existieren auch Portierungen: mvvmfx für JavaFX Data Binding Library für Android Entwickler (derzeit Beta) Einsatzgebiete Folie 15 von 18

Model-View-ViewModel Basiert auf der einfachen Synchronisation der Datenfelder, weshalb die Unterstützung durch das eingesetzte Framework gegeben sein muss Data Binding erfolgt zur Laufzeit. Etwaige Laufzeitfehler unter Umständen schwer zu finden Für kleine Projekte möglicherweise Overhead Nachteile Folie 16 von 18

Model-View-ViewModel Klare Aufgabentrennung (Komponenten) Ermöglicht Aufgabenverteilung bzw. Parallelisierung der Entwicklung Geringe Abhängigkeiten Gute Erweiterbarkeit Einfaches Finden von Fehlern Effizientes Testen von Model und ViewModel Komponenten wiederverwendbar Einfacher Austausch des schnelllebigen MMI möglich Vorteile Folie 17 von 18

VIELEN DANK FÜR IHRE AUFMERKSAMKEIT Folie 18 von 18