【问题标题】:How to implement the Application Layer in DDD and its Project Structure in Visual Studio如何在 DDD 中实现应用层及其在 Visual Studio 中的项目结构
【发布时间】:2015-10-25 07:35:29
【问题描述】:

我已经进入 DDD 几个月了,大多数书籍都强调Domain Layer,但对应用程序的关注不多。他们只是说Application Layer 是 UI 和 Domain 之间的粘合代码,mainly is a procedural code

"procedural code" 我在想它是一个concrete implementation,应用层不应该提供Interfaces

我读过的关于应用层的一个例子是 Web 服务 (WebAPI)。

这是否意味着如果我有 ASP MVC 应用程序,它会被视为我的应用程序层与同一项目上的演示文稿?并且所有应用服务都将存在于 MVC 项目中?

如果我想提供 Web API,我应该在与 Web API 相同的项目中创建另一个应用程序服务实现吗?

命令呢?我应该把它们放在哪里?据我所知,命令是用例。但是使用什么CAE呢?域还是应用程序?如果我更改了应用层实现中的某些内容,命令是否也应该更改?还是仅当域要求发生变化时才会影响命令?

如果应用层更改会影响命令,那么命令和应用服务应该存在于同一个项目中。如果他们只会受到域更改的影响,那么他们应该住在另一个项目中作为域的合同,应用层项目将引用合同。话虽如此,如果我们有 Web API 和 MVC 项目,它们都引用了 Contract(命令项目)。

基本上我要找的答案是应用层的文件夹和项目结构是什么?

里面有什么?以及依赖关系。

哪些东西会影响应用层的修改。

非常感谢应用层的具体示例。

【问题讨论】:

  • 我会说 Web API / WCF / MVC / Nancy 等......是实现细节/基础设施(又名“框架”)......我会创建一个单独的类库作为应用程序层引用领域层。然后您可以单独对其进行测试并随时更改使用它的框架。我也很想看一些具体的例子..
  • 我正在关注 Vernon Vaughn(“实施 DDD”红皮书作者)github.com/VaughnVernon/IDDD_Samples_NET 的代码示例。消息/通知的发布是否仍然是应用层的责任?就像如果我需要与另一个有界上下文对话,可能使用消息队列、RPC 或 REST 发生事件?如果是,那么 AppLayer 是否应该在其层内声明 Interfaces(INotifier, ICache, ILogger) 并让 Dependency Injection 提供您所说的作为基础设施的具体实现?
  • 我将接口用于我的应用层服务,仅仅是因为它使它们更容易使用 IoC 容器进行测试和连接。但是您的想法是对的,应用层中的组件是过程粘合剂,不需要为类似的过程换掉。
  • 您介意我再次问您在我之前的评论中提出的相同问题吗? “消息/通知的发布是否仍然是应用程序层的责任?就像我需要与另一个有界上下文对话,可能使用消息队列、RPC 或 REST 发生的事件?“我很困惑如何集成有界上下文。示例:如果我想调用其他 BC(跨 BC)在当前 BC 上持久化某些内容之前插入一些记录怎么办。这是 App Layer 的有效用例吗?还是我做错了?

标签: .net asp.net-mvc architecture domain-driven-design


【解决方案1】:

Here 是 Dino Esposito 的解决方案结构的一个很好的例子。 你也有很多问题,我认为,我们无法回答所有问题。你只需要一些经验和例子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多