[一步一步MVC]第六回:什么是MVC(上)?

本系列文章导航

[一步一步MVC]第一回:使用ActionSelector控制Action的选择

[一步一步MVC]第二回:还是ActionFilter,实现对业务逻辑的统一Authorize处理

[一步一步MVC]第三回:MVC范例大观园

[一步一步MVC]第四回:漫谈ActionLink,有时“胡搅蛮缠”

[一步一步MVC]第五回:让TagBuilder丰富你的HtmlHelper

[一步一步MVC]第六回:什么是MVC(上)?

引言

所谓MVC,其实就是M、V、C而已。归根揭底,MVC是一种表现模式,是一种软件架构模式。其中有几个重要的概念:

M,Model, 引用系统数据,管理系统功能并通知View更改用户操作。 V,View,就是用户接口,用于显示数据。 C,Controller ,将用户操作映射到Model,并操作视图。 R,Routing ,MVC的奥秘在于通过Routing实现了对URL的路由选择,完
成了上述3个基本概念的基础逻辑。

我们先来了解这几个概念之间的联系。

对MVC而言,分离是最大的优点,尤其是Model将不依赖于Controller和View,对于隔离应用、进行UI测试打下很好的架构级支持。

MVC Execution Process

关于MVC的执行过程,我们就不多言了,从MSDN获取的执行过程可以被解析为:

在MVC模式下,不同于WebForm时代,业务逻辑的处理和HTML的输出不是View(或Page)一个人的事儿,这些逻辑被清晰的分解为M、V和C的逻辑,具体的执行流程为:

ASP.NET MVC Execution Process

Stage

Details

Receive first request for the application

In the Global.asax file, Route objects are added to the RouteTable object.

void Application_Start(object sender, EventArgs e) { RegisterRoutes(RouteTable.Routes);}public static void RegisterRoutes(RouteCollection routes){ routes.Add(new Route ( "Category/{action}/{categoryName}" , new CategoryRouteHandler() ));}

Perform routing

The UrlRoutingModule module uses the first matching Route object in the RouteTable collection to create the RouteData object, which it then uses to create a RequestContext object.

Create MVC request handler

The MvcRouteHandler object creates an instance of the MvcHandler class and passes the RequestContext instance to the handler.

Create controller

The MvcHandler object uses the RequestContext instance to identify the IControllerFactory object (typically an instance of the DefaultControllerFactory class) to create the controller instance with.

Execute controller

The MvcHandler instance calls the controller's Execute method.

Invoke action

For controllers that inherit from the ControllerBase class, the ControllerActionInvoker object that is associated with the controller determines which action method of the controller class to call, and then calls that method.

Execute result

The action method receives user input, prepares the appropriate response data, and then executes the result by returning a result type. The built-in result types that can be executed include the following: ViewResult (which renders a view and is the most-often used result type), RedirectToRouteResult, RedirectResult, ContentResult, JsonResult, FileResult, and EmptyResult.

我就不翻译了,反正很好理解。

优点和优点

我们不说废话,先对MVC与传统ASP .NET WebForm application进行一番比较。

MVC通过model、view和controller有效的简化了
复杂的架构,
体现了很好的隔离原则。 一切皆可测试。 一切皆可扩展:ViewEngine、HtmlHelper还有Filter。 适用于大型架构开发。 强类型View实现,更安全、更可靠、更高效。 开源,意味着更好的控制和理解。 没有View State,没有Server Control,这显然是个
好处。 WebForm支持事件驱动模型开发,拖拽即可形成应用,简单易懂。 可以应用MVP模型,为每个page添加功能。 应用ViewState和Server Control,显然也是优点。 适用于快速开发。

本文仅仅是个简单的介绍,关于什么是MVC这个话题,还有很多东西,我们下回再见吧。

参考文献MVC Framework and Application Structure http://blogs.msdn.com/alikl/archive/2009/03/31/asp-net-mvc-for-aspiring-architects-1.
aspx

时间: 2024-07-31 02:21:30

[一步一步MVC]第六回:什么是MVC(上)?的相关文章

艾伟_转载:[一步一步MVC]第六回:什么是MVC(上)?

本系列文章导航 [一步一步MVC]第一回:使用ActionSelector控制Action的选择 [一步一步MVC]第二回:还是ActionFilter,实现对业务逻辑的统一Authorize处理 [一步一步MVC]第三回:MVC范例大观园 [一步一步MVC]第四回:漫谈ActionLink,有时"胡搅蛮缠" [一步一步MVC]第五回:让TagBuilder丰富你的HtmlHelper [一步一步MVC]第六回:什么是MVC(上)? 引言 所谓MVC,其实就是M.V.C而已.归根揭底,

艾伟:[一步一步MVC]第一回:使用ActionSelector控制Action的选择

本系列文章导航 [一步一步MVC]第一回:使用ActionSelector控制Action的选择 [一步一步MVC]第二回:还是ActionFilter,实现对业务逻辑的统一Authorize处理 [一步一步MVC]第三回:MVC范例大观园 [一步一步MVC]第四回:漫谈ActionLink,有时"胡搅蛮缠" [一步一步MVC]第五回:让TagBuilder丰富你的HtmlHelper [一步一步MVC]第六回:什么是MVC(上)? ActionFilter一定是MVC控制中对于Act

艾伟_转载:[一步一步MVC]第四回:漫谈ActionLink,有时“胡搅蛮缠”

本系列文章导航 [一步一步MVC]第一回:使用ActionSelector控制Action的选择 [一步一步MVC]第二回:还是ActionFilter,实现对业务逻辑的统一Authorize处理 [一步一步MVC]第三回:MVC范例大观园 [一步一步MVC]第四回:漫谈ActionLink,有时"胡搅蛮缠" [一步一步MVC]第五回:让TagBuilder丰富你的HtmlHelper [一步一步MVC]第六回:什么是MVC(上)? MVC时代来临了,但是一开始是不被很多人接受的.可能

艾伟_转载:[一步一步MVC]第五回:让TagBuilder丰富你的HtmlHelper

本系列文章导航 [一步一步MVC]第一回:使用ActionSelector控制Action的选择 [一步一步MVC]第二回:还是ActionFilter,实现对业务逻辑的统一Authorize处理 [一步一步MVC]第三回:MVC范例大观园 [一步一步MVC]第四回:漫谈ActionLink,有时"胡搅蛮缠" [一步一步MVC]第五回:让TagBuilder丰富你的HtmlHelper [一步一步MVC]第六回:什么是MVC(上)? 对HtmlHelper进行扩展,是MVC中对于Vie

艾伟_转载:[一步一步MVC]第二回:还是ActionFilter,实现对业务逻辑的统一Authorize处理

本系列文章导航 [一步一步MVC]第一回:使用ActionSelector控制Action的选择 [一步一步MVC]第二回:还是ActionFilter,实现对业务逻辑的统一Authorize处理 [一步一步MVC]第三回:MVC范例大观园 [一步一步MVC]第四回:漫谈ActionLink,有时"胡搅蛮缠" [一步一步MVC]第五回:让TagBuilder丰富你的HtmlHelper [一步一步MVC]第六回:什么是MVC(上)? 由问题引出 在ASP .NET MVC中,以友好的U

[一步一步MVC]第三回:MVC范例大观园

MVC是个新鲜的东西,至少为ASP .NET Web世界带来或多或少的争议,褒奖者有之,诋毁者有之.这也正常,人类的思维确实没法统一,即便是多个选择其实是件好事儿也一样.不管怎样,评说者至少应该在了解的基础上再进行评论,才显得"专业",没有品味的找茬型选手实在不值得恭维. 作为MVC范例集锦,我将MVC发布之后业界的应用开源项目做个简单的整理,Anytao不打算对任何项目发表个人观点,因为有些项目未经本人了解,所以此处仅是one by one式的陈列,期望对学习者有些帮助而已. Ner

一步一步写算法(之 回数)

原文:一步一步写算法(之 回数) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com]     回数的概念比较好玩,就是说有这么一个字符串str, 长度为n, 现在index开始从0->index/2遍历,那么str[index] = str[n-1-index],那么这种数据就是我们通常说的回数.比如说a = "a"是回数, a = "aba"是回数, a = "strarts"也是回数

一步一步搭建11gR2 rac+dg之安装rac出现问题解决(六)

一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之安装rac出现的问题 (六)   本章主要是搜集了一些安装rac的过程中出现的问题及解决办法,如果没有出现问题的话那么这一章可以不看的       目录结构: crs安装出现的问题 Oracle 11g RAC CRS-4535/ORA-15077 新安装了Oracle 11g rac之后,不知道是什么原因导致第二个节点上的crsd无法启动?其错误消息是CRS-4535: C

一步一步SharePoint 2007之二十六:编写一个带事件的WebPart

摘要 前面的文章中,我们编写了一个非常简单的WebPart,它只能输出一个Hello World!的字符串. 很显然,这种WebPart根本就没有什么实际的作用.有没有办法编写比较复杂一些的,比如是带事件的 WebPart呢? 本篇文章将介绍如何编写一个带事件的WebPart. 正文 要实现带事件的WebPart,实际上就是要实现有复合控件的WebPart,这在开发过程中具有非常的的实 际意义.如果我们能够做到这点,那么,其它的什么样的WebPart,相信大家都能举一反三的做到. 这里,我就用一