30

ドメイン レイヤー (DL)/ビジネス (サービス) レイヤー (BL)/プレゼンテーション レイヤー (PL) を含むマルチレイヤー プロジェクトで、エンティティをプレゼンテーション レイヤーに配信するための最良のアプローチは何ですか?

DO => Domain Object;
DTO = Domain Transfer Object;
VM => View Model;
V => View;

オプション1:

DL => DO => BL => DTO => PL => VM => V

このオプションはベスト プラクティスのようですが、維持するのも難しいようです。

オプション 2:

DL => DO => BL => DTO => PL => V

このオプションはあまり良い方法とは思えませんが、DTO は VM とほとんど同じであるため、ビューに直接渡すことができ、実装と維持の負担が軽減されます。

このオプションは複数のレイアウトに対しても信頼できますか? たとえば、モバイル デバイスの場合、BL からの情報が少なくて済む可能性があるため、この特定のレイアウトには別の VM が必要になりますか?

4

4 に答える 4

10

DTO をビューに渡しても問題ありません。DTO を変更または強化する必要がある場合は、ViewModel を作成します。一般的なシナリオは、リンクを追加することです。ViewModel が DTO を複雑なプロパティとして参照することも問題ありません。

于 2012-10-13T15:10:58.560 に答える
2

Dto とは異なるデータを必要とするさまざまなビューを作成する場合は、これらに対して異なるビュー モデルを使用し、Dto をこれらにマップすることでメリットが得られるように思えます。

この背後にあるアイデアの 1 つは、アプリケーションの他の部分に影響を与えないことを認識して、ビュー モデルをより自由に変更できるようにすることです。Dto が複数のビューで使用されている場合、Dto を変更するたびに各ビューをテストする必要があります。

于 2012-10-13T15:10:47.863 に答える
0

ここで私の返信を参照してください: https://stackoverflow.com/a/14059156/1288063

あなたは言う:このオプションはベストプラクティスのようですが、維持するのも難しいようです.

おそらく実装するのは大変です。ほとんどの場合、数行のコードを複製する必要がありますが、維持する必要はありません。

于 2012-12-27T18:24:07.453 に答える