2013-05-21 17 views
7

私の意見の1つでは、ViewModelを2つのテーブルから作成し、List<ViewModel>を編集可能なGridView(ASP.NET Webフォーム)にバインドします。プレゼンテーションからサービスにViewModelを渡す - それは大丈夫ですか?

編集したList<ViewModel>をサービスレイヤーに送ってデータベースで更新する必要があります。

私の質問は - それはいいですか?ViewModelをサービスに戻すか、それともプレゼンテーションに残すべきですか?もしそうでなければ、私はDTOをよく使うべきですか?どうもありがとう。

+0

私はそのapporachに何の問題も見ません – Shyju

+0

View-modelはプレゼンテーション層です。あなたはDTOを使うべきです。 –

+0

これは良い質問ですが、実際には、StackOverflow形式には合わないことになります。[faq](http://stackoverflow.com/faq#dontask)を参照してください。解決されるべき実際の問題はありません。 _ –

答えて

9

ニース質問!

私のチームメイトとのいくつかの(難しい)議論とMVCアプリケーションでの私の経験の後、viewmodelをサービス/ドメイン層に渡すことはお勧めしません。

  1. ViewModelはプレゼンテーションに属します。
  2. viewModelはさまざまなモデルの組み合わせ(たとえば、10個のモデルから構築された1つのviewModel)である可能性があるため、サービスレイヤはドメインエンティティでのみ動作する必要があります。

これを行わないと、1つのビューの特性であるviewModelsによって制約されるため、サービスレイヤーは使用できなくなります。

https://github.com/AutoMapper/AutoMapperのようなニースのツールを作成してマッピングジョブを作成しました。

-3

はい。私はそれが大丈夫だと確信しています。

MS Entity Frameworkを試してみてください。それはあなたに役立ちます。

6

私はではありません。です。私のルールは:彼らは彼らの仕事をする必要があるすべてのサービス方法と何も

なぜですか?

  1. カップリングを減らすためです。多くの場合、サービス方法は複数のソース(消費者)から対処されます。コンシューマーにとっては、ビューモデルのような比較的複雑なオブジェクトを構築しなければならない場合と比べて、単純なメソッドシグニチャーを実行する方がはるかに簡単です。他に必要のないアセンブリへの参照が必要な場合もあります。

  2. メンテナンスの労力を大幅に軽減します。私は、平均的な開発者が自分の時間の50%以上を既存のコードを検査して追跡していると思います(多分もっと多くの場合)。 ではなく、という何かを探している人は誰でも知っています。多くの時間がかかります。どこでもである必要があります。メソッドが、直接使用されないか、コールスタックのさらに下に使用されない引数(またはプロパティを持つオブジェクト)を受け取った場合、あなたや他の人は、この長い道を歩み続けます。

したがって、ビューモデル内にサービスメソッドの一部を再生しないものがあれば、そのメソッドを呼び出すために使用しないでください。

+0

私は常にこれに向けて(VMの代わりに独自のモデルを使用していますが)ViewModelがモデルとまったく同じプロパティを持つ状況はどうですか?これは重複と見なされませんか? –

関連する問題