新しいシステムのバックエンドを開発しており、DDD を使用してみます。コア プロジェクトで DDD エンティティを定義し、リポジトリ パターンを使用して永続化レイヤーからそれらのエンティティを読み取りました。
クライアントがバックエンドにアクセスできるように、WCF サービスが必要です。この WCF サービスとの間で DTO を送受信しています。
典型的な Order, Orderrows シナリオがあるとしましょう。私のWCFサービスでは、関数を宣言します
IEnumerable<DTO.OrderRows> GetOrderRowsForOrder(DTO.Order o)
この方法を実装する方法についてアドバイスが必要です。私には2つの異なる選択肢があります。
私のドメイン オブジェクトを使用して 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 を取得する必要がある場合はどうすればよいでしょうか?)