1. ホーム
  2. asp.net-mvc

[解決済み] DTO = ViewModel?

2022-09-06 12:58:31

質問

NHibernateを使用してドメインオブジェクトを永続化します。 物事を単純にするために、私はプレゼンテーション層とサービス層の両方としてASP.NET MVCプロジェクトを使用しています。

コントローラクラスから XML でドメインオブジェクトを返したいと思います。Stack Overflow でいくつかの投稿を読んだ後、DTO が行くべき道であることを集めました。しかし、私はまた、ViewModelについて話している投稿に出会いました。

私の質問です。Data Transfer Objects と ViewModel は同じものですか?それとも ViewModel は DTO のサブパターンのようなものでしょうか?

どのように解決するのですか?

DTOの標準的な定義は、動作を伴わないオブジェクトのデータ形状です。

ViewModelsはビューのモデルです。ビューモデルは通常、1つ以上のオブジェクト(またはDTO)からの完全または部分的なデータと、ビューの動作に特有の追加メンバー(ビューによって実行できるメソッド、ビュー要素のトグル方法を示すプロパティなど...)で構成されます。ビューモデルとは、ビューの全てのデータ+ビヘイビアと見なすことが出来ます。ビューモデルはビジネスオブジェクトやDTOに一対一でマッピングすることもできますし、しないこともできます。

ところで、NHibernateは プロジェクション は、特定のビューモデルが永続化されたオブジェクトからデータのサブセットを必要とする場合に便利です。