現在、適切なサイズの MVC プロジェクトが順調に稼働しています。いくつかのリファクタリングを検討し始めましたが、質問があります。
現時点では、データ層とサービス層は別のクラス ライブラリに格納されています。コントローラーは、ロジック チェックを行うサービス レイヤーからデータ オブジェクト (linq2sql から生成された) を読み込み、それらをビューモデルに変換します (Auto-Mapper を使用)。
これの代わりに、ビューモデルをサービスから直接返す必要がありますか?
現在、適切なサイズの MVC プロジェクトが順調に稼働しています。いくつかのリファクタリングを検討し始めましたが、質問があります。
現時点では、データ層とサービス層は別のクラス ライブラリに格納されています。コントローラーは、ロジック チェックを行うサービス レイヤーからデータ オブジェクト (linq2sql から生成された) を読み込み、それらをビューモデルに変換します (Auto-Mapper を使用)。
これの代わりに、ビューモデルをサービスから直接返す必要がありますか?
絶対にありません!
ViewModel の目的は、ビューと「実際の」データ オブジェクトの間を仲介することです。これは完全にビュー固有です。したがって、懸念事項を明確に分離したい場合は、GUI 以外のレイヤーはそのようなモデルが存在することさえ認識すべきではありません...
私はそうは言いません。このサービスのポイントは、ビジネス層を扱うさまざまなプロジェクトで使用できることです。これはあなたのビジネスオブジェクトの観点からだと思います。ビュー モデルは MVC アプリケーションに固有のものであるため、サービス レイヤーとは別のものであることが期待されます。多くの場合、アプリケーションのビジネス データと「ハウスキーピング」データの両方が含まれ、複数のビジネス オブジェクトがカプセル化される場合があることに注意してください。私はあなたのコントローラーでそれらを変換し続けると思います。