2012-05-02 3 views
5

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

Во время моего исследования я столкнулся с различными потенциальными решениями: R-OSGi, Apache CXF для распределенных OSGi, Eclipse Communication Framework.

ECF кажется особенно интересным, поскольку он поддерживает различные форматы транспорта и обеспечивает поддержку таких вещей, как обнаружение сервиса.

Мои центральные вопросы:

  • Существуют ли какие-либо подробные учебные пособия/сквозные для создания в ECF инфраструктуры в Феликсом? (из моего исследования, я обнаружил, что недавно была добавлена ​​поддержка Felix)
  • Есть ли какие-либо решения, кроме трех перечисленных выше, которые я, возможно, пропустил?
  • Есть ли причина принимать Apache CXF вместо ECF?

ответ

2

Первый вопрос - есть ли подробный проход для настройки ECF с Felix - я не знаю ответа, хотя можно использовать поисковую систему, чтобы узнать комбинации этих терминов ,

Проблема заключается в том, что ECF использует инфраструктуру Equinox и временами неосторожно полагалась на пакеты, которые являются непубличными через транзитивные зависимости (в частности, Runtime API, который использует Equinox для непубличной отладки). Это, в свою очередь, означает, что ECF полагается на целый ряд других компонентов, которые будут доступны, и это набор, который обычно не определен в среде исполнения Felix.

Вы пропустили сервисную ткань Paremus, являющуюся коммерческим облачным решением OSGi. Я не уверен, что вы специально фокусировались на open-source или нет; но если вы включаете коммерческие лицензии, то у них очень надежная архитектура для удаленных служб.

Наконец, вопрос Apache CXF по ECF - если вы используете Felix, я бы сказал, что переход с Apache CXF, вероятно, проще, чем с ECF. Это связано главным образом с набором зависимостей и его работой в сочетании с тем фактом, что ECF не может быть протестирован на Felix и поэтому может принимать конкретные аспекты среды выполнения Equinox (которая включает, например, отладку родительского класса загрузчика времени выполнения для сбора вещи в пути класса загрузки). На самом деле это не вина ECF как таковой, а скорее артефакт о том, как работает экосистема Eclipse.

Если вы хотите общаться с неработоспособностью OSGi, в Apache CXF есть преимущество в том, что они могут генерировать WDSL для взаимодействия с другими языками. Я считаю, что вы можете сделать то же самое в ECF с немного большей работой. Решение CXF, вероятно, будет более подробным, чем соответствующий ECF (WSDL всегда есть), но если вы не используете большие объемы запросов, это вряд ли приведет к существенным различиям.