2009-08-04 2 views
69

Для распределенного вычислительного проекта, начинающегося сегодня, с 0 устаревшими компонентами, есть ли веские причины для изучения CORBA?Является ли наследие CORBA?

+25

Если честно, я не уверен, что у них когда-либо были веские причины - это ужасная технология. Я выступаю в качестве бывшего программиста CORBA. – 2009-08-04 07:34:00

+2

Хорошей причиной было то, что когда CORBA была первой, нет никакой жизнеспособной альтернативы (если только вы не могли бы DCOM или DCE). – skaffman

+0

@Neil: Я думаю, вы использовали привязки C++ :-) –

ответ

42

Есть еще ситуации, когда CORBA может быть хорошим ответом:

  • при построении распределенной системы с участием нескольких программных языков и нескольких платформ,
  • , когда ваша система влечет за собой отправку сложных данных структуры ... и SOAP не разрезает его,
  • , когда у вас высокие ставки обмена сообщениями ... и HTTP не обрезает его, или
  • , когда вам необходимо взаимодействовать с существующими клиентами CORBA и/или сервисами.

Но, сказав это, есть альтернативы, которые делают то, что делает CORBA, только лучше ... или они утверждают. Например ZeroC's ICE

EDIT @fnieto встревает сказать (или предполагают), что ICE не является бесплатным, но TAO есть.

Это недостоверность и обман.

  1. ICE - программное обеспечение GPL и доступно для свободного скачивания. Вам нужно было заплатить за ICE, если вы/ваша компания не готовы жить с условиями GPL. (Или, если вам нужна поддержка.)
  2. Я использовал ICE в качестве примера альтернативы для CORBA. TAO - CORBA. Авторы ICE делают убедительный аргумент в пользу того, почему они могут получить лучшую производительность, не будучи совместимыми с CORBA.
  3. TAO отнюдь не единственная реализация CORBA с открытым исходным кодом. Я могу думать о 3 других, с моей головы.

Недостатком ICE является отсутствие функциональной совместимости со стеками промежуточного программного обеспечения CORBA, но, по моему опыту, совместимость различных реализаций CORBA также может быть проблематичной. (Возможно, в этой области было улучшено ... но я не делал никаких работ CORBA с 2002 года, поэтому я немного не в курсе.)

+0

Что касается пункта 1 - я ожидал, что CORBA и веб-сервисы будут более или менее эквивалентными с кросс-платформенной и крестообразной -язычная перспектива. У каждого будут слабые места, которые они не покрывают, но в целом я не вижу большой разницы. Для этого не-устаревшего сценария я не вижу, что это проблема. – djna

+0

@djna: но учтите, что сегодняшнее не устаревшее приложение - это устаревшее приложение завтрашнего дня.Использование многоязычной/многоплатформенной промежуточной технологии сегодня может помочь вам через 5-10 лет, когда вы интегрируетесь со следующими корпоративными приложениями следующего поколения. –

+0

@ Стефен. Единственная проблема с ICE - это цена, TAO является бесплатной. –

9

Я бы сказал, что текущий уровень зрелости веб-сервисов (включая REST) ​​и в Java EJB (который может даже использовать CORBA под обложками) охватывает то, что необходимо для распределенных корпоративных систем.

Я бы посоветовал, что один аспект, который вы должны внимательно изучить, - это степень асинхронного взаимодействия, которое вам необходимо в вашей распределенной системе. Я утверждаю, что любая распределенная система нетривиального масштаба нуждается в асинхронной связи, а выбранная инфраструктура должна поддерживать асинхронную обработку, как правило, это означает очереди.

Это не согласуется с использованием WebServices (или действительно CORBA), но это не указывает на аспект вашего выбора продукта, который может получить упускается из виду в начальной excitment получения некоторой распределенной обработки Собирается

13

CORBA, конечно, старый но он также предоставляет определенные функции высокого уровня из коробки (см. here). Эта функциональность может быть выполнена с использованием современных веб-сервисов, но, вероятно, не в стандартной форме, и не без большой дополнительной работы.

Для 99% распределенных сервисов, тем не менее, CORBA нежелательно. Это уродливо, сложно и сложно использовать.

+12

И учитывая этот последний момент, вот почему люди придумали мыло/ws- *. Который теперь также уродлив и сложный. – leeeroy

+0

Мыло не так уродливо, когда вы работаете с фреймворками, которые выполняют большую часть закулисных работ для вас. – arg20

+0

Какие альтернативы вы предлагаете? – schoetbi

18

Я считаю, что Corba был своего рода возрожденным оригиналом EJB spec, поскольку EJB можно легко превратить в компоненты CORBA с небольшой конфигурацией. Я подозреваю, что большинство развертываний Corba фактически реализованы на Java.

Что касается популярности, я думаю, что в течение нескольких десятилетий могут остаться некоторые высококлассные развертывания, но для большинства людей Корба мертв.

Есть много очень сексуальных способов сделать то же самое (за исключением высокого конца, упомянутого выше).

  • Облачные вычисления (веб-службы, масштабируемые вычисления, свободные связи, очередность).
  • Услуги REST (интернет-услуги lite).
  • Услуги SOAP (веб-сервисы тяжелые).
  • Сетка/Вычислительный кластер (очереди, карта-свертка и аналогичная)

Но, конечно, ваш Пробег может меняться.

29

Из существующих ответов это затрагивает почти религиозную тему. Можно взглянуть на CORBA так же, как наполовину пустое/полузаполненное стекло: с одной стороны, CORBA датируется унаследованным кругом, а с другой стороны, он относительно стабилен при наличии нескольких реализаций и «дьявола, которого вы знаете».

В моей работе я вижу, что CORBA развертывается во встроенных системах, системах реального времени (CORBA имеет расширения RT) и тому подобное. Существует не так много альтернатив AFAIK.

Другим «преимуществом» CORBA является наличие нескольких высококачественных реализаций с открытым исходным кодом, например TAO, MICO, JacorB и т. Д., С различными моделями лицензирования и поддержки. Существуют также коммерческие издания.

Что касается «большинства» приложений CORBA, реализуемых на Java, это не так в моем опыте. Хотя сопоставление языков для CORBA на Java является одним из самых приятных (что может и не сказать много), у Java уже есть очень хорошая распределенная вычислительная модель, которая предлагает богатство за пределами CORBA, а все приложения Java используют это больше, чем CORBA. Подавляющее большинство разработок CORBA, которые я видел, находится на C++ (что также является худшим языковым отображением).

Наконец, CORBA предлагает стандартные асинхронные вызовы на стороне клиента в виде AMI, но никогда не предлагал асинхронную обработку на стороне сервера. TAO предлагает нестандартную серверную реализацию под названием AMH.

14

Очевидно, что это зависит от типа сервера и межпроцессного взаимодействия, которое вы рассматриваете. И я думаю, что Стивен С и Крис Клиленд прекрасно справляются с позитивами Корбы.

Наше приложение использовало CORBA (Orbix) более 10 лет, так что теперь это наследие. И для того, как написано, CORBA - хорошая технология.Однако, если я начинал снова я, вероятно, не использовать CORBA:

  • Это сложно, и лишь небольшое число людей в моих организациях знает, это очень хорошо, как результат, все сложные проблемы падают на них, чтобы решить.
  • Рекрутинг персонала может быть проблемой. CORBA просто уже не круто и не становится прохладнее. Хотя в Ирландии разработчики C++ немного тонкие на земле.
  • Большинство консалтинговых фирм хотят использовать веб-службы для интеграции, поэтому, если вы хотите, чтобы третьи стороны выполняли интеграцию, вам, вероятно, понадобится веб-службы api.

Теперь, в зависимости от типа связи я хотел, я бы, вероятно, рассмотреть следующие вопросы:

  • буферов протокола для большого количества небольших сообщений (я знаю, что я должен был бы обеспечить транспортировку)
  • веб-сервисы за меньшее количество сообщений

Это больше основано на поиске персонала и опыте, поддержке сторонних разработчиков и использовании библиотек с открытым исходным кодом, а затем технических качеств CORBA, которые я использую ежедневно и является сильным, если немного громоздким.

+0

@iain: хорошие моменты. CORBA не просто использовать даже с Java, где я делал большую часть своей разработки CORBA. Материал POA/BOA трудно обойти. –

+3

Да, в частности, POA-материал сложнее, чем он должен быть – iain

+2

При стандартизации обучения IDL на C++ 11 изучение языков и использование CORBA проще. Языковое сопоставление является прямым и повторным использованием STL. Вам все равно нужно узнать POA, но это действительно не сложно. –

11

Одна вещь, о которой здесь никто не упоминает, ОТКРЫТ, ОТКРЫТЫЕ СТАНДАРТЫ. Из всех существующих технологий (за исключением SOAP) это единственный истинный стандарт открытого белого текста. Стандарт не зависит от каких-либо технологий организации. RMI (Sun/Oracle), DCOM (теперь не функционирует - Microsoft). Он полностью нейтрален поставщику и языку. За исключением SOAP, ни одна из технологий DOS (Distributed Object Technology) не является

Я архитектор программного обеспечения и регулярно должен сделать выбор, какой DOS следует использовать в системном дизайне. Если бы не религиозная война, с которой я сталкиваюсь каждый раз, это была бы мама или КОРБА.

Посмотрите на это таким образом, если бы это было так, ни одна из сетей 3/4G не сработает. 3GPP полностью соответствует CORBA. Европейская спутниковая система соответствует всем требованиям CORBA. Спросите себя, почему? Это потому, что они должны основываться на нейтральных архитектурах поставщиков и языков!

+0

Ermm ... в прошлом я принимал участие в разработке стандартов OMG, и могу сказать вам, что процессы не всегда были такими же открытыми и прозрачными, как можно было надеяться. И OMG исторически осталась в стороне от вопроса * соответствия * ... не то, что IETF или W3C делают намного лучше. –

+0

1+ @Selvyn Я искал эту информацию –

+0

@ Селвин, Мичи Хеннинг выдвигает довольно убедительный аргумент в пользу того, что открытость OMG является системной причиной ее проблем - http://queue.acm.org/detail. CFM? ID = 1142044. Хорошо для чтения. – spinkus