摘 要:為了有效改善系統的結構,降低系統開發復雜度,提出了以現有開源框架為基礎的輕量集成框架,該框架以Spring.Net為核心,與ASP.NET MVC、NHibernate框架進行整合,以多層次結構劃分系統,從而實現應用程序的動態構建,減少系統的復雜度,確保系統的可擴展性和可維護性。對該框架進行了技術性分析,實驗結果表明了該框架的可行性及有效性。
關鍵詞:輕量框架;Spring.NET;電子商城;NHibernate
中圖分類號:TP3 文獻標識碼:A
1 引言(Introduction)
近幾年來,隨著科學技術的不斷發展,計算機應用日益普及,人們對應用軟件的需求日益增大。軟件規模越來越大,其代碼設計越是復雜。客戶的需求往往復雜而多變,在需求分析階段初期,客戶對自己的業務模型,并不一定完全熟悉,只能給出一個模糊而抽象的業務需求模型。當客戶發現軟件的功能并非自己所需的時候,則需要對軟件進行修改和擴展,從而加大軟件的開發難度及成本。
為了滿足用戶復雜多變的需求,軟件的動態性越趨重要。軟件的動態性體現在軟件的靈活性和可擴展性上。當需要對軟件進行更改和擴展的時候,能夠在原有系統基礎上較輕松的修改,且盡可能小的影響原有系統。為此,軟件程序應該具備良好的分層結構,降低程序模塊之間的耦合,增加擴展的靈活性,同時軟件需要能夠提供動態替換機制以及可插入機制的能力。本文以電子商城為例,提出了以現有開源框架為基礎的輕量集成框架,用來解決系統集成中普遍存在著的擴展性、適應性問題[1]。
2 電子商城系統框架(Electronic shop system
framework)
以Spring.Net為核心來構建電子商城系統,以三層架構為基礎,整合Asp.Net MVC以及Nibernate,構建基于Web的電子商城系統輕量級集成框架,同時以RESTful風格設計網絡訪問,在一定程度上提高SEO優化效果。
2.1 框架簡介
(1)分層體系結構
在目前的軟件設計架構中,三層架構是比較常見的一種分層式結構,即數據訪問層、業務邏輯層、表示層這三層,同時還有一個模型層(Model)。數據訪問層用于訪問數據存儲系統,控制數據訪問邏輯,為業務邏輯層提供服務。而業務邏輯層則負責封裝各種業務邏輯,數據校驗等。而最上層的則是表現層,將數據以人性化的方式展現給用戶。而模型則負責在各層傳遞數據。
(2)Asp.Net MVC框架
Asp.net MVC框架通過Controller、View、Model這三者來處理用戶的請求以及展示數據。整個框架通過使用Asp.net MVC代替傳統WebForms,可以減少框架復雜度,避免了WebForm中大量的ViewState而導致頁面文件變得過于臃腫,從而減少了帶寬的壓力,增加測試的可行性,使得框架更加輕量化。
(3)Nhiberate框架
NHibernate是一個基于.NET的針對關系型數據庫的對象持久化類庫,與直接使用ADO.NET操作SQL來執行數據庫的邏輯操作相比,NHibernate更能夠大量減少開發以及維護的成本。NHibernate通過XML文件描述,建立對象與關系模型數據(表或視圖)之間的映射,以面向對象的編程思想來實現對數據庫的訪問邏輯,從而可以提高開發效率,減少低級錯誤的產生。當對象需要持久化時候,則會通過框架來生成對應的SQL語句,同時由框架來維護事務會話,使得開發更加簡便。由于不直接與數據庫交互,從而使得程序擁有更好的可擴展性和可維護性。
(4)Spring.Net框架
Spring.NET是基于.NET之上的應用程序框架,也是java第三方框架Spring的.Net版本。Spring.NET主體是IOC和AOP[2]。IOC全稱為Inversion of Control,叫控制反轉,一般也稱其為依賴注入,它改變了傳統在程序中強制聲明對象的創建方法[3]。通過IOC,模塊與模塊之間的依賴,只需依賴其暴露出的接口,而具體的實現有IOC容器來管理,通過配置文件指向具體的實現便可以讓被調用方的具體實現注入的調用方,最終降低軟件模塊之間的耦合度,控制模塊之間的調用,降低軟件開發的工作量,提高軟件應用效率。AOP全稱為Aspect-Oriented Programming,面向切面的編程,它能夠分解系統服務功能,分離出重復或者次要的部分使其模塊化,并對其提供聲明式的系統服務方式。典型的使用方式一般包含了方法調用的日志記錄,異常的處理,事務的控制等,這一些都是最容易重復產生部分,通過AOP將其抽出,從而使得代碼更加簡潔,減少后續開發與維護的成本。
2.2 框架系統結構
基于Spring.Net的電子商城系統框架,以三層架構為基礎,以Spring.Net為核心,銜接Asp.Net MVC和Nibernate,通過IOC控制各層的具體依賴,以AOP分解系統的服務,如圖1所示。
圖1 系統框架
Fig.1 System framework
2.3 技術可行性分析
表現層采用ASP.NET MVC框架實現,通過Spring提供的IOC機制,與業務邏輯層所交互,使得表現層與業務邏輯層相解耦。業務邏輯層,由表現層所調用,通過上層請求訪問,結合數據訪問層所提供的服務,進行相對應的邏輯驗證,運算等操作,最后反饋信息。通過AOP服務,抽取封裝日志記錄,異常處理,事務控制等,從而到達分解系統服務功能,避免重復的開發。數據訪問層,由NHibernate框架實現,與關系數據庫建立映射,以面向對象的方式處理數據庫,與Spring.Net結合,封裝事務處理機制,大大減少系統構建的復雜度;內置的緩存機制,大大提高數據訪問的效率以及可靠性。通過NHibernate可以方便切換不同的DBMS,提高整體可維護性與可擴展性。綜上所述,該框架在技術上可行。
3 示例分析(Example analysis)
以電子商城系統為例,使用本文所述框架來實現電子商城系統的開發。
3.1 基礎架構
以三層架構為基礎,構建系統的初始化架構,劃分為三層,數據訪問層,業務邏輯層以及Web層,如圖2所示。
圖2 基礎架構
Fig.2 Infrastructure
(1)數據訪問層
IDAL項目:數據訪問邏輯接口層;DAL項目:數據訪問邏輯的實現層,采用Nhibernate框架實現。
(2)業務邏輯層
IBLL:業務操作接口層;BLL:業務邏輯實現層。
(3)表現層
Web:頁面表現層,采用ASP.NET MVC框架搭建。
Entity層,貫穿三層,用于數據的傳輸和共享,持久化等。Config層,存放一些Spring.net相關的IOC和AOP配置。
3.2 數據訪問層
基于NHibernate實現,通過XML描述方式,建立對象與數據庫表之間的關系,以商品表為例,相關配置代碼示例如下所示:
……
3.3 業務邏輯層
這一層系統業務核心價值所在之處,同樣將具體的業務定義(IBLL)與實現分離(BLL)。對數據訪問層的依賴,只依賴其接口,通過Spring.Net注入相應的配置。業務實現類中,只需依賴接口,通過XML注入具體的實現,先注冊實現類,代碼如下:
再通過配置,為業務實現類注入具體的數據訪問實現。
3.4 Web表現層
表現層依賴業務邏輯層的接口,由Spring.net提供實現的注入。表現層中的View展示數據,交互之時,由Controller來控制數據的流向。而Web項目中,處于層次的最頂端,需要做最后的配置,即提供Spring.Net管理的入口。通過在Web.config中配置,將Asp.NET MVC的控制器,以及數據訪問層,業務邏輯層的相關實現由Spring.NET來統一管理。
在Web.config中先配置一個Spring節點,然后配置相應的組件定義以及依賴關系,指向對應的文件。
4 結論(Conclusion)
本文結合電子商城系統開發實例,通過第三方框架Spring.Net和NHibernate,采用ASP.NET構建三層應用程序,把應用程序進行分拆,使得程序結構更加清晰,降低其復雜度,從而使程序擁有更高的可擴展性和可維護性。
后續工作主要是更好的完善整個輕量級框架,探討和設計一套簡便的配置管理與集成的解決方案,同時在本框架的基礎上創建能夠簡便應用于電子商城的功能組件,最終降低系統復雜度以及達到開發集成與測試的技術要求。
參考文獻(References)
[1] 張紅光,蔣躍軍,左玉龍.基于消息傳遞的企業信息系統集成
框架研究[J].計算機工程與設計,2005,26(12):3219-3221.
[2] 劉艷.利用Spring.Net構建動態的三層應用程序框架[J].硅谷
Silicon Valley,2013,(14):31.
[3] 林慶.基于ASP.NET的MVC設計模式的研究[J].計算機工程
與設計,2008(1):167-169.
作者簡介:
林平榮(1981-),男,碩士,講師.研究領域:軟件工程.