• 章节:52
  • 访问:2759
  • 时长:00:30:14
  • 日期:2016-09-25 11:50

什么是MVC?




它不是一门语言,甚至不算是技术
而是开发时,使用的一种“框架(架构)”,就像是一种开发观念,或者设计模式

作为开发人员,我们都一种同感,就是在开发过程,最担心的半路出家的变化,比如需求变更、技术变更、老板变、经理变、客户变。这些变化其实会使得我们开发质量大大降低,维护难度加大。但是有无法逃脱,所以我们唯一能做的就是减轻变化打来的冲击,这时候就有些人慢慢地总结出MVC这解决方案了。

MVC是1979年提出的,最早应用在smalltalk这种语言中。
提出MVC的概念是为了简化程序开发的复杂度。以一种简单却又能责任分明的架构,贯穿整个软件开发流程。
通过业务逻辑、数据表现的切割,是的两个部分分部独立开来,这样可以模块化开发,维护性就高了。

三大单元


Model、View、Controller  模型、视图、控制器

模型Model:负责定义信息格式和信息访问界面,包括业务逻辑和信息检验
视图View:包括输入输出和UI呈现,UI是用户界面的意思 user interface
控制器Controller:负责控制系统运行的流程,更浏览器如何交互,决定网页操作流程和动向,响应客户端的各种请求,处理错误等等

什么是Model


翻译为模型,但是应该叫“数据模型”更贴切,因为Model主要负责和数据打交道
定义数据结构
负责和数据库沟通
从数据库读取数据
将数据写入数据库
运行预存储程序
数据格式验证
定义与商业逻辑规则
对数据进行加工,比如指定实体字段默认值等等。

什么是View


翻译为 视图 注意不是数据库中的视图
它负责呈现数据给用户,输出html xml灯
负责输入,比如表单提交,例如注册 登录等
从controller中获取数据,并且显示给用户
决定什么技术来程序,falseh html等
负责排版 颜色 布局等

负责将数据送回给controller
决定送个那个action
决定什么方式发送 post get
进行前端验证

与view有关的技术:html xml css js json jq jqueryui ext easyui bootstrap ajax flash 等等

何为controller
控制器,掌控全局,控制大局
决定系统执行流程
负责从model取数据
决定显示那个view视图

三者彼此关系



控制器和视图关系是双向,控制器决定显示那个视图
视图可以决定往那个控制器发送

视图和模型上面,视图是比较主动的一方,而模型通常扮演“数据服务提供商”的身份
视图中的数据通常是从控制器传过来,而传过来的数据却已Model所定义的

有一种模型叫视图模型,英文 ViewModel,它是额外为View的某些需要而定义的一种Modell类,如果使用EF的时候,viewmodel不会映射到表中,它只是作为视图和控制器沟通的桥梁。
建议大家看一下我们这个北盟网校的codefist教程 www.bamn.cn

控制器和模型的关系中,控制器永远处于主动,控制器赋值调用和使用模型Model所定义的各种类别,而model模型只是单纯提供’数据服务”或者”验证服务”

注意这里的数据服务,其实不是我们以前的da层的意思,数据服务不一定就是对数据库的增删改查操作,在EF中Model可以决定数据表的字段,可以对数据库进行操作;

我们开发程序的时候,可以先写好了控制器 模型,然后再决定使用那个视图,MVC三部分其实关系是既有联系,又有独立性的,这就是MVC的强大的地方;

视图和模型之间也是相对独立的,视图的显示通常会受到模型的影响,比如在视图中使用editorformodel,视图的显示就收model的影响了,但是其实视图完全可以不需要Model的,只是这样view开发的时候就没这么方便而已。

模型和控制器也是相对独立的,控制器和视图完全可以不需要模型也可以运行;
Razor模板引擎这个课程

为什么使用MVC
关注点分离
可维护性增强
开放源代码
使用人多,大公司在背后,有公司维护
容易分工

开发工具 vs不用说了

Asp.net mvc 和asp.net webform 他们都是asp.net 的框架,他们是同一层次的,不是谁继承谁的问题,并且他们的底层都是asp.net框架。