【发布时间】:2012-07-09 05:29:48
【问题描述】:
我的架构如下所示:
- 域
- 实体
- 接口
- DTO
- 基础设施
- ORM
- 存储库
- 服务
- 网络服务
我想使用 AutoMapper 来转换它。我希望我的服务层只知道 DTO,所以我猜我的接口和存储库会返回转换后的 DTO。至于另一个方向,我会假设我的存储库将采用 DTO 并转换为实体?我是在正确的路径上还是在左侧?
【问题讨论】:
-
谁将使用您的服务以及如何使用?
-
我的服务将像 API 一样被访问到我的内部系统。有些将在内部,但在未来,外部系统将连接
-
如果它在路上或内部,服务很容易连接和入侵,你暴露的端点(网络服务)应该返回安全的 DTO,它不会包含整个实体。
-
所以也许正确的解决方案是映射到我的服务层的 DTO,但在我的存储库中,映射到 ViewModels
-
是的,服务总是返回 DTO,因为我们将仅根据身份验证和用户访问权限发送信息。但是,我们使用动态序列化来避免 DTO 制作,这很痛苦。动态序列化仅根据登录的用户序列化实体的一部分,这些规则是在数据库本身编码和在代码外编码的。