MVC架构模式与三层架构

提示:博客中的图片来源于动力节点在B站的视频讲解。

一、三层架构

  • 三层架构是指:视图层view(表现层)服务层service(业务逻辑层)持久层Dao(数据访问层)
    • 表现层(UI):直接跟前端打交互(⼀是接收前端ajax请求,⼆是返回json数据给前端)
    • 业务逻辑层(BLL):⼀是处理表现层转发过来的前端请求(也就是具体业务),⼆是将从持久层获
      取的数据返回到表现层。
    • 数据访问层(DAL):负责数据库的访问(可以访问数据库、二进制文件、文本文件等),是对数据库,而不是对数据的操作。直接操作数据库完成CRUD,并将获得的数据返回到上⼀层(也就是业务逻辑层)。
      动力节点老杜-MyBatis讲义中的图片
  • 三层架构的出现是为了降低耦合度,在这里,使用面向抽象编程,也就是上层对下层的调用,直接通过接口来完成,下层对上层的真正服务提供者,是下层实现的接口实现类。实现类是可以更换的,这就实现了层间的解耦合。
  • 实际项目中的包命名结构,其实就是三层架构的体现:
    在这里插入图片描述

二、MVC(model view controller)

  • MVC是软件工程中的一种软件架构模式,它是一种分离业务逻辑与显示界面的设计方法,它把软件系统分为三个基本部分:模型(model)、视图(view)、控制器(controller)
    • 控制器 controller:对请求进行处理,负责请求转发,也就是事件,用于流程的控制;
    • 视图view:界面设计人员进行图形界面设计,也就是GUI组件,用于数据的展示;
    • 模型model:编写程序应用功能(实现算法等等),数据库管理,也就是实体类。用于数据的封装和数据的传输; model一般分为以下两类:
      • 数据承载bean,数据承载bean是指实体类专门承载业务数据的,比如Student,User等。
      • 业务承载bean,业务处理bean是指Service或者Dao对象,专门处理用户的请求的。
        动力节点老杜-JavaWeb中的图片

1.MVC 架构的工作流程

  • 用户通过 View 页面向服务端提出请求,可以是表单请求、超链接请求、AJAX请求等。
  • 服务端 Controller 控制器接收到请求后对请求进行解析,找到相应的 Model(Service和Dao)对用户请求进行处理。
  • Model 处理后,将处理结果再交给 Controller。
  • Controller 在接到处理结果后,根据处理结果找到要作为向客户端发回的响应View页面。页面经渲染(数据填充)后,再发送给客户端。
    在这里插入图片描述

(1)JSP + Servlet + javabean实现MVC。

在这里插入图片描述

(2)SSM(Spring、SpringMVC、MyBatis)

  • SSM,即 SpringMVC、Spring 与 MyBatis 三个框架。
  • 它们在三层架构中所处的位置是不同的,即它们在三层架构中的功能各不相同,各司其职。
    • SpringMVC:作为 View 层的实现者,完成用户的请求接收功能。SpringMVC 的 Controller作为整个应用的控制器,完成用户请求的转发及对用户的响应。Spring MVC是主流的Web框架。
    • MyBatis:作为 Dao 层的实现者,完成对数据库的增、删、改、查功能
    • Spring:以整个应用大管家的身份出现。整个应用中所有 Bean 的生命周期行为,均由Spring 来管理。即整个应用中所有对象的创建、初始化、销毁,及对象间关联关系的维护,均由 Spring 进行管理。
      在这里插入图片描述

三、三层架构与MVC的关系

  • MVC 是在三层架构的基础上设计的一种框架型架构,三层架构是一种宏观的概念,而 MVC 就是一种比较具体的三层架构的框架实现。
  • 它们二者使用范围不同:三层可以应用于任何语言、任何技术的应用程序;而MVC只是为了解决B-S应用程序视图层各部分的耦合关系。它们互不冲突,可以同时存在,也可根据情况使用其中一种。
  • 之所以我们会混淆,是因为在进行web开发时两者会同时使用。
    • 在三层架构设计中,表示层可由MVC设计模式中的视图(view)和控制器(controller)来实现,而业务逻辑层和数据访问层则组成MVC设计模式中的模型(Model)的实现。
    • 因此,在实际的应用中,都是采用三层架构来搭建系统的框架,而表示层与业务逻辑层和数据访问层的交互则是通过MVC设计模式来实现。
  • 25
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
在刚刚步入“多层结构”Web应用程序开发的时候,我阅读过几篇关于“asp.net三层结构开发”的文章。但其多半都是对PetShop3.0和Duwamish7的局部剖析或者是学习笔记。对“三层结构”通体分析的学术文章几乎没有。 2005年2月11日,Bincess BBS彬月论坛开始试运行。不久之后,我写了一篇题目为《浅谈“三层结构”原理与用意》的文章。旧版文章以彬月论坛程序中的部分代码举例,通过全局视角阐述了什么是“三层结构”的开发模式?为什么要这样做?怎样做?……而在这篇文章的新作中,配合这篇文章我写了7个程序实例(TraceLWord1~TraceLWord7留言板)以帮助读者理解“三层结构”应用程序。这些程序示例可以在随带的CodePackage目录中找到——   对于那些有丰富经验的Web应用程序开发人员,他们认为文章写的通俗易懂,很值得一读。可是对于asp.net初学者,特别是没有任何开发经验的人,文章阅读起来就感到非常困难,不知文章所云。甚至有些读者对“三层结构”的认识更模糊了……   关于“多层结构”开发模式,存在这样一种争议:一部分学者认为“多层结构”与“面向对象的程序设计思想”有着非常紧密的联系。而另外一部分学者却认为二者之间并无直接联系。写作这篇文章并不是要终结这种争议,其行文目的是希望读者能够明白:在使用asp.net进行Web应用程序开发时,实现“多层结构”开发模式的方法、原理及用意。要顺利的阅读这篇文章,希望读者能对“面向对象的程序设计思想”有一定深度的认识,最好能懂一些“设计模式”的知识。如果你并不了解前面这些,那么这篇文章可能并不适合你现在阅读。不过,无论这篇文章面对的读者是谁,我都会尽量将文章写好。我希望这篇文章能成为学习“三层结构”设计思想的经典文章!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小宝945

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值