0

コントローラーがサービスを呼び出す MVC 4 Web サイトで作業しており、応答をビューモデルにマップ (1 対 1 のマッピング) する必要があります。私が考えることができる3つの可能なアプローチがあります:-

  1. コントローラー自体にマッピングを持たせる
  2. すべてのマッピングロジックが存在し、コントローラーがこのメソッドを呼び出す別のマッピングレイヤー(プロジェクト内の別のフォルダー)を用意します
  3. ビューモデル クラス内にマッピング ロジックを配置します。

アイデア 2 と 3 は、コントローラー間でマッピング メソッドを再利用できるため、明らかに見栄えが良くなります。

しかし、私は 2 、 3 のどれを使用するかについて混乱しています。アプローチ 2 を使用すると、責任は明確に定義されますが、別のクラス ファイルが追加され、長期的にはソリューションの保守性が少し低下する可能性があります。

アプローチ 3 を使用すると、マッピング ロジックはビューモデル内に限定されますが、ビューモデル クラスが表示要素とマッピング ロジックの両方を担当するため、SRP (Single Responsibility Principle) に違反していると感じます。

マッピング ロジックをどこに置くべきかについて、適切な方法はありますか? リンクがある場合は、それらも共有してください。

4

2 に答える 2

2

個人的には、自殺をやめてAutoMapperのようなものを使用することをお勧めしますが、手動のルートに進みたい場合は、AutoMapper をお勧めするのとほぼ同じ理由でオプション 2 をお勧めします。このタイプのものはライブラリに属します。 . これを維持するのがいかに難しいかわかりません。実際、すべてのマッピング ロジックを 1 つのクラスに含めるか、複数のクラスをすべてプロジェクト内の 1 つの場所に含めると、他のどのソリューションよりも保守がはるかに簡単に思えます。

于 2013-10-23T20:50:43.560 に答える