【架构】笔记一 | 初识框架与架构

原文地址:初识框架与架构

核心内容

  • 组件是达到可复用要求的模块
  • 架构是设计图纸,框架是工程师

系统与子系统

系统”的*定义:
系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是“总体”“整体”或“联盟”。
子系统“的*定义:
子系统也是由一群有关联的个体所组成的系统,多半会是更大系统中的一部分。

子系统的定义和系统定义是一样的,只是观察的角度有差异,一个系统可能是另外一个更大系统的子系统。
例如

  • 微信本身是一个系统,包含聊天、登录、支付、朋友圈等子系统
  • 朋友圈这个系统又包括动态、评论、点赞等子系统

无论是系统还是子系统相对于自身系统而言,整个系统都是由个体也就是模块组件构成的。

模块与组件

  • 都是基于功能划分的单位
  • 模块是从业务维度上职责的划分
  • 组件是技术维度上的复用

从设计上来看,组件强调复用,模块强调职责(内聚、分离),或者说组件是达到可复用要求的模块

模块和组件都是系统的组成部分,只是从不同的角度拆分系统。

框架与架构

  • 框架关注的是“规范”,是面向编程或配置的半成品
  • 架构关注的是“结构”,是软件系统的金字塔结构

所谓结构,是指任何一件事情都可以看做一个系统。
而任何一个系统,都有多个元素(个体)组成,这些系统组成的元素之间的关系形成结构

而规范就是要求按照这个结构进行操作的一个标准

架构是设计图纸,目的是“做什么”;框架是工程师,目的是“做出来”。

选择不同的框架就是选择不同的工程师。

哪怕是基于同一张设计图纸不同的工程师(不同的框架)做出来的效果各不一样(性能的差异)。

比如说Spring MVC框架这个工程师,他拿着MVC架构这张设计图开发出来web应用了。

  • 这个web应用是MVC架构设计的,是基于Spring MVC框架开发的
    (这个web工程是按照MVC设计图纸开发的,是Spring MVC工程师做的)
  • Spring MVC框架基于MVC架构设计开发了这个web应用
    (Spring MVC工程师按照MVC这设计图纸做出了这个web工程)

当我们想造一房子时,我们可以自己学习成为工程师(造*)来建造,但也许更好的选择是聘请专业的工程师(现成框架),我们提供材料(编写模块或组件)让其快速实现目标。

哪怕是一个“学生管理系统”,它的部署是“Nginx+Web服务器+MySQL”,这也是一种“架构”,因为体现出设计思想。

知识复盘

当我们在谈架构的时候,其实是在谈什么?

设计思想

当我们在谈框架的时候,其实是在谈什么?

设计思想的具体化(用Spring、JSF、GWT哪个实现)

如何正确介绍一个系统的架构与框架?

这个XXX系统是基于XXX 架构设计,基于XXX 框架开发

小结

  • 系统是基于架构设计,基于框架开发,由模块或组件构造。
  • 凡是可以体现出设计思想的都可以看做是架构,凡是可以根据设计开发出产品的都可以看做框架。

最后,把“框架”比如成“工程师”,也许一下子理解不过来。其实框架就像是给程序员定制的开发脚手架,是一种半成品,是一种工具。就好比对于雇主我来说,要造房子,那么对于“造房子”这目标达成来说,工程师就是这达成过程中借助的一样工具。我给他设计图纸,他看得懂设计图纸,那么他就可以造得出来。

————————————————————————————

笔记来源
【架构】笔记一 | 初识框架与架构