三层架构+MVC(六)

什么是三层架构?

三层构架

  • 三层架构是一个分层式的软件体系架构设计,它适用于任何一个项目

  • 三层架构是指:视图层 View、服务层 Service,与持久层 DAO。它们分别完成不同的功能。

  • View 层:用于接收用户提交请求的代码

  • Service 层:系统的业务逻辑主要在这里完成

servet (服务器小程序) 1.处理业务逻辑 2.处理页面显示。
jsp 就是Servet 处理页面显示也是技术。小脚本也可以处理逻辑

  • DAO 层:直接操作数据库的代码

  • 为了更好的降低各层间的耦合度,在三层架构程序设计中,采用面向抽象编程。即上层对下层的调用,是通过接口实现的。而下层对上层的真正服务提供者,是下层接口的实现类。服务标准(接口)是相同的,服务提供者(实现类)可以更换。这就实现了层间解耦合。

在这里插入图片描述

什么是 MVC 模式

MVC,即 Model 模型、View 视图,及 Controller 控制器。

  • View:视图,为用户提供使用界面,与用户直接进行交互。

  • Model:模型,承载数据,并对用户提交请求进行计算的模块。==其分为两类,一类称为数据承载 Bean,一类称为业务处理 Bean。==所谓数据承载 Bean 是指实体类,专门用户承载业务数据的,如 Student、User 等。而业务处理 Bean 则是指 Service 或 Dao 对象, 专门用于处理用户提交请求的。

  • Controller:控制器,用于将用户请求转发给相应的 Model 进行处理,并根据 Model 的计算结果向用户提供相应响应。

MVC 架构程序的工作流程

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

    在这里插入图片描述

三层架构 + MVC 示意图

  • MVC 在三层架构的视图层如下图
    在这里插入图片描述

两者之间的区别

一、 MVC与三层架构区别
我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念。下面我来为大家揭晓我所知道的一些真相。
首先 mvc 和 三层架构根本不是一个概念!!!
三层构架

三层架构是一个分层式的软件体系架构设计,它适用于任何一个项目

MVC

mvc是一种设计模式,并不是所有的项目都能使用。它是根据项目的具体需求来决定是否适用于该项目。

那么架构跟设计模式有什么区别呢?

从项目的角度说
  • 当我们拿到一个项目,我们需要先进行分层式框架的设计,一般采用的都是三层框架
  • 而后,我们再根据项目的具体需求去考虑是否需要应用一些设计模式。比如我们所提到的MVC,抽象工厂模式等等。(在这里我们看出,MVC与三层架构不是一个等级的,而与抽象工厂等设计模式才是一路的)
  • 最后,确定了模式以后,就是我们的一些具体的实现了。
层次不同。

三层框架将整个项目划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。

mvc分为模型(MODEL)、视图(View)、 控制(Controller).

而我们通常所见到的MVC一般也都是在应用三层架构的基础上,即将Model层再进行分层。而如果Model不再进行划分的话,那么使用MVC的意义也就不大了。

然后,它俩的目的着重点不同。
  • 三层架构的目的着重点是“高内聚,低耦合”,即解耦。
  • MVC的目的则是实现Web系统的职能分工,即职责划分。
  • 其实职责划分也是解耦,但是三层侧重的是整体的一个解耦,而MVC侧重的是web系统的解耦,即侧重jsp和Servlet的一个解耦。
什么是高内聚、低耦合

这个概念是软件工程中的一个概念,是判断设计好坏的标准。简而言之,就是看类的内聚性是否高,耦合度是否低

高内聚

一个软件模块必须由关联性很强的代码组成,也就是一个模块只做一件事。

低耦合

不同的模块之间互相关联的程度是否足够低,面向对象变成面向接口编程(实例,改造dao并采取面向接口编程)。

下一节三层架构代码实现

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在刚刚步入“多结构”Web应用程序开发的时候,我阅读过几篇关于“asp.net三层结构开发”的文章。但其多半都是对PetShop3.0和Duwamish7的局部剖析或者是学习笔记。对“三层结构”通体分析的学术文章几乎没有。 2005年2月11日,Bincess BBS彬月论坛开始试运行。不久之后,我写了一篇题目为《浅谈“三层结构”原理与用意》的文章。旧版文章以彬月论坛程序的部分代码举例,通过全局视角阐述了什么是“三层结构”的开发模式?为什么要这样做?怎样做?……而在这篇文章的新作,配合这篇文章我写了7个程序实例(TraceLWord1~TraceLWord7留言板)以帮助读者理解“三层结构”应用程序。这些程序示例可以在随带的CodePackage目录找到——   对于那些有丰富经验的Web应用程序开发人员,他们认为文章写的通俗易懂,很值得一读。可是对于asp.net初学者,特别是没有任何开发经验的人,文章阅读起来就感到非常困难,不知文章所云。甚至有些读者对“三层结构”的认识更模糊了……   关于“多结构”开发模式,存在这样一种争议:一部分学者认为“多结构”与“面向对象的程序设计思想”有着非常紧密的联系。而另外一部分学者却认为二者之间并无直接联系。写作这篇文章并不是要终结这种争议,其行文目的是希望读者能够明白:在使用asp.net进行Web应用程序开发时,实现“多结构”开发模式的方法、原理及用意。要顺利的阅读这篇文章,希望读者能对“面向对象的程序设计思想”有一定深度的认识,最好能懂一些“设计模式”的知识。如果你并不了解前面这些,那么这篇文章可能并不适合你现在阅读。不过,无论这篇文章面对的读者是谁,我都会尽量将文章写好。我希望这篇文章能成为学习“三层结构”设计思想的经典文章!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值