尽管我是一名Java开发人员,并且这个问题涉及到根据Java的OSGi和模块化,但这个问题确实适用于任何面向对象的3GL。基于组件的体系结构的粒度
我开始掌握真正的“模块化”开发的概念,并开始真正喜欢OSGi。我有史以来第一次开始考虑以非常细粒度,可重用的专业化部署来部署罐子。然而,这种新的思维模式激起了一些问题。
在纯基于组件的体系结构中,每个类都会被破坏吗?如果不是组件应该如何精细化?每个组件都可以重复使用吗?
确定模块化组件的粒度应该如何使用时,有哪些“经验法则”?提前致谢!
尽管我是一名Java开发人员,并且这个问题涉及到根据Java的OSGi和模块化,但这个问题确实适用于任何面向对象的3GL。基于组件的体系结构的粒度
我开始掌握真正的“模块化”开发的概念,并开始真正喜欢OSGi。我有史以来第一次开始考虑以非常细粒度,可重用的专业化部署来部署罐子。然而,这种新的思维模式激起了一些问题。
在纯基于组件的体系结构中,每个类都会被破坏吗?如果不是组件应该如何精细化?每个组件都可以重复使用吗?
确定模块化组件的粒度应该如何使用时,有哪些“经验法则”?提前致谢!
我打算主要从OSGi的角度回答这个问题。
恕我直言,重要的是要区分组件和模块。 A 组件是一种编程工件:具有行为并可能为其他组件提供服务的东西。在实施条款中,您使用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-Bundle
@Mara这里是基于组件开发的链接。 http://en.wikipedia.org/wiki/Component-based_software_engineering –
哇!神奇的答案@尼尔!感谢您的澄清! – IAmYourFaja