我正在研究领域驱动设计并构建一个具有 4 层的解决方案(使用 C#、.NET 8):表示层、应用程序、域和基础设施。我对如何继续实施有一些疑问:
我在一些示例中看到应用程序、域和基础设施接口都集中在域层。但是,当我构建项目时,我想知道在各自的层中放置一个界面是否更有组织性。例如:
UserApplicationService
有 IUserApplicationService
。我可以将 IUserApplicationService
放在应用程序层还是必须放在域层?
我正在使用 Dapper 通过存储库从基础设施层的 SQL Server 获取数据。我必须获得所有活跃用户,因此,在我的
UserRepo
中有:select * from user where active = 1
。但是,获得活跃用户是一条商业规则。所以我有两个选择:维护带有 where 子句的选择或获取所有用户并在域层中过滤它们。如果我选择第一个选项,我就没有遵循DDD的原则吗? (因为获取活跃用户的规则是在基础设施层)。但如果我选择第二个选项,并且我有 1,000,000 个客户端,我将损失性能。在这种情况下该如何进行?此示例的最佳解决方案是什么?
我有一个工人服务项目。他必须位于表示层,因为是一个启动项目,或者位于应用程序层,因为没有用户输入,只是操作域层服务接收到的数据?