使用PureMVC实现ASP.NET的MVC结构开发

对PureMVC的认识是从学习Flex开始的,关于它的资料实在是少得可怜,只有官网上的一个PDF,而且写得也不够详细。我以前的一篇文章PureMVC的原理和逻辑提到了,PureMVC只是一个纯框架而已,那么他自然也是支持ASP.NET的了。但是在网上却根本找不到PureMVC在C#方面的应用的资料。有热心的读者看了我先前的文章后,希望我能做个C#的Demo出来。其实,这已经是我计划中的事情了,但由于一直都很忙,直到现在才好不容易挤出点时间写了个ASP.NET的Demo。Demo是我一贯喜欢做的登录实例,我个人觉得,对于Web应用,登录功能是最好的入门实例了。

Demo是使用PureMVC开发的,如果读者对PureMVC还不太了解,建议先看一下官网的Best Pratice,对PureMVC的结构有个大概的了解。接下来我将详细的讲解Demo的实现。

首先是MyFacade类(名字是随便取的),这个类继承父类org.puremvc.csharp.patterns.facade,用于管理整个应用程序的MVC,在MyFacade类中定义了一个方法:

Code
  /// <summary>
  /// 单例模式实例化对象
  /// </summary>
  /// <returns></returns>
  new public static MyFacade getInstance()
  {
    if (Instance == null)
    {
      Instance = new MyFacade();
    }
    return Instance;
  }

使用单例模式实例化MyFacade类,由于PureMVC使用的是Java的命名规范,所以getInstance方法的首字母是小写的,用它来覆盖父类的同名方法。在PureMVC中,所有的Command,Mediator,Proxy都要注册后才能够使用。

Code
  /// <summary>
  /// 初始化Controller,注册需要使用到的Command
  /// </summary>
  protected override void initializeController()
  {
    base.initializeController();
    registerCommand(MyFacade.DEFAULTSTARTUP, typeof(DefaultPageCommand));
  }

initializeController方法用来初始化Controller,因为Controller负责管理Command,可以在这个方法里面注册需要使用到的Command。因为网页不同于Flex,它是多页面的应用,所以我为每个页面都注册一个单独的Command,用来注册页面中需要用到的其它Command。因为这个Demo只实现了一个功能,所以只在这里注册了一个页面级的DefaultPageCommand。虽然这里也可以注册其它的Command,但是,我建议为每一个页面创建一个页面级的Command类,在这个类里面注册其它页面中需要使用到的Command,这样更方便于管理和分类。

Code
  protected override void initializeModel()
  {
    base.initializeModel();
    registerProxy(new UserProxy());
  }

initializeModel方法和initializeModel方法的原理是一样的,只是它注册的是Proxy而已。Proxy用于访问数据模型,存取数据,相当于平时的数据访问层吧。这里我只用到了UserProxy类,用于读取用户的信息。

Code
  /// <summary>
  /// 启动页面,注册其它类
  /// </summary>
  /// <param name="page"></param>
  public void DefaultPage(Page page)
  {
    sendNotification(MyFacade.DEFAULTSTARTUP, page);
  }

时间: 2024-12-31 22:01:01

使用PureMVC实现ASP.NET的MVC结构开发的相关文章

ASP.NET下MVC设计模式的实现

asp.net|设计 ASP.NET是微软最新推出的新型体系结构.NET框架的一部分,它为构造新一代动态网站和基于网络的分布式应用提供了强有力的支持.与以前的 Web 开发模型相比,ASP.NET 提供了许多重要的优点例如: 简易性:安全性:可管理性等.而且与基于过程的ASP页面技术相比,面向对象技术在ASP.NET中得到了完全实现.用传统ASP技术建立的Web应用实例中,在页面中同时实现显示,业务逻辑和流程控制,这从工程化的角度考虑,它有许多不足之处.用户界面承担着向用户显示问题模型和与用户进

ASP.NET的MVC设计模式

当开发者听到"设计模式"这个词时,他们通常联想到两个场景. 一组开发者正在讨论许多创造性意见,正在开会,但是却没有进行编码.另外一 组人能制定出正确的计划,保证系统能够开发成功,代码可以重用. 而现实一般都处于两者中间.在为他们的公司设计解决方案的时候,结构设计 者和系统设计者应该寻找重复的模式.但是模式只是开发健壮.可重用代码的一 个指导.结构设计者不能过多的去设计一个解决方案的结构,因为要定期交货. 过多的设计系统结构的主要受害者是Web应用程序.因为多数Web应用程序是用 来浏览

asp.net的MVC编程、MV编程以及URL重写

 前一段时间做一个网站项目,使用win2003+.net2.0开发:在学习了一些.net的相关知识后,并考虑到此项目需要多人合作,以及架构清晰.URL重写等优点,决定用MVC方式开发.但微软的.net MVC框架据说要下半年才出正式版,而且还需要.net3.5,其他的MVC框架又不熟悉,估计也需要一段时间学习.由于开发时间比较紧,我们开发小组中也没有一个对.net及.net MVC框架非常熟悉的人,所以又想转回使用传统的.net编程方式开发. 在两难之际,我想也许可以在项目需求出来前,自己试着写

PHP5中MVC结构学习

php5 一.介绍 现在在开发WEB应用的时候,比较流行的一种做法就是使用"MVC"结构,使用如此方式去开发WEB应用程序,逻辑性强.简浩明了,使程序设计起来更加方便,快捷.何为"MVC"呢?简单的来说,它就是"模型(Model)"."视图(View)"及"控制器(Controller)"的结合体,也就是所有的"三层"抽象结构,当然这里所说的"MVC"是针对WEB上应

ASP.NET 揭秘 ASP.NET页面的结构

asp.net|页面 The Structure of an ASP.NET Page ASP.NET页面的结构(6部分) Directives指示 <%@ .... %>两大类Page/Import  Page Directives页指示    语言指示<%@ Language="C#" %> <%@ Page Language="C#" %>   跟踪指示<%@ Trace="True" %>

PHP实例:实现超级简单的MVC结构

下面是一个超级简单的MVC结构实现,甚至连数据源都用了一个内置的固定数组,虽然简单,但其实众多的PHP Framework核心实现的思想应该和这个是差不多的 只不过一些framework提供了更多的方便开发者使用的工具,我也想自己来实现一个PHP的 框架,目前正在着手策划中,也希望自己能够从框架的开发中学习到更多的PHP设计思想和方法. Controller.php include 'Model.php'; include 'View.php'; class Controller {     p

使用shieldUI Chart控件在ASP.NET和MVC应用程序中创建一个销售仪表板

本文中,我们将处理一个常见的数据可视化任务,即创建一个销售仪表板 (dashboard).在商业演示中经常会使用销售仪表板来展现某个商业流程或商业 目标的关键绩效指标,而完成这样一个演示的关键不仅在于对数据进行良好的可 视化展示,还要有赏心悦目的外观.为了完成这一任务,我会使用相关的图表组 件,它提供了全部的所需功能.这个示例中将使用ShieldUI中的图表组件,这一 系列产品可以从网站的免费下载. 完成后的展示请见下图: 本示例将使用ASP.NET与MVC两种方式讲解. 使用代码 ASP.NE

asp.net中mvc使用ajax提交参数的匹配问题解决探讨

本文为大家介绍下使用javaScript解决asp.net中mvc使用ajax提交参数的匹配问题,遇到类似情况的朋友可以参考下,希望对大家有所帮助   想到在asp.net的mvc中如果使用ajax向服务端传递参数时如果参数是一个类或者是个数组(或List集合)以及更复杂的对象时,服务端总是会发 生取不到值的情况,当然网上也有很多解决的例子,但都是在服务端想办法来解决的(比如将json转换为字符串,再在服务端反序列化为一个对象),为何不能 在客户端就把这个问题搞定. 其实问题没那么复杂,那是因为

在vs 创建asp.net 的mvc空项目总是失败

问题描述 在vs 创建asp.net 的mvc空项目总是失败 在vs 创建asp.net 的mvc空项目总是失败,并出现未将对象引用设置到对象的实例..修复过vs,也重装过vs..实在不知道问题在哪儿?求帮忙 解决方案 重装系统吧.不是说别的办法绝对不能解决,但是除此之外的解决办法花费的时间精力都比重装系统多.不信你试试. 解决方案二: 如果你肯出个几千块钱,我不介意你买一个微软技术支持事件,帮你解决你的问题.你觉得值得的话. 解决方案三: 未将对象引用设置到对象的实例,是创建时出这个错误?还是