Open Source im professionellen Einsatz

Corba-Clients und -Server mit Combat in Tcl programmieren

Tcl-Fledermaus

Corba verbindet Software-Objekte als Client und Server über Rechner- und Plattformgrenzen hinweg. Mit Combat (Maskottchen ist die Fledermaus) lässt sich diese leistungsfähige Middleware auch in Tcl nutzen: Nicht nur Clients, auch Corba-Server kann man so vollständig in Tcl implementieren.

Zurzeit sind viele Lösungen für den Zugriff auf verteile Objekte in Gebrauch. Große Bedeutung haben Microsofts DCOM, SOAP, Java RMI und Corba. Corba gilt als die am besten ausgereifte Lösung, anders als die anderen drei ist es wirklich für beinahe jedes Betriebssystem und jede Programmiersprache erhältlich, so auch für Tcl.

Mäusefutter

Unter Tcl gibt es mehrere Möglichkeiten, Corba zu verwenden. Die beste Lösung ist Combat von Frank Pilhofer[3]. Combat basiert auf dem in C++ geschriebenen ORB Mico, dessen Entwicklung an der Frankfurter Universität begann und das als Open-Source-Projekt fortgeführt wird[4]. Um Server zu implementieren, ist außerdem die objektorientierte Erweiterung iTcl (auch [incr Tcl] genannt) erforderlich[5],[9].

Mico und iTcl gehören bei den meisten Linux-Distributionen zum Standardumfang - falls sie fehlen, lassen sie sich aus den Quellen mit dem üblichen Dreisprung »./configure && make && make install« installieren. Danach kommt die Installation von Combat an die Reihe, auch hier genügt dies gewohnte Verfahren. Damit Combat als ladbare Erweiterung kompiliert wird, darf jedoch die Option »--enable-shared« bei »./configure« nicht fehlen.

Wer die Installation von Mico und Combat-Bibliotheken auf mehreren Rechner zu aufwändig findet, dem sei ein Blick auf die reine Tcl-Implementierung von Combat empfohlen. Hier ist der ORB selbst in Tcl implementiert und an die Stelle von iTcl tritt das reine Tcl-Paket Tcl++[6]. Allerdings ist diese Lösung auf die Client-Seite beschränkt und enthält nicht alle Entwicklungswerkzeuge, sodass Combat zumindest einmal auf Mico-Basis installiert sein muss.

Per definitionem

Der grundlegende Aufbau von Corba ist in Abbildung 1 dargestellt. Client und Server enthalten je einen ORB, der zwischen Netzwerk und Programmierumgebung vermittelt. Auf beiden Seiten ist die Programmierung fast so, als ob es sich um ein normales, lokales Objekt handelte. Damit dies nahtlos bei Server und Clients funktioniert, ist ein Kontrakt über die Klassen, Methoden und Felder notwendig. Bei Corba geschieht dies mit Hilfe der Interface Definition Language (IDL). Die IDL beschreibt die Schnittstellen der Objekte, sie dient nicht zur Implementierung von Client oder Server. IDL-Dateien ähneln auf den ersten Blick C++-Headerfiles, ein Beispiel findet sich in Listing 1.

In dem Beispiel ist eine Klasse (Interface) »Beispiel« definiert, sie hat ein Attribut sowie die Methode »HelloWorld«. Das Attribut hat den Namen »einWert«, es ist nur lesbar und vom Typ »short«. Die Methode gibt einen Returnwert vom Typ »string« zurück, ihre Parameter sind vom Typ »unsigned long« und »double«. Neben Namen und Typ definiert die IDL auch, in welcher Richtung die Methodenparameter verwendet werden. Möglich sind die Richtungen »in«, »out« und »inout«. Parameter mit »in« sind herkömmliche Werteübergaben an eine Methode, bei »out« und »inout« wird stattdessen eine Variable übergeben, die den eigentlichen Wert enthält.

Das Beispiel enthält nur einen kleinen Auszug der Möglichkeiten, neben Vererbung, Namensräumen und Exceptions sind auch Typedefs und benutzerdefinierte Strukturen wie »struct«, typisierte Listen oder Unions möglich. Hier empfiehlt sich bei Bedarf ein Blick in die umfangreiche Literatur über Corba. Besonders empfehlenswert ist, unabhängig von der verwendeten Programmiersprache, das Buch von Henning und Vinovski[7].

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook