近期在开发小组在研究: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架构综合模型的处理流程(对上图的更进一步解释):

运行的流程:

      1. 用户请求到达控制器
      2. 控制器处理用户的交互数据,并调用业务逻辑层处理数据
      3. 业务逻辑层通过数据库訪问层对数据库做持久化处理
      4. 数据訪问层返回处理完后的数据
      5. 业务层把业务数据交给UI层的控制器
      6. 控制器把业务数据封装为ViewModel
      7. 控制器把ViewModel的数据交给View进行展示
      8. 视图把数据转成视图额呢绒交给用户浏览

    之前的项目大多都採用三层架构来实现,所以对三层的开发流程已经形成了较为清晰的认识。而对于三层与MVC之间的关系,也经常easy混淆开发者的视听,总有一种剪不断理还乱的感觉。

    相信经过本文的三张图形对照,您已经可以更加清晰地认识到了MVC架构以及MVC与三层之间的相应关系。接下来的任务就是通过项目实战加深MVC的理解了。

    (本文是建立在对三层了解的基础上进行论述的,对于三层部分的理解,这里不做过多赘述)



通知:

本文对于MVC的理解,局限于在三层项目经验的基础之上,对MVC的认识。

文中存在误解,已经在下一篇博客中进行更正,欢迎您提出不同的论证观点,相互切磋。

      《【.NET特供-第三季】ASP.NET
MVC系列:MVC与三层图形对照(颠覆性理论)

【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照的更多相关文章

  1. 【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照(颠覆性理论)

           在[.NET特供-第三季]系列博客中的第一篇<ASP.NET MVC系列:MVC与三层图形对照>发表之后,引起了领导的注意.同一时候,开发小组内部在交流MVC和三层之间关系的 ...

  2. MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)

    前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...

  3. MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)

    前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...

  4. [转]MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)

    本文转自:http://www.cnblogs.com/landeanfen/p/5989092.html 阅读目录 一.MVC原理解析 1.MVC原理 二.HttpHandler 1.HttpHan ...

  5. MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)

    前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...

  6. MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)

    前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...

  7. MVC系列1-MVC基础 (ASP.NET)

    终于决定写一个系列的文章了,最开始其实是准备写一下WPF的,因为我这两年一直在做WPF,对WPF的喜爱自然是无以言表.但是由于我所在的地区对WPF的普及不是很广泛,所以,被迫又开始做起来web,但是我 ...

  8. 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)

    lASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操 ...

  9. 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

随机推荐

  1. shell 脚本运算符

    1.数值 格式: test "num1" opr "num2" [ "num1" opr "num2" ] opr 取值 ...

  2. React-Native入门

    React-Native入门指导之iOS篇 React-Native 入门指导系列教程目录 一.准备工作 (已完成) 二.项目介绍与调试 三.CSS样式与Flex布局 四.常用UI控件的使用 五.JS ...

  3. java显示本地磁盘所有盘符,显示桌面路径

    import java.io.File; import javax.swing.filechooser.FileSystemView; /** 显示本地磁盘根盘符,显示桌面路径 */ public c ...

  4. UVA 12206 - Stammering Aliens(后缀数组)

    UVA 12206 - Stammering Aliens 题目链接 题意:给定一个序列,求出出现次数大于m,长度最长的子串的最大下标 思路:后缀数组.搞出height数组后,利用二分去查找就可以 这 ...

  5. 编程算法 - 数字数组中只出现一次 代码(C)

    数字数组中只出现一次 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 一个整型数组里除了两个数字以外, 其它的数字都出现了两次. 请敲代码找出这 ...

  6. Android+NDK+CDT+eclipse+OPenGL ES编制和native调试

    周围环境: NDK版本号r8,eclipse和Android运用adt-bundle-windows-x86打包版本是更方便, 一.NDK汇集 1.源代码 NDK的examples文件夹中有Hello ...

  7. 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 ...

  8. android详情请务必保持手机屏幕不锁屏

    今天做这个项目采用了非常有趣的东西,互联网搜索下一个轮廓,需求就是点击一个按钮来锁定屏幕让屏幕不亮. 几个测试.我们发现以下措辞如此简单, getWindow().addFlags(WindowMan ...

  9. HTTP长连接和短连接(转)

    1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问 ...

  10. 【七】注入框架RoboGuice使用:(Your First Custom Binding)

    上一篇我们简单的介绍了一下RoboGuice的使用([六]注入框架RoboGuice使用:(Singletons And ContextSingletons)),今天我们来看下自己定义绑定(bindi ...