領域服務與應用服務的職責
我們知道,在領域設計中,劃分為三種模型,分別為:實體(Entity)、值物件(Value Object)、和服務(Service)。其中Service與我們傳統設計中的Service有什麼不同呢?
讓我們來回憶一下,通常我們針對將讀寫xml、資金轉賬等程式碼放在service中,可以看出,該層包括了兩種含義,一種是與業務無關的,一種是與業務緊密關聯的。領域驅動設計將這兩層含義進一步劃分,《Domain-Driven Design》中的例子那樣:如果銀行應用可以將我們的交易轉化並輸出電子表格檔案,那麼這種輸出就應該是應用服務。而負責處理資金轉帳的借貸關係,應該屬於領域層,它包括了基本的業務邏輯,而技術層上的服務則根本沒有任何業務含義。由此得知,將傳統設計中的Service繼續劃分,得到應用服務與領域服務。領域層和應用層的服務是相互合作,由應用Service指揮領域物件來解決問題。
如此劃分,可以使各層的結構和職責更加清晰,技術與業務進一步分離。
以上是我個人的理解,有不對之處還請指正。
另仔細閱讀實戰DDD(Domain-Driven Design領域驅動設計),在該文中說到:“在JiveJdon3中,com.jdon.jivejdon.service.ForumService和Forum實體模型及其值物件ForumState共同完成領域模型,其中ForumService屬於應用服務層;而後兩者屬於領域層;其他服務ForumMessageService、AccountService和UploadService等都是此類性質。”在JiveJdon3中並沒有對領域與應用Service進行明確的劃分,而是由ForumService來完成。JJ3的程式碼我沒有看過,只是從這段文字還這樣判斷的,有不對之處還請包含。請問,JJ3中是否對Service進行了劃分?如果沒有那麼您是怎樣考慮的呢?
讓我們來回憶一下,通常我們針對將讀寫xml、資金轉賬等程式碼放在service中,可以看出,該層包括了兩種含義,一種是與業務無關的,一種是與業務緊密關聯的。領域驅動設計將這兩層含義進一步劃分,《Domain-Driven Design》中的例子那樣:如果銀行應用可以將我們的交易轉化並輸出電子表格檔案,那麼這種輸出就應該是應用服務。而負責處理資金轉帳的借貸關係,應該屬於領域層,它包括了基本的業務邏輯,而技術層上的服務則根本沒有任何業務含義。由此得知,將傳統設計中的Service繼續劃分,得到應用服務與領域服務。領域層和應用層的服務是相互合作,由應用Service指揮領域物件來解決問題。
如此劃分,可以使各層的結構和職責更加清晰,技術與業務進一步分離。
以上是我個人的理解,有不對之處還請指正。
另仔細閱讀實戰DDD(Domain-Driven Design領域驅動設計),在該文中說到:“在JiveJdon3中,com.jdon.jivejdon.service.ForumService和Forum實體模型及其值物件ForumState共同完成領域模型,其中ForumService屬於應用服務層;而後兩者屬於領域層;其他服務ForumMessageService、AccountService和UploadService等都是此類性質。”在JiveJdon3中並沒有對領域與應用Service進行明確的劃分,而是由ForumService來完成。JJ3的程式碼我沒有看過,只是從這段文字還這樣判斷的,有不對之處還請包含。請問,JJ3中是否對Service進行了劃分?如果沒有那麼您是怎樣考慮的呢?
相關文章
- DDD-領域物件與領域服務物件
- 區塊鏈的應用領域——公共服務(三)區塊鏈
- 初識ABP vNext(11):聚合根、倉儲、領域服務、應用服務、Blob儲存
- Spring GraphQL與Netflix領域圖服務框架整合Spring框架
- 領域驅動設計戰術模式--領域服務模式
- 戲說領域驅動設計(廿一)——領域服務
- DNS服務應用DNS
- 北京市政務服務領域區塊鏈應用創新藍皮書(附下載)區塊鏈
- AD域服務
- RPA機器人流程自動化在IT服務領域的7個應用案例機器人
- 工位出租,場景服務領域升級
- 服務與服務之間的呼叫
- Qt服務應用操作QT
- silky微服務的應用服務和服務條目微服務
- 【Azure 應用服務】Azure App Service 自帶 FTP服務APPFTP
- 微服務的服務間通訊與服務治理微服務
- 構建Spring Boot應用的微服務服務監控與告警Spring Boot微服務
- 分散式應用服務的拆分分散式
- 到底什麼是微服務?其實就是DDD領域服務微服務
- 領域驅動模型DDD(一)——服務拆分策略模型
- 戲說領域驅動設計(十二)——服務
- Java服務端容器化:Docker與Kubernetes的應用Java服務端Docker
- 新林和域服務
- 用 Ansible 部署無服務應用!
- 8 Apply Services 應用服務APP
- 服裝供應鏈領域的佈局與發展
- 管理Mac應用使用定位服務Mac
- SummerSoC 2020:基於領域驅動的服務設計(SOA/微服務) – Stefan Kapferer微服務
- 微服務架構中的服務邊界與服務識別微服務架構
- Now冥想:崩潰服務和效能服務助力提升應用質量
- 地理位置服務的應用場景
- 內地再向香港開放11個服務領域(轉)
- consul服務註冊與服務發現的巨坑
- 快應用、快服務、服務直達…這些到底是啥玩意
- 構建Spring Boot應用的微服務服務動態路由Spring Boot微服務路由
- 中國通訊服務:區塊鏈賦能新基建領域應用白皮書(附下載)區塊鏈
- .1.7.2 應用程式高可用性與服務和FAN
- Android系統服務DropBoxManagerService詳解與實踐應用Android
- Util應用框架核心(一) - 服務配置框架