ASP.NET MVC 小牛之旅1:何谓MVC
在学习ASP.NET MVC之前首先了解什么 是MVC ? MVC不是一种语言,严格来说也不算一个技术,而是开发时所使用的一种架构(框架),它就像是一种开发观念,或是一个设计样式。
MVC让软件开发的过程大致切割为三个主要单元,分别为:Model(模型)、View(视图)、Controller(控制器),这三个单词缩写便简称为MVC。
1.1何谓MVC
Model :负责定义信息格式与信息访问的界面,包括商业逻辑与信息验证。
大致如下:定义数据结构;负责与数据库沟通;从数据库读取数据;将数据写入数据库;运行预储数据;数据格式验证;定义与验证商业逻辑规则;对数据进行各种加工处理。
View:负责所有呈现在用户面前的东西,简单的说法就是输入与输出。
输出:从Controller取得数据,并显示在用户界面上,而数据是参考自Model的定义;负责界面的排版、字形、颜色、美观与各种呈现技术;
输入:负责将数据送回Controller;HTML窗体通过get或者post输出数据;决定将数据应该送到哪个Controller的Action中;前端基本的数据格式验证;验证功能等。
Controller:
决定于”用户“的沟通管道,以ASP.NET为例就是http或者https;
决定系统运作流程,例如从Controller接收到数据后就要立即转向(Redirect)到另一个页面;
负责从Model取得数据,可以在Controller的类别中利用Model提供的类别来取得数据;
决定应该显示哪个View。
1.2彼此的关联
Controller与View的关联性:彼此都是双向关系,但Controller的主动性较高。
View与Model的关联性:彼此都是双向关系,View是站在比较主动的一方。
Model与Controller的关联性:单向关系,Controller永远属于主动的角色。
1.3彼此的独立性
Controller与View之间的独立性:当View尚未被构建时,Controller其实可以先撰写程序,当Controller尚未被构建时,View也可以先撰写程序。
View与Model之间的独立性:View不需要Model也可以运行,只是这样View就会缺乏Model所能提供的数据型别定义,就会造成View在开发时没有那么方便。
Model与Controller之间的独立性:在没有Model的情况下Controller与View一样可以运行得很好。
1.4为什么要使用ASP.NET MVC ?
优点:
清楚的关注点分离,代码易维护;(关注点分离概念:当你在进行软件开发时,可以只关注与当前的对象上一次仅关注一个较容易理解与解决的部分,不要受到相同系统中其他对象的干扰,也包括对象所作出的修改不会影响到其他对象的运作,能够专注完成手边的工作,不但容易提升软件质量也可加快程序代码的理解的速度。)
开放特性(完全开放源代码)
社群支持(当前国外社群非常活跃)
可轻易控制http的输出特性(比Web Forms好太多了)
优秀的开发效率
易于测试的架构
易于分工的架构
缺点:
相较于web form来说,mvc较缺乏工具支持;
开发人员必须面对HTML、CSS、JS在View上的配置;
缺乏成熟的组件化技术支持;
1.5必须要舍弃WebForm哪些东西?
MVC不能使用的技术:
ViewState
ASP.NET页面追踪机制(Page Trace)
ASP.NET事件驱动模型(Event Model)
服务器控件,大部分不能用
Default SiteMap Provider