.NET MVC与三层架构
虽然接触了两者有一段时间了,但是有时还是会混淆概念,在此处不打算说明二者的区别,因为二者都是架构模式,并且也有一定的共存度,在实际开发中,严格区分意义不大。基于最近涉及到这部分知识就在复习下,编程过程中,基础概念更重要,而不是技术。
先看看,三层架构吧,即UI(表示层),BLL(业务逻辑层),DAL(数据访问层):
UI(表现层):主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。
BLL:(业务逻辑层):UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。
DAL:(数据访问层):与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。(当然这些操作都是基于UI层的。用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户)

其实,真正使用过三层架构的都知道,三者之间是通过Entity传递数据的,Entity贯穿三层,将三者连接起来,同时也实现了对数据实体的封装,取代了个层之间多变量的数据传递(数据交流),大大的简化了数据交流,也降低了数据发生错误的概率。(Entity其实就是对数据库表实体的封装),Entity与三层之间的依赖关系:

再看MVC架构,即M(model 模型·),V(view 视图),C(controller 控制器)三个部分。在MVC架构中这三部分是必须的,但我们也可以根据项目的实际需求与实际情况还能再增加,比如实现Service层或Repository层等,我们可以自行扩展,大幅提高了开发时的灵活性。
Model(数据模型):用于封装与应用程序在商业逻辑上相关的数据,以及对其数据操作的处理方法(数据库的访问操作,即增删改查;数据结构的定义;数据格式的验证)。Model并不依赖于View和Controller,也就是说Model并不需要知道它会如何被显示出来或如何被应用,只需要专注于自己该有的责任即可。Model中常见的技术有Entity Framework(即EF)、NHibernate、LINQ to SQL、Typed DataSet和ADO.NET等。
View(视图): 页面显示或获取用户输入,View需要负责将Controller传过来的数据配合“显示逻辑”呈现给用户,此处虽然View需要Contorller传递数据,但是View并没有依赖某个Controller,任何Controller只要能提供View所需要的数据,View就可以根据显示逻辑将其显示出来,是一种松散的关联关系。
Controller(控制器):属于一种结果协调者的角色,因为M-V-C三个部分没有直接的联系,View无法直接与Model沟通,即Model可以操作数据,View可以显示数据,因此,VIew显示的数据需由Controller从Model获取后提供给View。即Controller的角色位于用户接口层和商业逻辑层中间。

其中,MVC中最重要的特性是关注点分离和约定优于配置。关注点分离,简单地说就是“只注意需要注意的”,这样可以很好的解耦模块,各个单元的复杂度就相对降低,更容易开发,同时,也增强了程序的可维护性。约定优于配置,简单地说,就是开发过程中应该遵守的约定,如:Controller的文件名后面一定要以Controller结尾;View文件一定要放在VIews文件夹下;View的名称就是对应的Controller的Action名称;Web API的Action名称前面应该加上HTTP动词等等,这样有利于项目的后期开发与维护,以防止因人员流动而使项目无其他人愿意接手。
.NET MVC与三层架构的更多相关文章
- 【转】浅谈MVC与三层架构
首先给大家引入下MVC的概念: MVC(Model View Controller)模型.视图以及控制器,它是一种较为广泛应用的结构设计模式. 模型:就是在MVC设计模式中需要被显示的数据.在通常情况 ...
- MVC与三层架构的区别
我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. ...
- mvc和三层架构到底有什么区别
原文地址:http://zhidao.baidu.com/question/82001542.html?qbl=relate_question_3&word=MVC%20%CA%FD%BE%D ...
- MVC与三层架构
我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. ...
- MVC和三层架构
从最开始写程序到现在,一路上听到架构这个词已经无数次了,在工作和圈子里也不停听到大家在讨论它,但是很多时候发现不少人对这个概念的理解都是很模糊的,无意间在知道上看到一个朋友的回答,感觉很不错,特转帖到 ...
- 从MVC和三层架构说到SSH整合开发
相信很多人都认同JavaWeb开发是遵从MVC开发模式的,遵从三层架构进行开发的,是的,大家都这么认同.但是相信大家都会有过这样一个疑问,if(MVC三层模式==三层架构思想)out.println( ...
- jsp&el&jstl mvc和三层架构
jsp:java在html中插入java 一.JSP技术 1.jsp脚本和注释 jsp脚本:(翻译成servlet,源码位置apache-tomcat-7.0.52\work\Catalina\loc ...
- (转)MVC 与三层架构
原文:https://juejin.im/post/5929259b44d90400642194f3 MVC 与三层架构 一.简述 在软件开发中,MVC与三层架构这两个专业词汇经常耳闻,同时总有很多人 ...
- Asp.Net MVC简单三层架构(MVC5+EF6)
三层架构与MVC的关系 三层架构是一个分层式的软件体系架构设计,分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).分层的目的是为了实现“高内聚,低耦合”的思想,有利于系统后期的维护.更 ...
- 转载——Asp.Net MVC+EF+三层架构的完整搭建过程
转载http://www.cnblogs.com/zzqvq/p/5816091.html Asp.Net MVC+EF+三层架构的完整搭建过程 架构图: 使用的数据库: 一张公司的员工信息表,测试数 ...
随机推荐
- Go - method
hello, 大家好,由于之前工作上面的事情较多,所以关于go语言的学习就暂时“搁浅了”...不过从今天开始,我们又将回到了go语言的学习过程之中. 当然,我们学习go的"初心"是 ...
- 深入浅出HTTP协议
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接 ...
- H.264格式,iOS硬编解码 以及 iOS 11对HEVC硬编解码的支持
H.264格式,iOS硬编解码 以及 iOS 11对HEVC硬编解码的支持 1,H.264格式 网络表示层NAL,如图H.264流由一帧一帧的NALU组成: SPS:序列参数集,作用于一系列连续的编码 ...
- tomcat抬头有“选择”或“选定”,导致tomcat无法运行问题
2. 遇到tomcat抬头有"选择"或"选定",导致tomcat无法运行问题 解决:在tomcat抬头右键--属性,去掉"快速编辑模式"勾选 ...
- 流畅的python学习笔记:第五章
在python中一切都可以视作为对象,包括函数.我们来看个例子: def function_try(): '''it is funciton try doc''' print 'fun ...
- Iconfont 矢量图标库的应用
前言: 在项目开发中,不免在标签栏,工具栏等应用各种各样的小图标. 然后老旧的做法就是要UI设计出各种图标并生成图片给到我们,但是这样就存在了一个问题,每次请求页面的时候就需要发送请求请求图片,这样不 ...
- win 结束占用端口的进程
在web开发的时候,经常开启http服务器监听某个端口,例如npm run dev等等 以下介绍通过命令行结束占用端口的程序(注:测试环境为win10) 1.启动命令行 2.在命令行输入 netsta ...
- PHP实现简单的评论与回复功能还有删除信息
我们首先先看一下功能 上面黑色的是评论的下面红色的字体是回复的 再来看看怎么实现的 1.发布评论 <form action="pinglunchili.php" method ...
- MyBatis源码解析【1】准备工作
终于迎来了这一天,我觉得现在的我在经历了长时间的学习和开发之后有了一定的经验,所以准备开始学习源码. 今天我将做好充足的准备,在接下来的一个月中,努力的爬过这座大山.(可能不用一个月,但是我觉得需要仔 ...
- 2238"回文字串"报告
题目描述: 回文串,就是从前往后和从后往前看都是一样的字符串.那么现在给你一个字符串,请你找出该字符串中,长度最大的一个回文子串. 输入描述: 有且仅有一个仅包含小写字母的字符串,保证其长度不超过50 ...