我正在考虑开发一个具有明确定义域的系统(主要基于网络)。
域的一部分包括像这样的实体Diary
, Booking
, Customer
, etc.
不过我创建了另一个名为User
其目的仅用于身份验证和授权(污染Customer
具有特定于身份验证的数据的实体)。我认为这不属于“预订”领域,但具体而言,这应该属于应用程序层(我正在尝试六边形架构)。
我使用域模型中的接口访问我的存储库,并使用 IoC 将它们连接到我的持久层。
我的问题是这样的:
我应该将身份验证/授权代码放入应用程序中吗
并将其排除在域之外?
如果我确实将其保留在域之外,我应该将接口放在UserRepository
也在应用程序层(我认为这会
合理)?
如果我确实将其保留在域之外,那么最终我也会在应用程序层中得到称为User
等等,这似乎是错误的。
人们的想法是什么?
[EDIT]
我已经找到了一个从两个答案中吸取一些内容的解决方案,所以感谢您的回答,我已经为你们俩都+1了。
我所做的是将身份验证/授权代码放在一个单独的项目中的子域(辅助适配器)中,并且因为它需要访问它自己的持久性(单独的 RavenDB 数据库中的一些集合),所以我将这些包括在内直接进入单独的项目,使它们与主持久层分开。
我应该将身份验证/授权代码放入应用程序中吗
并将其排除在域之外?
不,您应该将身份验证/授权代码保留在核心域之外。它属于通用子域。
如果我确实将其保留在域之外,我应该将接口放在
UserRepository 也在应用程序层(我认为这会使
感觉)?
您可以将 UserRepository 保留在域层中,但最好将“访问和识别”子域和“进行预订”核心域彼此分开。您可以使用不同的包或命名空间。
下一个挑战是如何整合这两个领域。以我的愚见,您可以:
- 将 DomainService 从“访问和识别”子域公开到应用程序层以做出身份验证/授权决策。
- 有时我们必须找出谁进行了日记和预订,在这种情况下,使用用户的标识符就足够了。其他信息,例如“最喜欢的标签”或类似的信息通常是not“进行预订”核心域中需要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)