Open Source im professionellen Einsatz
Linux-Magazin 02/2003

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.

513

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].

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Schreibstube

    Open Office bringt mit seinem Basic-Dialekt eine mächtige Makrosprache mit. Die ist aber nicht jedermanns Sache - wer lieber Tcl verwendet, kann das tun und Office damit fernsteuern. Zusammen mit Tcluno und Itcluno gelingen druckreife Reports oder Tabellen, deren Daten aus beliebigen Quellen stammen.

  • Klasse Federn

    Tcl ist das bestgehütete Geheimnis der IT-Industrie - und sehr lebendig. Die im Auftakt unserer Tcl-Reihe "Feder-Lesen" vorgestellte objektorientierte Erweiterung mit dem sperrigen Namen [incr Tcl] hat einen guten Teil zur Verbreitung von Tcl beigetragen.

  • Alles im Browser

    Programme im Browser anzeigen und benutzen: Statt einer Neuentwicklung in HTML, Java und Javascript bietet es sich an, die Original-Applikation in den Browser einzubetten.

  • Seifenkiste

    Remote Procedure Call (RPC) heißt die bewährte Technik, mit der Programme über Rechnergrenzen hinweg kommunizieren. Im WWW-Zeitalter erfüllen diesen Zweck meist die Webservices. Das Apache-Projekt Axis beherrscht das Standardprotokoll SOAP.

  • Auskunft, wo ist mein Objekt?

    Enterprise-Anwendungen sind verteilte Anwendungen und das Auffinden von Ressourcen stützt sich dabei auf Namens- und Verzeichnisdienste. Dieser Artikel gibt eine Einführung in das Java Naming and Directory API (JNDI) und zeigt seine Anwendung anhand des freien LDAP-Servers OpenLDAP.

comments powered by Disqus

Ausgabe 04/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.