jan kraft - iks.hs-merseburg.deuheuert/pdf/anwendung rechnernetze... · 06.12.07 corba - jan kraft...
TRANSCRIPT
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