我们谈到架构,会想到 Linux有架构,MySQL架构,JVM架构,Java架构、MySQL存储架构、跑在Linux上的业务系统也有架构,那到底什么是架构呢?
要解答这个问题,关键在于梳理几个有关系而又相似的概念,包括:系统与子系统、模块与组件、框架与架构。
维基百科:
系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是“总体”“整体”或“联盟”
子系统也是由一群有关联的个体所组成的系统,多半会是更大系统中的一部分
模块和组件的定义并不十分清晰。
维基百科:
软件模块(Module)是一套一致而互相有紧密关联的软件组织。它分别包含了程序和数据结构两部分。现代软件开发往往利用模块作为合成的单位。模块的接口表达了由该模块提供的功能和调用它时所需的元素。模块是可能分开被编写的单位。这使它们可再用和允许人员同时协作、编写及研究不同的模块。
软件组件定义为自包含的、可编程的、可重用的、与语言无关的软件单元,软件组件可以很容易被用于组装应用程序中。
我们可以定义,从逻辑角度拆分系统后,得到的单元,我们称为模块。从物理角度拆分,得到的单元是组件。
一个学生信息管理系统,按逻辑拆分为 登录注册模块,个人信息模块等。学生成绩模块。按物理拆分为,Nginx模块,Web服务器,MySQL 模块等。
维基百科的定义:
软件框架(Software framework)通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品.
框架关注的是规范,架构关注的结构。
MVC 框架:
软件架构指软件系统的顶层结构。
架构:一个系统由什么子系统组成,各个子系统负责什么功能,各子系统之间怎么沟通,就是这个系统的结构。框架:一种软件开发的规范,带有系统开发的基础功能。