Сравнимые архитектуры с OSGi? - PullRequest
2 голосов
/ 30 июля 2011

Я собираюсь реализовать серверное приложение, которое должно обновлять клиентское программное обеспечение удаленно.Клиенты в основном используют механизм извлечения для получения обновленного программного обеспечения.
Как новичок, я ищу архитектуры для реализации этого приложения.И я знаю, что уровень жизненного цикла OSGi будет предоставлять такую ​​услугу.
Я хочу знать, есть ли другие архитектуры, которые предоставляют аналогичные услуги клиентам?

1 Ответ

1 голос
/ 01 августа 2011

Если вы пишете приложение на основе Eclipse, тогда p2, вероятно, самый простой способ. Но если ваше приложение или maven построено, или вы собираетесь работать более широко в других контейнерах OSGi (Karaf, Felix и т. Д.), То вам следует рассмотреть OSGi Bundle Repository (см. Стандартный spec ), такой как Реализация Феликса . Если OBR не совсем делает то, что вы хотите, тогда API выставлен, поэтому вы можете манипулировать им.

Жизненный цикл OSGi, на который вы ссылаетесь, даст вам истинное горячее развертывание (а также другие «преимущества» модульности), но функциональность автоматического обновления гораздо более высокого уровня и не является частью ядра платформы (контейнер не имеет реализовать механизм удаленного обновления для обеспечения совместимости).

Там, где я работаю, мы используем Функции XML Karaf (наборы версионных пакетов, составляющих функциональность или целое приложение), которые создаются как часть сборки maven. Из оболочки OSGi мы можем использовать команды, чтобы указать контейнеру OSGi найти и установить эти функции. Это действительно аккуратно с точки зрения управляемого развертывания, но если вам нужны полностью автоматические обновления, то вам нужен OBR.

Если ваш вопрос ссылается на альтернативы OSGi в качестве основы для механизма обновления, то вы смотрите на такие вещи, как веб-запуск (JNLP) и т. Д., Которые будут давать вам обновления только во время запуска.

IMO OSGi заслуживает изучения, так как с ним очень приятно программировать и развертывать. Как механизм обновления / плагина, он не может быть побежден, и вы можете легко встраивать фреймворк или настраивать его.

...