FWP Aktuelle Technologien zur Entwicklung verteilter JavaAnwendungen Sommersemester 2015 Michael Theis, Lehrbeauftragter 1 Wer braucht schon einen Architekten? Sommersemester 2015 Michael Theis, Lehrbeauftragter 2 Applikationen benötigen anderer Systeme Applikationen unterstützen andere Systeme Web UI (HTTP/HTML) Enterprise Application Remote Service Interfaces (RMI) Mainframe based Applications (JCA) Relational Databases (JDBC/JPA) Remote Service Interfaces (RMI) Web Service Interfaces (HTTP/SOAP) Web Service Interfaces (HTTP/SOAP) Message-based Interfaces (JMS) Message-based Interfaces (JMS) Wie wollen Sie diese Komplexität ohne Architektur bewältigen? Sommersemester 2015 Michael Theis, Lehrbeauftragter 3 Sommersemester 2015 Michael Theis, Lehrbeauftragter 4 Präsentation (Presentation*) Geschäftslogik (Business, Domain*) Integration (Integration, Data Source*) • Interaktion zwischen Anwendung und Benutzer • Anzeige und Bearbeitung von Informationen • Kern der Anwendungen bestehend aus Diensten in einer Serviceschicht (Service Layer) und Domänenmodell (Domain Model) • Integration externer Ressourcen • Transformation externes Domänenmodell / internes Domänenmodell Quelle: Martin Fowler „Patterns of EAA“ mit geänderten Namen (*: urspr. Name) Sommersemester 2015 Michael Theis, Lehrbeauftragter 5 Wohldefinierte Schnittstellen zwischen den Schichten Abhängigkeiten zwischen Schichten nur in eine Richtung Getrennte Verantwortlichkeiten Lose Kopplung / Hohe Kohäsion Verteilung der Schichten auf verschiedene Lokationen möglich Sommersemester 2015 Michael Theis, Lehrbeauftragter 6 Benutzer HTTP / HTML Benutzeroberfläche für menschliche Benutzer Beinhaltet nur Präsentationslogik Höchste Änderungshäufigkeit innerhalb der Anwendung Rich Client oder Thin Client Präsentation (Presentation) Sommersemester 2015 Michael Theis, Lehrbeauftragter 7 HTTP/REST HTTP/SOAP RMI/IIOP Lokal Kern der Anwendung Bereitstellung von Services Geschäftslogik (Business) Service Layer Service Service Domain Model Domain Object Sommersemester 2015 Domain Object Domain Object Lokal: Präsentationsschicht der eigenen Anwendung Entfernt: Andere Anwendungen Services operieren auf einheitlichem Domänenmodell Nutzt Integrationsschicht für Integration von externen Ressourcen Michael Theis, Lehrbeauftragter 8 Lokal Integration (Integration, Data Source) Resource Access Components Repository Integriert externe Ressourcen Bildet externes Domänenmodell auf internes Domänenmodell ab Kapselt Information über konkrete Integration Adapter Datenbank Sommersemester 2015 JCA JPA Welche Datenbank? Welches Kommunikationsprotokoll? Welches externe System? HOST Michael Theis, Lehrbeauftragter 9 Auch: Ports & Adapter Außenwelt kommuniziert mit Applikation über Ports Applikation kommuniziert mit Außenwelt über Ports Technologiespezifische Adapter hinter Ports übersetzen Kommunikation Applikation kennt keine Details der Außenwelt Außenwelt ist simulierbar Adapter Adapter Adapter Adapter Application Adapter Adapter HOST Datenbank Sommersemester 2015 Michael Theis, Lehrbeauftragter 10 Sommersemester 2015 Michael Theis, Lehrbeauftragter 11 UI Component Business Component Resource Access Component Faces Servlet Boundary Mainframe RAC UI Component Tree Control RDBMS RAC Entity Webservice RAC Managed Bean View Sommersemester 2015 Messaging RAC Michael Theis, Lehrbeauftragter 12 Ermöglicht Entkopplung, Kapselung und klare Trennung der Verantwortlichkeiten Erleichtert die Erstellung service-orientierter Applikationen Leicht umzusetzen 1 Implementierungsklasse pro Komponente 1 Interface pro Komponente (empfehlenswert) Gruppierung in Module/Packages gemäß Konvention Sommersemester 2015 Michael Theis, Lehrbeauftragter 13 Entscheidung für Designmodell zu Projektbeginn Wesentliche Modelle: Serviceorientiert (Service Oriented Architecture SOA) Domänengetrieben (Domain Driven Design DDD) Modelle können kombiniert werden, aber ein Modell sollte Hauptmodell sein Sommersemester 2015 Michael Theis, Lehrbeauftragter 14 Service Oriented Architecture Services enthalten alle Logik Domänenobjekte sind leere Datenträger Optimierung für Verteilung bestimmt internes Design Fördert Anti-Pattern Anemic Domain Model * Widerspricht objektorientiertem Design Domain Driven Design Domänenobjekte enthalten Daten und Logik Services enthalten nur Logik zur Orchestrierung von Domänenobjekten Verteilter Zugriff über Adapter Entspricht objekt-orientiertem Design * Martin Fowler „AnemicDomainModel“ http://www.martinfowler.com/bliki/AnemicDomainModel.html Sommersemester 2015 Michael Theis, Lehrbeauftragter 15 Sommersemester 2015 Michael Theis, Lehrbeauftragter 16 Verteilung • Regelt Kommunikation verteilter Anwendung Sommersemester 2015 Transaktionen • Steuern Zugriff auf transaktionale Resourcen • Stellen Datenkonsistenz sicher Persistenz • Bietet die dauerhafte Speicherung von Daten • Bildet Domänenmodell auf relationales Datenmodell ab Michael Theis, Lehrbeauftragter Sicherheit • Schützt die Anwendung vor unberechtigten Zugriffen 17 Sommersemester 2015 Michael Theis, Lehrbeauftragter 18 “Don’t distribute your objects!” Quelle: Martin Fowler „Patterns of EAA“ Sommersemester 2015 Michael Theis, Lehrbeauftragter 19 Das Netzwerk ist zuverlässig Latenz[zeit] ist 0 Bandbreite ist unendlich Das Netzwerk ist sicher [Netzwerk-]Topologie ändert sich nicht Es gibt nur einen Administrator Transportkosten sind 0 Das Netzwerk ist homogen Quelle: Peter Deutsch, James Gosling Fallacies of Distributed Computing http://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing Sommersemester 2015 Michael Theis, Lehrbeauftragter 20 Rechner Komplexität Rechner Prozess Rechner Prozess App App Prozess Rechner Prozess App Rechner App Prozess Prozess App App App Grad der Verteilung Sommersemester 2015 Michael Theis, Lehrbeauftragter 21 Skalierbarkeit Ausfallsicherheit Technologiegrenzen Unterschiedliche Standorte Bereitstellung von Diensten für externe Consumer Komposition eigener Dienste aus Diensten externer Provider Sommersemester 2015 Michael Theis, Lehrbeauftragter 22 File Transfer Sommersemester 2015 Gemeinsame Datenbank Remote Procedure Call Michael Theis, Lehrbeauftragter Messaging 23 Anwendungen tauschen Informationen über Dateien aus Anforderungen bestimmen Häufigkeit des Austausches Export App 1 Import App 2 Gemeinsame Daten Sommersemester 2015 Michael Theis, Lehrbeauftragter 24 Anwendungen tauschen Informationen über gemeinsame Tabellen aus Datenbank-Schema bestimmt Datenformat Anwendung 1 Anwendung 2 Anwendung 3 Gemeinsame Daten Sommersemester 2015 Michael Theis, Lehrbeauftragter 25 Anwendungen kapseln ihre Daten und stellen Interfaces für den Zugriff zur Verfügung Austausch der Informationen erfolgt über synchronen entfernten Methodenaufruf Anforderung mit Eingabeparametern Stub App 1 Antwort mit Rückgabewert Sommersemester 2015 Michael Theis, Lehrbeauftragter Skeleton App 2 26 Häufiger, unmittelbarer, zuverlässiger und asynchroner Austausch von Nachrichten Flexibelste Integration, erfordert aber Umdenken Messaging System Anforderung Endpunkt Antwort Sommersemester 2015 Anforderung Endpunkt Sender Anforderungskanal Antwortkanal Michael Theis, Lehrbeauftragter Empfänger Antwort 27 Sommersemester 2015 Michael Theis, Lehrbeauftragter 28 Atomicity • Eine Transaktion wird entweder ganz oder gar nicht ausgeführt Consistency • Eine Transaktion überführt eine transaktionale Ressource von einem bestehenden konsistenten Zustand in einen neuen konsistenten Zustand Isolation • Das Ergebnis einer Transaktion darf für andere Transaktionen solange nicht sichtbar sein, bis diese Transaktion erfolgreich abgeschlossen worden ist. Durability • Das Ergebnis einer erfolgreich abgeschlossenen Transaktion muss dauerhaft erhalten bleiben und Abstürze jeder Art überstehen. Sommersemester 2015 Michael Theis, Lehrbeauftragter 29 Durchsatz Isolationsgrad Sommersemester 2015 Serializable • Wiederholte Lesezugriffe liefern gleiche Sätze und gleiche Ergebnismengen • Schreib-, Lese- und Bereichsoperationen verursachen Sperren Repeatable reads • Wiederholte Lesezugriffe liefern gleiche Sätze aber unterschiedliche Ergebnismengen möglich (Phantom Read) • Schreib- und Leseoperationen verursachen Sperren Read committed • Lesezugriffe liefern nur committete Sätze • Schreiboperationen verursachen Sperren Read uncommitted • Lesezugriffe liefern nicht committete Sätze • Keine Sperren Michael Theis, Lehrbeauftragter 30 Begin Transaktion beginnt Commit Transaktion endet erfolgreich Beteiligte transaktionale Ressourcen werden verändert Rollback Transaktion bricht nach Fehler ab Beteiligte transaktionale Ressourcen bleiben unverändert Sommersemester 2015 Michael Theis, Lehrbeauftragter 31 Transaktion mit mehreren beteiligten transaktionalen Ressourcen in zwei Phasen Phase 1: Commit vorbereiten Phase 2: Commit ausführen (0) Commit (1a) Commit möglich? (1a) Commit möglich? Koordinator (2a) Commit durchführen! (2a) Commit durchführen! (1b) Ja (1b) Ja DB1 Sommersemester 2015 DB2 Michael Theis, Lehrbeauftragter 32 Bei Aufrufen entfernter Anwendungen wird der Transaktionskontext mit übertragen Aufgerufene Methode kann die die Transaktion des Aufrufers teilen (muss aber nicht) Koordination der Transaktionen übernimmt der aufrufende Container (Applikationsserver) Umsetzung teilweise aufwändig bzw. unmöglich Sommersemester 2015 Michael Theis, Lehrbeauftragter 33 Sommersemester 2015 Michael Theis, Lehrbeauftragter 34 Authentisierung == Wer bist du? Identifizierung eines Objekts und die Überprüfung der Identität Identität entspricht Benutzername Identifizierung erfolgt über Credentials Autorisierung == Was darfst du? Überprüfung von Berechtigungen eines angemeldeten Benutzers bezogen auf geschützte Ressourcen Berechtigungen entsprechen Rollen / Gruppen Sommersemester 2015 Michael Theis, Lehrbeauftragter 35 Application Server (1) Zugriff (2) Formular (3) Auth.daten (4) Token Web Container SC EJB Container SC Servlet EJB (5) Zugriff + Token Security Provider Plugin LDAP Sommersemester 2015 Michael Theis, Lehrbeauftragter Plugin Plugin DB Identity Manager 36 Bei Aufrufen entfernter Anwendungen wird der Securitykontext mit übertragen Aufgerufene Methode läuft im gleichen Securitykontext wie der Aufrufer Benutzer muss sich nicht erneut anmelden (Single Signon/SSO) Beteiligte Container (Application Server) müssen einander trauen Umsetzung teilweise aufwändig Sommersemester 2015 Michael Theis, Lehrbeauftragter 37 Sommersemester 2015 Michael Theis, Lehrbeauftragter 38 Spalte Primärschlüssel Klasse Zeile Tabelle feld 1 feld 2 PK PK Vererbung Klasse 1 ORM feld 1 feld 2 Beziehungen 1..* Klasse Komposition PK FK PK FK Indizes feld 1 feld 2 Sommersemester 2015 Tabelle Constraints Michael Theis, Lehrbeauftragter 39 Mapping muss programmiert werden Zugriff auf die Datenbank mit SQL muss programmiert werden Klasse Klasse ORM JDBC DataSource DAO SQL Tabelle Tabelle Tabelle Klasse Sommersemester 2015 Michael Theis, Lehrbeauftragter 40 Persistente Klassen werden mit MappingAnnotationen versehen und mit Datasource verknüpft Persistenzframework führt Mapping durch und generiert SQL zur Laufzeit Klasse Klasse ORM Klasse Sommersemester 2015 Annotationen Persistence .xml Michael Theis, Lehrbeauftragter JDBC DataSource JPA SQL Tabelle Tabelle Tabelle 41 Sommersemester 2015 Michael Theis, Lehrbeauftragter 42 Sommersemester 2015 Michael Theis, Lehrbeauftragter 43 Martin Fowler: Patterns of Enterprise Application Architecture Addison Wesley 2003; ISBN 0-321-12742-0 Adam Bien: Real World Java EE Patterns: Rethinking Best Practices press.adam-bien.com September 2012; ISBN 978-0-300-14931-6 Gregor Hohpe, Bobby Wolfe Enterprise Integration Patterns Addison Wesley, 2004, ISBN: 0-321-20068-3 Eric Evans: Domain Driven Design: Tackling Complexity in the Heart of Software Addison Wesley 2004; ISBN 0-321-12521-5 Sommersemester 2015 Michael Theis, Lehrbeauftragter 44 Michael Theis Lehrbeauftragter Hochschule München email mobile web Sommersemester 2015 [email protected] + 49 170 5403805 http://www.tschutschu.de/Lehrauftrag.html Michael Theis, Lehrbeauftragter 45