快速业务通道

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

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

对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);
  }

DefaultPage方法用于启动整个PureMVC框架,一般在页面加载完成的时候调用,可以在Page_Load方法里面调用。它的功能是发出一个通知,并传入页面的引用Page实例。通知发出后,Controller就会执行注册了的与MyFacade.DEFAULTSTARTUP这个名字绑定了的DefaultPageCommand的execute方法。这方法的名字和Struts的Action里面的execute一样,其实PureMVC的Command和Struts的Action是很相似的。下面来看一下DefaultPageCommand的execute方

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号