Вопрос

Мы пытаемся определить, как реализовать простую структуру плагинов для реализуемой нами службы, которая позволяет «подключать» различные типы калькуляторов.

После прочтения число Из сообщений о фреймворках плагинов Java, похоже, наиболее распространенными вариантами являются:

OSGI, похоже, больше, чем нам нужно.

«Создать свою собственную» — это нормально, но было бы неплохо повторно использовать общую библиотеку.

Итак, мы подошли к JPF и JSPF.JPF, похоже, больше не находится в активной разработке.

JSPF кажется очень простым и действительно всем, что нам нужно.Однако я мало что об этом слышал.Я видел только один почта на StackOverflow об этом.Есть ли у кого-нибудь еще опыт работы с JSPF?Или какие-либо другие комментарии по поводу этого выбора дизайна?


Обновлять:На этот вопрос не обязательно правильный ответ..однако мы собираемся следовать идее Павола, поскольку нам нужно очень простое решение.Спасибо EoH за хорошее руководство.

Это было полезно?

Решение

Если вы планируете иметь только одну (или несколько) не очень сложных «точек расширения», то, возможно, будет достаточно четко определенного SPI и части конфигурации.Нет необходимости использовать платформу плагинов.

Под конфигурацией я подразумеваю некий механизм поиска ваших плагинов.Например что-то вроде META-INF/services/ или просто перечислите свои плагины в файле конфигурации.

Более подробная информация (по запросу):

ИПИ = Интерфейс поставщика услуг, «эквивалент API на стороне реализации».Чтобы узнать больше, попробуйте найти разницу между API и SPI.Однако в данном контексте это просто причудливый термин для интерфейса, реализуемого вашими плагинами (т.определяет контракт для ваших плагинов).

Хорошая, короткая статья»Создание интерфейса поставщика услуг» Итана Николаса описывает, как создать собственный SPI аналогично тому, как это делается в некоторых частях самой платформы Java.

META-INF/services/ можно рассматривать как более общий подход к созданию SPI.Более подробную информацию можно найти в соответствующем разделе Спецификация JAR-файла.

Другие советы

(Отказ от ответственности:Я автор JSPF, поэтому лучше отнеситесь к моему комментарию с недоверием ;-)

Основная причина, по которой я начал использовать JSPF, заключалась в том, что у меня была та же проблема, что и у вас:Я искал простое решение, позволяющее сделать мой дипломный проект 1) расширяемым и 2) придать ему более-менее понятную структуру кода.

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

Мы пытаемся определить, как реализовать простую структуру плагина для службы, которую мы реализуем, что позволяет «подключенным» различным типам калькуляторов.

Я думаю, вы могли бы попробовать JSPF и посмотреть, как далеко вы продвинетесь в течение одного или двух часов.

Однако окончательное решение также немного зависит от того, чего именно вы хотите достичь, и конкретных обстоятельств.

Я слышал положительные результаты от ряда людей, которые использовали его для структурирования своих проектов или загрузки плагинов в свои проекты.С другой стороны, я также знаю одного человека в нашем отделе, который снова отказался от него, потому что не чувствовал, что это хорошо сочетается с его стилем программирования.

Итак, чтобы кратко ответить на ваш вопрос (и наверняка предвзято), я бы использовал

ОСГи для проектов и команд

  • которые большие и над ними работает много людей
  • которые оправдывают накладные расходы на создание инфраструктуры
  • нуждающиеся в конкретных предлагаемых услугах

JPF для проектов и команд

  • среднего размера (?, честно говоря, я не уверен в размере проекта/команды, на который они ориентируются)
  • которые нуждаются в более структурированных средствах для организации своего кода, таких как конфигурации XML, детальное управление жизненным циклом плагинов, расширяемые плагины...

JSPF для проектов и команд

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

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

Если вам нужно действительно простое решение, попробуйте Джин-плагин.Это минималистичная платформа плагинов для Java и PHP.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top