DTOをドメイン オブジェクトにマッピングすることに関連する多くの質問を見てきましたが、それらが私の質問に答えているとは思いませんでした。私は以前に多くの方法を使用しており、独自の意見を持っていますが、もう少し具体的なものを探しています.
状況:
多くのドメイン オブジェクトがあります。CSLA モデルを使用しているため、ドメイン オブジェクトは非常に複雑になり、独自のデータ アクセスが含まれます。これらをネットワーク上で渡したくありません。さまざまな形式 (.Net、JSON など) でデータを返す新しいサービスを作成する予定です。このため (およびその他の理由から)、ネットワーク上でやり取りする無駄のないデータ転送オブジェクトも作成しています。
私の質問は、DTO とドメイン オブジェクトをどのように接続する必要があるかということです。
私の最初の反応は、Fowler の DTO パターン型ソリューションを使用することです。私はこれが何度も行われるのを見てきましたが、それは私にとって正しいと感じています. ドメイン オブジェクトには、DTO への参照が含まれていません。ドメイン オブジェクトから DTO を作成するために、外部エンティティ (「マッパー」または「アセンブラー」) が呼び出されます。通常、ドメイン オブジェクト側にORMがあります。これの欠点は、「マッパー」が実際の状況で非常に複雑になる傾向があり、非常に壊れやすい可能性があることです。
もう 1 つのアイデアは、ドメイン オブジェクトに DTO を「含める」ことです。ドメイン オブジェクト プロパティは、DTO プロパティを内部的に参照し、要求された場合に DTO を返すことができます。これで問題はないと思いますが、気分が悪いです。NHibernateを使用している人がこの方法を使用しているように見える記事をいくつか見ました。
他の方法はありますか?上記の方法のいずれかを使用する価値はありますか? そうである場合、またはそうでない場合、その理由は何ですか?