企業(yè)應(yīng)用架構(gòu)模式之領(lǐng)域邏輯模式
企業(yè)應(yīng)用架構(gòu)模式之領(lǐng)域邏輯模式
2018-06-08 09:09:43 來(lái)源:CSND
搶沙發(fā)
2018-06-08 09:09:43 來(lái)源:CSND
摘要:企業(yè)架構(gòu)過(guò)程從領(lǐng)域?qū)娱_(kāi)始的,一些經(jīng)典的領(lǐng)域邏輯方法也就被稱之為領(lǐng)域邏輯模式。主要有:事務(wù)腳本、領(lǐng)域模型、表模塊。
關(guān)鍵詞:
企業(yè)架構(gòu)
一般的,企業(yè)架構(gòu)過(guò)程從領(lǐng)域?qū)娱_(kāi)始的,一些經(jīng)典的領(lǐng)域邏輯方法也就被稱之為領(lǐng)域邏輯模式。主要有:事務(wù)腳本、領(lǐng)域模型、表模塊。選擇依據(jù)實(shí)際領(lǐng)域邏輯的復(fù)雜性,事務(wù)腳本是最簡(jiǎn)單的,而領(lǐng)域模型則比較復(fù)雜。
(1)事務(wù)腳本:使用過(guò)程來(lái)組織業(yè)務(wù)邏輯,每個(gè)過(guò)程處理來(lái)自表現(xiàn)層的單個(gè)請(qǐng)求。
將事務(wù)腳本組織成類,并與處理表現(xiàn)層與數(shù)據(jù)源層的類相分離,可應(yīng)用命令模式來(lái)管理事務(wù)腳本類。
該模式簡(jiǎn)單,但有冗余,尤其是領(lǐng)域業(yè)務(wù)本身就很復(fù)雜的話,應(yīng)用事務(wù)腳本就比較難維持一個(gè)好的設(shè)計(jì)
(2)領(lǐng)域模型:合并行為與數(shù)據(jù)的領(lǐng)域的對(duì)象模型。
領(lǐng)域模型也可分為簡(jiǎn)單領(lǐng)域模型與復(fù)雜領(lǐng)域模型。簡(jiǎn)單領(lǐng)域模型中,幾乎每一個(gè)數(shù)據(jù)庫(kù)表都與一個(gè)領(lǐng)域?qū)ο髮?duì)應(yīng),而復(fù)雜領(lǐng)域模型則會(huì)繼承、策略模式等設(shè)計(jì)。復(fù)雜領(lǐng)域模型是一張由互聯(lián)的細(xì)粒度對(duì)象組成的網(wǎng),需要使用數(shù)據(jù)映射器,簡(jiǎn)單領(lǐng)域模型則可以使用活動(dòng)記錄。
使用領(lǐng)域模型時(shí),首選的數(shù)據(jù)庫(kù)交互方式是數(shù)據(jù)映射器;另外,一般會(huì)考慮設(shè)立一個(gè)服務(wù)層,以便給領(lǐng)域模型一個(gè)更清晰的API。
該模式適用于業(yè)務(wù)規(guī)則復(fù)雜多變時(shí)使用。領(lǐng)域模型的缺點(diǎn)是比較復(fù)雜且與數(shù)據(jù)庫(kù)的連接很容易陷入雜亂無(wú)章的境地。
(3)表模塊:處理數(shù)據(jù)庫(kù)中的表或視圖中所有行的業(yè)務(wù)邏輯的實(shí)例
面向?qū)ο蟮年P(guān)鍵思想之一是將數(shù)據(jù)域?qū)υ摂?shù)據(jù)的操作的行為綁定在一起。
表模塊以一個(gè)類對(duì)應(yīng)數(shù)據(jù)庫(kù)中的一個(gè)表來(lái)組織領(lǐng)域邏輯,而且使用單一的類實(shí)例來(lái)包含對(duì)數(shù)據(jù)的各種操作。它與領(lǐng)域邏輯的主要區(qū)別是,如果你有許多訂單,領(lǐng)域模型對(duì)每個(gè)訂單都有一個(gè)對(duì)象,而表模塊只用一個(gè)對(duì)象來(lái)處理所有訂單。表模塊模式可視為事務(wù)腳本與領(lǐng)域模型的一個(gè)折中,它可以處理較復(fù)雜的領(lǐng)域業(yè)務(wù),同時(shí)適合于關(guān)系數(shù)據(jù)庫(kù)一起工作。
該模式的優(yōu)點(diǎn)是易與下層面向表的數(shù)據(jù)結(jié)構(gòu)整合。但表模塊沒(méi)有提供完全的面向?qū)ο竽芰?lái)組組織復(fù)雜的領(lǐng)域邏輯,不能在實(shí)例之間直接建立關(guān)聯(lián),多態(tài)機(jī)制也無(wú)法工作良好。
(4)服務(wù)層:通過(guò)一個(gè)服務(wù)層定義應(yīng)用程序的邊界,在服務(wù)層中建立一組可用操作的集合,并在每個(gè)操作內(nèi)部協(xié)調(diào)應(yīng)用程序的響應(yīng)。
服務(wù)層定義了應(yīng)用邊界和從接口客戶層角度所能看到的可用操作集合。它封裝了應(yīng)用的業(yè)務(wù)邏輯、事務(wù)控制及其操作實(shí)現(xiàn)中的響應(yīng)協(xié)調(diào)。服務(wù)層類的接口是粗粒度的,以適應(yīng)遠(yuǎn)程。
服務(wù)層的設(shè)計(jì)動(dòng)機(jī)是通過(guò)職責(zé)的細(xì)分來(lái)避免冗余代碼和提高重用性,其設(shè)計(jì)思想來(lái)自于應(yīng)用邊界模式。
服務(wù)層優(yōu)點(diǎn)在于它定義了一個(gè)公共的應(yīng)用操作集合,這一集合可被各種客戶使用,而且服務(wù)層在每個(gè)操作中都會(huì)協(xié)調(diào)應(yīng)用的響應(yīng)。響應(yīng)可能涉及到某些需要在多個(gè)事務(wù)性資源之間進(jìn)行原子化處理的應(yīng)用邏輯。因此,在業(yè)務(wù)邏輯中有多種客戶的應(yīng)用中,或者其用例中的復(fù)雜響應(yīng)涉及到多個(gè)事務(wù)性資源時(shí),即使不是分布式架構(gòu),使用一個(gè)容器管理事務(wù)的服務(wù)層仍是很有必要的。
第三十四屆CIO班招生
北達(dá)軟EXIN網(wǎng)絡(luò)空間與IT安全基礎(chǔ)認(rèn)證培訓(xùn)
北達(dá)軟EXIN DevOps Professional認(rèn)證培訓(xùn)
責(zé)編:yangjun
免責(zé)聲明:本網(wǎng)站(http://www.www.gypb.net/)內(nèi)容主要來(lái)自原創(chuàng)、合作媒體供稿和第三方投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
本網(wǎng)站刊載的所有內(nèi)容(包括但不僅限文字、圖片、LOGO、音頻、視頻、軟件、程序等)版權(quán)歸原作者所有。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),請(qǐng)及時(shí)通知本站,予以刪除。