框架VS架构,看两者异同

TCP/IP专家
• 阅读 3165

框架是和架构比较相似的概念,而且两者有着较强的关联关系,所以在实际工作中,很多时候这两个概念并不是分得那么清晰,参考维基百科,框架的定义如下:

软件框架(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的架构

以上几种说法到底是对还是错呢?

其实以上说法都是对的,造成这种现象的根本原因隐藏于架构的定义中,关键字“基础结构”,这个概念并没有很明确的说清楚从什么角度来讲的,从不同的角度或者维度,可以将系统划分为不同的结构,其实我们再“模块与组件”中的样例已经暗含了这点,继续以学生信息管理系统为例。

从业务逻辑的角度分解,”学生信息管理系统“的架构如下:

框架VS架构,看两者异同

从物理部署的角度分解,“学生信息管理系统”的架构如下:

框架VS架构,看两者异同

从开发规范的角度分解,“学生信息管理系统”可以采用标准的MVC来开发,因此架构又变成了MVC架构了,如下图:

框架VS架构,看两者异同

以上这些架构 ,都是学生信息管理系统正确的架构,只是从不同的角度来分解而已。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
4年前
J2Cache 和 JetCache 框架有何不同?
从软件名称看还有点像呢?但这两者完全不是一回事!JetCache是阿里的一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用。也就是说这个项目主要的目的是为了让所有的缓存框架通过JetCache实现统一的接口调用,让你不需要关心底层缓存的API细节。这是设计模式层面上的封装。而J2Cache完全不同,
Wesley13 Wesley13
4年前
Java SPI
JavaSPI概念Java规范SPI全称为(ServiceProviderInterface),是JDK内置的一种服务提供自发现机制。简述很多框架都是使用这种规范,commonslogging,JDBC各个驱动厂商,还有就是阿里巴巴的Dubbo框架,但是Dubbo中说的需要注意的地方,详细细节看
Easter79 Easter79
4年前
Spring中的AOP(二)——AOP基本概念和Spring对AOP的支持
AOP的基本概念    AOP从运行的角度考虑程序的流程,提取业务处理过程的切面。AOP面向的是程序运行中的各个步骤,希望以更好的方式来组合业务逻辑的各个步骤。AOP框架并不与特定的代码耦合,AOP框架能处理程序执行中特定切入点,而不与具体某个类耦合(即在不污染某个类的情况下,处理这个类相关的切点)。下面是一些AOP的一些术语:    切面(
Stella981 Stella981
4年前
Spring Cloud 微服务架构的五脏六腑!
来源:kujialewebfe.kujiale.com/springcouldheart/SpringCloud是一个基于SpringBoot实现的微服务框架,它包含了实现微服务架构所需的各种组件。注:SpringBoot简单理解就是简化Spring项目的搭建、配置、组合的框架。因为与构建微服务本身没有直接关系,所以本文不
Wesley13 Wesley13
4年前
Android的Binder机制浅析
1\.引言 一般实际的软件系统中进程间通信(IPC)的实现方法有命名管道(namedpipe),共享内存(sharedmemory),消息队列(messagequeue),Socket等方法。在Android的框架(Framework)中,以Binder作为框架内进程间(通常如服务和客户间)通信的主要实现手段。这可能是出于效
Stella981 Stella981
4年前
Spring 框架
     Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring架构如图:!(https://static.oschina.net/uploads/space/2016/1117/160156_1
Stella981 Stella981
4年前
Django框架介绍
 Django框架简介MVC框架和MTV框架(了解即可)MVC,全名是ModelViewController,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。
Stella981 Stella981
4年前
Dubbo和Spring Cloud微服务架构'
微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如Dubbo和SpringCloud。各大互联网公司也有自研的微服务框架,但其模式都于这二
小万哥 小万哥
2年前
深入理解 Spring IoC 和 DI:掌握控制反转和依赖注入的精髓
概述在本文中,我们将介绍IoC(控制反转)和DI(依赖注入)的概念,以及如何在Spring框架中实现它们。什么是控制反转?控制反转是软件工程中的一个原则,它将对象或程序的某些部分的控制权转移给容器或框架。我们最常在面向对象编程的上下文中使用它。与传统编程相
小白学大数据 小白学大数据
6个月前
Scrapy 框架实战:构建高效的快看漫画分布式爬虫
一、Scrapy框架概述Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,它提供了强大的数据提取能力、灵活的扩展机制以及高效的异步处理性能。其核心架构包括:●Engine:控制所有组件之间的数据流,当某个动作发生时触发事件●Schedul