design patterns und corba - abe-si.deglobal design pattern- orblet (2) beispiel: java-applet browser...
TRANSCRIPT
Design Patterns undCORBA
Heiko [email protected]
21. Januar 2001
Seminarvortrag “Softwarearchitekturen”
Universität Freiburg
1
Seminar ’Softwarearchitekturen’
Inhalt
1. EinleitungBeispiel
2. CORBA - ÜberblickEckpunkteArchitektur
3. Entwurf mit CORBA
4. CORBA und Design PatternsSkallierungBeispiele
5. Zusammenfassung
H.Abraham 2
Seminar ’Softwarearchitekturen’
1. EinleitungBeispiel: Informationsdienst
GSM
Internet
ISP
Intranet
Datenbank 1
Datenbank 2
Applications-Server� � �� � �� �� �
� � �� � �� � �� �
�������
������
�������
Situation:
vernetzte und verteilte Systeme
starke Heterogenität
rechnerseitig:
– Daten- und Funktionsverbund
– Redundanz, Lastverteilung
Anforderungen:
an die Softwarearchitektur
Flexibilität
Wiederverwertbarkeit/Wartbarkeit
Interoperabilität
H.Abraham 3
Seminar ’Softwarearchitekturen’
1. EinleitungBeispiel: Informationsdienst
GSM
Internet
ISP
Intranet
Datenbank 1
Datenbank 2
Applications-Server� � �� � �� � �
� �� � � � �� � �� �
�������
������
�������
������
Situation:
vernetzte und verteilte Systeme starke Heterogenität rechnerseitig:
– Daten- und Funktionsverbund– Redundanz, Lastverteilung
Anforderungen:
an die Softwarearchitektur Flexibilität Wiederverwertbarkeit/Wartbarkeit Interoperabilität
� Middleware kann helfen
H.Abraham 4
Seminar ’Softwarearchitekturen’
1. EinleitungBeispiel: Informationsdienst
Internet
GSM
ISP
Intranet
Datenbank 1
Datenbank 2
Applications-Server� � �� � �� � �
� �� �� � �� � �� � �� �
������
������
������
������
Situation:
vernetzte und verteilte Systeme starke Heterogenität rechnerseitig:
– Daten- und Funktionsverbund– Redundanz, Lastverteilung
Anforderungen:
an die Softwarearchitektur
Flexibilität
Wiederverwertbarkeit/Wartbarkeit Interoperabilität
� Middleware kann helfen � Objekt-Bus und bestehende Technologie verwenden
H.Abraham 5
Seminar ’Softwarearchitekturen’ Eckpunkte
2. CORBA - Überblick
CORBA = Common Object Request Broker Architecture
CORBA = Industriestandard, sehr stabil und offen
CORBA = Spezifikationsprodukt der Object Managment Group (OMG)
– Festlegung der Object Managment Architecture (OMA)– Kommunikation von Objekten über Object Request Broker (ORB)
– Definition der (Komponenten-) Schnittstellen, Interface Definition Language (IDL)
– Definition von allgemeinen Diensten (CORBAservices)
Bestehende Technologien verwenden
Objektorientiertes Modell für Client-Server-Architekturen verwenden
Implementierung in mehrere Programmiersprachen möglich(Ada, Java, C++, C, Smalltalk, COBOL, Tcl, Perl)
H.Abraham 6
Seminar ’Softwarearchitekturen’ Architektur 2.CORBA - Überblick
Object Managment Architecture (OMA)
anwendungsnahe Dienstezur Objektbearbeitung
Objektbearbeitung
allg. Dienste zur
Tra
nsac
tions
Distributed Task
ApplicationObjects
CORBAservices
DocumentsInformationManagment
SystemManagment Managment
Con
curr
ency
Rel
atio
nshi
ps
Ext
erna
lizat
ion
etc.
CORBAfacilitiesVertical Facilities
Horizontal Facilities
übergreifende Dienste
spezifische Anwendungs-Dienste
allgemeine anwendungs-T
rade
r
Col
lect
ions
Lic
ensi
ng
Prop
ertie
s
Lif
e C
ycle
Nam
ing
Eve
nts
Secu
rity
Tim
e
Que
ry
Pers
iste
nce
Healthcare Finance
Object Request Broker (ORB)
H.Abraham 7
Seminar ’Softwarearchitekturen’ Architektur 2.CORBA - Überblick
Kurz und kleingedruckt : die CORBAservices
1. Event-Service - Komponenten registrieren ihr Interesse an Ereignissen, die in einem Event-Channel gesammelt werden.
2. Naming-Service - ermöglicht es Objekten, andere Objekte über ihren Namen zu finden.
3. Life-Cycle-Service - Operationen zum kopieren, verschieben oder löschen von Objekten.
4. Trader-Service - stellt die "Gelben Seiten" für Objekte bereit.
5. Transaction-Service - stellt ein zweistufiges Bestätigungsprotokoll zur Verfügung, (flache / geschachtelte Transaktionen).
6. Concurrency-Control-Service - umfaßt einen Lock-Manager, der im Auftrag Sperrungen vornehmen kann.
7. Security-Service - Framework für Sicherheit ; (Vertraulichkeit, Integrität, Unwiderlegbarkeit und Abrechenbarkeit).
8. Time-Service - für Uhrzeitsynchronisation oder zum Auslösen von zeitgetriggerten Ereignissen in verteilten Anwendungen.
9. Relationship-Service - erlaubt es, dynamische Verknüpfungen zwischen Komponenten zu erstellen.
10. Persistence-Service - zum Speichern von Objekten in Datenbanken über einheitliche Schnittstelle.
11. Externalization-Service - eine Standardmethode, um mittels Streaming Daten zwischen Komponenten auszutauschen.
12. Query-Service - stellt Abfrageoperationen für Objekte bereit.
13. Collection-Service - ermöglicht es, Schnittstellen von Objekten in Collections zu sammeln und zu manipulieren.
14. Licensing-Service - bietet Möglichkeiten, die Nutzung der Komponenten abrechnen zu können.
15. Properties-Service - erlaubt es, Name-Wert-Paare mit beliebigen Komponenten zu assoziieren.
H.Abraham 8
Seminar ’Softwarearchitekturen’ Architektur 2.CORBA - Überblick
Komponenten von CORBA
InterfaceRepository
ImplementationRepository
Client
Object AdapterInterface
ORBInterface
ORB
StubsIDL
Client
InterfaceInvocationDynamic
Invocation
DynamicSkeletonSkeletons
Static
ImplementationObject
Object Request Broker Core
ORB-Interface ist für alle ORBs identisch
static IDL-Stubs und static IDL Skeletons existieren pro Objekt
generell sind mehrere Object-Adapter möglich
H.Abraham 9
Seminar ’Softwarearchitekturen’ Architektur 2.Corba - Überblick
Komponenten von CORBA - Operationsaufruf (mit Namensdienst)
... ....
Request
find object, use name-serviceKey="IOR:01f3ffbf..."
316 Byte
Client
Naming
ORB
Object AdapterInterface
ORBInterface
ORB
StubsIDL
Client
InterfaceInvocationDynamic
Invocation
DynamicSkeletonSkeletons
Static
CORBAservice
ImplementationObject
InterfaceRepository
ImplementationRepository
Möglichkeiten, die ein CORBA-ORB bietet statische und dynamische Methodenaufrufe Verknüpfungen auf Hochsprachenebene Ortstransparenz (ohne Programmieraufwand) Eingebaute Sicherheit (Dienste: Security, Transation, ...) Koexistenz mit existierenen Systemen (RPC, DCOM ...)
H.Abraham 10
Seminar ’Softwarearchitekturen’
3. Entwurf mit CORBAMotivation für Programmierer: Wie komme ich zum Code?
IDL-Compiler
implementierenerzeugen + Code
Client Stub Klasse
ServerClientStub Body
erzeugen + Codeimplementieren
Compiler / LinkerCompiler / Linker
Server Programm
ClientProgramm
Server Skeleton Klasse
Objekt-Spezifikation in IDL
Skeleton Body
H.Abraham 11
Seminar ’Softwarearchitekturen’ Code-Beispiel (ORBit) 3.Entwurf mit CORBA
Beispiel - eine Zufallszahl vom Server erfragen:
};
interface Random {long lrand48();
$ orbit-idl random.idl
Client Implementierung
random-skels.c
random-common.crandom.h
ServerClient
File: random.idl
#include <stdio.h>#include <stdlib.h>#include <orb/orbit.h>#include "random.h"
int main (int argc, char *argv[]) {CORBA_Enviroment ev;CORBA_ORB orb;CORBA_Object server;CORBA_long answer;
CORBA_exception_init(&ev);
server=CORBA_ORB_string_to_object(orb, argv[1],&ev);
long rnd_num;rnd_num=Random_lrand48(server, &ev);printf("a random number: %d", rnd_num);
CORBA_Object_release(server,&ev);CORBA_Object_release((CORBA_Object)orb, &ev);return 0;
};
File: random-server
Compiler / Linker
File: random-client
ProgrammClient Server Programm
Compiler / Linker
Bsp: ORBit-0.5.0 (C)
File: random-client.c
automatischgenerierte
Files
random-stubs.c
Server Implementierung
File: random-server.c
#include <stdio.h>#include "stdlib.h"#include "string.h"#include "signal.h"#include "orb/orbit.h"#include "random.h"
Random random_client = CORBA_OBJECT_NIL;
PortableServer_ServantBase__epv base_epv = { NULL, NULL, NULL };POA_Random__epv random_epv = { NULL, Random_lrand48 };POA_Random__vepv poa_random_vepv = { &base_epv, &random_epv };POA_Random poa_random_servant = { NULL, &poa_random_vepv };
int main(int argc, char* argv[]) {CORBA_ORB orb;CORBA_Enviroment ev;PortableServer_ObjectId objid = {0, sizeof("myRandom"), "myRandom"};PortableServer_POA poa;
CORBA_exception_init(&ev);orb = CORBA_ORB_init(&argc, argv, "orbit-local-orb", &ev);POA_Random__init(&poa_random_servant, &ev);
poa = (PortableServer_POA)CORBA_ORB_resolve_initial_references(orb, "RootPOA", &ev);PortableServer_POAManager_activate(PortableServer_POA__get_the_POAManager(poa, &ev), &ev);PortableServer_POA_activate_object_with_id(poa, &objid, &poa_random_servant, &ev);
random_client = PortableServer_POA_servant_to_reference(poa, &poa_random_servant, &ev);if(!random_client) {
printf("cannot get objref\n");return 1;
}objref = CORBA_ORB_object_to_string(orb, random_client, &ev);
CORBA_char* objref;signal(SIGTERM, exit);
fprintf(stderr, "object-reference: %s\n", objref);CORBA_free(objref);
CORBA_ORB_run(orb, &ev);return 0;
}
CORBA_long retval;retval = random();return retval;
}
CORBA_long Random_lrand48(Random _obj, CORBA_Enviroment * ev) {
orb=CORBA_ORB_init(&argc,argv,"orbit-local-orb".&ev);
if(!server) { printf("cannot bind\n"); return 1; }
H.Abraham 12
Seminar ’Softwarearchitekturen’
4. CORBA und Design Patterns
Motivation:
zuverlässige und “gute” Software-Entwicklung
schnelle Entwicklungszyklen
Wartbarkeit
Technik um Softwareteile oder -komponenten wiederzuverwenden
mittels Design Pattern:
Darstellung erfolgreicher (OO)-Lösungen zu bestimmten wiederkehrenden Problemen
Lösungen nicht als Code, sondern in sprachunabhängiger Form
H.Abraham 13
Seminar ’Softwarearchitekturen’ 4.CORBA und Design Patterns
Wie Patterns beschreiben? (nach Vortrag “Patterns”, Seite 11)
! Name und Klassifikation! Zweck Was tut das Pattern?! Motivation anhand eines Szenarios! Anwendbarkeit In welchen Situationen diese Pattern benutzen?! Struktur Graphische Darstellung der Struktur des Pattern! Mitwirkende (Pattern) teilhabende Klassen und Objekte und ihre Aufgabe! Folgen aus der Anwendung des Pattern! Implementation Einige Tips, Sprachabhängigkeiten, Schwierigkeiten! Beispiel-Code zur Illustration! Anwendungsbeispiel aus echtem System! Verwandte Patterns Unterschiede, Kombinationsmöglichkeiten
H.Abraham 14
Seminar ’Softwarearchitekturen’ 4.CORBA und Design Patterns
SkallierungsmodellAnsatz: [2] Design Patterns nach Most Applicable Scale ("hauptsächliche Anwendungsebene")
in einem Skalierungsmodell ordnen
and
Application
System
Enterprise
Global
Framework
Verbund von Enterprises
Organisatorische Einheit
Programme im Corba-Umfeld
einzelnes ausführbares Programm
Verbund von Objekten
Wiederverwendung von Microarch.
Objects
Classes
Microarchitecture
Class Hierarchies
Programming - Object Wrapping
Horizontal - Vertical - Metadata
Reference Models - Infrastructures - Policies
Standards - Internet
(blau = nicht weiter beschieben)
H.Abraham 15
Seminar ’Softwarearchitekturen’ Skallierungsmodell-Detail 4.CORBA und Design Patterns
Application Design Patterns
Maximizing Parallism
Improving Object Implementations Modifying Client Stubs and other Tricks
System Design Patterns
Prinziples of Object-Oriented Architecture
Fundamental Structural Patterns
Advanced System Design Patterns
Using OMG CORBAServices
Enterprise Design Patterns
Building an Organizational Infrastructure
Global Design Patterns
Role of Open Systems
Internet Design Patterns
H.Abraham 16
Seminar ’Softwarearchitekturen’ 4.CORBA und Design Patterns
Skallierungsmodell (2)
Anmerkung:
genannte Design Patterns orientiert an CORBA
sind sehr allgemein gehalten
allgemeines Ziel:
gekapseltes Design
besseres Objekt-Managment
Kommunikation und Kooperation mit bestehenden Standards
Performance-Gewinn
senken des Netzwerk-Traffic
H.Abraham 17
Seminar ’Softwarearchitekturen’ 4.CORBA und Design Patterns
Pattern an folgende Beispiele (einfacht):
! ORBlet Global Design Pattern! ORB! Operating Enviroment! Naming Service! Distributed Callback Application Design Pattern
GSM
Internet
ISP
Intranet
Datenbank 1
Datenbank 2
Applications-Server"#"#""#"#""#"#"
$#$#$$#$#$%#%#%&#&#&'#'(#(Bezug zum einleitenden Beispiel wird gesucht �
H.Abraham 18
Seminar ’Softwarearchitekturen’ Beispiele 4.CORBA und Design Patterns
Global Design Pattern- ORBletZweck:
Zugriff auf CORBA-basierende Anwendungen und CORBAservices über WebBrowser
Realisierung:
benutze Java-Applet (enthält CORBA client stubs) ORB-Kommunikation über Internet Interoperability Protokoll (IIOP) asynchrone Aufrufe verwenden
Struktur:
Java-Applet
z.B.: Client-PC am ISP
ORB
Browser
Anwendung
(DBMS, Lotus, TP-Monitor)
Verteilte
H.Abraham 19
Seminar ’Softwarearchitekturen’ Beispiele 4.CORBA und Design Patterns
Global Design Pattern- ORBlet (2)Beispiel:
Java-AppletBrowser
Datenbank 1
CORBA-IIOP
hole HTML-Seite
hole Applet
Intranet
Internet
ISP
JacORBORBit
HTTP-Server
Corba-Server
Anwendung
hole HTML-Seite (benutze Pattern Standards, z.B. HTML3.2)
hole Applet (Applet ist ein Pattern, das auf dem Pattern Java aufbaut)
starte Applet (im WebBrowser)
CORBA-IIOP
H.Abraham 20
Seminar ’Softwarearchitekturen’ Beispiele 4.CORBA und Design Patterns
Enterprise Design Pattern- ORBZweck:
(transparentes) verteiltes Arbeiten (mit Objekten) in heterogener Umgebung. unabhängig von Betriebssystem, Implementierungssprache und Lokalität
Realisierung:
ORB als vermittelnder Agent zwischen Client und Server ) OMA
Application Interface CORBAfacility Interface
CORBAfacilitiesObjectsObjectsApplication
CORBAservicesObjects
CORBAservice Interface
CORBA-Object Request Broker
H.Abraham 21
Seminar ’Softwarearchitekturen’ Beispiele 4.CORBA und Design Patterns
Enterprise Design Pattern- ORB (2)Folgen:
separate Kompilation notwendig reduzieren der Komplexität der Anwendung separieren der Anwendung von der Infrastruktur etwas Overhead
Ausblick: über Half-Bridge die ORBs transparent verbinden damit Lösung: administrativer Bedürfnisse, Diensttypen, Sicherheitsaspekte...
oder DCOM
Client Server
ORB BORB A
BridgeHalf Half
BridgeDSI DII
Domain A Domain B
H.Abraham 22
Seminar ’Softwarearchitekturen’ Beispiele 4.CORBA und Design Patterns
Enterprise Design Pattern- Operating EnviromentZweck:
Interoperabilität zwischen existierenden Produkten
Realisierung:
benutze Konvertierungs-Service und zentrale Datenbank
ServiceConversion
InfrastructureCommunication
Linux Windows Mac
UNIX Windows
Format (RTF)Rich Text
DocumentDatabase
FrameMaker MS-Word 97
MS-Word 5.0WordPerfectApplixWare (Word)
H.Abraham 23
Seminar ’Softwarearchitekturen’ Beispiele 4.CORBA und Design Patterns
Enterprise Design Pattern- Operating Enviroment (2)Folgen:
Unabhängigkeit von Hersteller und Produkt
genereller Informations-Import realisierbar
Änderungen in Daten verifizierbar
jede Einheit mit mehr Autonomie
Unterstützung von speziellen Tools ( ) höhere Produktivität)
Beispiel : einleitender Informationsdienst:
“Kunde” kann angeben, welches Datenformat er wünscht, oder
kann Konvertierungs-Service nutzen
Kommunikation über ORB
H.Abraham 24
Seminar ’Softwarearchitekturen’ Beispiele 4.CORBA und Design Patterns
System Design Pattern- Naming ServiceZweck:
Objekt anhand eines Namens im Namensraum finden bestimmen
Realisierung:
nutze repository zum speichern von Namen und Objekt-Referenz
Namensbindung relativ
zwei Grundoperatoren: store(bind) und retrieve(resolve)
Ort
Japan HawaiiMexico
Verkauf
WeinObst SaftObjekt-Name
Kontextname
Ort.Mexico.Verkauf.Saft
(compound name)zusammengesetzter Name
H.Abraham 25
Seminar ’Softwarearchitekturen’ Beispiele 4.CORBA und Design Patterns
System Design Pattern- Naming Service (2)Beispiel:
implementierter ORB kennt einige “initial services”
Beispiel - Code-Fragment (ORBit-C)
int main (int argc, char *argv[]) {CORBA_Environment ev;CORBA_ORB orb;...CosNaming_NamingContext name_srv; /* name server */CosNaming_Name* serv_name; /* This holds the name of our server */CosNaming_Name* serv2_name; /* This holds the name of our server2 */factory fac, fac2; /* the server-side factory object */...orb = CORBA_ORB_init(&argc, argv, "orbit-local-orb", &ev);.../* get the name server from the ORB */name_srv = CORBA_ORB_resolve_initial_references(orb, "NameService", &ev);.../* store(bind) the name of the object implementation */CosNaming_NamingContext_bind(name_srv,serv_name, fac, &ev);.../* retrieve(resolve) the reference of the object implementation */serv2_name=create_name(“Ort.Mexico.Verkauf.Saft”);fac2 = CosNamingContext_resolve(name_srv, serv2_name, &ev);...
}
H.Abraham 26
Seminar ’Softwarearchitekturen’ Beispiele 4.CORBA und Design Patterns
Application Design Patterns - Distributed CallbackZweck:
Client soll, während er auf einen Request wartet nicht blockieren
Realisierung:
synchrone Operatoren in (asynchrone) oneway-Operatoren umwandeln Client mit Callback-Interface ausstatten
Struktur:
zurück und arbeitetweiter
1)
Client erhält das4)
Client kehrt sofort
Ergebnis bei Abfrageder Event-Loop
3)
2)Operation
Callback
Server bearbeitetden Request
Server ruft den Client und liefertdas Ergebnis
H.Abraham 27
Seminar ’Softwarearchitekturen’ Beispiele 4.CORBA und Design Patterns
Application Design Patterns - Distributed Callback (2)Folgen:
Client-Callbacks in verschieder Reihenfolgen nur primitive Fehlerbehandlung (keine Exceptions) Zustellung (oneway) nicht garantiert
Implementierung: Ausgangsoperation (IDL):
interface app {string get_info( in string my_data);
};
konvertieren zu:interface app_callback; /* forward */interface app { /* this interface defines the server object */
oneway void get_info( in string my_data, in app_callback my_callback);};interface app_callback { /* this interface must be implemented by the client */
oneway void callback( in string return_value, in long status);};
H.Abraham 28
Seminar ’Softwarearchitekturen’ Beispiele 4.CORBA und Design Patterns
Application Design Patterns - Distributed Callback (3)
Beispiel:
Konvertierungs-Service vom Informationsdienst
700ms
200ms
Object1
Client
Object2
get_pdf()
get_txt()
callback()
3)
4)
2)
1)
H.Abraham 29
Seminar ’Softwarearchitekturen’ Beispiele 4.CORBA und Design Patterns
5. ZusammenfassungZu CORBA:
für viele Betriebssysteme / Hochsprachen (frei) verfügbar
IDL-Schnittstelle nur mit Syntax
Design Pattern und CORBA:
Design Pattern nach Anwendungsebene skalliert Buch: leider bei gewisse Pattern zu abstrakten Formulierungen
bzw. mageren Beispiele - damit kein erwünschter Praxisbezug
Ziel von viele Pattern: Performance / Netzwerk-Traffic verbessern
Gut: System-unabhängige Dienste vorhanden: (Naming, Event, Transaction, Lock...)
– werden aber nur gering beachtet
Fraglich: Sicherheitskonzept auf Ebene des verwendeten ORB (Speicherraum)
H.Abraham 30
Seminar ’Softwarearchitekturen’ Beispiele 4.CORBA und Design Patterns
Quellen[1] R. Orfali, D. Harkey, J. Edwards, Instant CORBA, Addison-Wesley, 1998, ISBN 3-8273-1325-2
[2] T. J. Mowbray und R. C. Malveau, CORBA Design Patterns, Wiley Computer Publishing, 1997, ISBN 0-471-15882-8
[3] John Siegel, CORBA - Fundamentals and Programming, Wiley Computer Publishing, 1996, ISBN 0-471-12148-7
[4] Folien “Patterns”, Seminar “Softwarearchitektur”, Nov. 2000, www.informatik.uni-freiburg.de
Ein Überblick über einige ORBs gibt http://www.vex.net/˜ben/corba/index.html
Abkürzungen
CORBA = Common Object Request Broker Architecture
DII = Dynamic Invocation Interface
DSI = Dynamic Skeleton Invocation
OMA = Object Managment Architecture
OMG = Object Managment Group
ORB = Object Request Broker
RPC = Remote Procedure Call
IDL = Interface Definition Language
H.Abraham 31