OSGi: заменяет ли Blueprint декларативные службы?

Новая спецификация R4.2 для OSGi описывает службу Blueprint для внедрения зависимостей и связывания служб.

Заменяет ли Blueprint декларативные службы (которые также являются частью спецификации) или они предназначены для совместной работы?

Доступен ли уже Blueprint для популярных реализаций (Felix и Equinox)?


person Thilo    schedule 19.10.2009    source источник
comment
Текущий взгляд на это — Blueprint или DS или что использовать?   -  person ᄂ ᄀ    schedule 14.03.2017


Ответы (4)


Я задал себе тот же вопрос, и, обсуждая это с другими, участвующими в этой теме, суть заключалась в том, что, хотя они в некоторой степени пересекаются, вариант использования, когда использовать, довольно отличается. DS — это легкое решение, позволяющее избежать активаторов и декларативно моделировать зависимости служб. BP — это, по сути, контейнер DI, предназначенный для корпоративных развертываний. Это также более характерно для «обычных» разработчиков Java, не знакомых с динамической природой OSGi (многое скрывается за прокси).

Что касается реализации, над ним работают два проекта (все они не зависят от контейнеров и официально не выпущены). Spring DM 2.0 предоставит реализацию (2.0.0.M1 уже содержит рабочую реализацию), поскольку а также Apache в рамках проекта geronimo (слайд-шоу).

person Mirko Jahn    schedule 19.10.2009

По моему опыту работы в среде на основе Felix, DS является единственным инжектором зависимостей, который является достаточно зрелым и обеспечивает согласованность с другими частями спецификаций OSGi Compendium, такими как ConfigAdmin.

Blueprint кажется мне политическим включением Spring DM в спецификации OSGi.

iPojo - это альтернатива, основанная на аннотациях Java вместо дескрипторов XML, она скрывает часть основы OSGi.

person Gloubib    schedule 02.09.2010

Если вы использовали Spring раньше, сервисы Blueprint вам более знакомы. Декларативные службы не такие мощные, но широко используются в контейнерах OSGi.

person Leen Toelen    schedule 10.03.2011

Другая проблема заключается в том, что, насколько мне известно, все сервисы блупринтов находятся в одном контейнере, контейнере блупринтов, а декларативные сервисы доступны в пакетах, которые на них ссылаются. Особенно с Equinox это приводит к другому поведению. DS следует использовать поверх схемы, если вы хотите придерживаться строгого подхода к загрузке классов, который отстаивает равноденствие.

person keesp    schedule 17.04.2013