Связки в связке - PullRequest
       18

Связки в связке

1 голос
/ 07 октября 2011

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

1- Каждый модуль может представлять собой пакет, который устанавливается на платформе, и клиентские приложения получают от них сервисы. Однако у этого решения есть проблема. Если бы я хотел, чтобы у каждого клиента был особый метод обновления (например, в некоторых из них пакет A должен обновляться, а в других - не должен обновляться), как я могу управлять обновлениями такого типа?

2- Каждое клиентское приложение представляет собой комплект связок. Теперь меня беспокоит то, как я могу управлять действием обновления таким образом, чтобы при обновлении клиентского приложения оно также обновляло внутренние пакеты?

1 Ответ

1 голос
/ 07 октября 2011

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

  1. Обновление отдельных пакетов на разных клиентах не является проблемой.С программной точки зрения у вас есть много вариантов (я бы скорее предложил вам прочитать OSGi в действии , чтобы ознакомиться с возможностями, предоставляемыми средами OSGi, соответствующими спецификации).Я не знаю, намереваетесь ли вы использовать Remote OSGI (в главе 13 спецификации Enterprise ).Очевидно, вы хотите, чтобы ваши клиент-серверные пакеты API / сервисы были сохранены.Помимо этого, пакет OSGi может выбрать пакет / сервис от того, кто его предоставляет (подробнее об этом в OSGi в действии, опять же).Обеспечение - это еще один аспект: это зависит от того, кто (клиент или сервер) контролирует обновление;в простейшем случае вы просто манипулируете пакетами вручную и устанавливаете / запускаете / останавливаете / удаляете их из консоли фреймворка.

  2. Если в вашем описании что-то не указано, вы не можете выбрать этотпуть, так как вы не можете иметь связку связок.Эта концепция просто не существует в голой спецификации OSGi.Иерархия пучков совершенно плоская, поэтому вы не можете выполнять «физическое сокрытие».Вместо того, чтобы логически скрывать пакеты за другими пакетами, вы должны работать с предоставляемыми ими службами, но бремя полностью ложится на вас.Вы можете сделать то же самое с помощью пакетов, но я бы не советовал.При этом я не совсем в курсе современных реализаций SCA, таких как Tuscany , выпуск 2. Этот может помочь вам, так какэто обещало быть осведомленным OSGi.Книга Tuscany SCA в действии , хотя и недавно, охватывает только выпуск 1.Достойное чтение, но, вероятно, не то, что вы ищете.Подводя итог, вы не можете монолитно обновить приложение OSGI в строгом смысле: вам нужно будет указать каждый пакет для обновления.Это должно рассматриваться как преимущество: у вас больше контроля над приложением.Недостатком явно является попытка управления обновлением с такой тонкостью детализации.

Надеюсь, это упрощенное обсуждение пригодилось вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...