Juo*_*vid 5 c# architecture domain-driven-design repository-design user-roles
我的应用程序遵循 DDD 架构。我有应用程序层、领域层和数据访问层(存储库)。假设我的应用程序中有 3 个角色:管理员、主管、代理机构。每个角色都应该访问分配给自己的数据。所以问题是,我应该放置查询逻辑以便按存储库中的角色过滤数据吗?
var query = dataContext.Order.Where(...);
if(userRole = "admin")
query =.... filter by admin
If(usrRole = "supervisor")
query =....
return query.ToList();
Run Code Online (Sandbox Code Playgroud)
我认为与业务逻辑相关的逻辑应该放在领域层。但这个我还没有搞清楚。你们能为我解决这个问题吗?
到目前为止,我读过的最好的解释来自Wrox 出版的领域驱动设计的模式、原则和实践。下图类似于核心思想。
所有依赖项都指向内部,因此域模型不依赖于其他任何东西,也不知道其他任何东西。其中它是纯粹的,并且可以专注于重要的事情,即领域的语言。
应用程序层(包含应用程序服务)公开用例的 API,并使用所涉及的域服务来编排请求。因此,应用程序服务中的代码是过程化的,而领域模型中的代码通常要丰富得多。也就是说,如果域足够复杂,足以保证它。
但我离题了,为了回答你的问题,应用程序层公开了基础设施要实现的接口(例如存储库模式)。应用程序层也知道如何查询数据(通过使用此接口),并根据角色过滤数据。
领域模型应该只接收过滤后的集合,并且只关注一件事,处理数据。
为了完整性,DDD 允许多种架构,只要域没有依赖关系。虽然我发现这样思考是最容易掌握的。
| 归档时间: |
|
| 查看次数: |
1870 次 |
| 最近记录: |