首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于组件的体系结构的粒度

基于组件的体系结构的粒度
EN

Stack Overflow用户
提问于 2011-10-03 15:07:36
回答 1查看 682关注 0票数 1

尽管我是一名Java开发人员,根据Java,这是一个与OSGi和模块化有关的问题,但这个问题确实适用于任何面向对象的3GL。

我开始理解真正的“模块化”开发的概念,并开始真正喜欢OSGi。这是我第一次开始考虑在非常细粒度、可重用、专门化的部署中部署jars。然而,这种新的思维方式引发了一些问题。

在纯基于组件的体系结构中,是否每个类都会受到干扰?如果不是,组件应该有多细粒度?是否有可能使每个组件可重用?

在确定模块组件的粒度时,应该使用哪些“经验规则”?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-03 16:15:51

我将主要从OSGi的角度来回答这个问题。

IMHO区分组件和模块是很重要的。组件是一种编程伪物:它具有行为能力,可以向其他组件提供服务。在实现方面,您使用OSGi的组件模型(如声明性服务)之一对组件进行编程。请参阅http://wiki.osgi.org/wiki/Component_Models_Overview

模块是一个部署伪构件:它将组件和/或API打包到一个可以在不同运行时复制和安装的构件中。因此,您可以隐式地将多个组件打包在一个模块中,或者每个组件创建一个模块。

事实上,模块内容很容易重构,因此您不应该太担心粒度问题:随着您获得更多的OSGi经验,您将为您自己的需求找到合适的级别。然而,请记住以下一般性建议:

打包在同一个模块中的

  1. 组件(Re)一起部署。如果其中一个组件比其他组件更频繁地发布,那么您可能会通过反复发布未更改的组件来创建超出需要的工作(例如,由下游用户进行测试),仅仅是因为它们恰好位于与更改组件相同的模块中。
  2. one无法部署半个模块。因此,模块中的所有组件都应该是密切相关的,因此您不会让用户希望“只要我能够部署这个module"...
  3. APIs中的一些组件就可以非常缓慢和谨慎地更改,而组件则更改频繁。由于这个原因和其他原因,最好将API部署在自己的API包中。请参见http://wiki.osgi.org/wiki/Separate_API_from_Implementation
  4. In顺序,以确保模块内容可以重构而不中断用户,始终使用Import-Package而不是Require-Bundle来表示依赖关系。请参阅http://wiki.osgi.org/wiki/Use_Import-Package_instead_of_Require-Bundle
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7636865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档