Gibt es für ein verteiltes Computerprojekt, das ab heute mit 0 Legacy-Komponenten beginnt, gute Gründe, sich mit CORBA zu befassen?
Gibt es für ein verteiltes Computerprojekt, das ab heute mit 0 Legacy-Komponenten beginnt, gute Gründe, sich mit CORBA zu befassen?
Antworten:
Es gibt immer noch Situationen, in denen CORBA eine gute Antwort sein könnte:
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 .
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.)
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.
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).
Aber natürlich kann Ihre Laufleistung variieren.
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:
Abhängig von der Art der Kommunikation, die ich wollte, würde ich wahrscheinlich Folgendes in Betracht ziehen:
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.
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.
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!
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