肥大化したコントローラーを間引くために、MVCプロジェクトにサービスレイヤーを実装し始めています(リポジトリ/ユニットオブワークパターンもあります)。
私の質問は、子オブジェクトなどがたくさんあるページの複雑なビューモデルがあり、舞台裏でかなり多くのロジックが実行されているかどうかです(元の開発者が作成したコントローラーには、約4000行のコードが含まれていました。 !)複数のサービスを停止させても大丈夫ですか?または、すべてを実行する1つの大きなReportServiceが必要ですか?
私のコントローラーはこのように見え始めていますか?続行すると、ビューモデルを構築するために非常に多くの異なるサービスが呼び出される可能性があります。
これは問題ないように見えますか、それとも間違った方向に進み始めていますか?
public ViewResult Index(int? reportId)
{
// get the base report object
var reportService = new ReportService();
var report = reportService.GetByReportId(reportId);
var model = Mapper.Map<Report, ReportViewModel>(report);
// get the current active user
var userService = new UserService();
var user = userService.GetCurrentUser();
model.User = Mapper.Map<User, ReportViewModel.UserViewModel>(user);
// get the first unread message
var messageService = new MessageService();
var message = messageService.GetFirstUnread(user.Id);
model.Message = Mapper.Map<Message, ReportViewModel.MessageViewModel>(message);
// get the category navigation
var categoryService = new CategoryService();
var categoryNavigation = categoryService.GetCategoryNavigation(report.Id);
model.CategoryNavigation = Mapper.Map<IEnumerable<Category>, IEnumerable<ReportViewModel.CategoryNavigationViewModel>>(categoryNavigation);
return View(model);
}