2013-12-03 4 views
0

Я изучаю OSGi в течение недели. Я изучил OSGi services, но не могу узнать, должен ли быть каждый сервис bundle, который должен быть импортирован в другой комплект. Могу ли я использовать их как простые JARs, а не как услуги?Должен ли каждый комплект быть сервисом, если он должен быть импортирован в другой комплект?

Если да, то в каком случае я должен сделать связку как услугу?

Надеюсь, я сделал свой вопрос понятным.

ответ

2

Услуги - это встречи между пучками. В общем, пакет зависит от ряда услуг и предоставляет 0 или более сервисов. Поскольку услуги определяют только контракты, вы ТОЛЬКО в зависимости от контрактов. Таким образом вы отделяете свои фактические зависимости (контракты) от поставщиков этих зависимостей (пакетов).

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

При этом вы не должны пользоваться услугами. Bundle может импортировать классы других пакетов и предоставлять классы другим связям.

Значит, когда пользоваться услугами? Обычно служба - это абстракция: служба журнала, служба Event Admin, служба Geo и т. Д. Вы знаете, что он должен делать для вас, но вас не интересуют детали. В общем случае услуги могут быть реализованы по-разному.

Если API и реализация сворачиваются в один, это не сервис. Библиотека, такая как ASM (технология байт-кода) или Guava, не является сервисом, поскольку API является реализацией, а ни одна из них не имеет состояния.

+0

Спасибо, Питер! :) – Amrit

Смежные вопросы