我开始实现服务层到我的MVC项目瘦下去一些臃肿的控制器(也有资料库/的UnitOfWork模式)。
我的问题是,如果你有一个页面有很多子对象等的复杂视图模型,以及相当多的逻辑去幕后(给你一个想法控制器原开发商写了近4000行代码! !)是它可以拥有多个服务都会响起做自己的事情吗? 或者我应该只是有一个很大的ReportService的这一切呢?
我的控制器开始看起来像吗? 如果我继续我可能最终有相当多的不同的服务被称为建立视图模型。
这看起来OK,或者它开始在错误的方向走?
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);
}