写点什么

软件架构中的模块与组件

用户头像
Simon
关注
发布于: 2021 年 03 月 29 日

模块与组件在软件架构中非常重要,但是概念理解起来,容易被混淆;为了理清自己的思路,查了一些资料,结合华仔的讲解,进行了总结:


概念

模块:

Module:A standard or unit of measurement; An independently operable unit that is a part of the total structure of a space vehicle

是作为度量的单位;独立运行的单元,是整体结构的一部分

主要是从度量单位,整体和部分这个角度来描述


组件:

Component:a part or element of a larger whole, especially a part of a machine or vehicle

元件,构建,组成部分


相同点

  • 都是描述整体和部分的关系,都是为了降低系统的复杂度

  • 都是基于功能划分的单位

  • 模块和组件没有上下级包含的关系:模块中可以包含组件,组件中也可以划分模块


不同点

模块:
  • 模块是按照逻辑拆分软件,主要是为了职责分离,基于业务拆分

  • 从单个系统内部的角度来看,模块更多是横向的业务功能拆分,拆分后的模块,往往具有相同的级别

  • 模块偏向内部设计的概念:项目中,划分为几个独立的功能模块;模块之间交互使用接口表达,接口作为门面模式,为了使模块之间解耦合

  • 同一个系统内部,两个应用具有相同的业务等级,通常称为两个模块

  • 同一个应用内部,使用包来区分模块;微服务中,随着业务发展,可以将模块划分为多个微服务


组件:
  • 组件是按照物理拆分软件,主要是为了单元复用

  • 自包含的、可编程的、可重用的、与语言无关的软件单元

  • 从单个应用来看,组件更多从纵向对功能进行了拆分,拆分的组件有上下层的关系;例如:把数据持久化拆分为单独的数据库存储组件

  • 组件偏向向外的概念:组件独立,对外强调可重用性;应用可以将某一部分特定的功能交给一个组件来完成;组件都有独立的封装

  • 视图通常可以封装 UI 组件


总结:

模块和组件从不同的角度描述的话,概念可以互相转换。我们在做设计的时候,最关键是要能描述清楚它的职责边界,如何与其他部分进行交互,减少耦合等。

用户头像

Simon

关注

还未添加个人签名 2018.08.11 加入

还未添加个人简介

评论

发布
暂无评论
软件架构中的模块与组件