従来のCLRオブジェクトとデータ転送オブジェクトの違い 質問する

従来のCLRオブジェクトとデータ転送オブジェクトの違い 質問する

POCO = プレーンオールド CLR (またはより良い: クラス) オブジェクト

DTO = データ転送オブジェクト

この役職違いはありますが、率直に言って、私が読んだブログのほとんどは、DTO の定義に従って POCO を説明しています。DTO は、アプリケーションのレイヤー間でデータを移動するために使用される単純なデータ コンテナーです。

POCO と DTO は同じものですか?

ベストアンサー1

POCO は OOP のルールに従います。状態動作を持つ必要があります (ただし、必須ではありません)。POCO は Martin Fowler によって考案された POJO に由来しています [逸話はこちら彼は、フレームワークに重点を置いた EJB 実装を拒否する魅力を高めるために、POJO という用語を使用しました。.Net では、POCO を同じコンテキストで使用する必要があります。フレームワークにオブジェクトの設計を指示させないでください。

DTOの唯一の目的は状態を転送することであり、動作は持たない。Martin FowlerのDTOの説明このパターンの使用例については、こちらをご覧ください。

違いは次のとおりです。POCOはプログラミングへのアプローチ(古き良きオブジェクト指向プログラミング) を記述し、 DTO はオブジェクトを使用して「データを転送」するために使用されるパターンです。

POCOをDTOのよ​​うに扱うことはできますが、貧血領域モデルそうすると、構造が不一致になります。DTO は、ビジネス ドメインの実際の構造を表すのではなく、データを転送するように設計する必要があるためです。その結果、DTO は実際のドメインよりもフラットになる傾向があります。

ある程度の複雑さを持つドメインでは、ほとんどの場合、個別のドメインPOCOを作成し、それをDTOに変換する方がよいでしょう。DDD(ドメイン駆動設計)は、腐敗防止層(別のリンクここしかし、最善の方法は本を買う) は分離を明確にする優れた構造です。

おすすめ記事