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