1. 引言

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

  • 應(yīng)用層(Application):負責(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):負責(zé)表達業(yè)務(wù)概念,業(yè)務(wù)狀態(tài)信息以及業(yè)務(wù)規(guī)則,是業(yè)務(wù)軟件的核心。

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

我們就不咬文嚼字了,下面我們就一一展開。

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

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

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

應(yīng)用層相對來說是較“薄”的一層,除了定義應(yīng)用服務(wù)之外,在該層我們可以進行安全認證,權(quán)限校驗,持久化事務(wù)控制,或者向其他系統(tǒng)發(fā)生基于事件的消息通知,另外還可以用于創(chuàng)建郵件以發(fā)送給客戶等。

應(yīng)用層作為展現(xiàn)層與領(lǐng)域?qū)拥臉蛄?。展現(xiàn)層使用VO(視圖模型)進行界面展示,與應(yīng)用層通過DTO(數(shù)據(jù)傳輸對象)進行數(shù)據(jù)交互,從而達到展現(xiàn)層與DO(領(lǐng)域?qū)ο螅┙怦畹哪康摹?/p>

延伸閱讀

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