Kommunikation
... [ Seminar Linux und Apache]
... [ Thema GNOME Komponentenmodell ]
... [ Orbit ]
...
Übersicht: Verschiedene Programmiersprachen
Probleme
Ein Projektziel von GNOME war es unabhängig von der Programmiersprache
zu sein. In diesem Zusammenhang steht das Projekt vor einem Problem.
Wie kommunizieren zwei Applikationen miteinander, die in verschiedenen Programmiersprachen
geschrieben wurden?
Früher wurden Protokolle für die Kommunikation zwischen Applikationen
entwickelt. Mit dieser Lösung wollte man nicht vorlieb nehmen.
Außerdem wollte man Funktionalität von GNOME Applikationen nach
außen exportieren.
"Alte" Skripte sollten ebenfalls einbindbar werden. Unix ist
immer wieder dafür gelobt worden, dass es dem Benutzer einfach macht,
eine Reihe von kleinen Filterprogrammen (wie grep oder sed) zu benutzen und
sie mittels Pipes zu verbinden, um eine komplexere, dem jeweiligen Bedarf
angepaßte Applikation zu erzeugen. Leider lassen sich Pipes und Filter
nicht sehr gut auf komplexere Applikationen (insbesondere graphische Applikationen)
übertragen. GNOME ist eine Umgebung, in der Softwareobjekte miteinander
auf eine standardisierte Art und Weise kommunizieren können (auch in
einem Netzwerk), ohne etwas voneinander wissen zu müssen. Dies wird
durch den CORBA- Unterbau von GNOME ermöglicht.
CORBA
CORBA ist keine Software, sondern ein Standard der OMG (Object Management
Group).
Es ist ein serverseitiges Komponentenmodell, welches Ähnlichkeiten zu
Enterprise Java Beans hat. Es ermöglicht wie der Remote Procedure Call
(RPC) die Nutzbarmachung von Teilfunktionalitäten anderer Applikationen.
Es ist im Gegensatz zu RPC aber objektbasiert.
Theoretisch kann eine Applikation die Teilfunktionalität einer anderen
Applikation benutzen, wenn die andere Applikation auf einer anderen Rechnerarchitektur,
auf einem anderen Betriebssystem, in einer anderen Programmiersprache und
mit einer anderen Compiler Version entstanden ist.
Allgemein :
- CORBA : Common Object Request Broker Architecture
- IDL (Interface Description Language)
- ORB : Object Request Broker
Die IDL ist lexikalisch an C++ angelehnt und ist die Sprache zur Definitionen
von Schnittstellen (Parameter, Attribute, Exception usw.).
Sie repräsentiert den kleinsten gemeinsamen Nenner der Applikationen.
Der ORB organisiert die Aufrufe teilt Referenzen zu und bietet die Transparenz
für entfernte Aufrufe.
Diese Transparenz bedeutet transparenz bezüglich :
- der Art der Objekt-Implementation (Sprache, Plattform, ...)
- des Aktivierungszustand der Objekt-Implementation
- der Kommunikationsprotokolle
Kommunikation
1. Client - Objekt
- Nutzt Funktionalitäten von Server - Objekten
- Aufrufer; stellt eine request (Methodenaufruf) unter Angabe des
Zielobjektes, der Parameter und Exceptions bzw. Rückgabewerte,
über den ORB an ein Server Objekt
2. Server - Objekt
- Bereitstellung von Services
- Können aus der IDL- Spezifikation generiertes Objekt-Skelett
nutzen
3. Schnittstellen
- ORB bietet Client zwei Arten von Schnittstellen an für den Methodenaufruf
- statische Schnittstellen (Erzeugte Stubs aus IDL - Beschreibung)
- dynamische Schnittstellen (Abfragung des Schnittstellenverzeichnisses
durch den Client)
4. Objektadapter
Steuert anwendungsunabhängige Funktionen des Server Objektes
Komponenten (2)
Die Elemente eines Komponentenmodells wurden in
Kapitel 1
bereits aufgezeigt. Wie diese Elemente auf CORBA Komponenten realisiert
sind wird nun eingegangen.
- Definition
- eines speziellen CORBA Objekt
- mit funktionaler Schnittstelle
- Attributen für die Konfiguration
- Abhängigkeiten von anderen Komponenten
- und Existenz in Containern, die Basisdienste bereitstellen
- Interaktion
- Event-Modell (sind strukturiert und müssen in IDL deklariert werden)
- Komposition
- Aggregation durch Vererbung leider nicht möglich, da dies Zugriff
auf die Komponente erfordern würde
- Aggregation wird hier gewährleistet durch Verbindung der Komponenten
durch Eventkanäle und Skripte
- Container enthält die Aggregierten Komponenten und ist selbst
wieder eine Komponente mit mehreren Interfaces
- Konfiguration
- Attribute der Komponente auf bestimmte Werte setzen
- Durch Factory Initialisierung von Attributen automatisieren
- Introspektion
- Dynamisches herausfinden der Schnittstelle einer Komponente zur Laufzeit
- Persistenz
- Sicherung der Persistenz eines Objektes durch den Persistent Object
Service
- Verpackung
- Auslieferung einer CORBA Komponente in Form eines speziellen Archivs
(CAR Datei)
Corba und GNOME
Gnorba ist das GNOME CORBA Framework und es ermöglicht Applikationen
auf einfache Art und Weise ORBit den speziell für GNOME entwickelten
ORB zu benutzen.
ORBit wurde entwickelt, weil die auf den Markt befindlichen Broker zu ressourcenhungrig
und schwerfällig waren.
CORBA ist eine mächtige Spezifikation, mit der man alles machen kann.
GNOME macht sich hauptsächlich folgende Dienste nutzbar:
- Den allgemeinen IPC-Mechanismus (Inter Process Communication)
- Die Möglichkeit interne Funktionaliäten zu exportieren
- Ein Verfahren zum Erzeugen wiederverwendbarer Bausteine (Bonobo)
... [ Seminar Linux
und Apache]
... [ Thema GNOME Komponentenmodell ]
... [ Kommunikation ]
... [ Orbit]
...