程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 使用PureMVC實現ASP.NET的MVC結構開發

使用PureMVC實現ASP.NET的MVC結構開發

編輯:關於ASP.NET

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved