我们正在使用域驱动设计开发医院管理系统。我们有AccessManagementContext
,RadiologyInformativeContext
等上下文。
但是我应该把应用程序表放在哪里像Logging,Menu之类的东西?
答案 0 :(得分:1)
记录和"菜单" (我假设你的意思是像web / windows菜单控件)是基础设施和实现问题。他们肯定不属于您的域名。
为了让您了解如何在VS解决方案中实现DDD原则,以下是使用Onion Architecture的基本布局:
虽然DDD不关心"解决方案组织",但我怀疑这可能就是你所要求的。
您的有界上下文(以及所有其他与域相关的代码)将存在于域层中。日志记录将在基础设施层中实施(除非日志记录真正成为您无处不在的语言的一部分,正如SephVelut指出的那样)。菜单等将存在于客户端文件夹中(例如在Web应用程序项目中)。
关于日志记录,如果您希望捕获域代码中的日志,可以考虑查看Domain Events。
答案 1 :(得分:1)
Domain Driven Design不会试图告诉您如何安排您的架构。但它决定了应该和不应该进入你的域名的内容。记录和菜单声音不应该被允许进入script-calls.php
和AccessManagementContext
。
原因是语言。有人会不可避免地提到RadiologyInformativeContext
层。但这是一个架构问题,而不是域驱动的设计问题。您可能会开发一个名为infrastructure
的有界上下文,其无处不在的语言包含了Logging的关注点。所以这是有可能的,但是你必须要问“在这种有限的背景下是无处不在的语言吗?”。
最后,关于建筑。在传统的分层体系结构中,您可以将基础结构问题(I / O,持久性,验证,丰满等)放在与您的域(在另一个命名空间/目录中)分离的层中,并防止域直接依赖于该层中的内容。相反,你会使用接口和依赖性反转来连接两者。