Точка безубыточности для OSGi

мне нравится JSON главным образом, потому что это настолько кратко . Для веб-контента, который может быть gzipped, это - не обязательно грандиозное предприятие (следовательно, почему x HTML так популярен). Но существуют случаи, где это может быть выгодно.

, Например, для одного проекта я передавал информацию, которая должна была быть сериализирована и передана через XMPP. Так как большинство серверов ограничит объем данных, который можно передать в единственном сообщении, я нашел полезным использовать JSON по очевидной альтернативе, XML.

, Поскольку добавленная премия, если Вы знакомы с Python или JavaScript, Вы уже в значительной степени, знает JSON и может интерпретировать его без большого обучения вообще.

5
задан Robert Munteanu 28 July 2009 в 22:40
поделиться

2 ответа

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

Преимущество заключается в элегантном разделении путей к классам (IMHO). Если вам нужны разные версии одного и того же JAR / класса, например, из-за того, что вы обновляете определенные части приложения во время его работы, или из-за того, что вы комбинируете множество сторонних модулей, тогда OSGi отлично подойдет.

Это не легко достичь, а с OSGi сделать это непросто. Он сделан чистым, но за счет другого слоя в стеке среды. И много работы по изучению и поддержке.

Не говоря уже о документации, не особенно удобной для новичков.

6
ответ дан 18 December 2019 в 14:49
поделиться

Я бы сказал, как всегда, "это зависит от".

Ваша среда

Рассмотрим существующую команду без опыта работы с OSGI ( которые с гордостью считают себя опытными разработчиками, которые "добиваются цели". Есть вероятность, что они испытают серьезную боль или медленный старт.

МНОГИЕ (больше, чем вы думаете) разработчики не знакомы с такими инструментами сборки, как Ant или Maven , и когда они есть, они используют только ограниченные функции этих инструментов сборки.

Создание пакетов OSGI лучше всего выполнять с Eclipse , ] Задачи Ant или Подключаемый модуль Maven BND VS сценарий или написанный вручную манифест для архива jar.

Небольшие приложения

Для небольших приложений OSGI вносит ненужную сложность, в то время как вы можете использовать динамические языки, такие как Jython и т. Д., Или инфраструктуру плагинов, такую ​​как JPF или SPI . Вы также можете использовать отражение и простой пользовательский загрузчик классов.

Большие приложения

Большие приложения могут выиграть от OSGI, особенно когда они написаны с нуля. ИМХО, интеграция OSGI в существующее приложение больше похоже на введение патча для обеспечения модульной архитектуры.

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

Другое проблемы

Развертывание : OSGI вносит ненужную сложность, в то время как вы можете использовать динамические языки, такие как Jython и т. Д., Или инфраструктуру плагинов, такую ​​как JPF или SPI . Вы также можете напрямую использовать отражение и простой пользовательский загрузчик классов.

Большие приложения

Большие приложения могут выиграть от OSGI, особенно когда они написаны с нуля. ИМХО, интеграция OSGI в существующее приложение больше похоже на введение патча для обеспечения модульной архитектуры.

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

Другое проблемы

Развертывание : OSGI вносит ненужную сложность, в то время как вы можете использовать динамические языки, такие как Jython и т. Д., Или инфраструктуру плагинов, такую ​​как JPF или SPI . Вы также можете напрямую использовать отражение и простой пользовательский загрузчик классов.

Большие приложения

Большие приложения могут выиграть от OSGI, особенно когда они написаны с нуля. ИМХО, интеграция OSGI в существующее приложение больше похоже на введение патча для обеспечения модульной архитектуры.

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

Другое проблемы

Развертывание : Вы также можете напрямую использовать отражение и простой пользовательский загрузчик классов.

Большие приложения

Большие приложения могут выиграть от OSGI, особенно когда они написаны с нуля. ИМХО, интеграция OSGI в существующее приложение больше похоже на введение патча для обеспечения модульной архитектуры.

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

Другое проблемы

Развертывание : Вы также можете напрямую использовать отражение и простой пользовательский загрузчик классов.

Большие приложения

Большие приложения могут выиграть от OSGI, особенно когда они написаны с нуля. ИМХО, интеграция OSGI в существующее приложение больше похоже на введение патча для обеспечения модульной архитектуры.

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

Другое проблемы

Развертывание : Так и в любых приложениях. Если вы привыкли развертывать приложения Java Web Start, развертывание не является проблемой. Если вы привыкли к OSGI, развертывание не должно вызывать беспокойства.

Когда дело доходит до развертывания в производственной среде, в любом приложении время от времени возникают проблемы, что естественно.

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

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

Eclipse - это пример номер один успешного большого приложения, написанного с использованием OSGI. Есть и другие большие / хорошие инструменты, которые не используют OSGI и являются модульными.

Заключение

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

OSGI дает вам такую ​​гибкость за небольшие деньги, IMHO.

7
ответ дан 18 December 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: