POCO と DTO の違いを調べていたところ(POCO は動作 (メソッド?) を伴う dto のようです) 、貧血ドメイン モデルに関する Martin Fowler の記事に出会いました。
理解の欠如により、私はこれらの貧血ドメイン モデルの 1 つを作成したと思います。
私のアプリケーションの 1 つで、'dto' dll でビジネス ドメイン エンティティを定義しています。それらには、ゲッターとセッターを備えた多くのプロパティがあり、他にはあまりありません。ビジネス ロジック コード (入力、計算) は別の 'bll' dll にあり、データ アクセス コードは 'dal' dll にあります。「ベストプラクティス」と思いました。
したがって、通常、次のように dto を作成します。
dto.BusinessObject bo = new dto.BusinessObject(...)
次のように bll レイヤーに渡します。
bll.BusinessObject.Populate(bo);
次に、いくつかのロジックを実行し、次のように dal レイヤーに渡します。
dal.BusinessObject.Populate(bo);
私の理解では、dto を POCO にするには、ビジネス ロジックと動作 (メソッド) をオブジェクトの一部にする必要があります。したがって、上記のコードの代わりに、次のようになります。
poco.BusinessObject bo = new poco.BusinessObject(...)
bo.Populate();
すなわち。オブジェクトをメソッドに渡すのではなく、オブジェクトのメソッドを呼び出しています。
私の質問は、どうすればこれを行うことができ、「ベストプラクティス」の懸念事項の階層化 (個別の dll など...) を保持することができるかということです。オブジェクトでメソッドを呼び出すということは、オブジェクトでメソッドを定義する必要があるということではありませんか?
私の混乱を助けてください。