Domain driven design 我可以将所有应用程序服务放在DDD中的前端吗?

Domain driven design 我可以将所有应用程序服务放在DDD中的前端吗?,domain-driven-design,web-application-design,Domain Driven Design,Web Application Design,正如我从一些关于域驱动设计的文章中所读到的,域服务是为了确保域的逻辑完整性,并且可以调用其他域服务来实现外部功能 那么,我是否可以假设,在前端和后端分离的web应用程序中,即使客户端不可信,只要域服务能够确保不会违反任何业务规则,我就可以将所有应用程序服务放在前端 如果答案是肯定的,那么将所有应用程序服务放在前端将有助于减少服务器的负载并简化层次结构(因为前端本身需要一个服务层),因为服务器端没有应用程序服务层,这是否合理?是否会出现安全问题?您可以而且应该尽可能使应用程序层薄,并防止域模型泄漏

正如我从一些关于域驱动设计的文章中所读到的,域服务是为了确保域的逻辑完整性,并且可以调用其他域服务来实现外部功能

那么,我是否可以假设,在前端和后端分离的web应用程序中,即使客户端不可信,只要域服务能够确保不会违反任何业务规则,我就可以将所有应用程序服务放在前端


如果答案是肯定的,那么将所有应用程序服务放在前端将有助于减少服务器的负载并简化层次结构(因为前端本身需要一个服务层),因为服务器端没有应用程序服务层,这是否合理?是否会出现安全问题?

您可以而且应该尽可能使应用程序层薄,并防止域模型泄漏到应用程序层。但是我不认为您可以完全从后端删除应用程序层,因为您至少需要在其中包含一些持久性逻辑。

持久性逻辑应该在应用程序层中吗?我是ddd新手,对实现细节非常困惑。是的,所有的基础设施关注点,如持久性,都应该在域层之外,即应用层。根据这些文章,不需要存储库层,因为持久性逻辑可以由域模型自己处理。@Alsein这篇文章有一个例外的观点。但是DDD中的大多数参考书,如“领域驱动设计的模式、原则和实践”,强烈建议不要这样做,因为这违反了DDD的原则。域模型只处理域逻辑,是UL的实现。里面不应该有任何技术问题。如果删除存储库层,将在域层中插入持久性逻辑,这会降低后端的可维护性。