Я видел много презентаций на OSGi, и я думаю, это звучит многообещающе для обеспечения лучшей модуляции. По-видимому, "hotdeployment" и "запуск разных версий x параллельно" также являются точками продажи мэров.
Интересно, стоит ли решать OSGi promises даже вопрос...? Это напомнило мне о первых днях ОО, когда подобные претензии были горничной:
Когда OO был новым, большой аргумент был многократным. Широко утверждалось, что при использовании ОО можно было бы только "написать один раз" и затем "использовать везде".
На практике я только видел, что это работает для некоторых довольно низкоуровневых примеров. Я думаю, причина в том, что писать многоразовый код сложно. Не технически, а с точки зрения интерфейса. Вы должны предвидеть, как будущие клиенты захотят использовать ваши классы и выбрать правильный выбор. Это трудно по определению, и поэтому потенциальная возможность повторного использования часто не доставлялась.
С OSGi, у меня есть подозрение, что здесь мы снова можем упасть на promises, потенциальные решения проблем, которые у нас на самом деле отсутствуют. Или, если у нас их есть, у нас их нет в достаточно большом количестве и серьезности, что оправдывало бы покупку в OSGi для помощи. "Горячая", например, подмножество модулей, безусловно, отличная идея, но как часто она действительно работает? Как часто не из-за того, что оказалось, что модуляция неправильно для конкретной проблемы? Как о объектах модели, которые совместно используются несколькими модулями? Нужно ли одновременно менять эти модули? Или вы сглаживаете свои объекты на примитивы и используете только те, которые находятся в межмодульной связи, чтобы иметь возможность поддерживать интерфейсные контракты?
Самая сложная проблема при использовании OSGi - это, я полагаю, , чтобы получить модульность "правильно" . Подобно получению интерфейсов ваших классов прямо в OO с OSGi, проблема остается прежней, в большем масштабе на этот раз, пакетом или даже уровнем обслуживания.
Как вы могли догадаться, я сейчас пытаюсь оценить OSGi для использования в проекте. Основная проблема, с которой мы сталкиваемся, все больше усложняется по мере роста кодовой базы, и я хотел бы разбить систему на более мелкие модули, которые имеют меньше и более определенные взаимодействия.
- Учитывая, что никакая инфраструктура никогда не сможет решить, что делать с модулями, может ли OSGi когда-либо платить за вас?
- Помогло ли вам облегчить вашу жизнь при работе в командах?
- Помогло ли это сократить количество ошибок?
- Вы когда-либо успешно "hotdeploy" основных компонентов?
- Помогает ли OSGi сократить сложность с течением времени?
- Поддерживала ли OSGi promises?
- Это оправдало ваши ожидания?
Спасибо!