Должен ли каждый компонент (.xml) иметь свой собственный eclipse-проект? - PullRequest
0 голосов
/ 11 октября 2019

Итак, я научился использовать eclipse-kura для реализации IoT-приложений. У меня вопрос, должен ли каждый Компонент иметь свой собственный eclipse-проект / комплект или если несколько Компонентов могут быть в одном комплекте (как в моем OSGI-INF будет содержать 2 Определения Компонента для 2 разных классов).

Iне смог найти ни одного примера для этого нигде. Поскольку я новичок в этом и пытаюсь понять концепции, любой совет был бы оценен.

1 Ответ

0 голосов
/ 20 октября 2019

Краткий ответ: это зависит от вас.

Длинный ответ: Вы можете делать это так, как вам нравится;)

В OSGi нет правила, запрещающего помещать несколько компонентов (классов). которые являются декларативными услугами и аннотируются @Component) в одном пакете. Однако это немного зависит от того, как вы определяете границы своих пакетов, то есть, создаете ли вы пакет для каждой функциональности или вы создаете пакет для каждого слоя в x-уровневом приложении (например, один пакет для базы данных, один пакет для логики иодин пакет для GUI). Эти примеры были совершенно произвольными, но вы можете видеть, что в зависимости от того, как вы определяете области действия своих комплектов, иногда имеет смысл поместить несколько компонентов в один комплект, а иногда не так много.

Относительно того, какРекомендовать структурировать пакеты:

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

Может быть, хороший пример можно найти в примерах OSGi enRoute: https://enroute.osgi.org/Tutorial/

С уважением, Томас

...