三层和MVC 初识篇

MVC和三层架构之间的关系 作为一名Android研发,最近再研究一些服务端的开发,遇到一个问题“Mvc和三层架构之间的关系是啥”。参考了一些资料,做一些记录。 现在服务端JavaWeb开发比较流行的是使用脚手架SpringBoot框架来进行开发,SpringBoot能很方便的实现SSM框架的服务端架构。下面拿SSM框架和三层架构进行比较分析。 一、三层架构 三层架构是指:视图层View、服务层Service、持久层Dao,分别完成不同的功能。 View层:用于接收用户提交请求的代码。 Service层:系统的业务逻辑。 Dao层:直 阅读详情

转自:http://blog.youkuaiyun.com/mingxuanyun/article/details/8933955

最近一直都在看有关三层和MVC的资料,说来也挺可笑的,刚开始看培养目标的时候,还以为三层和MVC是同一个东西呢,所以去图书馆找资料的时候,也是想着要么找本MVC要么找本三层的书就可以了。反正两者都是一样的嘛!

随着查阅资料的增多,才发现三层和MVC还真不是同一个东西。那么三层和MVC是什么呢?它们两者有什么区别呢?由于没有项目经验,还只是在初步学习阶段,所以只能借鉴网上大部分主流的观点,先从理论上了解它们,以后会从实践中去体会和了解。

1.什么是三层?

看下面的图:

                             

所谓的三层体系结构,就是在客户端和数据之间加入了一个“中间层”,也叫“组件层”。这里的三层体系不同于物理上的三层,而是逻辑上的三层,是一种体系结构。典型的三层体系结构是由表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)构成。

联系现实生活,就会发现用三层体系结构开发的系统与饭店类似,例如下面的这张图:

上图中可以看出,表示层对应的是饭店的服务员,直接和客户打交道。业务逻辑层对应的是饭店的厨师,负责把采购回来的食品进行加工完成,传递给服务员;数据访问层只负责数据的存储工作,类似于饭店的采购,系统里有什么数据取决于数据访问层的工作,饭店提供什么样的材料取决于采购回来什么材料。

 

区分层次的目的即是为了“高内聚,低耦合”的思想。就像饭店中的服务员、厨师和采购员,他们都是独立的个体,一个个体的变化和更改并不影响到另一个个体。例如,如果服务员某天离职了或是请假了,直接用其他的服务员代替即可,而厨师和采购员并不需要发生改动。

层是一种弱耦合的关系,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何的影响。

 

各层的作用:

表示层:主要是指与用户交互的界面,用于显示数据和接收用户输入的数据

业务逻辑层:处在表示层与数据访问层中间,起到了数据交换中承上启下的作用;做一些有效性的验证工作,如完成数据添加,修改和查询业务等。

数据访问层:主要是负责数据库的访问。简单的说就是通过DAL对数据库进行SQL操作。

 

其实这里的三层并不是说只有三层,可能是有更多的层。其实相对于不分层的编程方法来说,使用三层或多层架构的应用程序反而运行效率低,代码量大,难度增加。所以三层一般是适用于大型的项目系统,使用多人多组开发。这样适用三层就有利于团队的分工合作,开发人员可以只关注整个结构中的某一层。就像上面的服务员,厨师和采购员,分工合作,各司其职。

2.什么是MVC?

看下面的图:

MVC全名是Model View Controller,是模型(model)-视图(View)- 控制器(Controller)的缩写。MVC开始是存在Desktop程序中,M是指数据模型,V是指用户界面,C则是控制器,MVC模式的目的就是实现Web系统的职能分工。Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。View层用于与用户的交互,通常用JSP来实现。Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示。

 

3.三层与MVC的区别

如果要把三层和MVC进行比较的话,那么三层架构和MVC的相同之处在于他们都有一个表现层。它们的设计理念都是一样的,即把视图设计和数据持久化进行分离,从而降低耦合性,易于扩展,提高团队开发效率。不同的是,在三层架构中没有定义一个Controller的概念,而MVC也没有把业务的访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然,三层中也提到了Model,但是三层架构中的model是以实体类构成的,而MVC,则是由业务逻辑与数据访问组成的。

为了比较它们两者的不同,我们可以引入这么一个例子:

 

例如,路人甲在在安次区逛街,有人要抢劫他,打110报警了。路人乙,在广阳区也被人抢劫了他也打110报警。他们再打110的时候,接电话的是某某城市的公安局指挥中心。对于路人甲,指挥中心派出的是安次区的分警去解救。对于路人乙,指挥中心派出的是广阳区的分警去解救。对于路人甲和路人乙,他们不需要知道的是到底谁来解救他们,他们只要拨打110即可(类似于页面数据由action提交到控制器),由110的指挥中心确定他们的位置和派出地方警局去解救(控制器根据需求调用Model层去完成对应的数据处理),而三层架构中如果这两个人被抢劫了,他们直接到当地警察局(调用BLL层的方法)找警察来处理。

 

其实,不管是三层还是MVC,他们所分的层都相当于是一个黑盒子,我们不用知道它们内部是怎么实现的,只需要去调用它们就行了。每层只需要与上下相邻的两层打交道。当一层的局部由于技术发生改变时,只要接口不变,其他层就不需要进行任何改变。

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

相关推荐

[机器学习-回归实例] 李宏毅机器学习作业一:PM2.5 预测实例

[机器学习-回归实例] 李宏毅机器学习作业一:PM2.5 预测实例 简介   这是一个回归预测的实例,数据集来自李宏毅的《机器学习》课程的第一次作业,可以用来训练一个线性回归模型或者其他的回归模型,动手实践学习到的理论知识,在实践中去发现问题。这篇文章主要包括数据集的解释、数据的预处理过程及线性回归模型的代码实现这三个部分。由于这个数据集并不能直接使用,还需进行一些重构,为了对初学者更友好一些,我会提供重构完的可以读取后就直接使用的数据集,我也会提供 Matlab\rm MatlabMatlab 可直接使用

qq_27309515的博客 3574

MVC

什么是 MVC 模式 MVC,即 Model 模型、View 视图,及 Controller 控制器。 View:视图,为用户提供使用界面,与用户直接进行交互。 Model:模型,承载数据,并对用户提交请求进行计算的模块。其分为两类,一类称为数据承载 Bean,一类称为业务处理 Bean。所谓数据承载 Bean 是指实体类,专门用于承载业务数据的,如 Student、User 等...

weixin_43739465的博客 1250

Keil5保姆级安装指南:从破解到STM32开发环境配置(附常见错误解决方案)

本文提供Keil5从安装到STM32开发环境配置的完整指南,包含破解步骤、常见错误解决方案及多芯片支持配置。详细讲解环境预检、核心安装、许可证管理及高效开发环境设置,帮助开发者快速搭建嵌入式开发平台。特别针对安装和卸载过程中的关键问题提供专业解决方案。

weixin_30369041的博客 124

MVC 三层架构

本文介绍了 MVC 三层架构的相关内容。。。

Regino的博客 8785

银河麒麟v10(x86_64)升级openssh实操成功

本文详细介绍了在银河麒麟V10系统上将OpenSSH从8.2p1升级至9.9p2版本的全过程。主要内容包括:系统环境确认、安装telnet备用连接、备份配置、卸载旧版本、安装新版本、服务配置与验证等关键步骤。特别强调了安全注意事项,如必须安装telnet作为备用连接、重要配置备份等。升级后提供了安全加固建议,包括修改SSH端口、禁用root登录等。文章还包含详细的故障排查方法和恢复方案,确保升级过程安全可靠。通过本教程,用户可以顺利完成OpenSSH版本升级,提升系统安全性。

淘淘小窝 1087

ROS 2实战:用MoveIt Task Constructor让机械臂完成抓取任务(附避坑指南)

本文详细介绍了如何在ROS 2环境中使用MoveIt Task Constructor框架,为Franka Panda机械臂构建一个完整的拾取放置任务流水线。通过分解任务阶段、配置规划器并处理实际部署中的常见问题,帮助开发者从基础运动规划升级到可靠的多步骤任务编排,并附有核心避坑指南。

vvv99的博客 506

MVC架构模式与三层架构

详细解读了三层架构和MVC以及两者之间的关系

???? 7933

PCL:读写pcd点云的两种方式

本文介绍了PCL读写点云的两种方式:PCDReader,PCDWriter;loadPCDFile,savePCDFile.

孙悟空 1万+

MVC-架构的使用及流程的详细讲述和实例操作

MVC架构模式最早由Trygve Reenskaug在20世纪70年代中期提出。当时,他是斯堪的纳维亚计算机公司的一名研究员和开发人员。他在1979年的论文《模型-视图-控制器:用户界面的分割和重组》("Models-Views-Controllers: User Interface Architectures for Object-Oriented Applications")中详细描述了MVC的概念和思想。

SAME_LOVE的博客 4960

【推荐100个unity插件】基于关节物理控制的自行车、电动车、摩托车模拟解决方案——Simple Bicycle Physics

摘要 "简易自行车物理"是Unity的自行车模拟资源包,支持Animation Rigging,实现基于关节物理的自行车控制。兼容所有平台和渲染管线,包含预制体、材质、脚本等资源。核心脚本Bicycle Controller管理自行车物理属性,支持自定义角色设置和移动端控制。安装后,用户可快速配置骑行场景,调整转向、速度、重心等参数,并支持地面贴合、兔跳等功能。适用于开发各类自行车模拟游戏和应用。 (字数:149)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1365

联邦学习中的差分隐私保护详解及python实现

随着数据隐私法规(如 GDPR、CCPA)日益严格,传统将数据集中到云端训练模型的方式面临合规与安全风险。联邦学习通过让各客户端保留本地数据,仅共享模型更新,缓解了数据流动带来的隐私风险。但模型更新仍可能泄露个体信息。为进一步保障隐私,可在本地更新中引入差分隐私(DP)机制,通过向梯度或模型更新中注入随机噪声,防止反向推断原始数据citeturn0search9。

闲人编程的博客 1920

MVC架构介绍

客户端-服务器之间的通信需要持续的 Internet 或 Intranet 连接。MVC架构、访问者架构、状态架构、观察者架构等。实际场景:如何使用MVC。

allway2的博客 4493

优快云专栏限时活动!福利公告必读!

本人优快云付费专栏周排名27名专业博主,每周文章平均阅读量约7w以上!

FJN110的博客 3153

java mvc三层架构实例_MVC 三层和MVC 初识篇三层架构实战篇—系统登录实例 | 学步园...

最近一直都在看有关三层和MVC的资料,说来也挺可笑的,刚开始看培养目标的时候,还以为三层和MVC是同一个东西呢,所以去图书馆找资料的时候,也是想着要么找本MVC要么找本三层的书就可以了。反正两者都是一样的嘛!随着查阅资料的增多,才发现三层和MVC还真不是同一个东西。那么三层和MVC是什么呢?它们两者有什么区别呢?由于没有项目经验,还只是在初步学习阶段,所以只能借鉴网上大部分主流的观点,先从理论上了...

weixin_39951419的博客 226

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

三层架构和MVC的区别

首先分别了解三层架构和MVC 很简单,百度搜索(不喜勿喷,我给自己看的) 一、三层架构 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件...

elice_的博客 4万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JavaWeb MVC和三层架构

MVC和三层架构、Servlet MVC和三层架构的区别与联系

weixin_50556778的博客 2189

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

三层架构和mvc的区别

一.MVC简介 MVC是一种软件开发架构模式。 MVC框架,俗称ASP.NET MVC,现在最新的跨平台Web开发框架Core MVC,它隶属于.NET Core框架,而非.NET FrameWork下。 1.Model(模型) 模型对象是将程序数据存储在数据库中的应用程序部件。 2.View(视图) 视图是显示应用程序用户界面(UI)的组件。 3.Controller(控制器) 控制器则用于处理和响应用户输入和交互。 二.3层框架搭建 1.概述 a.数据访问层(Entit...

qq_42759120的博客 4599

对三层和MVC的认识过程

三层架构就是MVC! 起初老师总说三层MVC,MVC三层架构…… 所以开始的时候脑子就一个概念:三层就是MVC,MVC就是三层架构。而且想想也合理啊,都是“三”。MVC是三个字母,三层架构也是“三”,理所应当的就对应上了。然后就这么一直“错”了很长时间。 三层架构绝不是MVC!! 后来学习了J2EE之后发现老师说的好像不对,MVC和三层架构不是一个东西。三层架构是界面层(U

郗晓勇|利己者生,利人者恒 8205

MVC和三层架构

一、MVC M:(Model)  模型  :  应用程序的核心功能,管理这个模块中用的数据和值; V(View )视图:   视图提供模型的展示,管理模型如何显示给用户,它是应用程序的外观; C(Controller)控制器: 对用户的输入做出反应,管理用户和视图的交互,是连接模型和视图的枢纽。 1.1 MVC如何工作 MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出

Coder 3万+

三层架构和MVC以及它们的融合

三层架构和MVC

qq_62859013的博客 1224

MVC三层架构

MVC简介 MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。 [1-2] 模型-视图-控制器(MVC)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明...

weixin_45504233的博客 8182

浅析MVC和三层架构

MVC与三层架构有很多相似的地方,很容易让人误解三层架构是MVC,或者MVC是三层架构,我也是其中之一,事实上它们是不同的,三层架构是一种架构方式,即把软件工程大致划分为三层,这是从整体的角度来划分的软件层次,这是一个软件工程的整体框架,而MVC是一种设计模式,是一种分离代码的思想,更侧重于前端、侧重于表现数据。 一、MVC与三层架构的异同 1.不同点 三层架构是程序设...

Elltor 1252

MVC模式和三层架构

注:本文内容均来自其他博客,本人只是找一些相对比较好的进行收集MVC模式与三层架构的区别(摘自:点击打开链接)之前总是混淆MVC表现模式和三层架构模式,为此记录下。三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层) 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问...

CillyB的博客 2200
上一篇: oracle创建表空间的语句写法【简洁】
下一篇: 三层架构实战篇—系统登录实例【好】
HNFXS985
博客等级 码龄14年 219粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值