1. 引言

單從字面理解,不管是領(lǐng)域服務(wù)還是應(yīng)用服務(wù),都是服務(wù)。而什么是服務(wù)?從SOA到微服務(wù),它們所描述的服務(wù)都是一個(gè)寬泛的概念,我們可以理解為服務(wù)是行為的抽象。從前綴來(lái)看,根據(jù)DDD的經(jīng)典分層架構(gòu),它們又隸屬于不同的層,應(yīng)用服務(wù)屬于應(yīng)用層,領(lǐng)域服務(wù)屬于領(lǐng)域?qū)印?/p>

  • 應(yīng)用層(Application):負(fù)責(zé)展現(xiàn)層與領(lǐng)域?qū)又g的協(xié)調(diào),協(xié)調(diào)業(yè)務(wù)對(duì)象來(lái)執(zhí)行特定的應(yīng)用程序任務(wù)。它不包含業(yè)務(wù)邏輯。

  • 領(lǐng)域?qū)樱―omain):負(fù)責(zé)表達(dá)業(yè)務(wù)概念,業(yè)務(wù)狀態(tài)信息以及業(yè)務(wù)規(guī)則,是業(yè)務(wù)軟件的核心。

所以綜合來(lái)看應(yīng)用服務(wù)是用來(lái)表述應(yīng)用行為,而領(lǐng)域服務(wù)用來(lái)表述領(lǐng)域行為。
那怎么理解應(yīng)用行為和領(lǐng)域行為呢,應(yīng)用行為描述了一個(gè)具體操作從開(kāi)始到結(jié)束的每一個(gè)環(huán)節(jié),而領(lǐng)域行為是對(duì)應(yīng)用行為的細(xì)化,用來(lái)處理具體的某一個(gè)環(huán)節(jié)。比如,我們手機(jī)購(gòu)物,從購(gòu)物車結(jié)算這一場(chǎng)景來(lái)舉例,這就是一個(gè)應(yīng)用行為。而這個(gè)應(yīng)用行為又主要包括金額計(jì)算、支付、生成訂單,這些子環(huán)節(jié)就可以理解為一個(gè)領(lǐng)域行為。

我們就不咬文嚼字了,下面我們就一一展開(kāi)。

2. 應(yīng)用服務(wù)

應(yīng)用服務(wù)是用來(lái)表達(dá)用例和用戶故事(User Story)的主要手段。

應(yīng)用層通過(guò)應(yīng)用服務(wù)接口來(lái)暴露系統(tǒng)的全部功能。在應(yīng)用服務(wù)的實(shí)現(xiàn)中,它負(fù)責(zé)編排和轉(zhuǎn)發(fā),它將要實(shí)現(xiàn)的功能委托給一個(gè)或多個(gè)領(lǐng)域?qū)ο髞?lái)實(shí)現(xiàn),它本身只負(fù)責(zé)處理業(yè)務(wù)用例的執(zhí)行順序以及結(jié)果的拼裝。通過(guò)這樣一種方式,它隱藏了領(lǐng)域?qū)拥膹?fù)雜性及其內(nèi)部實(shí)現(xiàn)機(jī)制。

應(yīng)用層相對(duì)來(lái)說(shuō)是較“薄”的一層,除了定義應(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)用層通過(guò)DTO(數(shù)據(jù)傳輸對(duì)象)進(jìn)行數(shù)據(jù)交互,從而達(dá)到展現(xiàn)層與DO(領(lǐng)域?qū)ο螅┙怦畹哪康摹?/p>

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式