呂浩志
(西南林業大學 林學院,云南 昆明655024)
軟件開發過程中,為了減少基礎代碼,提高開發效率,就需要一個好的開發框架。
Mvc(model-view-controller)是目前軟件開發中廣泛采用的一種設計模式。它把一個Web應用分離為模型、視圖和控制器三個部分,使得系統結構清晰,利于維護和擴展。
DWZ實現了CSS和JS代碼徹底分離,修改樣式方便,與ASP.NET MVC整合實現Web應用程序的快速開發。
NHibernate不僅僅管理.NET類到數據庫表的映射(包括.NET數據類型到SQL數據類型的映射),還提供數據查詢和獲取數據的方法,大幅度減少我們開發時人工使用SQL和ADO.NET處理數據的時間。
軟件開發總體架構對應的Web請求處理流程如圖1所示,大致步驟如下:

圖1 Web請求流程
(1)用戶提交Web請求
(2)路由模塊將請求信息發送給相應的控制器,由控制器決定如何處理請求;
(3)控制器根據請求處理邏輯,調用持久化類中相應的操作;
(4)根據實際需求,完成數據的查詢或存儲、更新;
(5)返回查詢的結果表或視圖;
(6)NHibernate將表或視圖映射成相應的對象并賦值給Modle;
(7)Model將業務請求的結果返回給控制器;
(8)控制器組織處理信息,調用視圖解析從模型返回的數據;
(9)DWZ完成頁面渲染,返還數據給瀏覽器。
下面以一個項目的實例片斷詳細介紹DWZ、NHibernate與ASP.NET MVC 3框架的整合。
打開Microsoft Visual Studio 2010,新建一個MVC項目。在新建的MVC項目中添加DWZ初始化文件(dwz.frag.xml)、Content文件夾中添加DWZ樣式和Scripts文件夾中添加DWZ腳本庫。
在新建的MVC項目中添加以下引用:Castle.Core.dll,Iesi.Collections.dll,log4net.dll,LinFu.DynamicProxy.dll,NHibernate.ByteCode.Castle.dll,NHibernate.ByteCode.LinFu.dll,NHibernate.dll,并添加數據庫映射配置信息文件h.cfg.xml,如下所示:

2.2.1 navTab中的局部分頁
視圖中的分頁控制代碼如下:

其中第一個fflt;optionffgt;的value="@ViewData["NumPerPage"]"表示每頁顯示的條數,@ViewData["Total"]表示總共多少條,@ViewData["currentPage"]表示當前的頁碼,這些都是通過ViewBag將控制器中的參數傳遞給視圖。以下是控制中的代碼:
var pageIndex=pageNum.HasValue?pageNum.Value-1:0;
var pageSize=numPerPage.HasValueffamp;ffamp;numPerPage.Valueffgt;0?numPerPage.Value:5;
int allCount=vrecordlistDao.count(whereString);
int pageNo=pageIndex+1;
CalPage calPage=new CalPage(allCount,pageSize,pageNo);
IListfflt;Vrecordlistffgt; list= vrecordlistDao.findByPage(calPage,whereString);
ViewBag.Total=allCount;
ViewBag.NumPerPage=pageSize;
ViewBag.currentPage=pageNo;
其中count(whereString)是獲取總條數,findByPage(calPage,whereString)返回分頁數據,calPage分頁的參數。

圖2 分頁效果圖
2.2.2 局部Div刷新
以下是主頁面中的表單:fflt;form method="post"action=""onsubmit="return
validateCallback(this,refreshBoxAjaxDone);"ffgt;fflt;/formffgt;表單提交后根據Json傳遞的參數,執行refreshBoxAjaxDone()進行局部刷新。自定義的JavaScript局部刷新函數如下:

后臺返回的Json如下:Json({statusCode="200",message="保存成功",navTabId="",rel="rel",forwardUrl=url,callbackType=""},JsonRequestBehavior.AllowGet);其中$('#'+json.rel)是用Jquery找到局部Div在主頁面中的位置,然后重新加載forwardUrl達到刷新的目的。
2.3.1 數據庫映射配置信息文件
在Global.asax中初始化數據庫映射配置信息文件NHibernateUtils.SessionFactory.init
(Server.MapPath("~/h.cfg.xml"));以下是SessionFactory.cs類中的對象和方法:

//初始化配置文件

2.3.2 數據庫的添加操作

}
2.3.3 數據庫的更新操作





2.3.4 數據庫的刪除操作


應用DWZ、NHibernate和ASP.NET MVC 3架構來進行Web應用的開發,不僅降低了程序開發難度,而且利于程序的維護和擴展。本文通過總結實際項目開發中的部分經驗,希望通過上文介紹能讓讀者對DWZ、NHibernate和ASP.NET MVC 3架構的應用有所了解。
[1]DWZ富客戶端框架使用手冊[S].
[2]趙廣利.基于NHibernate的數據持久化方案[J].計算機工程,2009,35(20).
[3]姚渝濤.開源框架DWZ與ASP.NET MVC3的整合應用[J].電腦編程技巧與維護,2012(17)