Ask developers.org.ua: Alternatives to CORBA?
Господа программисты,
прежде всего: не знаю, как вам, а мне посты про бизнес и производительность труда уже порядком поднадоели. такое впечатление, что кода тут никто не пишет вообще. :-) посему призываю всех, кому есть что сказать по делу, написать по коротенькой заметке о каком-нибудь своем хаке, об интересном разделе из теории или просто о любимом языке или технологии.
для затравки — расскажите, кто что пользует для IPC между процессами на нескольких хостах? меня лично интересует поддержка в С++ и как минимум еще в каком-то скриптовом языке, но интересно услышать вообще чем народ пользуется и какие впечатления?
на прошлой работе мы активно (и, как я понимаю сейчас, довольно успешно) использовали CORBA — прежде всего в Java и C++, но из Python-а тоже неплохо получалось. я и сейчас, в принципе, рекомендовал бы корбу — технология это достаточно зрелая, а недостатков хотя и немало, но все они давно известны и вероятность новых граблей очень мала.
мое резюме по корбе примерно такое:
плюсы:
— масса отличных реализаций, как коммерческих, так и FOSS, практически под любую ОС, и варианты для embedded/legacy/real-time и пр платформ;
— масса подробной документации и отличные книги;
— наличие стардартов и реализаций практически для любого языка, как-то Java, C++, plain C, Python, Common Lisp, Erlang, etc.
— необходимость задания интерфейсов в IDL очень стимулирует грамотное разделение бизнес-логики на компоненты — часто какой-то сервис быстро лепится, например, на питоне, а потом, в случае необходимости, переписывается на С++. более того, очень часто оказывается, что корбу можно использовать просто для связывания разных языков, как, например, SWIG.
— в целом, технология более чем зрелая, и все горбы давно и неоднократно обсуждены и известны, так что риск наступить на какие-то неведомые доселе грабли очень невелик.
недостатки:
минусов, конечно, тоже хватает. по этому поводу написано много статей (интересно, кстати, почитать и ответы). ниже я перечислю те вещи, которые не нравятся в корбе мне лично.
— неважный маппинг в С++: стандарт был выпущен в доSTL-ную эпоху, поэтому приходится иметь дело с объектами типа CORBA::String, странноватыми подобиями вектора, в которые мапятся CORBA sequence, и подходом к управлению памятью a-la std::auto_ptr. :-) все это не так страшно, и в принципе вполне можно использовать, например, STL algorithms с корбовыми последовательностями, но все равно, хотелось бы лучшего (PS: замечу, что с маппингом в Java и Python все гораздо ровнее).
— проблемы со связью через файрволы — опять же, все это решается, и в составе практически каждой реализации корбы есть свой кобовый шлюз, но все равно, корбу гораздо чаще используют для связи компонентов на middle tier, а не как открытый API для внешних приложений — несмотря на то, что задумывалась корба именно для последнего :)
я по поводу этих недостатков особо никогда не переживал, но тем не менее — корба развивается уже лет 10, и пора бы появиться технологиям посвежее? какие я знаю альтернативы:
— прежде всего: ICE. это прямой конкурент корбы, от корбового гуру Michi Henning-a. как по мне, от корбы ICE практически не отличается, вот только маппинг с С++ сделан получше. а так — та же корба, вид сбоку :-)
— более заточенные на Java, но вроде как с маппингом в другие языки тоже — Hessian (бинарный) и Burlap
—
— ну, enterprisey варианты типа DCOM, EJB, SOAP мы рассматривать не будем :-)
поделитесь опытом?
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.
16 коментарів
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.