Was ist CORBA?

Werbung
Grundlagen und Implementation
Jan Kraft
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
2
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:
06.12.07
➢
CORBA (Common Object Request Broker Architecture)
➢
IDL (Interface Definition Language)
➢
UML (Unified Modeling Language)
CORBA - Jan Kraft
3
die OMG
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
●
zentrale Aufgaben:
➢
06.12.07
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
CORBA - Jan Kraft
4
Was ist CORBA?
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
●
Common Object Request Broker Architecture
●
Spezifikation für objektorientierte Middleware (Kern = ORB)
●
definiert plattformunabhängige Protokolle und Dienste
●
●
06.12.07
➢
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
CORBA - Jan Kraft
5
Object Request Broker
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
●
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
www.sei.cmn.edu/str/descriptions/orb.html
06.12.07
CORBA - Jan Kraft
6
Geschichte
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
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)
06.12.07
●
Erweiterung des 'Dynamic Skeleton Interface'
●
Spracherweiterungen für C++ und Smalltalk
CORBA - Jan Kraft
7
Geschichte
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
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.
06.12.07
CORBA - Jan Kraft
8
CORBA Plattformen
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
06.12.07
●
Orbix (Java)
●
MICO (C++)
●
JacORB (Java)
●
ORBit2 (C, C++, Python)
●
ORBacus (C++, Java)
●
TAO (C++)
CORBA - Jan Kraft
9
verwandte Technologien
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
●
●
●
06.12.07
COM/DCOM (auf Windows begrenzt)
Java RMI (Overhead durch Mehrsprachigkeit fällt weg – funktioniert nur in
Java)
Web-Services (ebenfalls sprach- und plattformunabhängig)
CORBA - Jan Kraft
10
Stub / Skeleton
| 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
●
vom IDL - Compiler erzeugt
●
Stellvertreter des jeweiligen Objektes
●
Client → Stub
●
Server → Skeleton
CORBA - Jan Kraft
12
Interface Definition Language
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
●
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
➢
➢
●
●
●
●
06.12.07
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 'LanguageMapping' 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, ...
CORBA - Jan Kraft
13
Interface Definition Language
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
// 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);
};
};
06.12.07
CORBA - Jan Kraft
14
Stub / Skeleton
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
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
06.12.07
CORBA - Jan Kraft
15
Dynamic Invocation Interface
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
06.12.07
CORBA - Jan Kraft
16
Dynamic Invocation Interface
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
●
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:
06.12.07
➢
Repräsentation des Requests im ORB gleich
➢
für den Server ist es irrelevant
CORBA - Jan Kraft
17
Dynamic Skeleton Interface
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
06.12.07
CORBA - Jan Kraft
18
Dynamic Skeleton Interface
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
●
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)
06.12.07
CORBA - Jan Kraft
19
Objekt Adapter
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
06.12.07
CORBA - Jan Kraft
20
Objekt Adapter
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
●
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
➢
➢
●
06.12.07
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
CORBA - Jan Kraft
21
Objekt Adapter
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
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:
➢
06.12.07
Implementierung von Objekten → portabel für unterschiedliche
CORBA-Implementierungen
➢
Möglichkeit für persistente Identitäten
➢
Implementierung soll mehrere Objektinstanzen unterstützen
CORBA - Jan Kraft
22
ORB Interface
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
06.12.07
CORBA - Jan Kraft
23
ORB Interface
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
●
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
06.12.07
CORBA - Jan Kraft
24
Interface Repository
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
06.12.07
CORBA - Jan Kraft
25
Interface Repository
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
●
Archiv aller IDL - Definitionen zur Laufzeit
●
IDL - Definitionen enthalten (Definitionen der):
●
06.12.07
➢
Interface
➢
Module
➢
Konstanten
➢
Ausnahmen
➢
Typ
Unterstützung dynamischer CORBA - Requests
CORBA - Jan Kraft
26
Implementation Repository
| 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
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
CORBA - Jan Kraft
28
Inter ORB Protokolle
| 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
Fazit
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
●
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
●
06.12.07
OMG arbeitet noch an diesen Problemen
CORBA - Jan Kraft
31
Fazit
| OMG | Was ist CORBA? | Funktionsweise | Fazit | Quellen |
●
Java RMI = CORBA lite
●
sprachspezifische RMI (Remote Method Invocation)
●
Beschränkung auf Java
→ Programmierer brauch IDL nicht lernen
→ Programmierung von RMI relativ einfach
●
●
06.12.07
RMI fehlen:
➢
Satz fundamentaler Objektdienste
➢
Funktionsvielfalt einer CORBA-Umgebung
Sun und die OMG → Zusammenarbeit von RMI mit CORBA-Systemen über
IIOP
CORBA - Jan Kraft
32
Quellen
| OMG | Was ist CORBA? | Funktionsweise | Fazit | 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
06.12.07
CORBA - Jan Kraft
33
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
06.12.07
CORBA - Jan Kraft
34
Vielen Dank für Ihre Aufmerksamkeit.
06.12.07
CORBA - Jan Kraft
35
Herunterladen