COLA架構
COLA是Clean Object-Oriented and Layered Architecture的縮寫,代表“整潔面向對象分層架構”,也叫“可樂”架構。
注意本架構曾用名SOFA、COPA,以后統一使用COLA這個新名稱,帶來不便,表示抱歉
更多關于COLA架構的信息:
- COLA架構的設計思想和原理:
https://blog.csdn.net/significantfrank/article/details/85785565
- 領域建模的方法論:
https://blog.csdn.net/significantfrank/article/details/79614915
項目說明
COLA框架包括兩個Project,一個是cola-framework里面是框架的核心代碼,另一個是cola-archetype是用來生成新應用的Maven Archetype源碼。
cola-framework Project
該Project包含3個Module,cola-core, cola-common, cola-test
cola-core
該Module是整個框架的核心,里面的主要功能和Package如下:
com └── alibaba └── cola ├── assembler \提供Assembler標準 ├── boot \這是框架的核心啟動包,負責框架組件的注冊、發現 ├── command \提供Command標準 ├── common ├── context \提供框架執行所需要的上下文 ├── convertor \提供Convertor標準 ├── domain \提供Domain Entity標準 ├── event ├── exception \提供Exception標準 ├── extension \負責擴展機制中的重要概念-擴展(Extension)的定義和執行 ├── extensionpoint \負責擴展機制中的重要概念-擴展點(Extension Point)的定義 ├── logger \提供DIP的日志接口 ├── repository \提供倉儲(Repository)的標準 ├── rule \提供業務規則或者叫策略(Rule)的標準和執行 │ └── ruleengine └── validator \提供Validator標準和執行
cola-common
該Module提供了框架中Client Object, Entity Object和Data Object的定義,二方庫會依賴該Module。
cola-test
該Module主要是提供一些開發測試的工具,可以使用TDD來進行開發。
cola-archetype Project
為了提升應用創建的效率,以及保證架構風格和規范被準守。我們開發了創建應用的Maven Archetype,這樣只要執行一行命令就可以生成一個基于COLA框架的應用骨架來。
可以按照以下步驟使用COLA Archetype:
- 下載Archetype
- 安裝Archetype到本地:運行 mvn install
- 生成應用,比如,要生成一個名為demo應用,只要執行下面的maven 命令:
mvn archetype:generate -DgroupId=com.alibaba.sample -DartifactId=demo -Dversion=1.0.0-SNAPSHOT -Dpackage=com.alibaba.sample -DarchetypeArtifactId=cola-framework-archetype -DarchetypeGroupId=com.alibaba.cola -DarchetypeVersion=1.0.0-SNAPSHOT
- 啟動SpringBoot,首先在demo目錄下運行mvn install(如果不想運行測試,可以加上-DskipTests參數)。然后進入start目錄,執行mvn spring-boot:run。 運行成功的話,可以看到SpringBoot啟動成功的界面
- 執行測試,生成的應用中,已經實現了一個簡單的Rest請求,可以在瀏覽器中輸入 http://localhost:8080/customer?name=World 進行測試。
- 請求執行成功的話,可以在瀏覽器中的返回值中看到:"customerName":"Hello, World"。同時觀察啟動SpringBoot的控制臺,可以看到LoggerInterceptor打印出來的日志。
查看生成的demo應用,我們可以看到生成了5個module,分別是demo-controller、demo-client、demo-App、demo-domain、demo-infrastructure。其中demo-client是用來存放RPC調用中的DTO(Data Transfer Object)類,其它四個module分別對應控制層、應用層、領域層和基礎實施層。
git地址:https://github.com/alibaba/COLA#cola%E6%9E%B6%E6%9E%84