31
Design Patterns und CORBA Heiko Abraham [email protected] 21. Januar 2001 Seminarvortrag “Softwarearchitekturen” Universität Freiburg 1

Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

Design Patterns undCORBA

Heiko [email protected]

21. Januar 2001

Seminarvortrag “Softwarearchitekturen”

Universität Freiburg

1

Page 2: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

Seminar ’Softwarearchitekturen’

Inhalt

1. EinleitungBeispiel

2. CORBA - ÜberblickEckpunkteArchitektur

3. Entwurf mit CORBA

4. CORBA und Design PatternsSkallierungBeispiele

5. Zusammenfassung

H.Abraham 2

Page 3: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 4: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 5: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 6: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 7: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 8: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 9: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 10: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 11: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 12: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 13: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 14: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 15: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 16: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 17: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 18: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 19: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 20: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 21: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 22: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 23: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 24: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 25: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 26: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 27: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 28: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 29: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 30: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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

Page 31: Design Patterns und CORBA - abe-si.deGlobal Design Pattern- ORBlet (2) Beispiel: Java-Applet Browser Datenbank 1 CORBA-IIOP hole HTML-Seite hole Applet Intranet Internet ISP ORBit

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