私はdifferences between POCO and DTOを見ていました(POCOは動作(メソッド?)であると思われます)、貧血ドメインモデルのMartin Fowlerがthis articleを見つけました。POCO's、DTO's、DLL's、Anemic Domain Models
理解の不足により、これらの貧血ドメインモデルの1つを作成したと思います。
私のアプリケーションの1つに、私はビジネスドメインエンティティを 'dto' dllで定義しています。彼らはゲッターとセッターの多くのプロパティを持っています。私のビジネスロジックコード(populate、calculate)は別の 'bll' dllにあり、データアクセスコードは 'dal' dllにあります。 「ベストプラクティス」と思った。
だから典型的私はそうのようなDTOを作成する:
dto.BusinessObject bo = new dto.BusinessObject(...)
などのようなBLL層に渡す。次に、いくつかのロジックを実行し、DALに渡し
bll.BusinessObject.Populate(bo);
層のように:
dal.BusinessObject.Populate(bo);
私の理解から、自分のdOCをポコにするためには、私はビジネスログを作る必要がありますcとオブジェクトの動作(メソッド)の一部です。だから、上のコードの代わりに、それはもっと似ています:
poco.BusinessObject bo = new poco.BusinessObject(...)
bo.Populate();
ieです。メソッドにオブジェクトを渡すのではなく、オブジェクトのメソッドを呼び出しています。
私の質問は - 私はこれを行うことができますし、懸念(別のdllのなど...)の 'ベストプラクティス'のレイヤーを保持します。オブジェクト上のメソッドを呼び出さないということは、そのメソッドがオブジェクト内に定義されていなければならないということですか?
私の混乱を助けてください。
このようなデザインのソースコードの例を知っていますか?私は原則が理にかなっていますが、私がFlyToAirportの実装に着手すると、特に私がSPを使用していない場合、いくつかのテーブルを更新する必要がある場合は、データベースへのチャット・インターフェイスで終わります。 –
外部トランザクションが関係する場合、サービスを使用する方が意味があります。できるだけ粗くして、ドメインモデルに多くの動作を組み込むことができるようにする必要があります。残念ながら、私はそれができるだけ頻繁に使用されて表示されません。確かに、私が書いた非旧生産コードではこのコードを使用し、このアプローチを使用するいくつかのプロジェクトに取り組んできました。 –