快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20

概述

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。

处理流程

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

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

图1:Model-View-Controller

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

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

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

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

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

<asp:Content ID="content" ContentPlaceHolderID="DefaultContent" Runat="Server">
  <h1>ProductDetail</h1>
  <p>名称:<asp:Label ID="lbl_Name" runat="server" Text=""></asp:Label></p>
  <p>品牌:<asp:Label ID="lbl_Brand" runat="server" Text=""></asp:Label></p> 
</asp:Content>

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号