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
ASP.NET MVC 小牛之旅1:何谓MVC的更多相关文章
- ASP.NET MVC 小牛之旅4:ASP.NET MVC的运行生命周期
ASP.NET MVC的运行生命周期大致分成三大过程:(1)网址路由对比. (2)运行Controller与Action. (3)运行View并回传结果. 4.1网址路由对比 当iis收到http请求 ...
- ASP.NET MVC 小牛之旅3:Routing——网址路由
网址路由(Routing)在ASP.NET MVC中有两个主要用途,一个用途是匹配通过浏览器传来的HTTP请求,另一个用途则是响应适当的网址给浏览器. 3.1匹配通过浏览器传来的HTTP请求 首先我们 ...
- ASP.NET MVC 小牛之旅2:体验第一个MVC程序
了解了什么是MVC之后,接下来用一个非常简单的留言板程序概要的了解MVC网站开发的过程,对MVC开发有个大致的轮廓.第一个项目将不会提到过多与数据库相关的技术,因此将以Framework Code F ...
- [ASP.NET MVC 小牛之路]01 - 理解MVC模式
本人博客已转移至:http://www.exblr.com/liam PS:MVC出来很久了,工作上一直没机会用.出于兴趣,工作之余我将展开对MVC的深入学习,通过博文来记录所学所得,并希望能得到各 ...
- [ASP.Net] 转 > ASP.NET MVC 小牛之路
URL: http://www.cnblogs.com/willick/ 看到了不错的学习笔记,MVC.Net学习之路展开 [ASP.NET MVC 小牛之路]18 - Web API [ASP. ...
- [ASP.NET MVC 小牛之路]04 - 依赖注入(DI)和Ninject
本人博客已转移至:http://www.exblr.com/liam 为什么需要依赖注入 在[ASP.NET MVC 小牛之路]系列的理解MVC模式文章中,我们提到MVC的一个重要特征是关注点分离( ...
- [ASP.NET MVC 小牛之路]05 - 使用 Ninject
在[ASP.NET MVC 小牛之路]系列上一篇文章(依赖注入(DI)和Ninject)的末尾提到了在ASP.NET MVC中使用Ninject要做的两件事情,续这篇文章之后,本文将用一个实际的示例来 ...
- [ASP.NET MVC 小牛之路]06 - 使用 Entity Framework
在家闲着也是闲着,继续写我的[ASP.NET MVC 小牛之路]系列吧.在该系列的上一篇博文中,在显示书本信息列表的时候,我们是在程序代码中手工造的数据.本文将演示如何在ASP.NET MVC中使用E ...
- [ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)
继上一篇文章之后,本文将介绍 Controller 和 Action 的一些较高级特性,包括 Controller Factory.Action Invoker 和异步 Controller 等内容. ...
随机推荐
- Oracle数据库定义语言(DDL)
--使用Create遇见创建表 Create Table table_name ( column_name datatype [null|not null], column_name datatype ...
- HDU 2089 不要62:数位dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意: 问你在区间[n,m]中,有多少个数字不含"4"且不含"62 ...
- BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊:分块
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2002 题意: 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆 ...
- BZOJ 2243 [SDOI2011]染色:树剖【维护路径上颜色段】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2243 题意: 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径 ...
- HTML-CSS浮动元素详解
浮动定位是指 1.1将元素排除在普通流之外,即元素将脱离标准文档流 1.2元素将不在页面占用空间 1.3将浮动元素放置在包含框的左边或者右边 1.4浮动元素依旧位于包含框之内 2. 浮动的框可以向左或 ...
- C++ STL中Map的按Key排序跟按Value排序
C++ STL中Map的按Key排序和按Value排序 map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定 ...
- SQL Server convet函数data_type默认长度
语法 CONVERT(data_type(length),data_to_be_converted,style) data_type(length) 规定目标数据类型(带有可选的长度),默认30个字符 ...
- Java_异常_04_ OutOfMemoryError系列
二.参考资料 1.铁猫 OutOfMemoryError系列(1): Java heap space OutOfMemoryError系列(2): GC overhead limit exceeded ...
- 时间复杂度O(n)与空间复杂度O(1)
把输入规模看成x轴,所花时间/空间看成y轴.O(n)就是 y = x, y随x的增长而线性增长.一条斜线O(1)就是 y = 1,不管x如何变,y不变.一条与x平行的线 举个简单的例子,要从0加到n, ...
- freeMarker(六)——程序开发指南入门
学习笔记,选自freeMarker中文文档,译自 Email: ddekany at users.sourceforge.net 1.创建Configuration实例 首先,你应该创建一个 free ...