快速搞懂ASP.NET MVC

有一只企鹅首先发现地球暖化、冰山在融化,回来告诉其它企鹅,却没有任 一只企鹅愿意相信;因为企鹅们觉得现在生活过得很好,都不想费心思考如何改 变、改变何时会来临,因此仍每天做例行性的工作,不愿去研究别人的观点。「 有时人们会抗拒改变,其实只是不想改变;但是愿意接收新观念的技术人员,通 常会活得比较久」。本帖只提供 MVC Pattern 的观念和架构介绍,仅供未接触 过 MVC Framework 的 .NET 技术人员作为参考之用,以评估是否要深入学习或 在将来的项目导入。

常在网络上,看到有网友误认 MVC 和 3-Tier (三 层架构) 是类似的东西:

http://topic.csdn.net/u/20090405/21/97a137ff-2105-4117-a0c3- 39d7f0f1c952.html

http://topic.csdn.net/u/20090415/13/9ebe5011- c56b-47e6-9f89-40b70896a041.html

但二者本质上是完全不同的概念, 如下:

3-Tier 或 N-Tier 的架构,中间层可能包含 EJB, Enterprise JavaBeans (J2EE),或 .NET Enterprise Services、Remoting、WCF:

Client (WebPage) -- [ BLL (业务逻辑层) -- DAL (数据访问层) ] (Web Server) -- 数据来源或数据库

Client (WebPage) -- [ BLL (业务 逻辑层) -- DAL (数据访问层) ] (Web Server + Application Server) -- 数 据来源或数据库

MVC 则为:

● Model (模型) - 包含 BLL、DAL 。View 和 Controller 都依赖于 Model,但是 Model 既不依赖于 View,也不 依赖于 Controller,这是分离的主要优点之一

● View (视图) - 仅负 责生成输出 (UI)。以 ASP.NET MVC 来说,不再有 Code-behind 这种 .aspx.cs 文件,亦无 runat="server" 标记、form 标记、控件声明、事件处 理

● Controller (控制器) - 控制整个系统的 workflow、运作逻辑、 错误处理、身分验证和授权、用户输入数据验证、…等等

总的来 讲,微软的 ASP.NET MVC Framework 是为了让 ASP.NET 更适合中、大型的项目 ,能统一规划、控管整个网站系统的流程 (用 Controller 处理),并更有效地 分工开发、日后维护 (避免许多 WebForm 里重复出现相同功能的自定义函数)、 管控某个功能在修改后对系统整体的影响,并将不同的功能作更明确地切割,让 不同专长的技术人员各司其职,也顺便提高了代码的可读性,便于测试 (TDD, test -driven development) (减少直接绑到用户界面中的代码量) [4],并达到 「松散耦合 (loosely coupled)」,让组件易于更换和重复使用。但也因此, ASP.NET 程序员必须先改变过去,把很多业务逻辑、输入验证、页面切换 …等杂七杂八的功能,全部写在 Code-Behind (aspx.cs) 里的旧习惯。

ASP.NET MVC provides a framework that enables you to easily implement the model-view-controller (MVC) pattern for Web applications. This pattern lets you separate applications into loosely coupled, pluggable components for application design, processing logic, and display. ASP.NET MVC also greatly facilitates test -driven development (TDD).

事实上,MVC Pattern 的发明已有二十多年,其与 再衍生的观念和框架 (MVP),在 Java / J2EE / Struts 的一些 Framework 早 已行之多年。MVC 模式的结构如下 [4]:

● View (JSP) 只纯粹用来生 成输出,不涉及数据来源的访问、事件处理、各种逻辑处理和运算工作。因此更 适合大型项目的分工,把这层完全交由美工人员制作 (而非程序员兼美工和排版 )。此层如同 ASP.NET 中的 .aspx 前台页面,亦即 UI (User Interface)。

● Model (JavaBean、EJB 组件) 用来存放独立且可重复使用的组件, 包括:数据来源 (数据库) 的访问、商业逻辑的代码,并应与 View 作完整地切 割,以便保留系统日后扩充或改写时的弹性。此层如同 ASP.NET 中的 App_Code 文件夹中的自定义类、DataSet (.xsd)、TableAdapter、…等等。

● Controller (Java Servlet) 用来控制整个网站处理的「流程」,负 责协调 View 和 Model 之间的流程传递和转向,也要管理和指派由哪个文件去 接收用户所提出的「请求 (request)」,亦即由它决定要展现哪一个 aspx 文件 给用户。当用户从浏览器送出 request 时 (例若用鼠标单击页面中的控件,或 输入数据后单击 Button 的提交、输入 URL 网址、点选 hyperlink…等 等),Controller 里定义的某些 method 会判断要交由 Model 中的哪些运算逻 辑去处理,然后再判断要将处理结果传回哪一个 View 去显示出来。此外, Controller 还可包含错误处理、授权、输入验证…等功能的代码,集中 统一处理,以避免传统 WebForm 里大量重复的代码。但说穿了,Controller 事 实上只是一个自定义类,搭配一些 Attribute (特性)。而 Controller 也是目 前 ASP.NET 所欠缺的部分。

图 1 MVC (Model 2) 架构的运作方式,可与下图 2 的 ASP.NET MVC 项目 相互对应

时间: 2016-12-20

快速搞懂ASP.NET MVC的相关文章

[求教]如何快速的入门ASP.NET MVC?

问题描述 求教各位大虾,小弟最近接触一个网站建设的项目,要用到MVC4.0,但是之前只有些C#经验,网页设计经验也为0,如何才能在短期内入门MVC?有热心的大虾指导一条明路吗,比如参考书.学习视频之类的,小弟不甚感激啊! 解决方案 解决方案二:http://www.w3school.com.cn/aspnet/mvc_intro.asphttp://download.csdn.net/detail/laoge/6949301解决方案三:视图控制器/ACTION模型搞清楚这个几,在新建个项目研究一

快速搞懂Android口令加密(一)_Android

废话不多说了,直接给大家贴代码了. import java.util.Random; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEParameterSpec; public class Token { /* * 基于口令

快速搞懂Android口令加密(一)

废话不多说了,直接给大家贴代码了. import java.util.Random; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEParameterSpec; public class Token { /* * 基于口令

ASP.NET MVC学习笔记_实用技巧

网上关于ASP.NET MVC的系列教程有好几个,所以就不从头开始介绍了,结尾处给大家推荐了几个链接,需要的话可以从头系统的看看. 1.ASP.NET MVC介绍及与ASP.NET WebForm的区别 刚开始为了搞清楚ASP.NET MVC到底值不值得用,翻来覆去想了一个多礼拜,看了好多资料和评论,最后决定还是值得一用.MVC不是一个简单的设计模式,更像一种架构模式,或者一种思想,刚开始一听MVC想到的就是模板引擎,NVelocity,StringTempleate等,但感觉如果只是为了用模板

技术-现在手上有一个asp.net mvc通用权限管理框架,想交换其它.net快速开发框架。

问题描述 现在手上有一个asp.net mvc通用权限管理框架,想交换其它.net快速开发框架. 主要用来学习这方面的技术,提升自己的水平.扩展自己的知识面.扣扣:八七八零壹壹八四六 解决方案 www.51aspx.com 这里找找看 解决方案二: 这种框架,你在google里面搜索 site:download.csdn.net .net 开发框架 能找出千千万万.但是我从来没有听说过有人用这些垃圾代码能"提升水平"的.

ASP.NET MVC 5 学习教程:快速入门

原文 ASP.NET MVC 5 学习教程:快速入门 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQL Server LocalDB Edit方法和Edit视图详解 添加查询 Entity Framework 数据迁移之添加字段 添加验证 Details 和 Delete 方法详解 本教程将介绍如何使用Visual Studio Express 201

利用ASP.NET MVC和Bootstrap快速搭建个人博客之后台dataTable数据列表_实用技巧

jQuery dataTables 插件是一个优秀的表格插件,是后台工程师的福音!它提供了针对数据表格的排序.浏览器分页.服务器分页.查询.格式化等功能.dataTables 官网也提供了大量的演示和详细的文档进行说明,为了方便使用,这里进行详细说明. 去官网:https://www.datatables.net/ 下载最新版本是v1.10.12. 在页面引入: <link rel="stylesheet" href="~/Content_Admin/css/boots

利用ASP.NET MVC和Bootstrap快速搭建个人博客之文章打赏功能(六)_实用技巧

看到新浪微博.百度百家等平台上都带有文章"打赏"功能,觉得很新鲜,于是也想在自己的博客中加入"打赏"功能. 当然,加入打赏功能并非是真的想要让别人打赏.因为只有那些真正能引起共鸣,发人深思,让人受益匪浅的文章才值得打赏,值得点赞. 而我的博客站仅仅是用作记录笔记,当做自己的知识库(如果能不经意间帮助别人那是再好不过了). 加入打赏功能纯粹是"觉得好玩",就是这么简单,Just have a fun!(博主喜欢折腾,看见一个酷炫的功能就想去实现它)

利用ASP.NET MVC和Bootstrap快速搭建响应式个人博客站(一)_实用技巧

1.0 为什么要做这个博客站? 因此,我下决心开发一个个人技术博客站.主要原因是:可以整合各种宝贵资源,将知识变为宝库:可以借此巩固加强一下自己的"全栈"基础:记录工作生活中遇到的问题及其解决方案:可以帮助遇到同样问题的网友. 2.0 简单介绍下此个人博客用到的技术点 可以先点击进去看看.地址是http://www.zynblog.com该博客站基于ASP.NET MVC + EF6.0,采用Bootstrap响应式布局搭建,因此使用IE8以下的浏览器访问时可能会出现错位等一系列问题.