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

Documentos relacionados