30
vs9.4 1 9.4 CORBA = Common Object Request Broker Architecture http://www.corba.org tandard (nicht Produkt!) der OMG – Object Management Group Architektur: objektorientiert/Fernaufrufe + Komponente IDL: C++ -ähnlich Dienste: sehr reichhaltig Anwendungen: Dienste, insbesondere Einbinden von Altsoftware

Vs9.41 9.4 CORBA = Common Object Request Broker Architecture Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

Embed Size (px)

Citation preview

Page 1: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 1

9.4 CORBA= Common Object Request Broker Architecture

http://www.corba.org

Standard (nicht Produkt!) der OMG – Object Management Group

Architektur: objektorientiert/Fernaufrufe + KomponentenIDL: C++ -ähnlichDienste: sehr reichhaltigAnwendungen: Dienste,

insbesondere Einbinden von Altsoftware

Page 2: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 2

9.4.1 Objektmodell: Schnittstellen und Objekte

Schnittstelle: Menge von Operations-Signaturen, beschrieben mit CORBA IDL

Objekt:

irgendwie erzeugtes Exemplarirgendeiner Implementierung inirgendeiner Programmiersprache (nicht notwendig objektorientiert)mit einer bestimmten Schnittstelle = Objekttyp,

identifiziert durch CORBA-Objektverweis (= Fernverweis, s.u.),

fernaufrufbar über diesen Verweis

Page 3: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 3

Vererbung/Erweiterung von Schnittstellen ist möglich

! Nicht Teil des Objektmodells sind

Implementierung, „Klassen“

Objekterzeugung

Beachte:

Das CORBA-Objektmodell ist prinzipiell unabhängig von denObjektmodellen der verwendeten Programmiersprachen –sofern diese überhaupt objektorientiert sind beschränkte Verteilungsabstraktion !

Page 4: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 4

9.4.2 Schnittstellenbeschreibung mit IDL

Entfernte Ähnlichkeit mit C++

Typsystem mit einfachen und zusammengesetzten Typen

Module bilden Namensräume, auch mit Schachtelung

Ein Modul (module) kann enthalten: Konstantendefinitionen Typdefinitionen Vereinbarungen von Ausnahmen (exceptions) Vereinbarungen von Schnittstellen (interfaces)

Page 5: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 5

Typsystem:

Typ

Basistyp Verweistyp(basic type) (reference type)

einfach zusammengesetzt Objekttyp Werttyp Object valuetype

long struct{fields}char [size]string sequence<type>... ... mit Vererbung

(auch Mehrfachvererbung)

Page 6: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 6

Konstantendefinitionen (const) benennen explizit angegebene Werte, sind Bestandteile eines Moduls oder einer Schnittstelle

Typdefinitionen (typedef) benennen explizit angegebene Typen,

Ausnahmen (exception) werden wie Verbundtypen vereinbart

Schnittstellen (interface) enhalten Konstanten, Operationen, Attribute

Page 7: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 7

Operationen in Schnittstellen

können Wert liefern (oder auch nicht: void),

können Ausnahmen melden (raises),

kennen 3 Parametermechanismen:in Wertparameterout Ergebnisparameterinout Wert/Ergebnisparameter

(bei Objekttypen wird Objektverweis übergeben, bei valuetype wird Objektkopie übergeben!)

können als asynchron vereinbart werden (oneway), sofern ohne Ergebnis und Ausnahmen.

Page 8: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 8

Attribute in Schnittstellen (attribute)

können als schreibgeschützt (readonly) vereinbart werden,

sind äquivalent zu getter/setter-Operationen(bzw. nur getter, wenn schreibgeschützt)

Semantik des Operationsaufrufs:

synchrone bzw. asynchrone Ausführung, at-most-once

Ausnahmen wie spezifiziert, zzgl. CORBA-Ausnahmen

Page 9: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 9

// file example.idl// IDL example: no module nesting, one module only

module example { typedef string Name; exception NameClash {Name clashing;}; exception Overflow {unsigned long capacity;};

interface Phones { // private phone book long lookup(in string s); void enter (in string s, in long n) raises(NameClash, Overflow); void delete(in string s); attribute long capacity; };};

Page 10: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 10

Vordefiniert ist

module CORBA {

interface ORB { .... // Schnittstelle eines Pseudoobjekts mit }; // objektunabhängigen Standardoperationen interface Object { .... // Standardoperationen für Objekte };

.......};

Qualifizierte Namen: z.B. example::Phones, CORBA::ORB

Jede Schnittstelle erbt implizit von CORBA::Object,d.h. jeder Objekttyp ist verträglich mit CORBA::Object

Page 11: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 11

9.4.3 Umgang mit Verweisen

ist unabhängig von Programmiersprachen und deren Verweisen !

interface Object { // Operationen auf Verweisen Object duplicate(); // liefert Kopie des Objektverweises boolean is_equivalent(in Object other); // bezeichnet other dasselbe Objekt? boolean is_nil(); // bezeichnet der Verweis ein Objekt? ...};

Alle diese Operationen werden lokal ausgeführt.

Page 12: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 12

Umwandlung von Verweisen in Zeichenketten (und zurück):

interface ORB { string object_to_string(in Object o); Object string_to_object(in string s); ...};

Diese Zeichenketten – stringified object references -dienen lediglich als externe Repräsentation für Objektverweise. Sie sehen kryptisch aus, und man kann aus ihnen die identifizie-renden Informationen für das Objekt nicht direkt ablesen.

Page 13: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 13

9.4.4 CORBA-Infrastruktur

ORB (Object Request Broker): eigentliche Middleware: verteilte Laufzeitunterstützung zwischen Betriebssystem einerseits und Anwendungscode und Vertretercode andererseits, zuständig für Fernaufrufe und lokale Basisdienste (ORB, Object)

IOR (interoperable object reference):

Objektverweis in standardisiertem Format

POA (portable object adapter)

Verwalter der lokal vorhandenen, fernaufrufbaren Objekte

Servant

Implementierung eines fernaufrufbaren Objekts (z.B. ein Java-Objekt)

Page 14: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 14

Interface Repository:verwaltet IDL-Schnittstellenbeschreibungen

Implementation Repository:verwaltet zugehörige Implementierungen

CORBA Services:breite Palette von Standarddiensten wie z.B.Naming Service, Notification Service, Transaction Service, ...

CORBA Facilities:weitere Spezifikationen, z.B.Data Interchange, Systems Management, …

Page 15: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 15

9.4.5 Sprachanbindung

(language mapping)

definiert die Beziehungen zwischen dem CORBA-Objektmodellund Syntax und Semantik einer bestimmten Programmiersprache

setzt die Typsysteme zueinander in Beziehung,

regelt die Nachbildung nicht verfügbarer Parametermechanismen,

stellt Bibliotheksroutinen für die CORBA-Standarddienste zur Verfügung (ORB, Object),

stellt einen Vertreter-Generator – IDL Compiler – zur Verfügung; der Vertreter heißt stub, der Treiber heißt skeleton.

Page 16: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 16

Vertreter-Erzeugung am Beispiel Java:

> idl2java example.idl

erzeugt für jedes Modul ein Java Package,hier also ein einziges Package example.

Das Package umfasst die folgenden Dateien:

PhonesOperations.java Schnittstelle entsprechend PhonesPhones.java Schnittstelle, die PhonesOperations und

org.omg.CORBA.Object zusammenfaßt

PhonesStub.java Vertreter-Klasse PhonesStubPhonesHelper.java Hilfsklasse PhonesHelper (s.u.)

PhonesPOA.java Treiber-Klasse PhonesPOA (für Vererbung)PhonesPOATie.java Treiber-Klasse PhonesPOATie

Page 17: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 17

Automatische Erzeugung von IDL-Text .idlfür bereits vorliegenden Server-Code ist möglich, wenn sich daraus eine Schnittstelle ableiten läßt,

z.B. für eine Java-Klasse

import java.rmi.*;public class PhonesImpl implements Remote {...}

(nach Übersetzung) wie folgt:

> rmic –idl PhonesImpl (SUN) oder

> java2idl PhonesImpl (VisiBroker u.a.)

Page 18: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 18

9.4.6 Programmierbeispiel in Java

Schnittstelle ist example.idl (9.4.2 )

Anbieter besteht aus eigentlichem Objekt – genannt Servant –und dem Server-Prozess, der als Träger des Objekts fungiert:

// servant class

import org.omg.CORBA.*;

public class PhonesImpl extends PhonesPOA { // skeleton as superclass ! ...public int lookup(String n) {...} ...}

Beachte: Klassenname irrelevant, kein interface erforderlich – aber Schnittstelle muss zu example.Phones passen!

Page 19: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 19

// server main program

import org.omg.CORBA.*; // has class for CORBA::ORB (& others)import org.omg.PortableServer.*;

// has interface for PortableServer::POA (& others)public class Server {public static void main(String[] arg) { PhonesImpl ph = new PhonesImpl(); // Java object ..... ORB orb = ORB.init(); // initialize ORB POA poa = ... // and POA ..... org.omg.CORBA.Object obj = // CORBA object! poa.servant_to_reference(ph); ..... // e.g., publish obj via Naming Service orb.run(); // wait for invocations }} ... zuzüglich Ausnahmebehandlung

Page 20: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 20

Klient:

import org.omg.CORBA.*; .....

ORB orb = ORB.init(); // initialize ORB

org.omg.CORBA.Object obj = ... // get CORBA object, e.g., // through Naming Service

Phones p = PhonesHelper.narrow(obj);// get Java object

if(p == null) ... // type error

int number = p.lookup("Robert"); // remote invocation.....

... zuzüglich Ausnahmebehandlung

Page 21: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 21

9.4.7 Portable Object Adapter (POA)

erlaubt Vielzahl unterschiedlicher Strategien zur Gestaltungder Beziehungen zwischen CORBA-Objekt, Servant und Server

Lebensdauer eines CORBA-Objekts und des implementierenden Servants sind unabhängig.

POA unterstützt persistente Objekte, deren Lebensdauer die des POA (d.h. des Server-Prozesss) übertrifft.

Objekt wird aktiviert (incarnated) durch Verbindung mit einem Servant, und wird deaktiviert (etherealized) durch Lösen dieser Verbindung.

POA verwaltet seine Objekte in Objekttabelle (active object map), in der die jeweils zugehörigen Servants verzeichnet sind; für deaktivierte Objekte übernimmt ein Default Servant die Aufrufbehandlung.

Page 22: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 22

Ferner:

- Strategien sind programmgesteuert wählbar

- Standard-Strategie: transiente Objekte

- Persistenz wird unterstützt durch Implementation Repository und ORB Daemon, der bei Bedarf Server-Prozess startet

- Weitere POA-Exemplare – z.B. mit unterschiedlichen Strategien – können programmgesteuert erzeugt werden

- usw. usf.

Page 23: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 23

9.4.8 Naming Service

= Namensdienst mit hierarchisch strukturiertem Namensraum

Context enthält - reguläre Einträge,- subcontexts

module CosNaming { ... typedef Sequence<NameComponent> Name;

interface NamingContext { void bind(in Name n, in Object o); void bind_context(in Name n, in NamingContext c); Object resolve(in Name n); ... };}; … zuzüglich Ausnahmen

Page 24: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 24

Benutzung in Java:

import org.omg.CosNaming.*;import org.omg.CosNaming.NamingContextPackage.*;

.....

org.omg.CORBA.Object obj = orb.resolve_initial_references("NameService");

NamingContext root = NamingContextHelper.narrow(obj);

org.omg.CORBA.Object x = root.resolve(name);

.....

Page 25: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 25

9.4.9 Interoperabilität

zwischen verschiedenen CORBA-Implementierungen

General Inter-ORB Protocol (GIOP)(Transfersyntax + Nachrichtenformate)

Internet Inter-ORB Protocol (IIOP) andere(+ Realisierung über TCP/IP)

Objektbezugnahme über Interoperable Object Reference (IOR)

Page 26: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 26

Ferner: Environment-Specific Inter-ORB Protocols (ESIOPs)

statt GIOP/IIOP, falls auf bereits vorhandener Middleware aufgesetzt werden soll. Beispiel:

DCE Common Inter-ORB Protocol (DCE-CIOP)ist ein ESIOP auf Basis des DCE RPC.

Page 27: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 27

Interoperabilität RMI – CORBA durch

„RMI over IIOP“ (statt über JRMP – Java Remote Method Protocol)

Klient/Anbieter programmiert in Java RMI, Vertreter-Erzeugung mitrmic –iiop

Client Server

CORBA RMI (Java IDL !)

RMI CORBA

Einige Programmierunterschiede zu Java RMI:- Java Naming and Directory Interface (JNDI) statt Registry- keine verteilte Speicherbereinigung- . . .

Page 28: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 28

9.4.10 Replikation

Für Fehlertoleranz:

CORBA-Spezifikation:Fault-Tolerant CORBA (OMG 2000)

Implementierung: Eternal System (Moser et al. 1998-2000),basiert auf Totem-Protokoll für zuverlässigeGruppenkommunikation mit vollständiggeordneten Rundrufen

Replikationsabstraktion!

Objektgruppe bleibt vor Klienten verborgen Klient verwendet IOGR genauso wie IOR Verschiedene Replikationstechniken stehen zur Auswahl

Page 29: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 29

Für Effizienz:

Keine CORBA-Spezifikation

Implementierung: Cascade System (Chockler et al. 2000),realisiert Cachingmit unterschiedlichen Konsistenzeigenschaften

Replikationsabstraktion – wenngleich etwas eingeschränkt durch die Möglichkeit, die Konsistenz zu wählen

Page 30: Vs9.41 9.4 CORBA = Common Object Request Broker Architecture  Standard (nicht Produkt!) der OMG – Object Management GroupObject Management

vs9.4 30

9.4.11 JacORB

= Open Source Java ORB

(Gerald Brose u.a., FU Berlin 1996-.....)

http://jacorb.inf.fu-berlin.de

Buch zu CORBA mit Java:

Brose, Vogel, Duddy: Java Programming with CORBA. Wiley 2001