.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+三层架构的完整搭建过程 架构图: 使用的数据库: 一张公司的员工信息表,测试数 ...
随机推荐
- DataTable数据导出Excel 并且下载
public string Excel(System.Data.DataTable dt) { //模板的路径 string strUploadPath = HttpContext.Current.S ...
- python 最佳实践与资源汇总
python 最佳实践 (部分) 一. 结构化工程 文件 功能 README.rst readme LICENSE 许可证 setup.py 打包和发布管理 requirements.txt 开发依赖 ...
- 获取当前 系统时间 + 获取当前URL 键值;
一://系统当前时间 function show(){ var mydate = new Date(); var str = "" + mydate.getFullYear() + ...
- Lucence
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引 ...
- PHP安装phpredis扩展
phpredis 的github地址:https://github.com/nicolasff/phpredis第一步:切换到指定的目录,然后wget https://github.com/nicol ...
- 【Android Developers Training】 16. 暂停和恢复一个Activity
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【CC2530入门教程-06】CC2530的ADC工作原理与应用
第6课 CC2530的ADC工作原理与应用 广东职业技术学院 欧浩源 一.A/D转换的基本工作原理 将时间上连续变化的模拟量转化为脉冲有无的数字量,这一过程就叫做数字化,实现数字化的关键设备是AD ...
- Ionic/Angularjs 知识点解析
Ionic/Angularjs 知识点解析 angular-ui-router(状态跳转) state的定义:(在app.js的config下配置) $stateProvider .state('ap ...
- java excel导出
下面是jsp代码: <li class="btns"><input id="btnExport" class="btn btn-pr ...
- MinGW(GCC)编译DLL文件
这两天用CB(Code::Blocks)写个小程序,要编译出DLL供VB(6)使用.CB使用mingw-gcc作为编译器,在库文件的产出上跟VC.VS之类的IDE略有不同. 由于C语言的基础知识不是太 ...