Jan Kraft - iks.hs-merseburg.deuheuert/pdf/Anwendung Rechnernetze... · 06.12.07 CORBA - Jan Kraft...

35
Grundlagen und Implementation Jan Kraft

Transcript of Jan Kraft - iks.hs-merseburg.deuheuert/pdf/Anwendung Rechnernetze... · 06.12.07 CORBA - Jan Kraft...

Grundlagen und Implementation

Jan Kraft

06.12.07 CORBA - Jan Kraft 2

Gliederung

1 die OMG

2 Was ist CORBA?

3 Funktionsweise

3.1 die Interface Definition Language

3.2 Objekt Adapter

3.3 weitere Komponenten des ORB

3.4 InterORB Protokolle

4 Fazit

5 Quellen

06.12.07 CORBA - Jan Kraft 3

die OMG

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

● gegründet: Mai 1989 von 8 Unternehmen:

3COM, American Airlines, Canon, Data General, HP,

Philips Telecomunications, Sun Microsystems, Unisys

● Oktober 1989:

➢ unabhängige Organisation➢ offen für weitere Organisationen

● Jahr 2000: 800 Mitglieder

● bekannte Errungenschaften:

➢ CORBA (Common Object Request Broker Architecture)➢ IDL (Interface Definition Language)➢ UML (Unified Modeling Language)

06.12.07 CORBA - Jan Kraft 4

die OMG

● zentrale Aufgaben:

➢ sammeln von technologischem Know-How für die Entwicklung verteilter, objektorientierter Software

➢ Bereitstellen von allg. Richtlinien, industriell nutzbaren Spezifikationen

➢ Spezifikationen sollen Hardware- und Betriebssystemunabhängig sein

− Vereinheitlichen des Vokabulars

− Vereinheitlichen der Programmierschnittstellen

− Entwurf einer universeller Kommunikationsplattform

− Definition von Werkzeugen

− Ausarbeiten von verallgemeinerten Mechanismen

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 5

Was ist CORBA?

● Common Object Request Broker Architecture

● Spezifikation für objektorientierte Middleware (Kern = ORB)

● definiert plattformunabhängige Protokolle und Dienste

➢ Programmierer erstellt eine Spezifikation der Schnittstellen

➢ CORBA-Spezifikationen nicht an eine Programmiersprache gebunden

➢ Spezifikation wird für entfernte/lokale Zugriffe zur Verfügung gestellt

➢ Stub/Skeleton werden in jeweiliger Programmiersprache erzeugt

➢ Methodenaufruf, wie bei normalem lokalen Aufruf

● Beschreibung der Operationen zwischen Objekt unzureichend spezifiziert → viele herstellerspezifische ORB → untereinander inkompatibel

● ab CORBA 2.0 → Spezifikation für InterORB-Protokolle

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 6

Object Request Broker

● dient dem Zugriff auf Objekte in lokalen als auch entfernten Programmen

● transparente Weiterleitung des Objektaufrufes unabhängig von:

➢ Betriebssystem➢ Programmiersprache➢ tatsächlichem Ort im Netzwerk

● Aufrufende benötigt nur Objektreferenz

● Herz des ORB ist die IDL

➢ legt fest wie Interface definiert sein

muss → Sprachunabhängigkeit

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

www.sei.cmn.edu/str/descriptions/orb.html

06.12.07 CORBA - Jan Kraft 7

Geschichte

CORBA 1.0 (1991)

● 1. CORBA Objektmodell● Interface Definition Language (IDL)● Dynamic Request Management + Interface Repository● Spracherweiterung für C

CORBA 1.1 (1992)

● 1. veröffentlichte Version● Interfaces für den Basic Object Adapter (BOA)

CORBA 2.0 (1996)

● Erweiterung des 'Dynamic Skeleton Interface'● Spracherweiterungen für C++ und Smalltalk

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 8

Geschichte

CORBA 2.1 (1997)

● Erweiterung der Sicherheitskomponenten (sIIOP und IIOP über SSL)● Spracherweiterungen für COBOL und Ada

CORBA 2.2 (1998)

● Erweiterung für Serverportierung (POA)● Spracherweiterung für Java

CORBA 3.0 (2002)

● Verbesserung der Kernkomponente● engere „Integration“ mit Java und anderen Technologien● und weitere

Genauere Spezifikationen sind der Seite www.omg.org zu entnehmen.

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 9

CORBA Plattformen

● Orbix (Java)

● MICO (C++)

● JacORB (Java)

● ORBit2 (C, C++, Python)

● ORBacus (C++, Java)

● TAO (C++)

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 10

verwandte Technologien

● COM/DCOM (auf Windows begrenzt)

● Java RMI (Overhead durch Mehrsprachigkeit fällt weg – funktioniert nur in Java)

● Web-Services (ebenfalls sprach- und plattformunabhängig)

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 11

Stub / Skeleton

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 12

Stub / Skeleton

● vom IDL - Compiler erzeugt

● Stellvertreter des jeweiligen Objektes

● Client → Stub

● Server → Skeleton

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 13

Interface Definition Language

● abstrakte, sprachenunabhängige Schnittstellenbeschreibungssprache

● Beschreibung sichtbaren Eigenschaften (Operationen, Attribute)

● Implementierung nicht in IDL → herkömmliche Programmiersprache

● strikte Trennung von Definition und Implementation, einfach gehaltene IDL

➢ Integration möglichst vieler Programmiersprachen➢ Komponenten- / Serverimplementierung in verschiedenen

Programmiersprachen möglich● IDL - Syntax ist stark an C++ / Java angelehnt

● genaue Realisierung der Sprachunabhängigkeit ist durch das 'Language-Mapping' festgelegt

● sprachspezifischer IDL-Compiler erzeugt Stub/Skeleton zusätzlicher → kein zusätzlicher Aufwand

● IDL-Compiler für: C/C++, Java, Smalltalk, Ada, COBOL, Lisp, Python, ...

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 14

Interface Definition Language

// IDL -- Mini-Version eines Namensdienstes (RED96 S.108)

module SimpleNaming {

typedef string Name;

typedef sequence <Name> NameList;

interface NamingContext {

exception NotFound {};

exception InvalidName {};

exception AlreadyBound {};

void bind(in Name n, in Object obj) raises (NotFound, InvalidName, AlreadyBound);

void bind_context(in Name n) raises (NotFound, InvalidName, AlreadyBound);

Object resolve(in Name n) raises (NotFound, InvalidName);

void unbind (in Name n) raises (NotFound, InvalidName);

void list(in Name dir, out NameList bindings) raises (NotFound);

};

};

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 15

Stub / Skeleton

Stub:

➢ adaptiert den Funktionsaufrufstil der Language-Mapping seines ORB

➢ statischer Mechanismus zur Erzeugung/Weiterleitung von Requests

➢ lokaler Vertreter des entfernten Objektes („getarnt“ in jeweiliger Programmiersprache)

➢ wandelt Request in eine Form für Netzwerkübertragung um (Marshalling)

Skeleton:

➢ adaptiert den Request-Beförderungsmechanismus des ORB an Objektimplementierung

➢ statischer Mechanismus zur Request-Weiterleitung

➢ konvertiert vom Übertragungsformat in ein Programmiersprachenformat (Demarshalling)

alternativ: dynamische Varianten

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 16

Dynamic Invocation Interface

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 17

Dynamic Invocation Interface

● ORB unterstützt

● unabhängig von IDL-Interfaces

● Clients können dynamische Requests an beliebige CORBA-Objekte senden

● keine Kenntnis der Objektschnittstellen zur Übersetzungszeit

● egal ob Stub oder DII:

➢ Repräsentation des Requests im ORB gleich➢ für den Server ist es irrelevant

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 18

Dynamic Skeleton Interface

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 19

Dynamic Skeleton Interface

● ORB unterstützt

● unabhängig von IDL-Interfaces

● ermöglicht Programmierung ohne Skeleton

● zur Entwicklungszeit keine Kenntnis über zu implementierenden Schnittstellen

● Bsp.: Server erhält Objektreferenz und bietet sich als diese an

➢ kein Stub vorhanden➢ nimmt selber Position als Client ein um Request per DII weiter zu leiten➢ Brücke zw. verschiedenen Verteilten Objektsystemen

(CORBA ↔ COM/DCOM)

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 20

Objekt Adapter

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 21

Objekt Adapter

● grundlegende Dienste für Objektimplementation (Generierung/Interpretation von Objektreferenzen)

● Aufruf der Methoden der Objektimplementation beim Request

● automatische Aktivierung von Servern/Objektimplementationen

➢ Basic Object Adapter (BOA)➢ Object-Oriented Database Adapter (OODB)➢ Portable Object Adapter (POA)

● BOA

➢ normaler Aufruf: wenige Objekte bleiben für ganzen Serverlaufzeit instanziiert

➢ BOA – zu ungenau spezifiziert: Inkompatibilitäten in der InterORB Kommunikation

● OODB

➢ für viele „kleine“ Objekte → Zustände/Objekte in DB schreiben/lesen ➢ weniger Speicherplatz im Hauptspeicher

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 22

Objekt Adapter

BOA (Basic Object Adapter):

● ursprüngliche Definition des Objekt Adapters von OMG

● unzureichende Unterstützung für Server-Implementierungen

→ proprietäre Erweiterungen des Funktionsumfanges

POA (Portable Object Adapter):

● schließen der funktionalen Lücken vom BOA

● POA baut nicht auf BOA auf, sondern ersetzt diesen

● Ziel:

➢ Implementierung von Objekten → portabel für unterschiedliche CORBA-Implementierungen

➢ Möglichkeit für persistente Identitäten➢ Implementierung soll mehrere Objektinstanzen unterstützen

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 23

ORB Interface

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 24

ORB Interface

● bietet Operationen für jedes Objekt (Objektreferenzen)

● bietet direkten Zugang zu Interface- / Implementation Repository

● konvertieren von Objektreferenzen von/zu Strings

● Erstellung der Parameterlisten für DII

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 25

Interface Repository

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 26

Interface Repository

● Archiv aller IDL - Definitionen zur Laufzeit

● IDL - Definitionen enthalten (Definitionen der):

➢ Interface➢ Module➢ Konstanten➢ Ausnahmen➢ Typ

● Unterstützung dynamischer CORBA - Requests

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 27

Implementation Repository

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 28

Implementation Repository

● Objektreferenz (beim Client) identifiziert das Objekt aber nicht sein Aufenthaltsort

● Informationen über Lokalisierung/Aktivierung von Objektimplementationen

● stellt Informationen zu Objektimplementation (Debugger-Infos, administrative Kontrollinfos, Ressourcenallocationsinfos) bereit

● Objekt kann auf anderen Server verschoben werden → keine Auswirkung auf Client

● Objekt auf mehrere Rechner → je nach Auslastung an anderen Server verweisen

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 29

Inter ORB Protokolle

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 30

Inter ORB Protokolle

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 31

Fazit

● CORBA: weit verwendete Verteilungsplattform

● zahlreiche Unternehmen, setzten CORBA in großem Ramen ein

● Vorteil:

➢ Interoperabilitätskonzept mittels IDL → schmerzlose Integration existierender Software in verteiltes Umfeld

● Komplexität verteilter Software relativ unproblematisch

● CORBA eignet sich noch nicht für alle Anwendungsanfelder

→ Software mit hohen QoS-Anforderungen

→ Echtzeitsysteme

● OMG arbeitet noch an diesen Problemen

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 32

Fazit

● Java RMI = CORBA lite

● sprachspezifische RMI (Remote Method Invocation)

● Beschränkung auf Java

→ Programmierer brauch IDL nicht lernen

→ Programmierung von RMI relativ einfach● RMI fehlen:

➢ Satz fundamentaler Objektdienste➢ Funktionsvielfalt einer CORBA-Umgebung

● Sun und die OMG → Zusammenarbeit von RMI mit CORBA-Systemen über IIOP

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 33

Quellen

● Java Programming with CORBA

G. Brose, A. Vogel, K. Duddy

Wiley Computer Publishing

● Corba 2.0 – Praktische Einführung für C++ und Java

Jens-Peter Redlich

Addison-Wesley

● Studienarbeit: CORBA / MICO (Mico is Corba)

C. Voß, T. Johanntoberens

FH-Bielefeld

| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |

06.12.07 CORBA - Jan Kraft 34

Quellen

● http://www.mario-konrad.ch/index.php?page=20026

● http://www.omg.org

● http://de.wikipedia.org/wiki/CORBA

● http://archiv.tu-chemnitz.de/pub/1997/0042/node44.html

● http://www-vs.informatik.uni-ulm.de/teach/ws04/vbs/VBS_Kap6_Corba.pdf

CORBA - Jan Kraft 3506.12.07

Vielen Dank für Ihre Aufmerksamkeit.