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