MVC2.0 基础知识
来源:互联网 发布:淘宝店卖家页面图片 编辑:程序博客网 时间:2024/04/30 08:18
一、MVC基础介绍
模型-视图-控制器(MVC)可能是近年来网络编程圈子里最常被提及的模式之一,微软推出Asp.netmvc后更是推波助澜,但由于在.net上MVC起步比较晚所以在.net平台上使用MVC架构做项目的并不是很多,绝大多数项目还是沿用着WebForm方案,当然这里并不是想说WebForm方案就不好,微软也一再强调Asp.netmvc并不是用来替代WebForm的,Asp.net mvc只是为开发者提供了新的选择,本系列希望可以帮助大家快速了解Asp.netmvc。
1、历史
MVC不是一种设计模式(design pattern),它是一种架构模式(Architecturalpattern),用以描述应用程序的结构以及结构中各部分的职责和交互方式。最早由TrygveReenskaug在1974年提出,是施乐帕罗奥多研究中心(XeroxPARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式的目的是实现一种动态的程式设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外此模式通过对复杂度的简化使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。目前我们在网络开发中所采用的这种模式实际上是原版模式的一个改编版。这种改编版架构模式的疯狂流行是由于两个极其流行的开发框架将这种模式包含了进来,它们是:Struts和 Ruby on Rails。这两个开发框架给稍后诞生的数百框架打上了深深的烙印。Asp.net mvc也深受其影响。
2、MVC各层次职责分解:
模型-视图-控制器架构模式背后的思想非常简单:我们的应用程序中必须区分下面这些职责:
模型(Model):
模型是指运用于数据之上的数据规则和数据内容,它一般对应于应用程序所要管理的对象。在软件系统中,任何事物都可以被抽象成可以对其以某种方式进行处理的数据模型。应用程序中的用户,信息以及图书是什么?它们只是一堆必须按照对应规则处理的数据(日期不能是未来的日期,电子邮件有特定的格式,名字的长度不能超过多少字符等等)模型给控制器提供了一个用户请求内容对应的数据表达(比如信息,书,相册)。不管我们如何向用户展示,这个数据模型都不会变。这也是我们为什么可以随意选择使用哪个视图来展示数据的原因。模型包含我们应用程序逻辑中最重要的组成部分,这些逻辑运用于我们要处理的问题过程中。控制器更多的是包含应用程序自身的内部组织逻辑(更像管家)。
视图(View):
视图提供了展示模型数据的不同方式。它可能是数据填充的模板。视图可以有多个,而控制器则决定使用哪个视图。一个网络应用通常由许多控制器,模型和视图组成。控制器可以被看成是一个主控制器,用于接收用户的所有请求,然后在调用特定的控制器来处理不同的情况。
控制器(Controller):
控制器掌管着用户的请求(当用户点击图形用户界面(GUI)上的元素执行操作时,控制器会收到HTTPGET或者POST请求)。它的主要功能就是调用并协调需要的资源/对象来执行用户请求。通常控制器会为任务调用合适的模型,以及选择合适的视图。
3、各层间调用关系:
我们先来看一下当用户访问mvc框架站点时的序列图
现在我们假设正在开发一个人事系统的员工展示业务,首先Controller收集用户提交过来的条件信息,根据条件信息调用Model,在Model中会把条件传给业务逻辑层,业务逻辑层会根据条件从数据库中获得相应的数据,然后将数据返回给Model,在Model中会将数据进行封装后传给Controller,然后Controller再根据需要显示的格式将相应的数据传给View,在View中执行显示逻辑,最后Controller将所要的View传给用户。
这里还要注意mvc各层的依赖关系:
Controller可以直接控制View和Model,View中可以直接控制Model,但Model中不要强依赖View中的内容只能通过弱依赖,比方说可以有些Model是专门为某些View而设计的,但不能在Model中直接调用View逻辑,从Model中应该看不到任何Controller的逻辑。
二、WEB Form
- MVC2.0 基础知识
- MVC2.0 基础知识
- MVC2.0皮毛学习笔记(MVC2.0+VS2008)
- ASP.NET MVC2.0介绍
- ext+mvc2.0登录面板
- vs2008安装mvc2.0步骤
- MVC2.0中的HtmlHelper大全
- Object c 基础知识
- Python - 基础知识1
- Python - 基础知识2
- Python - 基础知识3
- bigfile相关探讨 基础知识
- linux 基础知识测试
- Asp.net MVC2.0 简介(copy)
- Asp.Net MVC2.0 Url 路由入门
- MVC2.0中做分页和排序
- Asp.Net MVC2.0 Url路由
- Asp.Net MVC2.0 Url路由配置
- 比完美更重要的是完成
- C#中的PadLeft表示什么意思
- win7/win8下 cocos2d-x-3.2 Android 移植 环境搭建
- 杂碎知识记录
- VS2010快捷键
- MVC2.0 基础知识
- 我的博客今天1岁315天了,我领取了…
- [转]WCF生成客户端对象方式解析
- ASP.NET Global.asax详解
- 删除数据库重复数据
- 如何只备份一张表的数据
- 4个禁忌让你折寿20岁
- Html.ActionLink详解
- CSS 属性设置优先级问题