8

サービスレイヤーとリポジトリレイヤーを含む「M」を使用したMVCアプリがあります。

ただし、いくつかのことをどこでどのように行うかについては少し混乱しています。

  1. 2 つのリポジトリを呼び出す 1 つのサービス、または独自のリポジトリと別のサービスを呼び出す

例えば

参照テーブルで CRUD のすべてのロジックを処理する ReferenceDataService があります。

次に、「CustomerService」で、参照データを「R」して、ID ではなく説明などを取得する必要があります。では、ReferenceDataService または ReferenceDataRepository を呼び出しますか?

  1. いくつかのレイヤーで、Entity から ViewModel にマップしたいと思います。

これはサービス層で行うのですか、それともコントローラーで行いますか?

たとえば、ServiceLayer は VM からエンティティへのマッピング/ロジックを実行しますか?

ありがとう:)

4

2 に答える 2

27
  • リポジトリは、基になるデータ ソースと通信します。
  • サービス層は、ドメイン モデルを使用してリポジトリと対話します。ドメイン モデルをリポジトリ レイヤーとの間で受け渡します。
  • コントローラーはサービス層と対話します。コントローラーは、ドメイン モデルをサービス レイヤーとの間で取得/渡します。
  • コントローラーは、マッピング レイヤー (存在する場合) を呼び出して、ドメイン モデルとビュー モデルの間をマッピングします。マッピング レイヤーがない場合は、コントローラーでマッピングを行うことができますが、これはすぐに面倒になる可能性があり、その場合、AutoMapperは非常に便利なマッピング レイヤーとして機能します。

もう 1 つのより単純なシナリオは、小規模なアプリケーションでよくあるサービス層が必要ない場合です。サービス層には何のメリットもありません。そのため、コントローラーはドメイン モデルを使用してリポジトリと直接やり取りします。

于 2012-07-18T09:48:38.490 に答える
6

ViewModel には、モデルをビューに表示するために必要なデータが含まれています。別のビュー (モバイル アプリケーション、デスクトップ アプリケーション、または Web サービスなど) を使用する場合は、別のデータをビューに表示する必要があります。サービス層でマッピングを行う場合、別のタイプのアプリケーションでは使用できません。したがって、コントローラーは、ドメインデータをマップしてビューに表示する場所です (ビューのタイプに関係なく)。

于 2012-07-18T09:55:29.163 に答える