博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照
阅读量:7088 次
发布时间:2019-06-28

本文共 1288 字,大约阅读时间需要 4 分钟。

    近期在开发小组在研究: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.NETMVC,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的认识。

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

      《》

你可能感兴趣的文章
一库缺陷跟踪 Bugtrace 上线云商店。
查看>>
Hadoop的相关资料
查看>>
android编译错误,aapx.exe执行异常
查看>>
linux nginx 开机重启
查看>>
IPTABLES中SNAT和MASQUERADE的区别
查看>>
nali: 给dig,traceroute等命令的输出的ip附加上地理信息
查看>>
十个酷毙的Linux单行命令!
查看>>
vmware workstation 连接管理ESXI中的虚拟服务器
查看>>
Nginx+Keepalived搭建高可用负载平衡WEB 集群
查看>>
Objective -C-3
查看>>
EJB MEMCACHED --漫天飞舞的对象与对对象序列化分布式系统的分析
查看>>
两种运行时 -- 写于2009-05-19
查看>>
我的友情链接
查看>>
关于ANDROID事件-Android框架工程师的回复
查看>>
Jenkins API Token
查看>>
ubuntu安装经典的Gnome桌面
查看>>
awk使用详解(三)变量、数字表达式、赋值运算符、BGGIN、END、Built-in 变量
查看>>
linux下如何查看某软件是否已安装
查看>>
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
查看>>
大流量在宽带通信产品生产测试中的作用
查看>>