solkar: CORBA oder SOAP für Perl/PHP/Python

Hallo!

Ich baue eine Anwendung, die Binärdaten und Texte, Größe voraussichtlich zwischen 1 und 10 Megabyte, verarbeiten soll.

Die Anwendung besteht aus einer Datenbank, einem Server-Prozess und mehreren Client-Programmen; der Server-Prozess muss u.a. Daten zur Verarbeitung an Third-Party-Software liefern und/oder von dieser erhalten.

Ein plausibler Weg zur Steuerung des Gesamtprozesses und von Batches wäre ein Web-Client, da ein Teil der Third-Party-Software Web-Clients bietet.

Zur IPC/RPC mit Standalone-Anwendungen kommen aus aus Gründen der Performance nur CORBA oder DCOM in Frage; der Einsatz von DCOM würde aber eine spätere Migration auf Linux erschweren; Entwicklungs- und Primärplattform ist zwar WinXP aber eine mögliche Migration ist ein erheblicher wirtschaftlicher Faktor.

Somit bleibt CORBA.

---

Für alle Systemteile außer dem Web-Client klappt's mit CORBA (omniORB) auch sehr gut, aber ich steh etwas im Wald wie ich Perl oder PHP (ISAPI, IIS) mit CORBA zusammenbringe:

  • Weder die Perl_Module CORBA::omniORB noch CORBA::Mico kompilieren unter WinXP/VC++ 2005, ein Makro  __attribute__() wird nicht wird in "pomni.h" resp. "pmico.h" nicht gefunden und das war's dann natürlich für den Präprozessor/Compiler.

Wenn jemand aus dem Stehgreif weiss woran bei für ActivePerl unter WinXP/VC++ 2005 samt Platform SDK liegen könnte, wäre das natürlich sehr hilfreich, aber an der Erstellung dieser PERL-Module sind so viele Komponenten beteiligt, dass eine langwierige Fehlersuche (in Fremdsoftware) mir ziemlich hoffnungslos erscheint.

  • für das PHP ZEND-Framework gibt es Universe, eine Erweiterung, die auf Mico aufsetzt.

Abgesehen davon dass erst die dritte - "gepatchte" - Version von Mico, die ich testete, sich auf meinem Rechner kompilieren lies und dann auch lief (manche Versionen erfordern anscheinend alte Versionen der VC-Runtime DLLs) stürzt der MICO-ORB vom Server schon für das CORBA-typische Bank/Account-Example klanglos ab, sobald er über TCP/IP connected wird.

Für meine Architektur bräuchte ich zwar nur "Client-Komponenten" von MICO, aber die müssen per TCP/IP verbinden können und IIOP zu omniORB nutzen.

Mein Vertrauen in MICO ist somit nicht das grösste und auch der Wert weiterer Tests ist fragwürdig.

  • Mit OmniORB/Python klappt zwar die Connectivity, aber Python scheint eine nur sehr rudimentäre Unterstützung für die Entwicklung von dynamischen Webseiten aufzuweisen.

  • Das gleiche trifft für ein CGI in C++ zu; natürlich klappt CORBA mit C++; aber das CGI würde sehr fett werden.

  • Wir könnten C++/CGI oder Python/ISAPI oder sonstiges natürlich auch nutzen den Web-Client aus transformiertem XML zu komponieren. Angesichts der zu erwartenden Komplexität des Webclients ist dies aber auch nicht das Ei des Columbus.
    Die Verwendung eines Frameworks wie etwa "ZEND" ist m.E. angesichts des Komplexitätsgrades erfoderlich; ansonsten expodieren mir der Aufwände.

---

Allerdings habe ich den Vorteil dass der Hauptgrund für den Einsatz von CORBA - hohe Performance bei großen Datenvolumina - für den Web-Client nicht  erforderlich ist; da käme auch SOAP in Betracht.

Allerdings hieße dies, ca. 60% des Funktionalität des Servers sowohl via CORBA als auch via SOAP anzubieten und zwei Schnittstellen zu pflegen.

Eine "duale" Verbindung der nativen Clients (BLOBS per CORBA, Kontrolle per SOAP) käae zwar theoretisch auch in Betracht aber auch nur theoretisch; das blähte erheblich die Anforderungen an Sitzungs- und Transaktionsmanagement im Server auf.

Es gibt zwar Tools mit denen wir CORBA-IDL zu WSDL konvertieren könnten, aber der Implemntierungscode würde trotzdem zweimal vorgehalten und auch wenn das nur dünne Layer oberhalb gemeinsamer Businessobjekte sind, wächst sich sowas schnell zum Wartungsalbtraum aus.

---

Jetzt meine Fragen an Euch:

  • Habt Ihr schon mit CORBA-Implementierungen für die gängigen Web-Skriptsprachen gearbeitet? Kennt ihr verlässliche Module / Bibliotheken hierfür?

  • Habt Ihr schon mit Python(ISAPI) komplexe Websites erstellt? Kennt Ihr Frameworks / Module etwa im Funktionsumgang von (PHP) ZEND?

  • Wie sind Eure Erfahrungen mit reinen XML/XSL Lösungen? Dass man hierüber Daten darstellen kann ist klar, aber eine komplexe Ablaufsteuerung ist ein anderes Thema. Kennt ihr hierzu Frameworks?

--

Mir geht es hier nicht darum, eine komplette Entscheidungsmatrix mit allen Produkten und Technologien zu erstellen, sondern um konkrete Erfahrungsberichte aus dem Themenfeld.

Meine letzten Erfahrungen mit MICO lassen mich manch Produktbeschreibung sher skeptisch betrachten; theoretisch geht immer alles ganz einfach, aber praktisch oft schon die Kompilation fehl oder der erste triviale Test.

Leider.

Liebe Grüsse

"Solkar"

  1. opalORB reicht - zumindest für den Client-seitigen Einsatz - offenbar völlig aus;

    Perl/opalORB => omniORB Nameservice => omniORB Servant in Python

    funktioniert, und sogar auch mit BLOBs recht flott.

    Irgendwie war mir opalORB bislang entgangen, da

    1. Es nicht im CPAN liegt
    2. Die Versionsnummer aus mir unerfindlichen Gründen nur 0.1.4 ist

    Hätte mich auch gewundert wenn es für Perl nichts gegeben hätte... ;)

    Problem (selbst) gelöst; Thread könnte von mir aus geschlossen werden.