GoFrame 工程開(kāi)發(fā)設(shè)計(jì)-數(shù)據(jù)模型與業(yè)務(wù)模型

2022-03-29 15:43 更新

一、數(shù)據(jù)模型

數(shù)據(jù)模型又叫做實(shí)體模型,主要是來(lái)自于底層持久化數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu),例如:?MySQL?、?Redis?、?MongoDB?、?Kafka?等等。這部分?jǐn)?shù)據(jù)結(jié)構(gòu)是由第三方系統(tǒng)維護(hù)的,可以通過(guò)工具對(duì)其集合數(shù)據(jù)結(jié)構(gòu)進(jìn)行識(shí)別,并自動(dòng)生化成對(duì)應(yīng)的程序數(shù)據(jù)模型代碼。這部分?jǐn)?shù)據(jù)模型的代碼位于?/internal/model/entity?目錄下。開(kāi)發(fā)者不需要手動(dòng)在程序中維護(hù)數(shù)據(jù)模型,在?GoFrame?框架規(guī)范中,數(shù)據(jù)模型統(tǒng)一使用?CLI?工具統(tǒng)一維護(hù),代碼自動(dòng)生成。

image2021-12-20_0-37-25

數(shù)據(jù)模型示例

二、業(yè)務(wù)模型

業(yè)務(wù)模型主要包含兩類(lèi):接口輸入/輸出模型 與 業(yè)務(wù)輸入/輸出模型,由?model?模型層統(tǒng)一管理。

接口輸入/輸出模型

接口輸入/輸出模型用于系統(tǒng)/服務(wù)間的接口交互,通常被?api?接口層(?handler?)調(diào)用。在?GoFrame?框架規(guī)范中,這部分輸出輸出模型名稱以?XxxReq?和?XxxRes?格式命名。

image2021-12-20_0-41-42

接口輸入模型示例

業(yè)務(wù)輸入/輸出模型

業(yè)務(wù)輸入/輸出模型用于進(jìn)程內(nèi)部模塊/組件之間的方法調(diào)用交互,特別是?api->service?或者?service->service?之間的調(diào)用。在?GoFrame?框架規(guī)范中,這部分輸出輸出模型名稱以?XxxInput?和?XxxOutput?格式命名。

image2021-12-20_0-44-32

業(yè)務(wù)輸入模型與業(yè)務(wù)輸出模型示例

特殊的業(yè)務(wù)模型DO

在?GoFrame?有一類(lèi)特殊的業(yè)務(wù)模型?DO?,介于業(yè)務(wù)模型與數(shù)據(jù)模型之間,主要用于結(jié)合框架強(qiáng)大的?ORM?組件大大簡(jiǎn)便?DAO?數(shù)據(jù)訪問(wèn)操作。

image2021-12-20_0-51-13

?DO?主要用于?DAO?數(shù)據(jù)訪問(wèn)操作

三、其他模型

上面我們講到的都是由?model?模型層維護(hù)的公共模型,但部分場(chǎng)景下還存在內(nèi)部私有的模型,用于模塊內(nèi)部調(diào)用,不對(duì)外公開(kāi)。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)