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

最新文章

  1. 生成Kindle可读的mobi和PDF电子书
  2. (转)【推荐】初级.NET程序员,你必须知道的EF知识和经验
  3. OutputCache属性详解(四)— SqlDependency
  4. 2015年江西理工大学C语言程序设计竞赛(高级组)
  5. Python实现kNN(k邻近算法)
  6. 一个关于ExtJS4具体控件的详细教程
  7. iOS开发——控制器OC篇&UINavigationController&UITabBarController详解
  8. uLua 学习笔记 之一 lua脚本 打包与读取
  9. SecureCRT自动登陆到服务器的脚本以及脚本编写简单说明
  10. 树莓派学习笔记——交叉编译练习之SQLite3安装
  11. [Linked List]Linked List Cycle,Linked List Cycle II
  12. POJ 3740 DLX
  13. 【前端基础】动态脚本与JSONP
  14. springboot~环境搭建与Helloworld
  15. webpack中babel配置 --- runtime-transform和babel-pollfill
  16. C# 实现Bresenham算法(vs2010)
  17. 今天才明白VC++.net的含义: VS系列的c++编译器可以支持托管C++(类似于C#,具体请看MS在线文档),当然包括winform界面开发。
  18. 51nod 1673 树有几多愁——虚树+状压DP
  19. Derby安装,创建数据库,在Java程序中使用Derby
  20. linuxea:ELK5.5-elasticsearch-x-pack破解

热门文章

  1. python3 字符串属性(四)
  2. Delpih - Format
  3. c# ListBox
  4. VC用MCI播放mp3等音乐文件
  5. Arc073_F Many Moves
  6. C易位构词(华师网络赛)(错排)
  7. ACM学习历程—HDU5475 An easy problem(线段树)(2015上海网赛08题)
  8. POJ3621Sightseeing Cows
  9. 【C/C++】assert
  10. Oracle 12C 新特性之级联truncate