【发布时间】:2011-09-21 06:13:32
【问题描述】:
假设您有实体、服务层和存储库(使用像 NHibernate 这样的 ORM)。 UI 与服务层交互。
什么类型的代码适合服务层?
存储库协调?
看起来像entities should not reference the repository,所以服务层中应该存在加载/保存/驱逐实体的调用吗?
涉及存储库的业务逻辑?
如果上述情况属实,是否应该在服务层中检查用户名是否不同(即调用 GetUsersByUsername 并检查结果)?在建议 DB 应该处理 distinct 之前,验证一个密码是否在 90 天内未被使用?
涉及多个实体的业务逻辑?
我不确定这个,但是说您需要对可能相关或可能不相关且并不真正适用于单个实体的实体集合应用操作。实体是否应该能够对这些集合进行操作,或者这种东西是否属于服务层?
映射?
无论您是使用 DTO 还是将实体发送到服务层或从服务层发送实体,您最终都可能会进行映射(最好使用 AutoMapper)。这属于服务层吗?
我正在寻找对上述想法的确认(或拒绝),以及在使用实体/存储库时关于服务层职责的任何其他想法。
【问题讨论】:
标签: domain-driven-design repository soa business-logic