
image.png
拆書稿
一、什么是領(lǐng)域服務(wù)(首先,什么不是領(lǐng)域服務(wù))
領(lǐng)域服務(wù)和應(yīng)用服務(wù)的區(qū)別
應(yīng)用服務(wù):
不會處理業(yè)務(wù)邏輯,它負(fù)責(zé)編排和轉(zhuǎn)發(fā),它將要實(shí)現(xiàn)的功能委托給一個或多個領(lǐng)域?qū)ο髞韺?shí)現(xiàn),它本身只負(fù)責(zé)處理業(yè)務(wù)用例的執(zhí)行順序以及結(jié)果的拼裝。
領(lǐng)域服務(wù):
是用來協(xié)調(diào)領(lǐng)域?qū)ο笸瓿赡硞€操作,用來處理業(yè)務(wù)邏輯的,它本身是一個行為,所以是無狀態(tài)的。狀態(tài)由領(lǐng)域?qū)ο螅ň哂袪顟B(tài)和行為)保存。
應(yīng)用服務(wù)是領(lǐng)域服務(wù)的客戶方;
什么操作不屬于實(shí)體或者值對象,什么情況下我們可以使用領(lǐng)域服務(wù):
- 執(zhí)行一個顯著的業(yè)務(wù)操作過程
- 對領(lǐng)域?qū)ο筮M(jìn)行轉(zhuǎn)換
- 以多個領(lǐng)域?qū)ο笞鳛檩斎脒M(jìn)行計(jì)算,結(jié)果產(chǎn)生一個值對象
讀后思考
1、什么是服務(wù)?
服務(wù)是行為的抽象
- 應(yīng)用服務(wù)屬于應(yīng)用層,用來表述應(yīng)用行為;
- 領(lǐng)域服務(wù)屬于領(lǐng)域?qū)?,用來表述領(lǐng)域行為;
- 應(yīng)用層(Application):負(fù)責(zé)展現(xiàn)層與領(lǐng)域?qū)又g的協(xié)調(diào),協(xié)調(diào)業(yè)務(wù)對象來執(zhí)行特定的應(yīng)用程序任務(wù)。它不包含業(yè)務(wù)邏輯。
- 領(lǐng)域?qū)樱―omain):負(fù)責(zé)表達(dá)業(yè)務(wù)概念,業(yè)務(wù)狀態(tài)信息以及業(yè)務(wù)規(guī)則,是業(yè)務(wù)軟件的核心
2、什么是應(yīng)用服務(wù)?
- 應(yīng)用服務(wù)是用來表達(dá)用例和用戶故事(User Story)的主要手段。
- 應(yīng)用層通過應(yīng)用服務(wù)接口來暴露系統(tǒng)的全部功能。在應(yīng)用服務(wù)的實(shí)現(xiàn)中,它負(fù)責(zé)編排和轉(zhuǎn)發(fā),它將要實(shí)現(xiàn)的功能委托給一個或多個領(lǐng)域?qū)ο髞韺?shí)現(xiàn),它本身只負(fù)責(zé)處理業(yè)務(wù)用例的執(zhí)行順序以及結(jié)果的拼裝。通過這樣一種方式,它隱藏了領(lǐng)域?qū)拥膹?fù)雜性及其內(nèi)部實(shí)現(xiàn)機(jī)制。
- 應(yīng)用層相對來說是較“薄”的一層,除了定義應(yīng)用服務(wù)之外,在該層我們可以進(jìn)行安全認(rèn)證,權(quán)限校驗(yàn),持久化事務(wù)控制,或者向其他系統(tǒng)發(fā)生基于事件的消息通知,另外還可以用于創(chuàng)建郵件以發(fā)送給客戶等。
- 應(yīng)用層作為展現(xiàn)層與領(lǐng)域?qū)拥臉蛄?。展現(xiàn)層使用VO(視圖模型)進(jìn)行界面展示,與應(yīng)用層通過DTO(數(shù)據(jù)傳輸對象)進(jìn)行數(shù)據(jù)交互,從而達(dá)到展現(xiàn)層與DO(領(lǐng)域?qū)ο螅┙怦畹哪康摹?/li>
3、什么是領(lǐng)域服務(wù)?
領(lǐng)域?qū)泳褪禽^“胖”的一層,因?yàn)樗鼘?shí)現(xiàn)了全部業(yè)務(wù)邏輯并且通過各種校驗(yàn)手段保證業(yè)務(wù)正確性。而什么是業(yè)務(wù)邏輯呢?業(yè)務(wù)流程、業(yè)務(wù)策略、業(yè)務(wù)規(guī)則、完整性約束等。