【发布时间】:2013-09-18 08:16:39
【问题描述】:
我正在为新系统开发后端,我将尝试使用 DDD。我在核心项目中定义了我的 DDD 实体,并使用存储库模式从持久层读取这些实体。
我需要 WCF 服务,以便我的客户可以访问后端。我是否向此 WCF 服务发送/接收 DTO。
假设我有一个典型的 Order, Orderrows 场景。在我的 WCF 服务中,我声明了一个函数
IEnumerable<DTO.OrderRows> GetOrderRowsForOrder(DTO.Order o)
我需要有关如何实施此方法的建议。我有两种不同的选择。
-
使用我的域对象来读取订单。
Core.Order order = _orderRepository.GetById(o.Id); IEnumerable<Core.OrderRow> orderRows = order.GetOrderRows(); IEnumerable<DTO.OrderRows> dtos = orderRows.Select(x => x.ToDTO()); return dtos; -
直接使用repository读取orderrows。
IEnumerable<Core.OrderRow> orderRows = _orderRowsRepository.GetOrderRowsForOrder(o.Id); IEnumerable<DTO.OrderRows> dtos = orderRows.Select(x => x.ToDTO()); return dtos;
对我来说,选择 1 看起来更“面向对象”,但选择不是。 2看起来更简单,更有效。
我的问题是,使用 DDD 时应该使用哪一个?这里用DDD合适吗?
(这当然是一个简单的示例,但是如果我需要为订单列表获取 orderrows 怎么办?)
【问题讨论】:
标签: .net wcf domain-driven-design