框架 VS 架构,看两者异同
框架是和架构比较相似的概念,而且两者有着较强的关联关系,所以在实际工作中,很多时候这两个概念并不是分得那么清晰,参考维基百科,框架的定义如下:
软件框架(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 架构了,如下图:
以上这些架构 ,都是学生信息管理系统正确的架构,只是从不同的角度来分解而已。
版权声明: 本文为 InfoQ 作者【田维常】的原创文章。
原文链接:【http://xie.infoq.cn/article/c3200b0b876685bfc7f72a364】。文章转载请联系作者。
评论