Model-View-ViewModel (MVVM)



Ähnliche Dokumente
Model View Controller Pattern

GUI-Entwicklung 2: Windows Presentation Foundation

XMLBeam. Einfach XML-Handling. W3L AG

VON MVC ZU MODEL-VIEW-VIEWMODEL

WPF Steuerelemente Listbox, ComboBox, ListView,

Vaadin TouchKit. W3L AG

Werkzeuge für ein innovatives Wissensmanagement. W3L AG

WPF Bindung. Dr. Beatrice Amrhein

Klausur GUI-Entwicklung WS10/11 1.Termin

Contexts and Dependency Injection. W3L AG

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

MVVM in Windows 8 und Windows Phone 8

CROSS PLATFORM DEVELOPMENT MIT PORTABLE CLASS LIBRARIES

Einflussfaktoren auf eine Softwarearchitektur und ihre Wechselwirkungen Entwurfsentscheidungen systematisieren

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

Fragen Arthur Zaczek. Apr 2015

Visual Studio LightSwitch 2011

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

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

Cross-Platform Mobile mit.net

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Ein wichtiges Konzept der Software-Architektur

Von Windows-Forms zu WPF mit Expression Blend? Thomas Müller conplement AG Nürnberg

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

Dokumentation: Content App Framework

Integrierte und automatisierte GUI-Tests in Java

WPF - Windows Presentation Foundation

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Methoden zur Entwicklung von Industrial Product Service Systems (IPS 2 )

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

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

MOC Entwicklung von ASP.NET MVC 4 Webapplikationen

Matthias Fischer dotnetautor.de. Windows 8: Tablet, Telefon & Co.

Erfahrungen mit Hartz IV- Empfängern

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Objektorientiertes Software-Engineering

Ein mobiler Electronic Program Guide

BIF/SWE - Übungsbeispiel

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

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

Javascript kann nun auf die Objekte der Webseite über entsprechene Objektbezeichner zugreifen und deren Attribute auslesen oder verändern.

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

8 Design Patterns. Events

SUB-ID- VERWALTUNG MIT GPP SETUP-GUIDE FÜR PUBLISHER

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Verwendung der PayJoe -API zum externen Upload von Belegen und Zahlungen

Objektorientierte Programmierung

Die Alternative zum Web-Form Modell

Application Frameworks

Skalierbare Webanwendungen mit Apache und Apache Tomcat. W3L AG

Skalierbare Enterprise Architekturen für Universal Windows Platform Apps

Anleitung auf SEITE 2

Rolf Behrens (B.Sc.) FH Osnabrück

Struts 2 Das Imperium schlägt zurück?

Thomas Claudius Huber. Asynchrone Programmierung mit C#

ITG RKSVNet - Webservice Signierung von Belegen via Internet

DataSpace 2.0 Die sichere Kommunikations-Plattform für Unternehmen und Organisationen. Your Data. Your Control

Delegatesund Ereignisse

Einführung in die Programmierung

UI-Architekturen mit JSF

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Objektorientiertes JavaScript

Eignet sich Eclipse RCP als Enterprise Plattform? 2. Mai 2006 Lars Stucki & Edwin Steiner

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck

Programmieren 2 07 JavaFX-Properties und Data-Binding

Testen mit JUnit. Motivation

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D

SEMINARREIHE MEDIZINETHIK

UNSER WISSEN FÜR IHREN ERFOLG: UX UND USABILITY ENGINEERING SEMINARE

Von WinForms nach WPF

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Eine Anwendung mit InstantRails 1.7

IBM Software Demos Rational Software Delivery Platform - Änderungen an Design und Architektur einer Anwendung

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

D a s P r i n z i p V o r s p r u n g. Anleitung. - & SMS-Versand mit SSL (ab CHARLY 8.11 Windows)

Seminar für Führungskräfte

Mobiler. Vernetzter. Emotionaler. Wie SBG auf die Entwicklung des Internets reagiert

Testen von graphischen Benutzeroberflächen. 24. Juni 2015

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

Praktikant / Abschlussarbeit im Bereich Softwareentwicklung / Mechatronik (m/w)

Ergebniszusammenfassung TU Clausthal

Von Perimeter-Security zu robusten Systemen

Informationswirtschaft II Rational Unified Process (RUP)

Informationswirtschaft II

SMS-Tool. Seite 1 von 8

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

1. Übung zu "Numerik partieller Differentialgleichungen"

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

Lorenz & Partners Legal, Tax and Business Consultants

IVS Arbeitsgruppe Softwaretechnik Abschnitt Management komplexer Integrationslösungen

WPF Steuerelemente. Dr. Beatrice Amrhein

Java: Vererbung. Teil 3: super()

henheim.de marketing.uni uni-hoh

HP Product Content Syndication Steigern Sie Ihre Add-to-Cart Rate in 3 einfachen Schritten

Transkript:

1 Model-View-ViewModel (MVVM) Grundlagen und Einsatz des GUI-Architekturmusters W3L AG info@w3l.de 2011

2 Agenda Motivation Architekturmuster MVVM-Pattern Fazit Aufbau & Komponenten Technische Grundlagen Databinding ICommand Entwicklung und Frameworks Praxisbeispiel (WP7) Einsatzgebiete Anti-Pattern

3 Architekturmuster Was sind Architekturmuster? Ein Architekturmuster beschreibt die grundlegende Struktur und Organisation einer Anwendung Architekturmuster werden in unterschiedliche Kategorien eingeteilt Interaktive Systeme: Umgang mit Benutzereingaben Model-View-Controller (MVC) Model-View-Presenter (MVP) Model-View-ViewModel (MVVM)

4 Architekturmuster Schwerpunkt GUI Model-View-Controller Vorteile Aufteilung von Zuständigkeiten Feste Kommunikationswege Probleme Controller 1 Die View kennt das Model Controller sind schwer austauschbar Model * View Unit-Tests sind kritisch [~] Schwergewichtig

5 Architekturmuster Schwerpunkt GUI Model-View-Presenter View 1 1 Presenter Verbesserung Views sind passiv, keinerlei steuernde Logik Bessere Testbarkeit Präsentationslogik im Presenter Probleme Veränderungen in der View haben i.d.r. Auswirkungen auf den Presenter (enge Kopplung) Schwergewichtige Presenter Model

6 Mögliche Lösung der Probleme von MVC & MVP MODEL-VIEW-VIEWMODEL

7 Model-View-ViewModel Model-View-ViewModel View * 1 ViewModel Vorteile gegenüber MVC & MVP Schwache Kopplung zwischen View und View-Model Command-basierte Interaktion Testbarkeit Austauschbare Views und View- Models Probleme Speziell für Silverlight & WPF Schwierigkeiten mit Databinding Model

8 Model-View-ViewModel MVVM-Triade Model die Datenhaltung Repräsentiert die Daten Abstrahiert von der Datenquelle (WCF-Dienst; RIA-Dienst, REST/JSON-Quelle, ) Kann Validierungsmechanismen beinhalten View das Userinterface Realisiert das Look & Feel Stellt die Informationen dar Kommuniziert mit dem ViewModel bei Veränderungen Umsetzung mit XAML und Code-Behind ViewModel die Brücke zwischen View und Model Beinhaltet die Präsentationslogik Informiert die View über Veränderung der Daten (INotifyPropertyChanged) Reagiert auf Benutzeraktionen (ICommand)

9 Model-View-ViewModel Separation of Concerns <<data-binding>> <<data-access>> View ViewModel Model Darstellung Verhalten der Eingabe-Elemente Aktionen Aufbereitung der Daten Validierung Repräsentiert die Daten Steuerung der GUI

10 MVVM - Grundlagen Grundlagen von MVVM: Databinding Verbindung zwischen View und ViewModel Die View referenziert das ViewModel Dies erfolgt über die DataContext-Eigenschaft von der View this.datacontext = new MainViewModel(); Variante 1 <phone:phoneapplicationpage.datacontext> <viewmodels:mainviewmodel /> </phone:phoneapplicationpage.datacontext> Variante 2 this.datacontext = ViewModelLocator.Find("MainViewModel"); Variante 3

11 MVVM - Grundlagen Grundlagen von MVVM: Databinding In Silverlight und WPF wird ein Databinding-Konzept angeboten Durch Databinding können Objekte an GUI-Elemente gebunden werden <TextBox Text="{Binding Path=UserName, Mode=TwoWay" Height="25" TextWrapping="NoWrap" Margin="1" /> Binding Path Gibt den Namen der zu bindenden Property an Mode OneWay: View Objekt-Property TwoWay: View Objekt-Property

12 MVVM - Grundlagen Grundlagen von MVVM: Änderungsbenachrichtigung Einsatz des Observer-Musters Das ViewModel stellt dabei das Subject dar In.NET wird hierfür das INotifyPropertyChanged-Interface implementiert public class LoginViewModel : INotifyPropertyChanged { public ObservableCollection<UserViewModel> Users; public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(string propertyname) { if (PropertyChanged!= null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); private String _Username; public String Username { get { return _Username; set { _Username = value; NotifyPropertyChanged("Username");

13 MVVM - Grundlagen Grundlagen von MVVM: Command-Binding Über die ICommand-Schnittstelle ist es möglich, Aktion zu binden Mögliche Implementierung: public class Command : ICommand /* vereinfacht */ { private readonly Action _handler; private bool _isenabled; public event EventHandler CanExecuteChanged; public Command(Action handler) { _handler = handler; _isenabled = true; public bool CanExecute(object parameter) { return _isenabled; public void Execute(object parameter) { _handler();

14 MVVM - Grundlagen Grundlagen von MVVM: Command-Binding Einsatzmöglichkeiten von ICommand <Button Command="{Binding LoginCommand" Content="Login"/> Command-Binding in der View //Eine Alternative mit Code-Behind (WP7) <Button Content="Login" Click="Button_Click"/> private void Button_Click(object sender, RoutedEventArgs e) { _viewmodel.loginbutton.execute(null); public ICommand LoginButton { get; set; public LoginViewModel() { LoginButton = new Command(OnClickLoginButton); Ereignis-Senke im ViewModel private void OnClickLoginButton() { //Do Something

15 Model-View-ViewModel Entwicklung von MVVM Ursprung Presentation-Model Design-Pattern von Martin Fowler (2004) Einsatz in WPF und Silverlight John Gossman spricht erstmals vom MVVM-Pattern (2005) Erste Anleitung für eine MVVM-basierte Architektur Prism: Patterns for Building Composite Applications (2008) MVVM-Frameworks MVVM Light Toolkit (Laurent Bugnion) Caliburn Micro (Rob Eisenberg) MVVM Foundation (J. Smith)

16 Model-View-ViewModel DEMO

17 MVVM - Einsatzgebiete Einsatz von MVVM Speziell für WPF-basierten Techniken Silverlight; Silverlight for Windows Phone; Window Presentation Foundation Abhängig vom Databinding-Konzept DataContext (Property-Binding) Command-Binding (DelegateCommand) Event-basierten Benachrichtigung Model-View-ViewModel mit anderen Technologien? Presentation-Model-Pattern + Observer-Pattern Die Caliburn-Gruppe diskutiert zur Zeit über eine Implementierung des MVVM-Musters mit Java-Script und HTML5

18 Fazit Stärken von MVVM Trennung von Zuständigkeiten Präsentation und Präsentations-Logik sind strikter getrennt Die Darstellung kann unabhängig von der Geschäftslogik ausgetauscht werden Einfache Unit Tests gegen das ViewModel möglich Bessere Arbeitsaufteilung zwischen Entwickler und Designer möglich Probleme von MVVM Databinding stellt eine Blackbox dar Höherer Kommunikationsaufwand Höherer Entwicklungsaufwand

19 Literatur http://msdn.microsoft.com/en-us/magazine/dd419663.aspx http://martinfowler.com/eaadev/presentationmodel.html http://msdn.microsoft.com/en-us/magazine/ff798279.aspx http://www.wpftutorial.net/mvvm.html Vielen Dank!

Inhouse-Schulungen W3L-Akademie Flexibel online lernen und studieren! Wir bieten Inhouse-Schulungen und Beratung durch unsere IT-Experten und Berater. Schulungsthemen Softwarearchitektur (OOD) Requirements Engineering (OOA) Nebenläufige & verteilte Programmierung Gerne konzipieren wir auch eine individuelle Schulung zu Ihren Fragestellungen. In Zusammenarbeit mit der Fachhochschule Dortmund bieten wir zwei Online-Studiengänge B.Sc. Web- und Medieninformatik B.Sc. Wirtschaftsinformatik und 7 Weiterbildungen im IT-Bereich an. Sprechen Sie uns an! Tel. 0231/61 804-0, info@w3l.de Besuchen Sie unsere Akademie! http://akademie.w3l.de