All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
asp.net2.0中使用session进行用户登录验证
C#中如何读写INI文件_.net资料_编程技术
九大措施教你安全配置SQL Server 2000_[SQL Server教程]
C#教程:C#调用动态链接库
如何加快数据库查询速度-_[SQL Server教程]
分清SQL,Server中易混淆的数据类型_[SQL,Server教程]
ASP.NET生成静态HTML页面并分别按年月目录存放_[Asp.Net教程]
用ImessageFilter实现截获键盘动作_[Asp.Net教程]
使用ASP.NET,Atlas开发检测密码强度的自定义Behavior_[Asp.Net教程]
在PHP中全面阻止SQL注入式攻击之一_[PHP教程]
Reading number is top 10 pictures
Group of female porn in 《westwards》, uninhibited woman threatened to not the bottom line
Tie a large font of mouse
这只猪到底犯了什么错?
两个妞在等世界上最短的火车
From China fortress sora aoi4
美女
Ashlynn Brooke a group sexy photo1
The world's top ten most beautiful railway station2
Born After 90 Beijing sports university campus flower photos4
色狗系列
Download software ranking
Sora aoi‘s film--Lust fan wall
The Bermuda triangle3
尖东毒玫瑰B
Unix video tutorial2
Boxer Classic video1
Boxer's Top ten classic battle4
Unix video tutorial3
SP4 for SQL2000
功夫熊猫2(上集)
Call Of Duty2
归海一刀 published in(发表于) 2014/1/30 0:52:25 Edit(编辑)
ASP.NET,MVC,Framework与WCSF中MVP模式之小小比较_[Asp.Net教程]

ASP.NET,MVC,Framework与WCSF中MVP模式之小小比较_[Asp.Net教程]

ASP.NET MVC Framework与WCSF中MVP模式之小小比较_[Asp.Net教程]


概述


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。


处理流程


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


MVCVSMVP_001


图1:Model-View-Controller


MVCVSMVP_002


图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
{
}

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

ASP.NET MVC Framework Sample




<%=Html.ActionLink("Home", "Index")%> |
<%=Html.ActionLink("New Post", "New")%>
<%foreach (Post post in ViewData)
{ %>
Title:<%=Html.Encode(post.Title) %>

Author:<%=Html.Encode(post.Author) %>

PubDate:<%=Html.Encode(post.PubDate.ToShortDateString()) %>

Content:<%=Html.Encode(post.Description) %>

<%=Html.ActionLink("Edit", new {action="Edit", Id=post.Id })%>


<% } %>

在MVP中,仍然采用WebForm模型,其中View分为View接口和View实现两部分,实现部分可以是ASP.NET页面、用户控件或者母版页:

public interface IProductDetail
{
string Name { set;}
string Brand { set;}
}
public partial class Products_ProductDetail : Page, IProductDetail
{
}

使用服务器控件进行呈现(也可以是HTML控件):


ProductDetail


名称:


品牌:



Controller和Presenter


ASP.NET MVC Framework中,一个View在整个应用程序中可以被多个Controller所调用。

public class PostController : Controller
{
[ControllerAction]
public void New()
{
RenderView("New");
}
}
public class BlogController : Controller
{
[ControllerAction]
public void New()
{
RenderView("New");
}
}

MVP中一个View在整个应用程序中只对应一个特定的Presenter:

public partial class Products_ProductDetail : Page, IProductDetail
{
private ProductDetailPresenter _presenter;
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this._presenter.OnViewInitialized();
}
this._presenter.OnViewLoaded();
}
[CreateNew]
public ProductDetailPresenter Presenter
{
set
{
this._presenter = value;
this._presenter.View = this;
}
}
}

对开发过程的影响


在ASP.NET MVC Framework中,采用行内代码进行数据呈现,逻辑集中在Controller中,但是View无法完全交给UI设计人员完成。在MVP模式中,所有的业务逻辑交给Presenter去处理,这样View中代码就变得及其简洁,将可以轻易的把开发人员和UI设计人员分开,如下图所示:


MVCVSMVP_003


对单元测试的支持


在单元测试方面的支持,ASP.NET MVC Framework在出现的时候就讲促进清晰的关注分离,可测试性和TDD。MVC Framewrok中的所以核心契约都是基于接口的,可以轻易地通过Mock来模拟。可以不用在ASP.NET进程中运行控制器,就能进行单元测试。同时可以使用你想使用的任何单元测试框架来做单元测试,包括NUnit, MBUnit, MS Test等等。


MVP模式的出现,在一定程度上是为了便于UI的单元测试。由于所有的处理都放在了Presenter中,View中的代码变得及其干净简单,所以可以很方便的进行单元测试,Web Client Software Factory中,提供了自动化项目指导包,可以直接创建测试项目。


结束语


对于ASP.NET MVC Framework和WCSF中的MVP模式之小小比较,到这里就结束了,不管是ASP.NET MVC Framework还是WCSF中的MVP模式,都是非常优秀的模型,值得我们更进一步去研究。


作者:TerryLee


出处:http://terrylee.cnblogs.com







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.