Domain driven design 理解域层和基础结构层之间的交互

Domain driven design 理解域层和基础结构层之间的交互,domain-driven-design,Domain Driven Design,我试图正确理解分层体系结构的概念。我想我了解大部分的概念,但有一两件事我还不清楚 因此,我理解每个层的用途:表示层用于UI和用户交互,应用层协调应用程序逻辑和域对象,域层用于所有业务逻辑,基础结构层用于持久化和访问外部服务,如网络功能等 我理解每一层应该只依赖于它下面的层,并且层应该用接口分开。但我很难理解的是域层和基础架构层之间的交互 我正在开发一个以数据库为中心的桌面应用程序。我最初的方法是将数据库中的所有信息提取到内存域模型中。然后,该模型将在应用程序的整个过程中一直存在于数据库中,然后仅

我试图正确理解分层体系结构的概念。我想我了解大部分的概念,但有一两件事我还不清楚

因此,我理解每个层的用途:表示层用于UI和用户交互,应用层协调应用程序逻辑和域对象,域层用于所有业务逻辑,基础结构层用于持久化和访问外部服务,如网络功能等

我理解每一层应该只依赖于它下面的层,并且层应该用接口分开。但我很难理解的是域层和基础架构层之间的交互

我正在开发一个以数据库为中心的桌面应用程序。我最初的方法是将数据库中的所有信息提取到内存域模型中。然后,该模型将在应用程序的整个过程中一直存在于数据库中,然后仅在用户保存后才会持久化到数据库中。但是我对这种方法有疑问。。。从我所读到的内容来看,似乎我应该只在需要时从数据库中取出数据。换句话说,将一个信息拉入一个对象,编辑该对象,完成后将该对象推回数据库。但让我困惑的是,一旦对象离开数据库,它们就与它们的状态断开连接。假设我从数据库中拉出一个对象,并对其进行编辑。在我将其提交回数据库之前,应用程序的另一部分还将对象从数据库中拉出。相同的两个对象现在位于我的域层中,具有不同的引用和不同的状态。这对我来说简直是一场噩梦。我错过什么了吗?我是否应该一次只允许一个事务来避免此问题

我最初将所有数据拉入内存模型的方法是否错误?我的应用程序可能有多达10000条记录,所以我想这可能会导致内存问题

旁注:我在这个阶段没有使用任何ORM

任何帮助或见解都将不胜感激

基础设施层用于持久化和访问外部服务,如网络功能等

持久性层用于持久性,基础设施层通常是一个横切层(即,它垂直跨越不同的层),其中可能包括日志记录或您提到的内容

您对数据更新的关注是一个典型的并发问题,不特定于分层体系结构。有很多解决方案,一个典型的解决方案是,在使用新值更新之前检查旧值是否未被修改。类似的方法是使用自动增量值代替旧值