Architektur Pattern. Organisation und Interaktion zwischen den Komponenten

Ähnliche Dokumente
VON MVC ZU MODEL-VIEW-VIEWMODEL

MVC-Architektur am Beispiel von OLAT

Model-View-Controller

Komponentenbasierte Client-Architektur. Bernd Olleck, IT Beratung Olleck Dr. Martin Haft, sd&m AG München,

Abschnitt 20: Ein Grundprinzip der Software-Architektur

Model-View-Controller

Skalierbare Enterprise Architekturen für Universal Windows Platform Apps

MVC mit Lazarus Reinheim. MVC mit Lazarus

ENTERPRISEY ANGULAR.JS

MVC Ein wichtiges Konzept der Software-Architektur

Model View Controller Pattern

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

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

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

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

Software- /Systemarchitektur

MVVM (Model View ViewModel) in JavaFX

Model-View-ViewModel (MVVM)

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Multimedia im Netz Wintersemester 2012/13

3-Tier-Architecture und J2EE

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

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

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

Maximilian Berghoff 2

Alternative Architekturkonzepte

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

DB-Aspekte des E-Commerce Schwerpunkt: Techniken. Servlets und JavaServer Pages

Business Applika-onen schnell entwickeln JVx Framework - Live!

Fragen Arthur Zaczek. Apr 2015

Client-Architektur. in Angular. Philipp Burgmer

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

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

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

Aachen, den 19. Januar 2016

Software EMEA Performance Tour Berlin, Germany June

Workplace Portal G8. Dipl.-Wirt. Ing. Thomas Bruse

Effektive Software-Architekturen Ein praktischer Leitfaden

Eine Untersuchung der Funktionen des Apache Wicket Webframeworks

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

Single Sourcing in Java: Desktop-Anwendung & Web-Applikation aus einer Quelle

Verhaltensmuster. Modellieren von komplexem Verhalten

Windows Presentation Foundation

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

Medientechnik Sommersemester 2016

UI-Architekturen mit JSF

Vorlesung Software-Engineering I

Architecture Blueprints

Komponenten & Frameworks Seite 1

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

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

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler

Kapitel 5: Das Design

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

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

Schichtenarchitekturen und ihre Auswirkungen auf die objektorientierte Modellierung

Praktikum Datenbanken und verteilte Systeme SS Einführung August 2008

Eine technische Plattform für Smart-Client-Systeme. Alexander Ziegler

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

Das Model/View/Controller Paradigma

Entwurfsprinzip. Entwurfsprinzip

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

Technische Schulden in Architekturen erkennen und beseitigen

Java.NET Web-Technologien Mobile

Architecture Blueprints Ein Leitfaden zur Konstruktion von Softwaresystemen mit Java Spring,.NET, ADF, Forms und SOA

Unternehmensdokumente mit dem XML Publisher erzeugen

Langlebige Softwarearchitekturen - technische Schulden beherrschen und abbauen

Entwicklung einer Mobile Application mit ADF Mobile

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

Rapid Java wie mit Forms

Systema rch itektu ren für Verteilte Anwendungen

Enterprise JavaBeans Überblick: 12. Session Facade Einleitung 12.2 Problem 12.3 Lösung. Prof. Dr. Björn Dreher Liste V Enterprise JavaBeans 460

SOLID für.net und JavaScript

Langlebige Softwarearchitekturen der Weg aus den technischen Schulden

Software Engineering. 5. Architektur

XML Publisher die universelle Lösung für Geschäftsdokumente

Javakurs für Fortgeschrittene

Raber+Märcker Techno Summit 2014 Microsoft Dynamics NAV 2013 R2 Überblick und Hintergründe zu aktuellen Version.

Projekt im Praktikum zur OOS im Sommersemeter 2016

Browserbasiertes, kollaboratives Whiteboard

Architecture Blueprints

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

Zukunft der Oracle Applikationsentwicklung: BC4J & XML

Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung

VAADIN, SPRING BOOT & REST

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Objektorientierte Programmierung

Paket Kommando. Command Command Processor Visitor

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

Architekturen. Von der DB basierten zur Multi-Tier Anwendung. DB/CRM (C) J.M.Joller

Inhaltsverzeichnis. 1 Einleitung 1. 2 Grundlagen von Softwarearchitekturen 11

Datenbanksysteme. Donald Kossmann TU München

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

Echte Cross-Plattform Anwendungen mit Angular 2 in Action!

Profitieren Sie von einer offenen und flexiblen Clouddienstplattform

MVVM in Windows 8 und Windows Phone 8

JavaFX Beispiel Lights Out (Teil 1: Ansicht)

Transkript:

Architektur Pattern Organisation und Interaktion zwischen den Komponenten

Einteilung Es gibt verschiedenste Architekturmuster welche abhängig vom Projektumfang und -umfeld sinnvoll verwendet werden: Model-View-Controller, Model-View-ViewModel Multitier- und Layer- Architektur Verteilte Systeme Domain Driven Design, Hexagonale Architektur Web Bereich, JavaEE,.Net, Client-Server Service-Oriented (Prozess-Orientiert), Peer-to-Peer,... Rich Client, GUI Applikation Innerer Aufbau von Softwarekomponenten Reflection, Inverstion of Control, Dependency Injection,... Adaptive (Komponenten) Systeme, Entkoppelung

Model View Controller Modell-Präsentation-Steuerung

Problem/Umfeld Verschiedene Nutzer oder Sichten der gleichen Daten View 1: Pie Chart ASD: ASD: 95 95 CJA: CJA: 64 64 FBU: FBU: 109 109 JPQ: JPQ: 152 152 SGD: SGD: 204 204 View 2: Bar Chart ASD 95 15% CJA 64 10% FBU 109 JPQ 152 18% SGD 33% 204 24% View 3: Spread Sheet

Problem/Umfeld Zur Präsentation eines Models werden ein oder mehrere Views erzeugt. Jedes View muss sicherstellen, dass es den aktuellen Zustand des Models korrekt wiedergibt. Lösung: Observer Jedes View meldet sich beim Model als Observer an. Wenn sich das Model ändert, benachrichtigt es alle Observer. Dadurch erhalten die Views die Möglichkeit, sich anzupassen. Problem: User-Events

Model-View-Controller Drei Teile Ausgabe Benutzer Benutzer Eingabe Model View Controller View Controller Controller Model Model Daten und ihre Verarbeitung Präsentation der Daten Benutzer-Eingaben Entkoppelung der verschiedenen Teile der Applikation mehr Flexibilität

View Stellt die Daten / Informationen dar (Präsentation) Leitet Benutzereingaben an den Controller weiter Kennt Controller und Model Wird vom Model über Datenänderungen informiert (Observer)

Controller Verwaltet eine oder ev. mehrere Views Nimmt von der View die Benutzeraktionen (Events) entgegen und wertet sie aus. Leitet die Aktionen an das Model weiter Wird ev. vom Model über Datenänderungen informiert (Observer) um auf Zustandsänderungen zu reagieren. Kann die View steuern (Ansicht wechseln, auf andere Seite wechseln)

Model Der Funktionale Teil der Applikation Zuständig für die Daten-Verwaltung und die Business Logik Observable Kennt die angemeldeten Observer (Views und Controller) Benachrichtigt alle Observer über Daten- oder Zustands-Änderungen

Funktionaler Ablauf

MVC mit Observable / Observer

Event Handling im MVC Pattern

Verweis auf andere Muster Observer Wird Model View Presenter im MVC üblicherweise benutzt View agiert nur mit Presenter, dieser ist Bindeglied zwischen Model und View steuert die logischen Abläufe zwischen den beiden anderen. Model View ViewModel MVP mit Command- und Data-Binding

Offene Punkte Aufteilung der Logik zwischen Controller und Model? Ansiedlung von Formatierung und Internationalisierung? Ort für die Validierung der BenutzerEingaben? Werden in verschiedenen Implementierungen / Frameworks unterschiedlich gelöst.

Model View ViewModel Data-Binding / Model View Presenter

Umfeld/Zweck Analog zu MVC Pattern Trennung von Darstellung und Logik Vereinfachung der Schnittstelle durch DataBinding

Eigenschaften Auftrennung in separate Teile Die View kapselt den UI Aufbau (z.b. HTML5). Das ViewModel kapselt die Präsentationslogik. Das Model kapselt die Businesslogik und deren Daten. View interagiert mittels Data-Binding und Events mit dem ViewModel Lose Kopplung

View Stellt die Daten / Informationen dar (Präsentation) Nimmt Benutzeraktionen entgegen. Kennt das ViewModel aber nicht das Model. Nicht für die Verarbeitung der Benutzerdaten zuständig. Definiert die Daten- und Befehls-Bindung zum ViewModel. Enthält im Idealfall keine Businesslogik.

Model Enthält Daten und Geschäftslogik. Greift - falls notwendig auf Backend zu. Unabhängig von Präsentation (View) und Steuerung (ViewModel). Zuständig für Daten und Methoden zur Datenmanipulation (CRUD Operationen).

ViewModel Stellt die Daten aus dem Model und die Befehle für die (eine) View bereit. Implementiert die Aktionslogik der View. Kennt das Model, jedoch nicht die View (nur via DataBinding). Abonniert das Model als Observer. Wird über Veränderungen im Model benachrichtigt.

Funktionalität

Beispiel: Angular Quelle: https://angular.io/guide/architecture

Beispiel: Angular (View und ViewModel) View: <h2>hero List</h2> <p><i>pick a hero from the list</i></p> <ul> <li *ngfor="let hero of heroes" (click)="selecthero(hero)"> {{hero.name}} </li> </ul> <hero-detail *ngif="selectedhero" [hero]="selectedhero"></herodetail> ViewModel: export class HeroListComponent implements OnInit { heroes: Hero[]; selectedhero: Hero; constructor(private service: HeroService) { } ngoninit() { this.heroes = this.service.getheroes(); } } selecthero(hero: Hero) { this.selectedhero = hero; }

Beispiel: Angular (Model) Model: @Injectable() export class HeroService { private heroes: Hero[] = []; constructor( private backend: BackendService, private logger: Logger) { } } getheroes() { this.backend.getall(hero).then( (heroes: Hero[]) => { this.logger.log(`fetched ${heroes.length} heroes.`); this.heroes.push(...heroes); // fill cache }); return this.heroes; }

Vorteile Einfachere View (fast kein GlueCode) Einfach austauschbar Strikte Trennung von Design und Logik Gute Testbarkeit Datengebunde View updatet sich automatisch Nachteile Grössere Komplexität Zweiseitiger Observer Grosser Rechenaufwand

Anwendung MVVM wird eingesetzt in XAML/WPF JavaFX HTML5 (HTML/JavaScript, z.b. Angular, Knockout,...)...

Multitier- and Layered Architecture

Umfeld Als Multitier Architecture wird ein Architekturmuster bezeichnet, bei der eine Applikation in mehrere eigenständige Schichten (Tiers) unterteilt wird, welche separate Laufzeitinstanzen sind. Das Layered Architecture Architekturmuster unterteilt die Anwendung ebenfalls in mehrere Schichten, welche jedoch typischerweise nicht alle eigenständig und separate Laufzeitinstanzen sind. Bei beiden erfolgt der Aufruf immer von der «höheren» zu der «tieferen» Schicht/Tier. Vorbild ist das OSI-Schichtenmodell (BetriebssystemTheorie).

Kategorie/Zweck der Layered Architecture Eine Schichten-Architektur ist ein häufig angewandtes Strukturierungsprinzip Durch eine Schichtenarchitektur wird die Komplexität der Abhängigkeiten innerhalb des Systems reduziert Klare Aufgabenteilung Geringe Kopplung Schichten verhindern Zyklen im Abhängigkeitsgraph Schichten werden (wegen ihrer wohldefinierten Aufgabe) gut verstanden.

Kategorie/Zweck der Multitier Architecture Die Unterteilung der Anwendung in mehrere Laufzeiteinheiten mit klar definierten Aufgaben ermöglicht eine bedarfsgerechte Skalierung der Anwendung. Jeder Tier hat seine klare Aufgabe: Klare Aufgabenteilung Geringe Kopplung 3-Tier Architektur: Aufteilung der Anwendung in: Client (z.b. JavaScript Client, läuft im Browser des Benutzers) Server (Businesslogik, läuft auf Server X oder in Cloud) Datenbank (Persistenz, läuft auf Server Y oder in Cloud) Eine Multitier Architektur bedingt den Einsatz von Layers, jedoch nicht umgekehrt.

Beispiel Layered Architecture Quelle: Software-Referenzarchitektur des EJPD

Beispiel Multitier Architecture Quelle: https://www.lucidchart.com/pages/uml/deployment-diagram

Vorteile Multitier- / Layered- Architecture Multitier-Architekturen sind gut skalierbar und weisen einen hohen Grad an Flexibilität auf. Einzelne Tiers resp. Layers sind einfach austauschbar. Bei Veränderung der Schnittstellen/Interfaces sind nur die beiden angrenzenden Tiers resp. Layers betroffen. Multitier-Architekturen kapseln MaschinenAbhängigkeiten und sind daher leicht portierbar. Multitier-Architekturen erlauben die örtliche Verteilung der Tiers (Hochverfügbarkeit, Katastrophenvorsorge)

Skalierbarkeit Scale-Up meist nur mit teurer Hardware möglich Multitier Architektur ist meist Voraussetzung für Scale-Out In der Cloud ist Scale-Out der Standard Cloud kann Scale-Out dynamisch anhand der Last vornehmen Multitier- und damit auch Layered Architecture ist heute Standard für Enterprise Anwendungen.

Nachteile Es ist oft schwierig Systeme sauber in Schichten zu strukturieren. Zwischen den Schichten sind zusätzliche Klassen/Interfaces oder sogar RemoteSchnittstellen nötig Zusätzlicher Overhead durch die Auftrennung in Schichten (Weiterleitung der Meldungen) Performanz-Probleme Eine (zu) grosse Anzahl Schichten verursacht eine unnötig komplexe Struktur

Verwendung Multitier- und Layered- Architekturen sind von Vorteil wenn grosse Skalierbarkeit und Flexibilität der Applikation erfordert ist. der Austausch einzelner Schichten einfach sein soll. Schnittstellen stabil bleiben (Standardschnittstellen). Komponenten und Hardware/Software-Plattformen austauschbar sein sollen. Man die Hardware/Software Plattformen einkauft Cloud. es möglich sein soll Komponenten mit komplexer Funktionalität weiter aufzuteilen. das System von mehreren Teams mit klaren Verantwortlichkeiten erstellt werden soll.

Praxisbeispiel: Netflix So hat sich die Anzahl der Streaming-Mitglieder seit 2008 verachtfacht und auch die Streaming-Nachfrage pro Nutzer ist stark gestiegen, was in acht Jahren zu einem 1.000-fachen Anstieg des Streaming-Aufkommens geführt hat. Strukturell sind wir von einer monolithischen App auf Hunderte von Mikrodiensten umgestiegen und haben unser Datenmodell mithilfe von NoSQL-Datenbanken denormiert. Quellen: https://openconnect.netflix.com, https://media.netflix.com/de/company-blog/completing-the-netflix-cloud-migration

Verweis auf andere Muster Verwandte (Strukturierungs-) Muster sind Microservices: Eine Anwendung besteht aus mehreren Services, welche eine genau abgegrenzte Funktionalität der Anwendung zur Verfügung stellen. Sie basieren auf der Multitierund auch auf der Layered- Architecture. Hexagonal Architecture: Beispiel für Layered Architecture. Quelle: http://alistair.cockburn.us/hexagonal+architecture