私はこれに自分で苦労しました。DTOをプレゼンテーションで使用することが理にかなっている場合があります。システム内の会社のドロップダウンを表示したいとし、値をバインドするために会社のIDが必要だとします。
サブスクリプションへの参照がある可能性がある、または他に何を知っているかを知っているCompanyObjectをロードする代わりに、名前とIDを指定してDTOを送り返すことができます。これは私見の良い使い方です。
別の例を見てみましょう。私は見積もりを表すオブジェクトを持っています、この見積もりは労働力、設備などで構成されている可能性があり、これらすべての項目を取得して合計するユーザーによって定義された多くの計算がある可能性があります(各見積もりはタイプによって異なる可能性があります計算の)。このオブジェクトを2回モデル化する必要があるのはなぜですか?UIに計算を列挙させて表示させることができないのはなぜですか?
私は通常、ドメインレイヤーをUIから分離するためにDTOを使用しません。私はそれらを使用して、ドメインレイヤーを自分の制御の及ばない境界から分離します。誰かがナビゲーション情報をビジネスオブジェクトに入れるという考えはばかげています。ビジネスオブジェクトを汚染しないでください。
誰かがビジネスオブジェクトに検証を入れるという考えは?さて、これは良いことだと思います。UIは、ビジネスオブジェクトを検証する唯一の責任を持つべきではありません。ビジネス層は独自の検証を行う必要があります。
UI生成コードをbusienssオブジェクトに配置するのはなぜですか?私の場合、UIからUIコードseperatleyを生成する個別のオブジェクトがあります。私のビジネスオブジェクトをXmlにレンダリングする個別のオブジェクトがあります。このタイプの汚染を防ぐためにレイヤーを分離する必要があるという考えは、なぜビジネスオブジェクトにHTML生成コードを配置するのでしょうか...
編集
もう少し考えますが、UI情報がドメインレイヤーに属している場合があります。これは、ドメインレイヤーと呼ばれるものを曇らせる可能性がありますが、UIのルックアンドフィールと機能ワークフローの両方で非常に異なる動作をするマルチテナントアプリケーションに取り組みました。さまざまな要因に応じて。この場合、テナントとその構成を表すドメインモデルがありました。それらの構成には、たまたまUI情報が含まれていました(たとえば、汎用フィールドのラベル)。
オブジェクトを永続化できるように設計する必要がある場合、オブジェクトも複製する必要がありますか?新しいフィールドを追加する場合は、2つの場所で追加できることに注意してください。DDDを使用している場合、おそらくこれは別の問題を提起します。すべての永続化されたエンティティはドメインオブジェクトですか?私の例では、彼らがそうであったことを知っています。