OSGi 能否帮助降低复杂性?
我在OSGi上看到了很多演讲,我认为它听起来很有希望强制实施更好的模块化。显然,“热部署”和“并行运行不同版本的x”也是市长的卖点。
我想知道OSGi承诺解决的问题是否是一个问题......?这让我想起了OO的早期,当时类似的索赔是女仆:
当OO是新的时,最大的争论是可重用性。人们普遍认为,当使用OO时,人们只需要“写一次”,然后就可以“到处使用”。
在实践中,我只看到这适用于一些非常低级的例子。我认为这样做的原因是编写可重用的代码很难。不是技术上,而是从界面设计的角度来看。你必须预测未来的客户将如何使用你的课程,并提前做出正确的选择。根据定义,这很困难,因此潜在的可重用性优势往往无法实现。
有了OSGi,我怀疑在这里我们可能会再次陷入承诺,潜在的解决方案,以解决我们真正没有的问题。或者,如果我们有它们,我们就没有足够大的数量和严重性来证明购买OSGi寻求帮助是合理的。例如,模块子集的“热部署”绝对是一个好主意,但它真正起作用的频率如何?有多少次不是因为事实证明你对特定问题的模块化是错误的?在多个模块之间共享的模型实体怎么样?这些模块是否都必须同时更改?或者,您是否将对象扁平化为基元,并仅在模块间通信中使用那些对象,以便能够保持接口协定?
我认为,应用OSGi时最困难的问题是“正确”地实现模块化。与在OO中获取正确的类接口类似,使用OSGi,问题保持不变,这次是更大的规模,包甚至服务级别。
正如您可能已经猜到的那样,我目前正在尝试评估OSGi以用于项目。我们遇到的主要问题是,随着代码库的增长,复杂性越来越高,我想将系统分解成更小的模块,这些模块具有越来越少的交互。
- 鉴于没有任何框架可以帮助决定模块化的内容,OSGi是否为您带来了回报?
- 在团队中工作时,它是否使您的生活更轻松?
- 它是否有助于减少错误计数?
- 您是否曾经成功“热部署”主要组件?
- 随着时间的推移,OSGi是否有助于降低复杂性?
- OSGi是否信守承诺?
- 它满足了您的期望吗?
谢谢!