ASP.NET MVC Framework与WCSF中MVP模式的比较

概述

MVC模式已经出现了几十年了,在GUI领域已经得到了广泛的应用,由于微软ASP.NET MVC Framework的出现,致使MVC一度成为.NET 社区的热名话题。作为MVC的变种MVP模式,也已经出现好几年了,在微软模式与实践小组提供的Web Client Software Factory中,给出了实现 MVP模式的应用程序最佳实践,本文将试着对这两种实现比较一二。

MVC(Model-View-Controller,模型-视图-控制器)模式是80年代 Smalltalk-80出现的一种软件设计模式,后来得到了广泛的应用,其主要目的在于促进应用中模型,视图,控制器间的关注的清晰分离。MVP( Model-View-Presenter,模型-视图-表示器)模式则是由IBM开发出来的一个针对C++和Java的编程模型,大概出现于2000年,是MVC模式的一个 变种,主要用来隔离UI、UI逻辑和业务逻辑、数据。在下面的文字中,如无特别说明,MVC均指ASP.NET MVC Framework。

处理流程

对于处理流程方面两者的区别,用下面这两幅图就可以说明一切:

图1:Model-View-Controller

图2:Model-View-Presenter

处理流程方面,在MVC 中,用户的请求首先会到达Controller,由Controller从Model获取数据,选择合适的View,把处理结果呈现到View上;在MVP中,用户的请求 首先会到达View,View传递请求到特定的Presenter,Presenter从Model获取数据后,再把处理结果通过接口传递到View。

View区别

ASP.NET MVC Framework中的View可以是一个ASP.NET页面、用户控件或者是母版页。需要分别s继承于ViewPage、ViewUserControl、 ViewMasterPage。示例代码:

public partial class Views_Blog_New : ViewPage
{

}

采用行内代 码进行数据的呈现,当然也可以使用服务器控件,示例代码:

<h2>ASP.NET MVC Framework Sample</h2>
<hr />
<%=Html.ActionLink("Home", "Index")%> |
<%=Html.ActionLink("New Post", "New")%>
<div>
  <%foreach (Post post in ViewData)
   { %>
   <div class="postitem">
    <strong>Title</strong>:<%=Html.Encode(post.Title) % ></br>
    <strong>Author</strong>:<%=Html.Encode(post.Author) %></br>
     <strong>PubDate</strong>:<%=Html.Encode(post.PubDate.ToShortDateString()) %></br>
     <strong>Content</strong>:<%=Html.Encode(post.Description) %></br>
    <% =Html.ActionLink("Edit", new {action="Edit", Id=post.Id })%>
  </div><br />
   <% } %>
</div>

时间: 2024-11-02 18:16:44

ASP.NET MVC Framework与WCSF中MVP模式的比较的相关文章

ASP.NET MVC Framework体验(5):路径选择(URL Routing)

概述 在传统的ASP.NET应用程序中,发生一个请求之后将映射到一个.aspx文件,且会 对应到一个具体的物理aspx文件.ASP.NET MVC Framework中,进入一个请求之后,不再是 映射到.aspx文件,而是由MVC Framework中提供的路径选择引擎,映射到正确的Controller 和Action执行请求.ASP.NET MVC Framework中URL路径映射规则定义在Global.asax中,这 在一定程序上带来了很多的灵活性,如果想要修改URL应用结构的话,只需要修

ASP.NET MVC Framework体验(4):控制器

概述 在MVC中,Controller用来处理和回应用户的交互,选择使用哪个View来进行显 示,需要往视图中传递什么样的视图数据等.ASP.NET MVC Framework中提供了IController 接口和Controller基类两种类型,其中在Controller提供了一些MVC中常用的处理,如定位 正确的action并执行.为action方法参数赋值.处理执行过程中的错误.提供默认的 WebFormViewFactory呈现页面.IController只是提供了一个控制器的接口,如果

ASP.NET MVC Framework体验(3):表单提交

概述 在前面的两篇文章总,我们分别做了一个简单的ASP.NET MVC的例子和进行数据 的绑定,在本文中,将通过ASP.NET MVC Framework实现表单的提交,你可以看到,在这里 有多种方法来获取表单数据,可以自动映射.通过Request对象获取等. 实现新增数 据 1.这里我们还采用上一篇做过的Blog示例(在后面的文章中,我将一直使用该示例) ,在这之前,先修改一下上次示例中的BlogRepository,为其增加一个Add方法: public void Add(Post post

ASP.NET MVC Framework体验(2):显示列表数据

概述 ASP.NET WebForm下,显示列表数据,经常会使用服务器控件GridView. DataList等.在ASP.NET MVC Framework中,我们有两种方式进行显示数据,一是使用行内 代码,即通过循环视图数据使用<%=%>标记进行呈现:二是使用服务器控件,同样可 以把视图数据绑定在服务器控件,如ASP.NET 3.5中的新控件ListView. 准备数据访 问 这里我们显示一个Post的列表DataContext和实体定义如下: [Database(Name="B

ASP.NET MVC Framework体验(1):从一个简单实例开始

概述 12月10日微软发布了ASP.NET 3.5扩展的预览版,在其中包括了ASP.NET MVC Framework.ASP.NET AJAX改进.ASP.NET动态数据支持.ASP.NET SIlverlight支持.以及 ADO.NET Data Services等.我也在第一时间下载下来进行了安装,体验了一下微软的 ASP.NET MVC Framework. 提起MVC,相信大家都不陌生了,这里简单的提两句,将 一个应用的实现分成三部分:模型(Model).视图(View).控制器(C

ASP.NET MVC Framework 系列

序言 做为设计模式的王者,MVC在众多领域都成为良好的模型的代名词,从前在ASP.NET下我们只能依靠Monorail来实现ASP.NET下无控件的MVC,但是现在ASP.NET 下的MVC已经成为现实. 本文只想让大家更直观地认知ASP.NET MVC,如果语言有所不当,还望大家海涵.当然,如果文中有所纰漏还希望大家及时指出,我也好做及时的修改.在下本着对初学者负责的态度来书写本系列中的各篇文章,但期间的恒心与毅力相信过来的人更加明白,所以如果书写有误希望大家谅解. ASP.NET MVC 正

Asp.net Mvc Framework在.net 2.0/IIS6下运行,补全

之前写过篇: Asp.net Mvc Framework 四 (在.net2.0下运行) 虽然在其它文章中也隐含了一些2.0运行的说明,但 是不够详细 下面说全 必备:.net framework 2.0 sp1 (v2.0.50727) 用Vs2008打开MVC工程 将目标平台转换为.net 2.0 (其实平台保持3.5也可以,只是不要在View中写C#3.0的语句,这个就要自己约束了,而转换后它是视为错误的) 复制System.Core.dll到Bin文件夹   如果编译通过则表示已经可以运

Asp.net Mvc Framework在.net 2.0/IIS6下运行,程序示例

Asp.net Mvc Framework在.net 2.0/IIS6下运行,补全   中我提到了完整的方法 但是有些朋友还是不太明白,这里我给出一个现成的工程   发布后将生成的文件与DLL复制到IIS或虚拟主机目录下即可   http://files.cnblogs.com/chsword/dotnet2.rar

[转]Asp.net Mvc Framework 系列

  from:http://www.cnblogs.com/chsword/archive/2008/03/10/1099474.html 做为设计模式的王者,MVC在众多领域都成为良好的模型的代名词,前日我们只能靠Monorail来实现Asp.net的Mvc的而且确Asp.netMvc已经成为现实 本文只想让大家更直观地认知Asp.net Mvc,如果语言有所不当,还望先贤海涵,当然,如果文中有所纰漏还希望大家指出 尽量本着对初学者负责的态度来写,但期间的恒心与毅力相信过来的人更加明白,所以如