1

MVC アプリケーションを階層化するためのさまざまなパターンを研究しており、少しアドバイスが必要です。私が現在持っているものは次のとおりです。

1)POCOドメインモデル、ビジネスロジックがまったくないため、基本的に貧弱なドメインモデル。
2) ドメイン オブジェクトを返すリポジトリ レイヤーを備えた EntityFramework。
3) サービス レイヤー。これがアプリケーション サービス レイヤーなのかドメイン サービス レイヤーなのかはわかりませんが、基本的にはドメイン モデルに対する API です。すべてのビジネス ロジックはこの層にあり、ドメイン オブジェクトが有効であることを保証し、それをリポジトリに渡して EF 経由で DB に永続化します。
4) ASP.NET MVC アプリケーション。このアプリケーションはサービス層と対話して、必要なオブジェクトを取得します。

ドメイン モデルとの対話の単一ポイントを提供するので、これがどのように機能するかは気に入っていますが、サービス レイヤーと mvc アプリケーションの間にレイヤーが必要だと思います。この層の役割は、ビューが必要とする正確なデータを取得するためにコントローラーが対話できるビュー モデルとの間でドメイン オブジェクトを変換し、データが入力されたドメイン オブジェクトをサービス層に戻すことです。これはアプリケーション サービス レイヤーで、上記のサービス レイヤーはドメイン サービス レイヤーですか?

AutoMapper を使用してドメイン オブジェクトをビュー モデルに取り込みますが、それらをドメイン オブジェクトに戻す標準がわかりません。

アドバイスやアイデアは素晴らしいでしょう。

4

1 に答える 1

1

理論的には、ドメイン レイヤー (特に POCO を使用している場合) のクラスは、コントローラーとビューで使用してもまったく問題ありませんが、実際には、これらのコーナー ケースと違いが常に存在します。通常、コントローラーとビューが処理するオブジェクトは、ドメイン モデル POCO の簡略化、またはアプリケーション サービス レイヤーが提供/理解するものとは異なる POCO の集約です。

したがって、別のレイヤーを構築することはお勧めしません。代わりに、ビュー モデルにメソッドを追加して、アプリケーション サービスに送信されるドメイン レイヤー オブジェクトに追加することをお勧めします。

たとえば、Userドメイン レベル クラスとビュー モデルがある場合、変換を処理するためにインスタンス メソッドと静的メソッドをUserModel作成することをお勧めします。ドメイン オブジェクトを作成できるように、他のビュー モデルを組み合わせることもできます。User ToUser()UserModel UserModel.FromUser(User user)

于 2013-04-10T23:33:10.773 に答える