.NET MVC与三层架构

二者都是架构模式,并且也有一定的共存度,在实际开发中,严格区分意义不大。
基于最近涉及到这部分知识就在复习下,编程过程中,基础概念更重要,而不是技术。

1.三层架构:即UI(表示层),BLL(业务逻辑层),DAL(数据访问层)

UI(表现层):主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。
BLL:(业务逻辑层):UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。
DAL:(数据访问层):与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给
业务层,同时将业务层处理的数据保存到数据库。
(当然这些操作都是基于UI层的。用户的需求反映给界面(UI),UI反映给BLL,
BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户)
其实,真正使用过三层架构的都知道,三者之间是通过Entity传递数据的,Entity贯穿三层,将三者连接起来,

  同时也实现了对数据实体的封装,取代了个层之间多变量的数据传递(数据交流),大大的简化了数据交流,

  也降低了数据发生错误的概率。(Entity其实就是对数据库表实体的封装),Entity与三层之间的依赖关系

2.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的区别的更多相关文章

  1. 【转】MVP和MVC的区别

    转自:http://www.cnblogs.com/end/archive/2011/06/02/2068512.html MVC和MVP到底有什么区别呢? 从这幅图可以看到,我们可以看到在MVC里, ...

  2. MVVM和MVC的区别,以及MVVM的缺点

    MVVM和MVC的区别 MVC和MVVM的区别其实并不大.都是一种设计思想. 主要就是MVC中Controller演变成MVVM中的viewModel. MVVM主要解决了MVC中大量的DOM操作使页 ...

  3. 三层架构与MVC的区别

    我们平时总是将混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. MVC是一个设 ...

  4. struts2和spring mvc的区别

    在项目中使用struts2和spring mvc为了实现后台的业务代码和前台数据之间的传递,现在基本上不会有用struts2的了,几次面试问的最多的关于struts2的问题就是struts2和spri ...

  5. WebApi的好处和MVC的区别

    1.WebApiwebapi有自己的路由. webservice和wcf的协议都是soap协议,数据的序列化和反序列化都是soap的格式.而webapi是Json的数据传递 webapi的优点有哪些? ...

  6. MTV和MVC的区别

    著名的MVC模式:方便解藕 所谓的MVC就是把web应用分为三层 1.模型层: model     负责业务对象和数据库的对象(ORM)的映射 2.视图层       views 负责与用户的交互(书 ...

  7. MVVM和MVC的区别

    MVVM(Model-View-ViewModel) 优点:低耦合:可重用:独立开发:可测试 即,将页面与数据分离的模式:将数据绑定工作放到javaScript文件中实现,javaScript文件的主 ...

  8. ASP.NET Webform和ASP.NET MVC的区别

    ASP.NET WebForm ASP.NET Webform提供了一个类似于winform的事件响应GUI模型(event-driven GUI),隐藏了HTTP.HTML.JavaScript等细 ...

  9. asp.net中三层架构与mvc之区别?

    对于标题中的问题,如果是没有同时接触三层架构和mvc的初级.net开发人员,想必一定会非常糊涂和混淆.关于此我也百度过N回,看过N多帖子和 回答,但几乎没有人能表述清楚.近期我从典型mvc+entit ...

  10. 关于asp.net web form 和 asp.net mvc 的区别

    asp.net web forms 有什么缺陷? 1.视图状态臃肿:服务器和客户端传输过程中包含了大量的试图状态——在现在的web程序中甚至多达几百kb,而且每次往返都会请求,导致服务器请求带宽增加, ...

随机推荐

  1. Vue-watch选项

    Vue ----watch 选项 用于 监听数据变化: <!DOCTYPE html> <html lang="en"> <head> < ...

  2. php 04

    前加加(++$a) 先运算后赋值 后加加($a++) 先赋值后运算 -- 前减减(--$a) 先运算后赋值 后减减($a--) 先赋值后运算 连接运算符(字符串运算符) . 神奇的米粒 1. 字符串和 ...

  3. SqlServer Alwayson 搭建排错记录(二)

    下面记录下建立好alwayson可用性组后,向可用性组内添加数据库出现过的问题及解决方法 一.数据库未处于恢复状态 将数据库联接到可用性组的时候报错: 数据库“XXXX”未处于恢复状态,而此状态是镜像 ...

  4. SqlServer Alwayson 搭建排错记录(一)

    这几天搭建alwayson,碰到一堆问题,解决起来花了不少时间,特此记下几个有代表性的,以免以后再碰到做重复功. 一.创建可用性组 使用SSMS的创建可用性组向导,添加了一个主副本node1,一个辅助 ...

  5. SQLServer从其他表获取的数据更新该表的一部分

    在网上常见的是update  a  set  username  =  username  FROM b  on a.userid=b.userid,该更新语句是对a表中所有行进行更新.如果只更新一部 ...

  6. VS找到了XXX的副本,但是当前源代码与XXX中内置的版本不同

    1.博客园有解决ASP.Net出现以上问题的方法: 删除ASP.Net临时文件夹内的dll文件. https://www.cnblogs.com/autumn/p/5261576.html 2.但我的 ...

  7. 利用临时表实现CTE递归查询

    一.CTE递归查询简介 --CTE递归查询终止条件在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递 ...

  8. Altera FFT核使用详解

    简介 快速傅里叶变换(Fast Fourier Transform)最为一种高效的算法,被广泛的用于信号处理与数据分析等领域.对于设计工程师来讲,自己动手采样可编程语言来实现一个FFT/IFFT模块, ...

  9. EOS签名R值过大导致报错"is_canonical( c ): signature is not canonical"

    简要 EOS中规定签名的R和S必须同时小于N/2才是合法的签名. 详细 EOS签名交易相对BTC和ETH来说,对签名的要求更加严格了. BTC中bip62规定了((Low S values in si ...

  10. hdu-2680 Choose the best route---dijkstra+反向存图或者建立超级源点

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2680 题目大意: 给你一个有向图,一个起点集合,一个终点,求最短路 解题思路: 1.自己多加一个超级 ...