【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照
近期在开发小组在研究:BS项目中是利用‘MVC框架’还是继续沿用‘三层’的问题。
由于曾经的.NET项目大多数都是利用三层开发的,所以大多数人都可以对三层进行熟练地运用。而项目的開始我们也曾听说过MVC的概念,可是由于没有项目经验的原因,所以总是停留在理论层次的比較。
在后期的DRP项目中,了解到Model1和Model2模型,而Model2模型就是MVC的应用。DRP中我们採用jsp做View层用于显示;Servlet做Controller用于取得表单參数、调用业务逻辑、转向页面;
相同都是MVC的理念,在Java和.NET中却有着不同的实现方式。(不作为本文的重点)
本文作为.NET MVC系列文章中的第一篇,主要用于介绍MVC与三层之间的关系,兴许博客将持续展开……
MVC仅仅是一种思想,能够应用于各种平台。就是把一个应用程序分为三个组件,每一个组件都有对应的职责:视图View、控制器Controller、模型Model。
MVC模式的两种理解:一种是表现模式(在ASP.NET的MVC中,把Model理解为ViewModel),还有一种是架构模式(把Model模式理解为业务逻辑层和数据訪问层的综合体)。这仅仅是我眼下初期阶段的理解。有不同见解的能够通过邮件或者评论的方式和我交流。
M:Model。主要是存储或出具数据的组件。事实上就是实现业务逻辑层对实习类对应的操作,如:CRUD,它包含数据、验证规则、数据訪问、业务逻辑等应用程序信息。ViewModel:视图模型
V:View。是用户接口层组件。将Model中的数据展示给用于。ASPX和ASCX文件被用来处理视图的职责。
C:Controller。处理用户交互。从model中获取数据并将数据传给指定的view。
接下来看一些MVC与三层之间千丝万缕的关系:
从架构角度对照:MVC与三层
MVC架构综合模型:MVC是怎么实现交互的?
MVC架构综合模型的处理流程(对上图的更进一步解释):
运行的流程:
- 用户请求到达控制器
- 控制器处理用户的交互数据,并调用业务逻辑层处理数据
- 业务逻辑层通过数据库訪问层对数据库做持久化处理
- 数据訪问层返回处理完后的数据
- 业务层把业务数据交给UI层的控制器
- 控制器把业务数据封装为ViewModel
- 控制器把ViewModel的数据交给View进行展示
- 视图把数据转成视图额呢绒交给用户浏览
之前的项目大多都採用三层架构来实现,所以对三层的开发流程已经形成了较为清晰的认识。而对于三层与MVC之间的关系,也经常easy混淆开发者的视听,总有一种剪不断理还乱的感觉。
相信经过本文的三张图形对照,您已经可以更加清晰地认识到了MVC架构以及MVC与三层之间的相应关系。接下来的任务就是通过项目实战加深MVC的理解了。
(本文是建立在对三层了解的基础上进行论述的,对于三层部分的理解,这里不做过多赘述)
通知:
本文对于MVC的理解,局限于在三层项目经验的基础之上,对MVC的认识。
文中存在误解,已经在下一篇博客中进行更正,欢迎您提出不同的论证观点,相互切磋。
【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照的更多相关文章
- 【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照(颠覆性理论)
在[.NET特供-第三季]系列博客中的第一篇<ASP.NET MVC系列:MVC与三层图形对照>发表之后,引起了领导的注意.同一时候,开发小组内部在交流MVC和三层之间关系的 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)
前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...
- MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)
前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...
- [转]MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)
本文转自:http://www.cnblogs.com/landeanfen/p/5989092.html 阅读目录 一.MVC原理解析 1.MVC原理 二.HttpHandler 1.HttpHan ...
- MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)
前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)
前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...
- MVC系列1-MVC基础 (ASP.NET)
终于决定写一个系列的文章了,最开始其实是准备写一下WPF的,因为我这两年一直在做WPF,对WPF的喜爱自然是无以言表.但是由于我所在的地区对WPF的普及不是很广泛,所以,被迫又开始做起来web,但是我 ...
- 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)
lASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操 ...
- 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
随机推荐
- shell 脚本运算符
1.数值 格式: test "num1" opr "num2" [ "num1" opr "num2" ] opr 取值 ...
- React-Native入门
React-Native入门指导之iOS篇 React-Native 入门指导系列教程目录 一.准备工作 (已完成) 二.项目介绍与调试 三.CSS样式与Flex布局 四.常用UI控件的使用 五.JS ...
- java显示本地磁盘所有盘符,显示桌面路径
import java.io.File; import javax.swing.filechooser.FileSystemView; /** 显示本地磁盘根盘符,显示桌面路径 */ public c ...
- UVA 12206 - Stammering Aliens(后缀数组)
UVA 12206 - Stammering Aliens 题目链接 题意:给定一个序列,求出出现次数大于m,长度最长的子串的最大下标 思路:后缀数组.搞出height数组后,利用二分去查找就可以 这 ...
- 编程算法 - 数字数组中只出现一次 代码(C)
数字数组中只出现一次 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 一个整型数组里除了两个数字以外, 其它的数字都出现了两次. 请敲代码找出这 ...
- Android+NDK+CDT+eclipse+OPenGL ES编制和native调试
周围环境: NDK版本号r8,eclipse和Android运用adt-bundle-windows-x86打包版本是更方便, 一.NDK汇集 1.源代码 NDK的examples文件夹中有Hello ...
- VOJ 1067 Warcraft III 守望者的烦恼 (矩阵高速功率+dp)
主题链接 明显的 dp[n] = dp[n-k] + dp[n-k+1] + ... +dp[n-1]; 然后要用矩阵来优化后面的状态转移. 也就是矩阵 0 1 0 0 a b 0 0 ...
- android详情请务必保持手机屏幕不锁屏
今天做这个项目采用了非常有趣的东西,互联网搜索下一个轮廓,需求就是点击一个按钮来锁定屏幕让屏幕不亮. 几个测试.我们发现以下措辞如此简单, getWindow().addFlags(WindowMan ...
- HTTP长连接和短连接(转)
1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问 ...
- 【七】注入框架RoboGuice使用:(Your First Custom Binding)
上一篇我们简单的介绍了一下RoboGuice的使用([六]注入框架RoboGuice使用:(Singletons And ContextSingletons)),今天我们来看下自己定义绑定(bindi ...