我正在为新系统开发后端,我将尝试使用 DDD。我在核心项目中定义了我的 DDD 实体,并使用存储库模式从持久层读取这些实体。
我需要 WCF 服务,以便我的客户可以访问后端。往返此 WCF 服务是我发送/接收 DTO。
假设我有一个典型的 Order, Orderrows 场景。在我的 WCF 服务中,我声明了一个函数
IEnumerable<DTO.OrderRows> GetOrderRowsForOrder(DTO.Order o)
我需要建议如何实施这种方法。我有两种不同的选择。
使用我的域对象来读取 orderrows。
Core.Order order = _orderRepository.GetById(o.Id); IEnumerable<Core.OrderRow> orderRows = order.GetOrderRows(); IEnumerable<DTO.OrderRows> dtos = orderRows.Select(x => x.ToDTO()); return dtos;
直接使用存储库读取 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 以获取订单列表怎么办?)