框架是和架构比拟类似的概念,而且两者有着较强的关联关系,所以在理论工作中,很多时候这两个概念并不是分得那么清晰,参考维基百科,框架的定义如下:
软件框架(Software Framework)
通常指的是为了实现某个业界规范或者实现特定根本工作的软件组件标准,也指为了实现某某个软件组件标准时,提供标准做要求之根底性能的软件产品。
框架
是组件标准,比方:MVC 就是一种常见的开发标准,相似的有 MVP、MVVM、J2EE 等框架。
框架提供根底性能的产品。比方:Spring MVC 是 MVC 的开发框架,除了满足 MVC 的标准,Spring 提供了很多根底性能来帮忙咱们实现性能,包含注解 @Controller,Spring Security,Spring JPA 等很多性能。
参考维基百科,这里简略的翻译为软件架构师指软件系统的“根底构造”,发明这些根底构造的准则,以及对这些构造的形容。
单从定义的角度来看,框架和架构的区别还是比拟显著的,框架关注的是标准,架构关注的是构造。框架的英文是 Framework,架构的英文是 Architecture。Spring MVC 的英文文档题目是 Web Framework,包目录也有 framework。
尽管如此,在理论工作中咱们却常常碰到一些似而非似的说法,比方:
咱们的零碎吃 MVC 架构 咱们须要将 Android App 重构 MVP 架构 咱们的零碎基于 SHH 框架开发 咱们的零碎是 SHH 的架构
以上几种说法到底是对还是错呢?
其实以上说法都是对的,造成这种景象的根本原因暗藏于架构的定义中,关键字“根底构造”,这个概念并没有很明确的说分明从什么角度来讲的,从不同的角度或者维度,能够将零碎划分为不同的构造,其实咱们再“模块与组件”中的样例曾经暗含了这点,持续以学生信息管理系统为例。
从业务逻辑的角度合成,”学生信息管理系统“的架构如下:
从物理部署的角度合成,“学生信息管理系统”的架构如下:
从开发标准的角度合成,“学生信息管理系统”能够采纳规范的 MVC 来开发,因而架构又变成了 MVC 架构了,如下图:
以上这些架构,都是学生信息管理系统正确的架构,只是从不同的角度来合成而已。