低代碼設(shè)計(jì)教程(四)-元模型設(shè)計(jì)(元模型如何構(gòu)建)
我們知道大部分低代碼平臺都采用了模型驅(qū)動(dòng)的開發(fā)模式,即通過可視化建模的方式來實(shí)現(xiàn)軟件的設(shè)計(jì)和生成。領(lǐng)域模型創(chuàng)建完成后,有兩種技術(shù)路線來生成和運(yùn)行模型應(yīng)用:
- 方法一:對生成的模型進(jìn)行編譯并生成所有相關(guān)的源代碼,使其成為普通的應(yīng)用系統(tǒng),該技術(shù)稱為“代碼生成”;
- 方法二:利用模型解析執(zhí)行引擎直接解析并運(yùn)行所生成的模型,該技術(shù)稱為“模型解析”。
什么是模型驅(qū)動(dòng)開發(fā)呢?其實(shí)這種架構(gòu)設(shè)計(jì)在大型2B的企業(yè)項(xiàng)目中是比較常見的:
基于元數(shù)據(jù)建模思路
所謂軟件系統(tǒng)設(shè)計(jì),核心是對現(xiàn)實(shí)的對象進(jìn)行數(shù)字化,如果采用一對一映射建表的“硬建模”,業(yè)務(wù)對象間的關(guān)系分散在各個(gè)存儲(chǔ)表中,業(yè)務(wù)對象的新增和變化都會(huì)對數(shù)據(jù)表造成影響,業(yè)務(wù)對象關(guān)系的新增和變化都會(huì)對數(shù)據(jù)表的Schema造成影響。
這里有一張?jiān)陔娦艡C(jī)房的配線架圖片,我們分別用“硬建模”和“大類元數(shù)據(jù)建?!彼悸穪矸治鰞煞N建模方式的差別。
電信機(jī)房配線架
“硬建?!狈桨?/strong>,我們設(shè)計(jì)了一個(gè)配線架管理的物理模型表(藍(lán)色部分),隨著硬件工藝升級,我們的配線架升級為雙面配線架,這個(gè)時(shí)候我們需要增加一個(gè)新的模型:操作面(黃色部分)。我們發(fā)現(xiàn)這次需求升級,模型改動(dòng)涉及面很大,增加了三個(gè)關(guān)系,和操作面相關(guān)的模型都需要進(jìn)行調(diào)整,影響了四個(gè)模型實(shí)體。
硬建模方案
這次改動(dòng)帶來的生產(chǎn)影響是什么呢?
- 數(shù)據(jù)庫層面新增1個(gè)表、改動(dòng)3個(gè)表
- 應(yīng)用層面新增1個(gè)對象、改動(dòng)3個(gè)對象,新增3個(gè)操作函數(shù)
- 必須要停止數(shù)據(jù)庫來進(jìn)行改動(dòng)操作
采用“硬建?!痹O(shè)計(jì)的架構(gòu)簡單可讀,項(xiàng)目維護(hù)簡單,但是一旦需求升級變化,30%的代碼都需要進(jìn)行調(diào)整,那么相關(guān)的測試、實(shí)施投入都相對較大。
“大類元數(shù)據(jù)建?!狈桨?/strong>,我們定義了一個(gè)“硬件”大類模型,硬件具備包含、容納關(guān)系能力。針對雙面配線架需求,我們的改動(dòng)僅僅是在元數(shù)據(jù)中增加了一個(gè)“操作面”的定義,如果“操作面”的的屬性沒超過“硬件”屬性范圍,我們都不需要增加物理表。如果操作面有特殊屬性,我們只需要在物理庫增加一張擴(kuò)展表,而業(yè)務(wù)關(guān)系和核心屬性都在主表“硬件”上進(jìn)行管理,相關(guān)的業(yè)務(wù)代碼也無需調(diào)整,系統(tǒng)也無需停機(jī)。
基于大類元數(shù)據(jù)建模
我們歸納下大類元數(shù)據(jù)建模思路如下:
- 保持大類業(yè)務(wù)實(shí)體和關(guān)系實(shí)體的穩(wěn)定,關(guān)系全部體現(xiàn)在大類上;
- 細(xì)類繼承大類業(yè)務(wù)實(shí)體和關(guān)系實(shí)體,以擴(kuò)展表方式實(shí)現(xiàn)靈活擴(kuò)展;
- 通過元數(shù)據(jù)配置驅(qū)動(dòng),實(shí)現(xiàn)模型快速、在線擴(kuò)展;
大類元數(shù)據(jù)建模思路
這里我們講解的大類元數(shù)據(jù)模型是一種軟件架構(gòu)設(shè)計(jì)方法,也是低代碼軟件架構(gòu)設(shè)計(jì)方法:既穩(wěn)定又易用
平衡的架構(gòu)設(shè)計(jì)
穩(wěn)定性
越抽象越穩(wěn)定。E-R是所有MIS數(shù)據(jù)模型的起源,可以描述世界上任何東西,最穩(wěn)定。但越抽象,則意味著越多的工作丟需要應(yīng)用來完成,且不易為程序員和用戶理解。
易用性
越貼近現(xiàn)實(shí)越容易使用。對現(xiàn)實(shí)實(shí)體一對一的“硬建?!弊钊菀桌斫夂褪褂谩5T健坝病?,則意味著停機(jī)改動(dòng)數(shù)據(jù)模型的可能性越大,越容易對生產(chǎn)造成負(fù)面影響。
實(shí)用性
實(shí)用性取決于應(yīng)用需要什么抽象度的管理對象。包括:管理對象的粒度——實(shí)體(E)和管理對象的功能——關(guān)系(R),我們架構(gòu)設(shè)計(jì)的過程需要從E-R出發(fā),細(xì)分實(shí)體和關(guān)系概念,直到滿足各應(yīng)用的管理要求為止。