码迷,mamicode.com
首页 > Web开发 > 详细

MVC浅谈

时间:2018-03-14 18:05:13      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:复杂   html   局部刷新   扩展   有一个   bubuko   info   src   .com   

mvc三个字母分别代表model, view, control.

下面从三个单词来扩展说,

view顾名思义就是一个项目的图形界面, gui部分.用户可以看到的, 进行操作的都在这上面.有图形化界面的应用一般要求对用户友好的, 简单易用无故障的.但是最主要的是让用户通过界面操作去实现功能. 所以实现功能的部分需要一些操作, 包含操作过程中的逻辑部分, 甚至是业务逻辑部分.那么这部分就交给model去处理 ,但是这中间需要一个协调者, 去将不同的逻辑请求分给不同的model, 这个协调者就是controller.  所以综上所述, view层进行操作之后, 调用请求给controller, controller会找到相应的model去实现业务逻辑, model进行逻辑层处理之后, 会通知view层去将处理结果显示给用户.在这里一般view层会有一个result结果集去接收model的处理的数据.   这就是一个典型的MVC结构.

如下图:

技术分享图片

 

但是这里的mvc结构过于耦合, 彼此之间的依赖关系太多.不便于开发进行单元测试. 于是下面介绍一个新的架构, MVVM.

MVVM的核心是 view层的显示变化是根据一个数据结构关联绑定的. 这个数据结构一旦变化, 则view层显示就会跟着相应的变化.所以这个view层和model层之间绑定的数据结构被称为VM.

通常来说VM被设计成为一个属性类.

图以后补上.

随着技术发展, 越来越多的B/S架构的产品应运而生. 很多view层现在已经进入到了browser里面. 用户一般通过browser去进行一些操作.

而browser的操作一般都是通过get post的http去访问server的指定url中的资源.  所以由于编程模式的改变, 框架结构也发生了巨变.

如果把HTML页面比作原来桌面应用程序的View, 服务器无论是Controller还是Model都是无法远程遥控这个View进行处理的。传统的MVC已经不能满足这种应用.经过研究后, 产生了下面的这种结构:

技术分享图片

不像桌面应用的MVC, 这里的Model没法给View 发通知。

实际上Controller 会选择一个View, 然后把模型数据“丢过去”渲染。

原来的View 变成了 View Template(例如JSP , Velocity等等), 经过渲染后变成HTML发给浏览器展示给用户。

 

有人把这种MVC称为 基于Web的 MVC,以便和之前的MVC区别开来。

是不是非常的赞.

后来由于浏览器端的业务也变得逐渐复杂起来, 从全局刷新到局部刷新, 和单页面应用程序等, 浏览器端也可以使用框架.所以浏览器可以使用一个框架, 服务器使用另一个框架,

实现前端和后端完全分离:

技术分享图片

 

MVC浅谈

标签:复杂   html   局部刷新   扩展   有一个   bubuko   info   src   .com   

原文地址:https://www.cnblogs.com/it-dennis/p/8568717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!