




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 采用行内代码进行数据的呈现,当然也可以使用服务器控件,示例代码:ASP.NET MVC Framework Sample | Title: Author: PubDate: Content: 在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和PresenterASP.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设计人员分开,如下图所示:对单元测试的支持在单元测试方面的支持,ASP.NET MVC Framework在出现的时候就讲促进清晰的关注分离,可测试性和TDD。MVC Framewrok中的所以核心契约都是基于接口的,可以轻易地通过Mock来模拟。可以不用在ASP.NET进程中运行控制器,就能进行单元测试。同时可以使用你想使用的任何单元测试框架来做单元测试,包括NUnit, MBUnit, MS Test等等。MVP模式的出现,在一定程度上是为了便于UI的单元测试。由于所有的处理都放在了Presenter中,View中的代码变得及其干净简单,所以可以很方便的进行单元测试,Web Client Software Factory中,提供了自动化项目指导包,可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年北京经济技术开发区教育领域招聘事业单位真题
- 2024年吉安市吉州区城市环境卫生服务中心招聘真题
- 2024年泰安市泰山城建投资集团有限公司招聘真题
- 河北地质大学华信学院《预防医学实验方法与技能》2023-2024学年第二学期期末试卷
- 江西科技师范大学《居住区规划及住宅设计》2023-2024学年第二学期期末试卷
- 汝州职业技术学院《生物防治学》2023-2024学年第二学期期末试卷
- 潍坊食品科技职业学院《食品质量管理1》2023-2024学年第二学期期末试卷
- Emricasan-Standard-PF-03491390-Standard-生命科学试剂-MCE
- 工业园区消防安全管理标准及实践
- 工业4.0的实践与展望
- 房屋加名合同协议书
- 2025年港口码头钢丝绳市场分析报告
- 夏季防火安全常识培训
- (高清版)DB33∕T 1205-2020 通风与空调工程施工质量验收检查用表标准
- 2025版校园食堂日管控、周排查、月调度记录表
- 辐射工作人员培训、体检及保健制度
- 商场安全隐患排查培训
- 无人机培训理论题库
- 2025年人教部编版语文四年级下册期末复习计划及全册单元复习课教案
- 水电站安全知识
- 2025年教育观念测试题及答案
评论
0/150
提交评论