天天看點

面向整潔對象的分層架構COLA 4.0COLA架構COLA Components如何使用COLA

COLA 是 Clean Object-Oriented and Layered Architecture的縮寫,代表“面向整潔對象的分層架構”。 目前COLA已經發展到 COLA 4.0

COLA分為兩個部分,COLA架構和COLA元件。

COLA架構

COLA 概述

架構的意義 就是 要素結構:

  • 要素 是 組成架構的重要元素;
  • 結構 是 要素之間的關系。

而 應用架構的意義 就在于

  • 定義一套良好的結構;
  • 治理應用複雜度,降低系統熵值;
  • 從随心所欲的混亂狀态,走向井井有條的有序狀态。
面向整潔對象的分層架構COLA 4.0COLA架構COLA Components如何使用COLA

COLA架構就是為此而生,其核心職責就是定義良好的應用結構,提供最佳應用架構的最佳實踐。通過不斷探索,我們發現良好的分層結構,良好的包結構定義,可以幫助我們治理混亂不堪的業務應用系統。

面向整潔對象的分層架構COLA 4.0COLA架構COLA Components如何使用COLA

經過多次疊代,我們定義出了相對穩定、可靠的應用架構:COLA 4.0

面向整潔對象的分層架構COLA 4.0COLA架構COLA Components如何使用COLA

COLA Archetype

好的應用架構,都遵循一些共同模式,不管是六邊形架構、洋蔥圈架構、整潔架構、還是COLA架構,都提倡以業務為核心,解耦外部依賴,分離業務複雜度和技術複雜度等。

COLA架構差別于這些架構的地方,在于除了思想之外,我們還提供了可落地的工具和實踐指導。

為了能夠快速建立滿足COLA架構的應用,我們提供了兩個

archetype

,位于

cola-archetypes

目錄

下:

  1. cola-archetype-service

    :用來建立純後端服務的

    archetype

  2. cola-archetype-web

    :用來建立

    adapter

    和後端服務一體的

    web

    應用

    archetype

COLA Components

此外,我們還提供了一些非常有用的通用元件,這些元件可以幫助我們提升研發效率。

這些功能元件被收攏在

cola-components

下面。到目前為止,我們已經沉澱了以下元件:

元件名稱 功能 版本 依賴

cola-component-dto

定義了

DTO

格式,包括分頁
1.0.0

cola-component-exception

定義了異常格式,

主要有

BizException

SysException

cola-component-statemachine

狀态機元件

cola-component-domain-starter

Spring

托管的領域實體元件

cola-component-catchlog-starter

異常處理和日志元件

exception

dto

元件

cola-component-extension-starter

擴充點元件

cola-component-test-container

測試容器元件

如何使用COLA

1. 建立應用

執行以下指令:

mvn archetype:generate  \
    -DgroupId=com.alibaba.cola.demo.web \
    -DartifactId=demo-web \
    -Dversion=1.0.0-SNAPSHOT \
    -Dpackage=com.alibaba.demo \
    -DarchetypeArtifactId=cola-framework-archetype-web \
    -DarchetypeGroupId=com.alibaba.cola \
    -DarchetypeVersion=4.0.1
      

指令執行成功的話,會看到如下的應用代碼結構:

面向整潔對象的分層架構COLA 4.0COLA架構COLA Components如何使用COLA

注:也可以使用阿裡雲的應用生成器:

https://start.aliyun.com/bootstrap.html

生成cola應用。

2. 運作應用

  • 項目

    目錄下運作

    mvn install

    (如果不想運作測試,可以加上

    -DskipTests

    參數)。
  • 進入

    start

    目錄,執行

    mvn spring-boot:run

    運作成功的話,可以看到

    SpringBoot

    啟動成功的界面。
  • 生成的應用中,已經實作了一個簡單的

    Rest

    請求,可以在浏覽器中輸入 http://localhost:8080/helloworld 進行測試。

如果要生成不是

web

工程而是

service

工程也類似,執行的是下面的指令:

mvn archetype:generate  \
    -DgroupId=com.alibaba.cola.demo.service \
    -DartifactId=demo-service \
    -Dversion=1.0.0-SNAPSHOT \
    -Dpackage=com.alibaba.demo \
    -DarchetypeArtifactId=cola-framework-archetype-service \
    -DarchetypeGroupId=com.alibaba.cola \
    -DarchetypeVersion=4.0.1