近期在开发小组在研究: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. 【Android进阶】Listview分页加载数据的实现

    Listview分页加载数据的实现 public class MainActivity extends Activity { protected static final int SUCCESS_GE ...

  2. 无显示仍然发挥树莓派——VNCserver设定

    谁说没有显示器就不能玩树莓派的图形界面了.不要忘了VNCserver哦! VNC(Virtual Network Computing)属于一种网络显示系统,也就是说它能将完整的窗体界面通过网络传输到还 ...

  3. C# 使用WinRar命令压缩和解压缩

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  4. 自己动手写CPU之第八阶段(4)——转移指令实现过程2

    将陆续上传本人写的新书<自己动手写CPU>,今天是第36篇,我尽量每周四篇 开展晒书评送书活动,在亚马逊.京东.当当三大图书站点上,发表<自己动手写CPU>书评的前十名读者,均 ...

  5. UVA 11249 - Game(游戏)

    UVA 11249 - Game 题目链接 题意:两堆石头.a和b.每次能取一堆随意数量,或者两堆同一时候取.可是绝对值差不能超过k,最后不能取的人输,问先手能否赢 思路:先如果(a, b)石子,a是 ...

  6. HTTP简单的解析协议

    1.HTTP定义的协议 官方的定义:        WWW这是Internet作为传输介质的应用.WWW主变速器单元是在线Web网页.WWW它正在给客户/server计算模型,由Web浏览器Webse ...

  7. ssis t-sql返回值

    原文:ssis t-sql返回值 sql类似如下,不需要使用return 语句,SQL语句的ConnectionType必须是"ADO.NET" select @proID=fie ...

  8. hibernate Disabling contextual LOB creation as connection was null

    使用hibernate通路sybase当遇到异常. Could not obtain connection metadata : ASE is now using a multi-byte c ...

  9. DataNode连接错误Retrying connect to server

      在Hadoop分布式模式部署完毕后,通过start-dfs.sh启动NameNode.DataNode.SecondaryNameNode,在master节点通过jps命令查看,看到NameNod ...

  10. 【 D3.js 进阶系列 — 2.1 】 力学图的事件 + 顶点的固定

    本章讨论在力学图中经常使用到的事件( Event ),然后对[p=555">进阶 - 第 2.0 章]的人物关系图进行改进.使用户可以固定拖拽的对象. 在[入门 - 第 9.2 章]和 ...