簡體   English   中英

.NET MVC 5和洋蔥架構

[英].NET MVC 5 and Onion Architecture

我正在寫大項目,我想在其上應用域驅動設計(DDD)。 這是我的項目和解釋:

  • XXX.Domain.Entities - POCO(Plain Old C#Object)類(例如:Message.cs)
  • XXX.Domain.Services - 域的服務

  • XXX。基礎設施 - 基礎設施接口

  • XXX.Infrastructure.Concrete - 來自XXX.Infrastructure的接口的impl
  • XXX.Infrastructure.DI - 依賴注入模塊(例如:RepositoryModule.cs)

  • XXX.Services - 應用程序的服務(但我不知道在哪里投入)

  • XXX.Tests - 單元測試(例如:SomeTest.cs)

  • XXX.Web.Ui - MVC5應用程序

但我無法理解我應該把它們放在哪里:IMessagesService.cs(模型消息的BL),MessagesService.cs(模型消息的BL),SessionHelper.cs,MessageMapping.cs,IMailerService.cs,MailerService.cs

另外:我應該在哪里放置IRepository和GenericRepository(impl)?

如果要組織應用程序服務,只需將所有實現放入XXX.Services項目中的文件夾Impl XXX.Services 您有一個選項,而不是僅為實現創建新項目。

在此輸入圖像描述

SessionHelperMessageMapping看起來像DataAccess特定的基礎架構,應該靠近您的數據訪問組件。

此外,我會將所有域實體和域服務放入單個項目Domain Model 在這種情況下,您的域邏輯將不會在兩個項目XXX.Domain.EntitiesXXX.Domain.Services之間拆分,以便您的所有域邏輯都將分組。

編輯:

“域驅動設計(DDD)服務”中,域服務和應用程序服務之間存在很好的差異列表:

  • 域服務非常精細,因為應用程序服務是提供API的外觀。
  • 域服務包含自然不能放置在實體或值對象中的域邏輯,而應用程序服務則協調域邏輯的執行,而不是自己實現任何域邏輯。
  • 域服務方法可以具有其他域元素作為操作數和返回值,而應用服務可以在諸如標識值和原始數據結構之類的簡單操作數上操作。
  • 應用程序服務聲明對執行域邏輯所需的基礎結構服務的依賴性。
  • 命令處理程序是一種應用程序服務,它專注於處理通常在CQRS體系結構中的單個命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM