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