当前位置:首页 > 大全 >

软件开发的三层架构与mvc的区别(mvc开发模式架构图)

来源:原点资讯(www.yd166.com)时间:2022-12-17 14:46:10作者:YD166手机阅读>>

原文链接:https://mp.weixin.qq.com/s/YzNC2IcS2wHtMrdighB9_w

原作者:程序新视界

前言

只要从事软件开发的工作,系统架构是必备知识。有朋友说可能会说,我只是一个搬砖的,怎么会接触到架构知识呢?其实,除了架构的设计者(也就是架构师),作为普通的开发者也是在时刻践行着系统架构的理论。毕竟,再好的架构,都需要码农去实施。只不过当你没有系统了解软件架构时,可能感知不到而已。

本篇文章就带大家系统的了解一下软件架构的分层,学习完毕,你就会明白,为什么系统要分层。同时,也能准确地看清楚目前自己系统中采用的是什么样的分层架构。

不采用架构分层,行不行?

首先我们来思考一个问题,如果一个系统不采用分层架构可不可以?这个问题就好像在问,代码中不使用设计模式行不行?答案当然是可以的。但不采用架构分层,会带来极大的未知风险,或者说代码极具熵增的特性。

作为一个初创软件,可能没有什么业务逻辑,没有什么用户量,而软件最主要的目标就是快速上线,实践商业模式。此时,可以不考虑分层。但随着业务逻辑的复杂,业务板块的增多,彼此之间就会出现错综复杂的依赖关系,随之就会产生的逻辑不清晰、可读性差,维护困难,改动一处动全身等问题。

什么是架构分层?

分层架构是将软件模块按照水平切分的方式分成多个层,一个系统由多层组成,每层由多个模块组成。同时,每层有自己独立的职责,多个层次协同提供完整的功能。比如,我们经常提到的MVC架构,就是一种非常典型非常基础的分层方式。

分层设计的本质其实就是将复杂问题简单化,基于单一职责原则让每层代码各司其职,基于“高内聚,低耦合”的设计思想实现相关层对象之间的交互。从而,提升代码的可维护性和可扩展性。

系统架构分层之后,往往需要达到以下目标:

  • 高内聚:分层设计可以简化系统设计,让不同层专注做某一模块的事;
  • 低耦合:层与层之间通过接口或API来交互,依赖方不用知道被依赖方的细节;
  • 复用:分层之后可以做到代码或功能的复用;
  • 扩展性:分层架构可以让代码更容易横向扩展
通讯领域的OSI参考模型

在计算机领域现有最典型的分层架构设计就是OSI参考模型和TCP/IP参考模型了。关于这个模型,我们在《一篇文章,只用看三遍,终生不忘网络分层! 》一文中已经详细介绍了。下面直接看一下相关的模型图:

软件开发的三层架构与mvc的区别,mvc开发模式架构图(1)

对于上述的三种分层模式,试想一下,如果没有分层,当一个业务或协议需要改变时,我们只能针对整个系统做修改或扩展。而分层之后,便可以很方便地把不同功能的模块抽离出来,修改对应的模块即可。而且不同层还可以被复用,只要确保按照这个层的协议来处理就可以了。

软件系统整体分层

以Java软件应用为例,整个软件系统也可进行分层,比如分为部署的硬件环境、操作系统、所需的中间件、承载业务的应用程序以及软件接入层。可通过下图进行整体了解:

软件开发的三层架构与mvc的区别,mvc开发模式架构图(2)

对于上述分层也产生了对应在职位,比如运维工程师、中间件工程师、产品经理、开发工程师、测试工程师等工种。而我们在实践过程中,接触最多,使用最多的分层要属应用软件层了,其次是中间件层。

下面我们就来看看针对应用软件层通常有哪些分层方式。

经典三层架构

三层架构(3-tier application) ,通常就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。

软件开发的三层架构与mvc的区别,mvc开发模式架构图(3)

表现层(UI),通俗讲就是展现给用户的界面,对应项目中的Web层包含Servlet和Controller等。

业务逻辑层(BLL):也称作领域层,负责系统业务逻辑的处理,对应项目中Service和ServiceImpl等。

数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等,对应项目中的Dao。

在提出该分层架构的时代,多数系统往往较为简单,本质上都是一个单体架构(Monolithic Architecture)的数据库管理系统。这种分层架构已经是Client-Server架构的进化了,它有效地隔离了业务逻辑与数据访问逻辑,使得这两个不同关注点能够相对自由和独立地演化。

在开源技术框架中,表现层实现的代表作品是Struts1/2、Spring MVC,业务层实现的代表作品是Spring,持久层实现的代表作品是Hibernate和Mybatis。

MVC

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

标准的MVC交互模型如下图:

软件开发的三层架构与mvc的区别,mvc开发模式架构图(4)

首页 123下一页

栏目热文

用星星管折玫瑰花视频教程(管子折玫瑰花教程慢动作简单)

用星星管折玫瑰花视频教程(管子折玫瑰花教程慢动作简单)

小时候大家有没有用塑料管折过星星呢?相信很多女孩子都有过用塑料管折星星的经历呢!透明亮晶晶的星星管折出来的星星一闪一闪的...

2022-12-05 14:09:31查看全文 >>

看图写话同学们一起过生日(草地上过生日看图写话)

看图写话同学们一起过生日(草地上过生日看图写话)

关注我,看小学语文二至六年级单元作文范文。荆门市红旗小学 三(5)班 李妙涵教室里同学们围在一起,热火朝天地讨论着自己和...

2022-12-10 16:28:00查看全文 >>

田英章欧楷基本笔画演示(动态图)(田英章正楷入门基本笔画)

田英章欧楷基本笔画演示(动态图)(田英章正楷入门基本笔画)

千里始足下,高山起微尘。吾道亦如此,行之贵日新。欧体楷书常用笔画书写演示,分别是田蕴章田英章书写,后附欧阳询例字,适合每...

2022-12-17 01:24:22查看全文 >>

什么颜色的格子最好搭配(灰色格子搭配什么颜色最佳)

什么颜色的格子最好搭配(灰色格子搭配什么颜色最佳)

对“格子”风格的衣服似乎有特殊的情怀,也可能仅仅喜欢复古的风格。很多女生的衣橱里面,或多或少都会有几件与格子相关的衣服,...

2023-02-07 18:52:43查看全文 >>

二手混凝土搅拌车20方多少钱(二手混凝土搅拌车多少钱一台)

二手混凝土搅拌车20方多少钱(二手混凝土搅拌车多少钱一台)

(我想最近的时间买个搅拌车。因为对于工程行业非常陌生。我在山东泰安市这边。听起朋友说很挣钱不知道到底怎么样。想问高手几个...

2022-12-21 13:58:48查看全文 >>

抢夺罪与抢劫罪的区别鸡骨草的功效(抢劫罪和抢夺罪的相同点和区别)

抢夺罪与抢劫罪的区别鸡骨草的功效(抢劫罪和抢夺罪的相同点和区别)

抢夺罪该罪指的是以非法占有为目的,当场直接夺取他人紧密占有的财物的行为。它的一个重要特点就是该罪的暴力是针对物本身的暴力...

2022-12-15 04:28:54查看全文 >>

3m 医用口罩(3m口罩和医用外科口罩)

3m 医用口罩(3m口罩和医用外科口罩)

对于目前市面上大部分的N95口罩,细心的购买者会发现,它们很多都会有一个3M的标记。而关于该标记到底是啥意思,很多使用者...

2022-12-19 14:11:27查看全文 >>

手机显卡排行天梯图(目前手机显卡排名)

手机显卡排行天梯图(目前手机显卡排名)

转眼就到五月了,这意味着2023年已经过去三分之一。今天芝麻科技讯新一期的手机CPU天梯图 2023 年 4 月版来了,...

2023-09-22 06:41:23查看全文 >>

西安车展2020年10月时间安排门票(西安12月车展时间表)

西安车展2020年10月时间安排门票(西安12月车展时间表)

8月16日,国务院办公厅印发《关于加快发展流通促进商业消费的意见》,意见中指出“实施汽车限购的地区要结合实际情况,探索推...

2022-12-20 09:21:20查看全文 >>

装修公司门头广告牌设计效果图(装修公司门头广告牌设计文字)

装修公司门头广告牌设计效果图(装修公司门头广告牌设计文字)

朴琢品牌战略咨询 整理编辑观点lD POOZHUO 转载请注明出处欢迎留言讨论观点及转发日式招牌、店面招牌、门头设计、店...

2023-10-12 11:09:43查看全文 >>

文档排行