尽管我是一名Java开发人员,根据Java,这是一个与OSGi和模块化有关的问题,但这个问题确实适用于任何面向对象的3GL。
我开始理解真正的“模块化”开发的概念,并开始真正喜欢OSGi。这是我第一次开始考虑在非常细粒度、可重用、专门化的部署中部署jars。然而,这种新的思维方式引发了一些问题。
在纯基于组件的体系结构中,是否每个类都会受到干扰?如果不是,组件应该有多细粒度?是否有可能使每个组件可重用?
在确定模块组件的粒度时,应该使用哪些“经验规则”?提前感谢!
发布于 2011-10-03 16:15:51
我将主要从OSGi的角度来回答这个问题。
IMHO区分组件和模块是很重要的。组件是一种编程伪物:它具有行为能力,可以向其他组件提供服务。在实现方面,您使用OSGi的组件模型(如声明性服务)之一对组件进行编程。请参阅http://wiki.osgi.org/wiki/Component_Models_Overview
模块是一个部署伪构件:它将组件和/或API打包到一个可以在不同运行时复制和安装的构件中。因此,您可以隐式地将多个组件打包在一个模块中,或者每个组件创建一个模块。
事实上,模块内容很容易重构,因此您不应该太担心粒度问题:随着您获得更多的OSGi经验,您将为您自己的需求找到合适的级别。然而,请记住以下一般性建议:
打包在同一个模块中的
Import-Package
而不是Require-Bundle
来表示依赖关系。请参阅http://wiki.osgi.org/wiki/Use_Import-Package_instead_of_Require-Bundlehttps://stackoverflow.com/questions/7636865
复制相似问题