在学习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

ASP.NET MVC 小牛之旅1:何谓MVC的更多相关文章

  1. ASP.NET MVC 小牛之旅4:ASP.NET MVC的运行生命周期

    ASP.NET MVC的运行生命周期大致分成三大过程:(1)网址路由对比. (2)运行Controller与Action. (3)运行View并回传结果. 4.1网址路由对比 当iis收到http请求 ...

  2. ASP.NET MVC 小牛之旅3:Routing——网址路由

    网址路由(Routing)在ASP.NET MVC中有两个主要用途,一个用途是匹配通过浏览器传来的HTTP请求,另一个用途则是响应适当的网址给浏览器. 3.1匹配通过浏览器传来的HTTP请求 首先我们 ...

  3. ASP.NET MVC 小牛之旅2:体验第一个MVC程序

    了解了什么是MVC之后,接下来用一个非常简单的留言板程序概要的了解MVC网站开发的过程,对MVC开发有个大致的轮廓.第一个项目将不会提到过多与数据库相关的技术,因此将以Framework Code F ...

  4. [ASP.NET MVC 小牛之路]01 - 理解MVC模式

    本人博客已转移至:http://www.exblr.com/liam  PS:MVC出来很久了,工作上一直没机会用.出于兴趣,工作之余我将展开对MVC的深入学习,通过博文来记录所学所得,并希望能得到各 ...

  5. [ASP.Net] 转 > ASP.NET MVC 小牛之路

    URL: http://www.cnblogs.com/willick/ 看到了不错的学习笔记,MVC.Net学习之路展开   [ASP.NET MVC 小牛之路]18 - Web API [ASP. ...

  6. [ASP.NET MVC 小牛之路]04 - 依赖注入(DI)和Ninject

    本人博客已转移至:http://www.exblr.com/liam  为什么需要依赖注入 在[ASP.NET MVC 小牛之路]系列的理解MVC模式文章中,我们提到MVC的一个重要特征是关注点分离( ...

  7. [ASP.NET MVC 小牛之路]05 - 使用 Ninject

    在[ASP.NET MVC 小牛之路]系列上一篇文章(依赖注入(DI)和Ninject)的末尾提到了在ASP.NET MVC中使用Ninject要做的两件事情,续这篇文章之后,本文将用一个实际的示例来 ...

  8. [ASP.NET MVC 小牛之路]06 - 使用 Entity Framework

    在家闲着也是闲着,继续写我的[ASP.NET MVC 小牛之路]系列吧.在该系列的上一篇博文中,在显示书本信息列表的时候,我们是在程序代码中手工造的数据.本文将演示如何在ASP.NET MVC中使用E ...

  9. [ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)

    继上一篇文章之后,本文将介绍 Controller 和 Action 的一些较高级特性,包括 Controller Factory.Action Invoker 和异步 Controller 等内容. ...

随机推荐

  1. 使用JobControl控制MapReduce任务

    代码结构 BeanWritable:往数据库读写使用的bean ControlJobTest:JobControl任务控制 DBInputFormatApp:将关系型数据库的数据导入HDFS,其中包含 ...

  2. windows下安装pywin32报错:close failed in file object destructor:sys.excepthook is missing lost sys.stderr

    今晚要写搜索引擎作业,搭scrapy环境,遇到了下面问题: windows下安装pywin32报错:close failed in file object destructor:sys.excepth ...

  3. EF学习 开始操作02

    历史版本和未来版本 本文介绍有关实体框架 (EF5) 最新版本的信息,其中大部分内容也适用于旧版本.有关完整版本列表以及各版本引入的功能的详细信息,请参阅 “版本历史”. “历史版本”页面包含实体框架 ...

  4. cluster KMeans need preprocessing scale????

    Out: n_digits: 10, n_samples 1797, n_features 64 ___________________________________________________ ...

  5. QWidget、QMainWindow、QFrame、QWindow、QDialog、QScrollArea区别

    QWidget是所有可视化控件的基类,可以直接渲染出一个窗口来. QMainWindow用来表示一个主窗口,这个主窗口可以设置菜单和工具栏 QFrame用来表示一个框架,用来当作容器,因为可以设置它的 ...

  6. resin启动时报错com.caucho.config.LineConfigException的解决

    resin启动时报以下错误: [13:32:10.120] {main} WEB-INF/web.xml:42: 'listener-class' is an unknown property of ...

  7. ACM学习历程—FZU2191完美的数字(数学)

    Description Bob是个很喜欢数字的孩子,现在他正在研究一个与数字相关的题目,我们知道一个数字的完美度是 把这个数字分解成三个整数相乘A*A*B(0<A<=B)的方法数,例如数字 ...

  8. openfire服务器开发环境搭建

    2017-07-26 更新:直接获取最新版源码,就不会报错了,而且可支持的插件多,老版本的openfire几乎没有可用的官方插件. 系统及软件环境: MAC OSX EI Capitan 10.11. ...

  9. BZOJ4010:[HNOI2015]菜肴制作

    我对贪心的理解:https://www.cnblogs.com/AKMer/p/9776293.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem ...

  10. 洛谷【P1358】扑克牌

    我对状态空间的理解:https://www.cnblogs.com/AKMer/p/9622590.html 题目传送门:https://www.luogu.org/problemnew/show/P ...