[Alg] Ervaringen "Ice" ten opzichte van "Corba"

Pagina: 1
Acties:

  • Maxonic
  • Registratie: September 2000
  • Laatst online: 20-01 23:34
Na in een aantal topics op GoT positieve ervaringen over Corba te hebben gelezen ben ik nieuwsgierig geworden naar cross-platform frameworks. Corba leek mij een vrij leuk onderwerp om mezelf in te verdiepen, maar toen kwam ik dit tegen: http://www.zeroc.com/iceVsCorba.html.

Op zich ben ik nogal sceptisch over deze 'objectieve' vergelijking maar wie op Google zoekt naar "Corba Ice" vind niks dan lof over Ice en voordelen ten opzichte van Corba. De GoT search heeft niks over Ice te melden maar toch ben ik benieuwd naar ervaringen van mensen met dit Framework. Kan iemand mij hier meer over vertellen en zijn er ook voordelen voor Corba te noemen? (behalve de momenteel grotere API)

Wat ik op maak uit de zoekresultaten:[list]
• Ice is sneller
• Ice schijnt makkelijker in gebruik te zijn
• Ice is inherently multithreaded (is dat, dat hij zich automatisch forkt?)
• De ICE server is C++ ( Corba is C ? )
"In summary I would recommend anyone, who needs to build a high performance distributed application to have a look at ICE. It's much simpler to develop with than Corba, and it should be at least as efficient."
"I've always been interested in CORBA. I've felt that Web Services (and SOAP) was started because CORBA wouldn't work through firewalls and as a way to (ab)use XML. Also, Microsoft hated CORBA. My prediction is that Web Services will fail to catch on due to its many limitations. But what will fill its shoes? CORBA hasn't made any progress. I'll be watching Ice. The most important features and strengths:

- It's easy to learn and use. Nothing to do with the CORBA "nightmare".
- Well documented.
- Language and platform independent."

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:38
Even vooropgesteld dat ik geen ervaring heb met Ice, wil ik toch reageren, want ik heb het idee dat een aantal punten die op de Ice website genoemd worden geen steek houden.
Maxonic schreef op woensdag 28 september 2005 @ 23:51:
Op zich ben ik nogal sceptisch over deze 'objectieve' vergelijking maar wie op Google zoekt naar "Corba Ice" vind niks dan lof over Ice en voordelen ten opzichte van Corba. De GoT search heeft niks over Ice te melden maar toch ben ik benieuwd naar ervaringen van mensen met dit Framework. Kan iemand mij hier meer over vertellen en zijn er ook voordelen voor Corba te noemen? (behalve de momenteel grotere API)
Hét voordeel van CORBA is dat het een standaard is en dat er robuste en efficiënte implementaties van te vinden zijn. Het is enigzins dubieus dat van Ice maar één implementatie bestaat, maar ik kan de kwaliteit daarvan helaas dus niet beoordelen. Bovendien zijn er goede CORBA ORB's die gratis gebruikt kunnen worden in commerciële producten, wat met Ice niet kan. Bij Ice ben je afhankelijk van een enkele vendor, wat de garantie op ontwikkeling en support en de prijs van het product waarschijnlijk niet ten goede komt.

Een eigenschap van CORBA is dat de standaard uit een heleboel aparte onderdelen bestaat, zoals event channels en implementation repositories. Er zijn weinig vendors die de 'hele standaard' aanbieden in één product maar dat geeft niet omdat je normaliter maar een beperkt aantal componenten nodig hebt én je de componenten van verschillende vendors kunt combineren, als dit nodig is. De Ice website opent al met het argument dat Ice 'completer' is omdat zij wél hun hele standaard implementeren, maar naar mijn mening gaat dat niet op omdat CORBA ten eerste een veel uitgebreidere standaard is en het ten tweede niet nodig is dat de hele standaard door een enkele vendor geleverd wordt. De makers van Ice zijn ook de énige vendor, dus het lijkt er op dat ze wat zij geïmplementeerd hebben gewoon tot standaard hebben uitgeroepen. Zo kan ik het ook. ;)
Wat ik op maak uit de zoekresultaten:
• Ice is sneller
Klopt; die benchmark is indrukwekkend want TAO is een erg efficiënte ORB. De grootste winsten worden wel behaald in randgevallen die voor praktijkgebruik niet zo interessant zijn, maar het algemene plaatje is nog steeds dat Ice zo'n factor twee sneller is; echt niet slecht, aangenomen dat de testmethodiek in orde is.

[quote]• Ice is inherently multithreaded (is dat, dat hij zich automatisch forkt?)
Waarschijnlijk dat 'ie zelf threads managet; forken is het spawnen van nieuwe processen. Ik vraag me af waarom ICE daarin beter zou zijn dan in bijvoorbeeld omniORB, die een vrij robuuste threadpoolimplementatie gebruikt. Ik kan me niet voorstellen dat Ice daar nog wat op weet te verbeteren (qua performance). Die claim hadden de makers wel mogen toelichten; op deze manier zegt het niet zoveel.

Sowieso is de vraag hoe threading werkt in single-threaded omgevingen zoals bijvoorbeeld single-threaded Python en Perl of single-threaded embedded devices. Ik denk dat Ice daar toch ook geen threading kan gebruiken.

[quote]• De ICE server is C++ ( Corba is C ? )
Voor zover ik zie heeft Ice geen 'server'; waar had je dat gelezen? C wordt door Ice helemaal niet ondersteund (minpuntje voor Ice). Voor CORBA is in ieder geval goede ondersteuning voor C, C++, Java, .NET, Python en Perl en een heleboel experimentele support in allerlei scriptingtalen als PHP, Ruby, Lua, etc. op basis van C ORB's zoals Orbit.

De claim op de website dat Ice betere platform support heeft lijkt mij dus onjuist. Feitelijk claimen ze trouwens alleen dat Ice de meeste talen heeft ondersteund door een enkele vendor. Dat is echt een non-argument, want het idee van CORBA is juist dat het alleen een specificatie is en dat verschillende vendors verschillende delen voor verschillende platforms kunnen gebruiken. Zo kan de Java-ORB van Sun perfect samenwerken met de C-ORB van Gnome (Orbit) of de C++ ORB van AT&T (omniORB); dat dat verschillende vendors zijn doet juist niet terzake, dat is het hele idee van interoperabiliteit. Dat Ice met slechts één vendor per vendor meer language support levert verbaast me niets, het is een beetje dezelfde onzin als de 'completeness' die eerder genoemd werd; een verkooppraatje om de onoplettende/ongeïnformeerde lezer over te halen.

Mijn eigen idee (op basis van een kwartiertje browsen, dus neem het met een korreltje zout) is dat Ice een herimplementatie is van de basisideeën uit CORBA wat een eenvoudigere en schonere API oplevert. Het lijkt me dus zeker de moeite van het proberen waard. Tegen Ice spreekt echter dat er vrij beperkte real world experience mee is; ik ben er van overtuigd dat zowel de implementatie als de specificatie van Ice gebreken vertoond (dat kan bijna niet anders met zo'n relatief nieuw product), maar doordat de enige informatie over Ice op hun eigen website te vinden is komen die kanttekeningen niet aan bod. (Er is geen 'CORBA vs Ice' website.)

De concrete argumenten voor Ice zijn dan:
• hogere performance dan CORBA;
• eenvoudigere standaard;
• eenvoudigere language mappings (maar in hoeverre is dat zo?).
De argumenten tegen Ice:
• minder uitgebreid;
• minder goed getest in de praktijk;
• minder keuze van vendors (meer afhankelijkheid van ZeroC);
• duurder voor commercieel gebruik (maar ook afhankelijk van welke ORB je gebruikt);
• geen C language mapping; geen C library.
Ik kan me voorstellen dat voor bepaalde doeleinden de voordelen tegen de nadelen opwegen. Het zal in belangrijke mate afhangen van de vraag of Ice net zo robuust is als CORBA en of de language mappings inderdaad significant eenvoudiger zijn (waardoor development sneller/makkelijker is en het eindproduct stabieler), maar daarvoor zijn gebruikerservaringen vereist.

[ Voor 13% gewijzigd door Soultaker op 29-09-2005 00:57 ]


  • Maxonic
  • Registratie: September 2000
  • Laatst online: 20-01 23:34
Bedank voor deze review, ook al is het op eerste gezicht. :) Dat over die server vond ik hier: hier
Ook hier, hier en hier vond ik nog wat zaken.

Kosten bij commercieel gebruik is voor mij persoonlijk niet van belang. Alles wat ik maak is toch onder GPL. Toch is afhankelijkheid niet echt prettig. Maar misschien dat dit zo goed aanslaat dat er meer toekomst in zit dan Corba. Corba wordt, als ik de verhalen mag geloven, niet zo hard meer doorontwikkelt dan ooit het geval is geweest. De ontwikkelaars zullen ook niet voor niks zijn overgestapt. Maargoed, dat is toch allemaal speculatie.

Dit moet mijn eerste ervaring met ORBs gaan worden. Hoe zit dat precies met die vendors bij Corba? En is er een rede waarom men het op één van die sites over "the CORBA nightmare" heeft? Minder uitgebreid, klinkt negatief maar ik ken er me niet echt een voorstelling bij maken. Het doet toch gewoon wat het moet doen? Een abstractielaag bieden waarop (eventueel over verschillende fysieke locaties) platform- en taalonafhankelijk modules aan elkaar geknoopt worden.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:38
Maxonic schreef op donderdag 29 september 2005 @ 01:50:
Bedank voor deze review, ook al is het op eerste gezicht. :) Dat over die server vond ik hier: hier
Ook hier, hier en hier vond ik nog wat zaken.
Die eerste lijkt me een presentatie van een of andere universiteit, waarbij studenten een Java client moeten schrijven bij een C++ server; maar dat is dus niet noodzakelijk. (CORBA noch Ice hebben een 'server': alle applicaties zijn zelf zowel server als client, onafhankelijk van de gebruikte taal.)
Kosten bij commercieel gebruik is voor mij persoonlijk niet van belang. Alles wat ik maak is toch onder GPL. Toch is afhankelijkheid niet echt prettig. Maar misschien dat dit zo goed aanslaat dat er meer toekomst in zit dan Corba. Corba wordt, als ik de verhalen mag geloven, niet zo hard meer doorontwikkelt dan ooit het geval is geweest. De ontwikkelaars zullen ook niet voor niks zijn overgestapt. Maargoed, dat is toch allemaal speculatie.
Of er aan de CORBA specificatie nog heel veel gewerkt wordt weet ik niet, maar ORB vendors werken nog wel aan hun producten, op z'n minst om fouten op te lossen. Maar de belangrijkste onderdelen van de CORBA specificatie zullen niet meer gewijzigd worden. Maar dat is ook het idee van een stabiele standaard natuurlijk.

Ice is dus een beetje een 'frisse start' project: de goede onderdelen van CORBA meenemen maar de historische baggage die in de weg zit dumpen. Ik weet trouwens ook niet hoe hard Ice ontwikkeld wordt.
Dit moet mijn eerste ervaring met ORBs gaan worden. Hoe zit dat precies met die vendors bij Corba? En is er een rede waarom men het op één van die sites over "the CORBA nightmare" heeft?
Dat heeft dus te maken met zaken die niet heel handig uitgepakt zijn in de C++ language mapping. Dat komt onder andere omdat CORBA van voor de tijd is dat C++ templates en de C++ standaard library stabiel was en daar dus geen gebruik van maakt, en omdat men tot het uiterste is gegaan om goede performance te garanderen (wat nu misschien minder belangrijk is dan vijftien jaar geleden: processoren zijn relatief sneller geworden dan netwerkverbindingen).

Het gevolg is dat CORBA voor C++ een heleboel specifieke regeltjes heeft die je in acht moet nemen bij het gebruik. Er was ergens een webpagina die die dingen opsomde, maar ik kon nu niet meer vinden dan deze: http://www.ispras.ru/~dkv/superstr.html
Door dingen als die specifieke parameter passing rules is CORBA voor beginners waarschijnlijk lastiger dan Ice. Ervaren CORBA programmeurs kennen ze waarschijnlijk inmiddels uit hun hoofd, dus dan maakt het niet meer uit, maar ik geef toe dat dat soort dingen het toch lastig maakt om fouten in CORBA code te spotten. Verder is het natuurlijk een voordeel dat Ice wel van de C++ standard library gebruik maakt en je voor CORBA weer met nieuwe container classes om moet leren gaan.
Minder uitgebreid, klinkt negatief maar ik ken er me niet echt een voorstelling bij maken. Het doet toch gewoon wat het moet doen? Een abstractielaag bieden waarop (eventueel over verschillende fysieke locaties) platform- en taalonafhankelijk modules aan elkaar geknoopt worden.
Ik denk inderdaad dat voor jouw doelen Ice voldoet. (Maar een willekeurige CORBA ORB ook; vandaar dat ik het 'completeness' argument niet zo belangrijk vond.) Als je het alleen voor je eigen doelen wil gebruiken en niet van plan bent er (bijvoorbeeld) een baan aan over te houden, zou ik het zeker proberen. Ik denk dat je Ice sneller geleerd hebt en of het goed werkt kun je dan zelf beoordelen. ;)

[ Voor 3% gewijzigd door Soultaker op 29-09-2005 13:36 ]


  • CubicQ
  • Registratie: September 1999
  • Laatst online: 13:51
Soultaker schreef op donderdag 29 september 2005 @ 13:30:

Ice is dus een beetje een 'frisse start' project: de goede onderdelen van CORBA meenemen maar de historische baggage die in de weg zit dumpen. Ik weet trouwens ook niet hoe hard Ice ontwikkeld wordt.
Inderdaad. Dat zie je ook wel aan de mensen die aan ICE werken, voor zover ik kan zien voornamelijk CORBA mensen (Marc Laukien van OOC/IONA; Michi Henning van IONA/OMG; Matthew Newhook van OOC, Mark Spruiell: OOC/OMG, Mark Spruiell: OOC, Mark Spruiell: IONA, Mark Spruiell: OOC/IONA, Brent Eagles: OOC). Oh, sterker nog: ze komen allemaal van OOC/IONA vandaan :) (misschien een reactie op de overname van OOC van IONA?)

Iets zegt mij dat dat die mensen redelijk veel verstand hebben van het bakken van een ORB/ORB-achtig iets, dus op het eerste gezicht lijkt me het met de kwaliteit wel goed te zitten.

Qua ontwikkeling: ze zijn in ieder geval al een tijdje bezig. Twee jaar geleden kwam ik ICE tegen, en toen beweerden ze al dat het beter was dan CORBA. En ze releasen blijkbaar nog steeds nieuwe versies.

Of ICE/CORBA nou een betere keus is ligt er denk ik voornamelijk aan wat je wenst: wil je gewoon iets werkends hebben dat makkelijker is en beter in elkaar zit: ICE. Wil je iets waarvan je op kunt vertrouwen en een vendor-lockin ten alle tijden voorkomen, of wil je ervaring opdoen met het gebruik van gedistribueerde systemen waardoor je 'marktwaarde' stijgt: CORBA.