王飛
【摘要】本文從企業級應用的系統開發現狀入手,分析驅動數據庫設計方法在Web應用開發中的不足,從而引出模型驅動的領域軟件的設計方法,介紹了基于模型驅動的領域軟件設計方法的開發模式。
【關鍵詞】模型驅動領域軟件開發
在互聯網越發重要的今天,人們已經越發的離不開互聯網,無論是在工作中還是在日常的生活中,互聯網依然占據了人們大部分的時間,而且許多與生活工作相關的應用也都被架構在Web之上。
一、數據庫驅動設計方法存在的不足
1.不能有效的反應人們的需求。傳統的核心軟件開發是一種以關系型數據庫為基礎進行設計與開發的,這種方式必然導致了軟件對需求分析和實現系統的不一致性,也就由此影響了設計院的設計思維和思路。因此采用面向對象的數據庫成為了首要選擇。
2.運行性能影響。從理論上來說,數據是可以持久化的,只要服務器不停機或者有足夠的存儲器,那么數據就可以一直在內存中永久的保留下去。因此,在進行軟件系統設計之初,設計人員應將重點放在問題域上,而不是對數據庫的容量上。
3.導致過程化編程。面向對象程序的設計已經慢慢的被人們所認可與接收,傳統的以資料庫建木為主要核心的軟件開發方法很有可能導致過程化程序的設計,費時費力。因為在對數據庫建模的過程中,程序員首先要確定數據庫的結構,然后不斷的編寫SQL語句、存儲過程。
4.軟件的模型和領域。用戶在使用軟件中的過程與環境被稱為軟件的領域,所以軟件總是會與用戶的興趣和活動相關。而軟件開發的目的就是利用計算機去解決和實現領域的實際問題。模型則是只是的一種簡化和有意識的組成,一個合適的模型能夠很好的表達出軟件的領域。
二、模型驅動設計和領域驅動設計
模型驅動設計是領域驅動設計的基礎,但是領域模型不僅僅是一個模型,更包括用來完成業務邏輯的許多元素。領域模型還具有模型所不具有的完成性約束、獨有性等特征。
1.領域的構成。一般情況下,領域主要分為實體、值對象、工廠、倉儲、服務等五種。實體作為領域的一種必須有自己的唯一的標識;值對象并沒有概念性的標識,但是它卻可以代表領域中的一種描述特征;工廠則是定義和創建實體的辦法,工廠主要的工作就是創建對象,其最主要的特征就是可以屏蔽創建對象的復雜性;倉儲較之數據訪問對象雖然在概念上大同小異,但在本質上有著一定的區分,具體表現為倉儲有“根”的概念,而數據訪問對象則沒有;服務在一般情況下是沒有狀態的,只有在被操作時才會出現可以代表領域某些特征的狀態。
2.領域驅動設計的系統分層架構。在領域驅動設計的系統中,之前普遍采用的MVC分層架構將會被進一步細化,使得領域模型可以得到隔離(如圖1)。
(1)用戶界面層(表現層):這一層包括了所有用于服務訪問系統的客戶端,同時通過攔截客戶端的請求,并將其通過單一的登錄入口,將其構造層會話管理,并傳遞到客戶端。(2)應用層:這一層并不負責業務邏輯的實現,其主要的工作職責就是定義系統需要完成的工作,并對下面的領域層的工作進行指導和實現業務邏輯工作。(3)領域層:實現全部的業務邏輯工作,是整個業務軟件的核心,是重中之重。(4)基礎結構層:主要工作職責是發送消息,為領域的持久化和用戶頁面的窗口繪制等進行工作,此外基礎結構層還負責與外部資源、系統的通信。
三、領域驅動設計的優點
利用領域驅動設計方法對系統進行建模和開發的過程中,所產生的優點主要有兩點:第一、DDD采用面向對象的思維方式在模型驅動的基礎上進行開發,符合人類的自然思維邏輯。第二、采用領域驅動設計出的系統可以充分的利用諸如Net服務器等中間件的分布式集群處理的能力,從而減輕了數據庫的載重負擔。
四、結束語
通過對軟件領域的分析,得到一個領域模型,在領域模型的基礎上進行軟件的設計與實現工作,通過重構的方法進行領域模型的精化工作。
參考文獻
[1]甄鐳. .Net與設計模式[M].北京:電子工業出版社,2006
[2]陳大峰,張澤鑫. Eric Evans.領域驅動設計[M].北京:清華大學出版社,2006
[3]湯晨,吳朝暉.一個利用模型驅動體系結構技術的分布式系統實現[J].計算機工程與應用,2003,(33):133-135
[4]王健,王軍. WhiteC. xSLT從入門到精通[M].北京:機械出版社,2003