Model-View-Controller

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

Model-View-Controller

MVC Ein wichtiges Konzept der Software-Architektur

3-Tier-Architecture und J2EE

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

Multimedia im Netz Wintersemester 2012/13

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

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Abschnitt 20: Ein Grundprinzip der Software-Architektur

Vortrag. Thema: Apache Struts + Tiles

Model View Controller Pattern

<Insert Picture Here> Oracle Forms Roadmap in Richtung SOA

JSP und Servlet Programmierung

Struts oder JavaServer Faces WA4

Kompendium der Web-Programmierung

Objektorientierte und Funktionale Programmierung SS 2014

Komponenten & Hypermedia Seminar Prof. Dr. Frank Thiesing Struts Java-Framework für Web-Applikationen. Referenten: Fabian Bartelt Jens de Witt

Drucken, GUI, Design Pattern,... PDF, Usability, Observer Pattern, MVC

Existierende Systeme I Bibliotheken & Frameworks

Be dynamic! RichClient-Funktionalitäten mit dem Google Web Toolkit

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

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

09:35 10:20 Die SOA Strategie von Oracle (Oracle Forms und Fusion Middleware) Forms Roadmap to SOA Entwicklung mit JDeveloper und Oracle ADF

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Programmierung von Client/Server- Anwendungen

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH

Einführung in die Programmierung für NF MI. Übung 11

Der IBM Websphere Portalserver

Einführung in die Programmierung für NF. Übung

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

Struts 2 Das Imperium schlägt zurück?

Einleitung. Gliederung. Struts-Framework. Model-View-Controller-Pattern

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

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

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

Einsatz und Grenzen von Java Server Faces 2.0

Inhaltsverzeichnis. Zusammenfassung Wydler

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Oliver Zeigermann, Stefan Toth embarc GmbH. Flux Facebooks Beitrag zur UI- Architektur der Zukunft

Liste V Enterprise JavaBeans

Herzlich Willkommen! eine praxisnahe Übersicht. Mit Java ins Web - mb@bebox.franken.de (c) Michael Behrendt -

Softwareentwicklung mit Enterprise JAVA Beans

Einsatz von Scalable Vector Graphics (SVG) zur Modellrepräsentation und -manipulation in Web-Anwendungen mit J2EE. Motivation und Zielsetzung

Objektorientierte Analyse (OOA) OOA-Pattern

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

Struts oder JavaServer Faces WA5

Design Patterns I. Observer, Listener & MVC

Servlet-zentrierte Architektur von Web-Anwendungen mit Java Servlets, Java Server Pages (JSPs) und Java Beans

Verhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik

Stock Exchange. Nico Danneberg, Paul Führing, Martin Hammitzsch, Lars Lindner

Prototypische Bug Report / Feature Request Anwendung

VON MVC ZU MODEL-VIEW-VIEWMODEL

Handout Klausurnoten-Tool

Motivation Grundlagen Technologien Manipulation Ecore Genmodell Demo Persistenz Notification Ausblick GMF Fazit / Quellen

Entwicklungswerkzeuge

Wir bringen Ihre Notes/Domino Anwendungen sicher ins Web , Bilster Berg Drive Resort Michael Steinhoff, agentbase AG.

Moderne Web- Anwendungen mit

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

Verteilte Systeme Hochschule Mannheim

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

Agenda. Einleitung. Einbinden von JSF AJAX Beispiele Komponenten Entwicklung PrimeFaces Praktikum. Was ist JSF Aufbau und Techniken HTML vs.

Eine Untersuchung der Funktionen des Apache Wicket Webframeworks

Einsatz von Java-Komponenten in verteilten Embedded Systems

Java - Webapplikationen

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS 2015 PHP MVC. Dr. Christian Senger. PHP MVC 1 von 21

Entwurfsmuster. Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr

Ruby on Rails. Thomas Baustert Ralf Wirdemann Alternative zur Web-Entwicklung mit Java?

Prototypischer Online-Shop

Evolution der Web-Entwicklung nach AJAX

Java Server Faces (JSF)

Praktikum Datenbanken und verteilte Systeme SS Einführung August 2008

Das Model View Controller (MVC) Konzept

Interaktive Karten als Rich Internet Applications. Ruben Schempp Anwendungen

Praktikum Datenbanken und verteilte Systeme SS Java Server Pages und Servlets -

Softwaretechnik WS 16/17

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

Struts Shale. Von Bernhard Slominski

Software- /Systemarchitektur

Modellgetriebene Entwicklung einer Eclipse RAP-Anwendung unter Verwendung des Eclipse Modeling Frameworks

Agon Solutions. The native web mobile Architekturen mit HTML5 und PhoneGap. Ihre Prozesse in besten Händen.

UI-Architekturen mit JSF

Xpert.ivy Developer Day User Dialog Features. Autoren: Peter Stöckli & Flavio Sadeghi Datum: 14. Mai 2014

Objektorientierteund FunktionaleProgrammierung

<Insert Picture Here> Oracle Application Development Framework (ADF)

Java zur Realisierung von Internetanwendungen

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

Bekannte Lösungen für bekannte Probleme benutzen. Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen

Einführung in Oracle ADF für Entwickler. Jürgen Menge Oracle Deutschland

Web 2.0 Software-Architekturen

Präsentation zur Vorstellung meiner Bachelor-Arbeit beim BSE- Seminar. Vortrag von Patrick Bitterling

Server-centric vs. Client-centric Web Applications. BITKOM Software Summit 2014, Frankfurt

Testen und Debuggen von Webanwendungen

Graphical User Interfaces

Überblick. Allgemeines, Geschichtliches. Architektur. Oberfläche. Plugins und deren Einsatz

Wahlpflichtfach Design Pattern

Graphische Oberflächen und das Java AWT

Entwurfsmuster (Design Patterns)

Java Server Pages (JSP)

Frameworks. B. Sc. Tim Lüecke Seminar Software-Entwurf FG Software Engineering

Transkript:

Model-View-Controller Seminar Software-Entwurf Leif Singer <leif@singer.sh>

Gliederung Einordnung Überblick & Geschichte Aufgabenverteilung & Beispiel Model View Controller Zusammenspiel Web Anwendungen Fazit 2

Einordnung... 3

Überblick & Geschichte trennt Präsentation, Daten und Interaktion bekanntes und erfolgreiches Pattern z. Bsp. Swing ist MVC benutzt selbst andere Patterns 1978 im Xerox PARC enstanden (Smalltalk) wird Trygve Reenskaug zugerechnet offizielle Veröffentlichung erst 1988 4

Überblick & Geschichte Siegeszug: erst Smalltalk dann Java / Swing nun Web Anwendungen... und nicht nur dort der bedeutendste Schritt für GUI-Entwicklung!... aber wie funktioniert MVC genau? 5

Überblick & Geschichte Problem: Programmlogik mit GUI-Code verwoben erschwert Erweiterung & Wartung Lösung: einmal Programmlogik schreiben (Model) daran beliebig viele GUIs binden (Views) Kommunikation zwischen Model & View jeweils durch Controller Heutige Probleme werden auch gelöst! verschiedene Endgeräte Arbeitsteilung besser möglich 6

Beispiel Als Beispiel: ein Applet, dass einen Ball bewegt 7

Model eigentliche Programmlogik Daten mit Änderungsmethoden wird von Views beobachtet (extends Observable) benachrichtigt Views bei Änderungen weiss sonst nichts über die Views / Controller hilfreich: Model Interface festlegen, um Models leicht austauschen zu können 8

Model 9

Model 10

Model 11

Model 12

View Präsentation des Models für den Benutzer beobachtet Model (implements Observer) aktualisiert sich bei Änderungen toll: schachtelbar! (Composite Pattern) läßt sich sehr einfach austauschen 13

View 14

View 15

View 16

Controller interpretiert die Events vom View, leitet sie an Model weiter zu jedem View ein Controller beliebig viele Paare für ein Model in Swing oft als ActionListener im View Sun nennt das Delegate (!= C# Delegates!) 17

Controller 18

Controller 19

Controller 20

Zusammenspiel 21

??? 22

View austauschen Heute wieder dabei: Konqi! 23

View austauschen Der neue View View beerben: ViewKonqi Bild laden, Bildgröße berücksichtigen Bild zeichnen Sonstige Änderungen? im Controller KonqiView instanziieren sonst nichts 24

View austauschen 25

View austauschen 26

View austauschen 27

View austauschen 28

View austauschen 29

View austauschen 30

Aufgekommene Fragen Sind bisher Fragen aufgekommen? 31

Web Anwendungen früher: statisches HTML offensichtlich: zu unflexibel CGI und Skriptsprachen zu wenig strukturiert zu viel Mehrfacharbeit J2EE, Frameworks, Application Server Entwicklung noch aktiv (Java Server Faces!) Model 1 & 2 Architekturen: MVC Variationen 32

Web Anwendungen Model 1 "seiten-zentrisch" Trennung von View und Model z. Bsp. über Beans provoziert aber doch Vermengung Arbeitstrennung trotzdem problematisch Status über Get/Post traditionelle, harte Verlinkung von JSPs starke Kopplung :( kein zentraler Controller bspw. Input-Validierung auf jeder Seite 33

Web Anwendungen Model 2 empfohlen für mittlere bis große Projekte "servlet-zentrisch" ein zentrales Controller-Servlet arbeitet als Dispatcher relevante Patterns: Front Controller, Application Controller validiert Eingabe, wählt Sprache, etc. wählt View aus Views sind JSPs interagiert mit Model (typischerweise JavaBean(s)) gibt Response zurück an Servlet z.bsp. Struts Framework 34

Web Anwendungen Model 2 Browser sendet Request, Controller nimmt an Controller-Servlet benutzt ggf. das Model, leitet dann an entsprechenden View weiter View greift auf Model zu, generiert Response 35

Web Anwendungen Spezielles Framework: JavaServer Faces aktuelle Entwicklung (1.0: März 2004) entstanden durch Java Community Process Besonderheit: nur semantische Widgets je nach Anwendungsbereich eigene Renderer bauen! XHTML WML XUL... JSF: Fokus auf UI Rendering, Events,... Struts: eher höhere Abstraktion; Forms, Actions,... momentanes Ziel: JSF & Struts kombinierbar machen 36

Fazit Verwendete Patterns Observer Composite Front Controller, Application Controller (Model 2) Strategy MVC ist also ein Pattern aus anderen Patterns ein Meta-Composite? 37

Fazit Anmerkungen Kontroverse: MVC ist nicht OO! Argument: lückenhafte Kapselung View und Controller müssen Model kennen Konsequenz ist wichtig, aber praktische Anwendung wichtiger Na und? Nutzen maximieren, Paradigmen mischen Nicht übertreiben! Risiko: MVC nur wegen Buzz-Faktor benutzen deshalb immer fragen: ist das hier sinnvoll? sicherlich Erfahrung nötig gilt allgemein für die Verwendung von Patterns! 38

Fazit Vorteile Austauschbarkeit der Komponenten Arbeitsteilung Wiederverwendbarkeit Übersichtlichkeit Wartbarkeit 39

Fazit Nachteile evtl. zu viel Aufwand für sehr kleine Projekte Proof of Concept Prototypen GUI-Tests fehleranfälliger: "Liar View" Bug Pattern bspw. notifylisteners() vergessen 40

Danke für die Aufmerksamkeit! 41