Literatur - HTW Berlin
Transcrição
Literatur - HTW Berlin
Literatur [1-1] Griffel, Frank: Componentware. dpunkt, 1998 [1-2] Reussner, Ralf; Hasselbring, Wilhelm (Hrg.): Handbuch der Software-Architektur. dpunkt, 2006 AVS – SS 2016 – Teil 2/Komponenten 2 Wiederholung I - Komponenten • Komponente = Klassenkomplex mit einer explizit definierten Schnittstelle, an der eine in sich geschlossene Leistung erbracht wird und die eine weitgehend freie Kombinierbarkeit mit anderen Komponenten ermöglicht • Beziehungen zwischen Komponenten: – Benutzt-Relation im Sinne von local bzw. remote procedure call – Benutzt-Relation im Sinne von Nachrichtenverarbeitung – Management-Relation: Erzeugen/Laden, Vernichten, Ersetzen, (Um-)Konfigurieren – Keine Vererbung 3 AVS – SS 2016 – Teil 2/Komponenten Wiederholung II - Komponenten im Verteilten System Komponente 1 Komponente 2 Komponente 3 ... Komponente n Middleware Betriebssysteme Hardware AVS – SS 2016 – Teil 2/Komponenten 4 Ein Blick hinein I Provider Interface Management Komponente C ClassA Class1 Class2 ClassB Konfiguration Class3 Class4 implements calls/use Required Interface AVS – SS 2016 – Teil 2/Komponenten 5 Ein Blick hinein II • Das Management-Interface definiert die Schnittstelle zur umfassenden Umgebung – meist Container genannt • Container = Laufzeitumgebung zum Management von Komponenten • Das Management-Interface ist für alle Komponenten gleich und wird meistens vom Container definiert/gefordert. • Die Management-Klassen sind meist Factory-Klassen oder Klassen zur Verwaltung des internen Zustands der Komponente • Konfiguration – Aus externen Dateien, meist XML-Dateien – Aus dem Source-Code meist mit Annotations AVS – SS 2016 – Teil 2/Komponenten 6 Beispiel: XML-Konfiguration (Hibernate) <id column="id" name="id" type="integer"> <generator class="native"/> </id> <property name="number" type="integer" column="num" not-null="true"/> <property name="seats" type="integer" column="seats"/> <property name="date" type="timestamp" column="clock" not-null="true"/> <list name="orders" table="ordered" lazy="true"> N:M-Relation <key column="id_place"/> <list-index column="ind"/> <many-to-many class="de.htw_berlin.f4.kbe.hibernate.Menu" column="id_menu"/> </list> <set name="customers" lazy="true"> 1:N-Relation <key column="id_table"/> <one-to-many class="de.htw_berlin.f4.kbe.hibernate.Customer"/> </set> AVS – SS 2016 – Teil 2/Komponenten Hibernate ist ein ORM für Java 7 Beispiel: Annotationen (Hibernate) @Entity public class Person implements Serializable { @Id @GeneratedValue(strategy= GenerationType.AUTO) private Long id; private String firstName; private String lastName; public Person() {} public Person(String firstName, String lastName) { this.firstName= firstName; this.lastName= lastName; } … … Getter und Setter … … @Override public String toString() { return String.format("####---Id=%d: %s %s",id,firstName, lastName); } Hibernate ist ein ORM für Java AVS – SS 2016 – Teil 2/Komponenten 8 Ein Blick hinein III - Management • Das Management hat meist folgende Aufgaben: – – – – – – – – Starten (und Zusammensetzen) einer Komponente Stoppen (Sichern des Zustandes etc.) Dynamisches Laden aller Klassen zur Laufzeit Konfigurieren Serialisieren des internen Zustands Deserialisieren des internen Zustande Wiederanlauf Verwaltung der Threads, z.B. eines Thread-Pools • Der Container übernimmt alles, was allen Komponenten gemeinsam ist, • das Spezifische einer bestimmten Komponente übernehmen die Klassen des Managements innerhalb der Komponente. 9 AVS – SS 2016 – Teil 2/Komponenten Bemerkung • Da die Komponenten-Schnittstelle von mehreren Klassen zusammen realisiert werden kann, – muss eine künstliche Wrapper-Klasse mit Delegation realisiert werden oder – müssen Interfaces zusammensetzbar sein. Komponente C Wrapper ClassA Class1 Class2 Dieses Problem haben Java, C++, PHP etc. AVS – SS 2016 – Teil 2/Komponenten 10 Parallelität innerhalb Komponenten Provider Interface • Das Interface hat zwei Arten der Interaktion Alles auf 1 System – Direkter Aufruf – kein neuer Thread – Übergabe an neuen Thread – meist per Nachricht Router Thread1 Thread2 • Router = Verteiler von Aufrufen der Schnittstelle an Threads • Die Threads benutzen eigene, lokale Daten oder gemeinsame • Die Parallelität kann verdeckt bleiben oder nach Außen weiter gegeben werden (über das Required Interface). ThreadN Daten Required Interface 11 AVS – SS 2016 – Teil 2/Komponenten Parallelität zwischen Komponenten I Provider Interface Alles auf 1 System Komponente E Komponente C Komponente E Komponente D Komponente C oder Komponente D Main Router Required Interface AVS – SS 2016 – Teil 2/Komponenten 12 Bemerkungen • • • • Der Router ist optional – dann gibt es keine neuen Threads. Der Router kann auch Teil einer anderen Komponente sein. Die Komponenten können sich gegenseitig beliebig benutzen. Komponenten können zu größeren Einheiten zusammengefasst werden. 13 AVS – SS 2016 – Teil 2/Komponenten Parallelität zwischen Komponenten II System 1 AVS – SS 2016 – Teil 2/Komponenten System 2 Komponente D Main2 Komponente E Komponente D Komponente C Main1 • Die Interaktionen zwischen Komponenten muss per Nachricht erfolgen, wenn Systemoder Prozess-Grenzen überschritten werden. • Es können auf verschiedenen Systemen auch eigene „Hauptprogramme“ (Main) laufen. • Beispiele: CSCW, VideoKonferenzen, WFMS 14 Parallelität zwischen Komponenten III System 2 System 3 System 1 System 4 Komponente D Komponente E Main2 Komponente D Komponente C Main1 System 5 15 AVS – SS 2016 – Teil 2/Komponenten Container-Konzept I Upper Layer • Laden, Starten, Stoppen • Entladen • Wiederanlauf Komponente C Lower Layer • Kommunikation • Betriebssystem Container = Laufzeitumgebung/Management für Komponenten Container = Zusammenfassung alle Management-Funktionen, die allen Komponenten gemeinsam sind AVS – SS 2016 – Teil 2/Komponenten 16 Container-Konzept II Komponente C Komponente D Netz Komponente C „Entfernung“ Komponente D Relation • Lokal (innerhalb Threads) • • Zwischen Threads Zwischen Prozessen • Zwischen Systemen 17 AVS – SS 2016 – Teil 2/Komponenten Container-Konzept III - Relationen C1 C1 C2 Inform C1 Call Create/Destroy C2 Relationen • Aufruf • Kommunikation • Management AVS – SS 2016 – Teil 2/Komponenten C2 „Entfernung“ Alle Kombinationen sind möglich • • • • Lokal (innerhalb Threads) Zwischen Threads Zwischen Prozessen Zwischen Systemen 18 Lower Layer Required Interface Manager Session Auth Sync Time Permission Message File Directory Transport State AVS – SS 2016 – Teil 2/Komponenten 19 Erläuterungen • Session: Herstellung von Zusammenhängen in der Kommunikation • Auth: Authentifizierung (Prüfung der Identität) • Permission: Vergabe von Rechten (Autorisierung) • Directory: Verzeichnis, Repository • State: Retten/Wiederherstellen des inneren Zustands • Sync: Synchronisierung • Time: Abstimmung der Uhren • Message: Austausch von Nachrichten • File: Austausch von Dateien • Transport: Schnittstelle zum Kommunikationssystem • Manager: Wrapper für Management-Funktionen AVS – SS 2016 – Teil 2/Komponenten 20 Upper Layer Booter Mover Loader Permission Unloader Create Destroy State Message File Transport Libs Dieselben Funktionen wie für den Lower Layer Provider Interface AVS – SS 2016 – Teil 2/Komponenten 21 Erläuterungen • • • • • • • • • • • Booter: Hoch- und Herunterfahren der Anwendung, Migration Loader: Lader und Binder einer Komponente Permission: Prüfung der Rechte (wie beim Lower Layer) Create: Erzeugung (new, Factory, Dependency Injection) Libs: Globale Bibliotheken von Klassen Unloader: Beseitigung von Komponenten Destroy: Zertörung Mover: Wandern von Komponenten im Netz State: Retten/Wiederherstellen des inneren Zustands Message: Austausch von Nachrichten File: Austausch von Dateien AVS – SS 2016 – Teil 2/Komponenten 22 Fallbeispiel: DCE I • • • • • • DCE = Distributed Computing Environment http://www.opengroup.org/dce/ Haupteinsatzzeit 90er-Jahre als Konkurrent zu Corba Letzte Version 1.2.2 Letzte Implementierung ist Open Source Beinhaltet u.a. – – – – Thread-Verwaltung Remote Procedure Calls Sicherheit Verteiltes Dateisystem 23 AVS – SS 2016 – Teil 2/Komponenten Fallbeispiel: DCE II – Architektur-Überblick Application Diskless Security Other Distributed Services Distributed File Services Time Naming Management Other Services RPC Services, Presentation Process- and Thread-Management Operating System, Transport Services AVS – SS 2016 – Teil 2/Komponenten 24 Erläuterungen • Diskless: Dienste für Geräte ohne Platten • Distributed File Service: Zugriff auf Dateien über ein Netzwerk • Naming = Directory Service: Speicherdienst für Daten für das Verteilte System (Repository) • Thread: eigenständige Ausführung von Instruktionen innerhalb eines Prozesses 25 AVS – SS 2016 – Teil 2/Komponenten Fallbeispiel: DCE III – Architektur-Schichten Application Time Cell Directory Global Directory Security Distributed File System Remote Procedure Call Process- and Thread-Management Operating System, Transport Services Das Ganze noch einmal in einer Schichtung entsprechend der Benutzt-Relation. AVS – SS 2016 – Teil 2/Komponenten 26 In dieser Veranstaltung werden behandelt... Application Time Directory Security Distributed File System Remote Procedure Call Process- and Thread-Management Operating System, Transport Services AVS – SS 2016 – Teil 2/Komponenten 27 Nach dieser Anstrengung etwas Entspannung... AVS – SS 2016 – Teil 2/Komponenten 28