DDD(領域驅動設計)jpatable主鍵生成策略RBAC打造通用WEB權限

JPA table主鍵生成策略(在JPA中table策略是首推!!!)html

RBAC打造通用WEB權限git

 

前有幸拜讀過諸多大神關於DDD的實現落地等文章,學習較多,受益不淺,在此推薦 : github

http://www.javashuo.com/article/p-plrdmasi-gg.html
https://blog.csdn.net/k6T9Q8XKs6iIkZPPIFq/article/details/78909897
https://www.cnblogs.com/netfocus/archive/2011/10/10/2204949.html
https://blog.csdn.net/bluishglc/article/details/6681253spring

下面參考了DDD官方的結構,總結了前輩們的相關經驗,再根據自身對微服務和DDD學習和理解,作了一個用SpringCloud搭建的最基本的結構例子。我的才疏學淺,若有雷同或是不當之處,望各位大佬見諒和幫忙指正。架構

首先引經據典 , 參考官方架構草圖,DDD整體結構分爲四層  :  Infrastructure(基礎實施層),Domain(領域層),Application(應用層),Interfaces(表示層,也叫用戶界面層或是接口層),各個層面的做用下面介紹。微服務

                        

                    

對於DDD的設計而言,最重要的是如何去劃分領域,劃分好邊界。在代碼設計上,以前有看到過大佬用模塊(Modules)來進行上下文界定和劃分。如圖下 : 工具

 

而對於微服務而言,就很是適合從業務上去劃分以上的各個Modules,劃分好各個業務板塊。學習

微服務 + DDD,我的以爲應該是首先是從微服務的角度(如何劃分微服務)考慮去劃分大的業務模塊,每個微服務都應該是一個能夠單獨部署,各司其職的模塊;ui

而在微服務實際開發中,結合DDD的思想去劃分全部屬於本身的領域。.net

如圖示例,對於我這個Project而言,是模塊已經劃分好的微服務應用,代碼設計上就分爲  Infrastructure,Domain,Application,Interfaces : 

            

 

Infrastructure 層 :  基礎實施層,向其餘層提供通用的技術能力(好比工具類,第三方庫類支持,經常使用基本配置,數據訪問底層實現)

 

       

 

Domain層 : 主要負責表達業務概念,業務狀態信息和業務規則;是整個系統的核心層,幾乎所有的業務邏輯會在該層實現。

 

       

 

Application層 :  相對於領域層,應用層是很薄的一層,應用層定義了軟件要完成的任務,要儘可能簡單。

  注 : 這裏圖裏面所說的對內對外,對程序而言,事實上是從展示層調用應用層,應用層調用領域層,領域層或調用基礎實施層。

 

    

 

 Interfaces層 : 負責向用戶顯示信息和解釋用戶命令,請求應用層以獲取用戶所須要展示的數據(好比獲取首頁的商品數據)

 

   

 

以上,就是我的 對 微服務+DDD的代碼結構示例,完整代碼詳見 https://github.com/EalenXie/springcloud-microservice-ddd

感謝各位提出意見和支持。

相關文章
相關標籤/搜索