Ist CORBA Vermächtnis?


79

Gibt es für ein verteiltes Computerprojekt, das ab heute mit 0 Legacy-Komponenten beginnt, gute Gründe, sich mit CORBA zu befassen?


27
Um ehrlich zu sein, ich bin mir nicht sicher, ob sie jemals gute Gründe waren - es ist eine schreckliche Technologie. Ich spreche hier als ehemaliger CORBA-Programmierer.

2
Der gute Grund war, dass es zu Beginn von CORBA keine praktikable Alternative gab (es sei denn, Sie konnten DCOM oder DCE).
Skaffman

@skaffman Es gab Alternativen - Dinge wie TIBCO zum Beispiel.

Sicher, aber das war genauso hässlich, ganz zu schweigen von teuer.
Skaffman

3
@ Skaffman Du machst Witze! TIBCO Rendezvous war / ist mindestens 10x einfacher zu bedienen als CORBA. Was die Kosten angeht, denke ich, dass die IBs, die dieses Zeug verwenden, es sich leisten können. Zumindest konnten sie es damals.

Antworten:


46

Es gibt immer noch Situationen, in denen CORBA eine gute Antwort sein könnte:

  • Wenn Sie ein verteiltes System mit mehreren Programmiersprachen und mehreren Plattformen erstellen,
  • Wenn Ihr System das Senden komplexer Datenstrukturen beinhaltet ... und SOAP es nicht schneidet,
  • wenn Sie hohe Messaging-Raten haben ... und HTTP es nicht schneidet, oder
  • wenn Sie mit vorhandenen CORBA-Clients und / oder -Diensten interagieren müssen.

Aber trotzdem gibt es Alternativen, die das tun, was CORBA tut, nur besser ... oder so behaupten sie. Zum Beispiel der ICE von ZeroC

EDIT @fnieto mischt sich ein, um zu sagen (oder zu implizieren), dass ICE nicht kostenlos ist, TAO jedoch.

Dies ist ungenau und irreführend .

  1. ICE ist eine GPL-Software und steht zum kostenlosen Download zur Verfügung. Sie mussten nur für ICE bezahlen, wenn Sie / Ihr Unternehmen nicht bereit sind, die Bedingungen der GPL einzuhalten. (Oder wenn Sie Unterstützung benötigen.)
  2. Ich habe ICE als Beispiel für eine Alternative zu CORBA verwendet. TAO ist CORBA. Die ICE-Autoren machen ein glaubwürdiges Argument dafür, warum sie eine bessere Leistung erzielen können, wenn sie nicht CORBA-konform sind.
  3. TAO ist keineswegs die einzige freie / Open-Source-CORBA-Implementierung. Ich kann mir 3 andere aus dem Kopf denken.

Der Nachteil von ICE ist die mangelnde Interoperabilität mit CORBA-Middleware-Stacks. Nach meiner Erfahrung kann die Interoperabilität verschiedener CORBA-Implementierungen jedoch auch problematisch sein. (Die Dinge in diesem Bereich haben sich vielleicht verbessert ... aber ich habe seit ~ 2002 keine CORBA-Arbeit mehr gemacht, daher bin ich ein bisschen außer Kontakt.)


Zu Punkt 1: Ich hatte erwartet, dass CORBA und Web Services aus plattform- und sprachübergreifender Sicht mehr oder weniger gleichwertig sind. Jeder wird Schwachstellen haben, die er nicht abdeckt, aber insgesamt sehe ich keinen großen Unterschied. Für dieses Nicht-Legacy-Szenario sehe ich kein Problem.
DJNA

@djna: Aber bedenken Sie, dass die Nicht-Legacy-App von heute die Legacy-App von morgen ist. Die heutige Verwendung einer mehrsprachigen / plattformübergreifenden Middleware-Technologie kann Ihnen in 5 bis 10 Jahren bei der Integration in die nächste Generation von Unternehmensanwendungen helfen.
Stephen C

@ Stephen. Das einzige Problem mit ICE ist der Preis, TAO ist kostenlos.
fnieto - Fernando Nieto

3
Gut gesagt. In der Tat ist Java eine sehr auffällige kostenlose CORBA-Implementierung. Und die Tatsache, dass J2EE IIOP als Transportmittel vorschreibt, bedeutet, dass CORBA jetzt wahrscheinlich allgegenwärtiger und aktueller ist als je zuvor.
Marquis von Lorne

33

Aus den vorhandenen Antworten wird dies zu einem fast religiösen Thema. Man kann CORBA genauso betrachten wie das halb leere / halb volle Glas: CORBA ist einerseits als Legacy-Cruft datiert und andererseits ist es mit mehreren verfügbaren Implementierungen und dem "Teufel, den Sie kennen" relativ stabil.

In meiner Arbeit sehe ich, dass CORBA in eingebetteten Systemen, Echtzeitsystemen (CORBA hat RT-Erweiterungen) und dergleichen bereitgestellt wird. Es gibt nicht viele Alternativen AFAIK.

Ein weiterer "Vorteil" von CORBA ist die Verfügbarkeit mehrerer hochwertiger Open Source-Implementierungen, z. B. TAO, MICO, JacORB usw., mit unterschiedlichen Lizenz- und Supportmodellen. Es sind auch noch kommerzielle Ausgaben erhältlich.

In Bezug auf "die meisten" CORBA-Apps, die in Java implementiert sind, ist dies meiner Erfahrung nach nicht der Fall. Während die Sprachzuordnung für CORBA zu Java eine der schönsten ist, die es gibt (was vielleicht nicht viel aussagt), verfügt Java bereits über ein sehr schönes verteiltes Computermodell, das über CORBA hinaus reichhaltige Möglichkeiten bietet, und All-Java-Apps verwenden diese mehr als CORBA. Die überwiegende Mehrheit der CORBA-Entwicklung, die ich gesehen habe, ist in C ++ (was auch die schlechteste Sprachzuordnung ist).

Schließlich bietet CORBA standardisierte asynchrone clientseitige Aufrufe in Form von AMI an, jedoch niemals asynchrone Behandlung auf der Serverseite. TAO bietet eine nicht standardmäßige serverseitige Implementierung namens AMH an.


20

Ich glaube, dass Corba durch die ursprüngliche EJB-Spezifikation wiederbelebt wurde, da EJBs durch ein wenig Konfiguration leicht in CORBA-Beans umgewandelt werden können. Ich vermute, dass die meisten Corba-Bereitstellungen tatsächlich in Java implementiert wurden.

In Bezug auf die Popularität denke ich, dass es noch einige High-End-Bereitstellungen für einige Jahrzehnte geben könnte, aber für die Mehrheit der Menschen ist Corba tot.

Es gibt eine Menge sehr sexy Möglichkeiten, das Gleiche zu tun (mit Ausnahme des oben erwähnten High-End).

  • Cloud Computing (Webdienste, skalierbares Computing, lose Kopplung, Warteschlangen).
  • REST-Services (Web-Services Lite).
  • SOAP-Dienste (Web-Services schwer).
  • Grid / Cluster-Computing (Warteschlangen, Kartenreduzierung und ähnliches)

Aber natürlich kann Ihre Laufleistung variieren.


15

Dies hängt natürlich von der Art der Server- und Interprozesskommunikation ab, die Sie in Betracht ziehen. Und ich denke, Stephen C und Chris Cleeland decken die positiven Aspekte der Corba sehr gut ab.

Unsere Anwendung verwendet CORBA (Orbix) seit über 10 Jahren und ist jetzt ein Vermächtnis. Und wie es geschrieben steht, ist CORBA eine gute Technologie. Wenn ich jedoch von vorne anfangen würde, würde ich CORBA wahrscheinlich nicht verwenden:

  • Es ist kompliziert und nur wenige Leute in meiner Organisation wissen es sehr gut. Infolgedessen müssen sie alle schwierigen Probleme lösen.
  • Die Rekrutierung von Mitarbeitern kann ein Problem sein. CORBA ist einfach nicht mehr cool und wird nicht cooler Obwohl C ++ - Entwickler in Irland auch ein bisschen dünn gesät sind.
  • Die meisten Beratungsunternehmen möchten Webdienste für Integrationsarbeiten verwenden. Wenn Sie also möchten, dass Dritte die Integration durchführen, benötigen Sie wahrscheinlich ohnehin eine Webdienst-API.

Abhängig von der Art der Kommunikation, die ich wollte, würde ich wahrscheinlich Folgendes in Betracht ziehen:

  • Protokollpuffer für viele kleine Nachrichten (ich weiß, dass ich den Transport bereitstellen müsste)
  • Webdienste für weniger große Nachrichten

Dies basiert mehr auf der Suche nach Mitarbeitern und Fachwissen, der Unterstützung durch Dritte und der Nutzung von Open Source-Bibliotheken als auf der technischen Qualität von CORBA, die ich täglich verwende und die stark, wenn auch etwas umständlich ist.


@iain: gute Punkte. CORBA ist nicht einfach zu verwenden, selbst von Java aus, wo ich den größten Teil meiner CORBA-Entwicklung durchgeführt habe. Das POA / BOA-Zeug ist schwer zu verstehen.
Stephen C

3
Ja, das POA-Zeug ist besonders schwieriger als es sein sollte
Uhr

2
Mit der Standardisierung der Sprachzuordnung von IDL auf C ++ 11 ist das Erlernen und Verwenden von CORBA viel einfacher. Die Sprachzuordnung ist unkompliziert und verwendet so viel wie möglich von STL. Sie müssen noch die POA lernen, aber das ist wirklich nicht schwer.
Johnny Willemsen

13

CORBA ist sicherlich altmodisch, bietet aber auch bestimmte Funktionen auf hoher Ebene (siehe hier ). Diese Funktionalität könnte alle mit modernen Webdiensten ausgeführt werden, aber wahrscheinlich nicht in Standardform und nicht ohne viel zusätzliche Arbeit.

Für 99% der verteilten Dienste ist CORBA jedoch unerwünscht. Es ist hässlich, komplex und schwer zu bedienen.


12
Und angesichts dieses letzten Punktes haben sich die Leute deshalb Seife / ws- * ausgedacht. Welches ist jetzt auch hässlich und komplex.
Leeeroy

Soap ist nicht so hässlich, wenn Sie mit Frameworks arbeiten, die die meisten Arbeiten hinter den Kulissen für Sie erledigen.
arg20

Welche Alternativen schlagen Sie vor?
schoetbi

5
@ arg20 - Das ist ein bisschen wie zu sagen, dass SOAP nicht so hässlich ist, wenn Sie es nicht sehen können :-)
Stephen C

12

Eine Sache, die hier niemand erwähnt hat, ist OPEN, OPEN STANDARDS. Von allen existierenden Technologien (mit Ausnahme von SOAP) ist dies der einzig wahre offene Whitepaper-Standard. Der Standard ist nicht auf die Technologien eines Unternehmens angewiesen. RMI (Sun / Oracle), DCOM (jetzt nicht mehr verfügbar - Microsoft). Es ist vollständig hersteller- und sprachneutral. Mit Ausnahme von SOAP ist keine der anderen DOS-Technologien (Distributed Object Technology) verfügbar

Ich bin ein Software-Architekt und muss regelmäßig die Wahl treffen, welches DOS in einem Systemdesign verwendet werden soll. Ohne den Religionskrieg, dem ich jedes Mal gegenüberstehe, wäre es entweder eine MOM oder CORBA.

Betrachten Sie es so, wenn es so tot wäre, würde keines der 3 / 4G-Netzwerke funktionieren. 3GPP ist vollständig CORBA-spezifiziert. Das europäische Satellitensystem ist vollständig von CORBA spezifiziert. Fragen Sie sich warum? Das liegt daran, dass sie auf hersteller- und sprachneutralen Architekturen basieren müssen!


2
Ähm ... in der Vergangenheit war ich an der Entwicklung von OMG-Standards beteiligt, und ich kann Ihnen sagen, dass die Prozesse nicht immer so offen und transparent waren, wie man es sich erhoffen konnte. Und die OMG hat sich in der Vergangenheit von der Frage der Einhaltung ferngehalten ... nicht, dass IETF oder W3C diesbezüglich viel besser abschneiden.
Stephen C

1+ @ Selvyn Ich habe nach dieser Information gesucht
Tony Shih

@ Selvyn, Michi Henning bringt ein ziemlich überzeugendes gegenteiliges Argument vor, dass die Offenheit von OMG eine systemische Ursache für seine Probleme ist - queue.acm.org/detail.cfm?id=1142044 . Gut gelesen.
Spinkus

9

Ich würde sagen, dass der aktuelle Reifegrad von Web Services (einschließlich REST) ​​und in der Java-Welt EJBs (die möglicherweise sogar CORBA im Verborgenen verwenden) die Anforderungen für verteilte Unternehmenssysteme abdeckt.

Ich würde empfehlen, dass ein Aspekt, den Sie sorgfältig prüfen sollten, der Grad der asynchronen Interaktion ist, den Sie in Ihrem verteilten System benötigen. Ich postuliere, dass jedes verteilte System von nicht trivialem Umfang asynchrone Kommunikation benötigt und die ausgewählte Infrastruktur die asynchrone Verarbeitung unterstützen sollte, was normalerweise Warteschlangen bedeutet.

Dies steht nicht im Widerspruch zur Verwendung von WebServices (oder tatsächlich CORBA), weist jedoch auf einen Aspekt Ihrer Produktauswahl hin, der bei der anfänglichen Aufregung, eine verteilte Verarbeitung in Gang zu setzen, übersehen werden kann

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.