当前位置: 首页 > 知识库问答 >
问题:

DDD六边形-域层是否应该在任何情况下与基础设施(DAL)层对话?

靳彦
2023-03-14

据我所知,六边形体系结构的一个关键规则是如何将域层与除应用程序层之外的其他所有东西隔离开来(域层在核心中没有任何依赖关系):

那么,我的问题是,域层是否做过任何工作或有任何关于数据持久性的知识?假设我们有一些业务逻辑依赖于被检索然后持久化的数据,那么应该始终是应用程序层来编排这一点吗?

加载业务逻辑运行所需的一切->告诉域层运行所有业务逻辑->提取业务逻辑的结果并告诉基础结构层将其持久化->

从这个意义上说,应用程序层是否总是需要跟踪域层计算的任何结果,因此总是实现某种UnitOfWork模式来跟踪这些结果?

域层是否可以与存储库或存储库的接口一起工作?有一些来源似乎表明这是好的,这完全矛盾的图表从我的角度。

共有1个答案

钦英发
2023-03-14

假设我们有一些业务逻辑依赖于被检索然后持久化的数据,那么应该始终是应用程序层来编排这一点吗?

在一个理想化的设置中,您有清晰的关注点分离:域模型使用本地内存中已有的信息计算事物,应用程序代码编排从/到本地内存的信息复制。

表达方式有些不同:我们应该能够替换所有管道,而不会完全干扰域模型的实现。

注意:在Evans的原著中,域服务是在建模域时出现的模式(第5章),而存储库是在生命周期管理中出现的模式(第6章)。

分布式信息通常涉及故障模式,我们通常希望我们的域代码不要被一堆故障管理逻辑弄得乱七八糟,就像我们通常不希望我们的域代码涉及一堆持久性问题一样。

另见

  • 函数核心,命令式shell
  • 正确构建协议库
  • 异步注入
 类似资料:
  • 链接 集成EntityFramework 集成NHibernate 集成EntityFramework Core 集成EntityFramework MySQL 集成Dapper

  • 9.2 ABP基础设施层 - 集成Dapper 9.2.1 简介 Dapper 是基于.NET的一种对象关系映射工具。Abp.Dapper简单的将Dapper集成到ABP。它作为第二个ORM可以与EF 6.x, EF Core 或者 Nhibernate 工作。 9.2.2 安装 在开始之前,你需要安装Abp.Dapper以及 EF 6.x, EF Core 或者 NHibernate 这3个当中

  • 9.2 ABP基础设施层 - 集成NHibernate ABP可以与任何ORM框架协同工作,它内置了对NHibernate的集成支持。本文将介绍如何在ABP中使用NHibernate。本文假定你已经初步掌握了NHibernate。 译者注:怎么才算初步掌握了NHibernate呢?译者认为应当懂得使用NHibernate进行CRUD,懂得使用Fluent模式进行映射。 9.2.1 Nuget包 要

  • 9.1 ABP基础设施层 - 集成Entity Framework ABP可以与任何ORM框架协同工作,它内置了对EntityFramework的集成支持。本文将介绍如何在ABP中使用EntityFramework。本文假定你已经初步掌握了EntityFramework。 译者注:怎么才算初步掌握了EntityFramework呢?译者认为应当懂得使用Code First模式进行CRUD。 9.1

  • ABP 基础设施层 - 集成 Entity Framework MySql 9.4.1 简介 虽然启动模板默认设计是使用Sql Server,但是你可以很容易的修改它来使用MySql。要这么做的话,你需要跟随一下步骤: 9.4.2 实现使用MySQL 下载项目 请到 http://aspnetboilerplate.com/Templates 下载一个新的项目,选择ASP.NET 5.x标签,还有

  • ABP 基础设施层 - 集成 Entity Framework Core 9.3.1 简介 Abp.EntityFrameworkCore nuget package 被用来集成到EF Core ORM框架. 在安装这个包以后,我们应该在模块类 AbpEntityFrameworkCoreModule 上添加 DependsOn 特性。 9.3.2 DbContext EF Core要求有个派生自