我在这个 ASP.NET MVC 应用程序上使用 Entity Framework/Repository-UnitOfWork/Service 层方法,它工作得很好,但似乎为了保持控制器薄而缺少一个层。
让我们以一个用户认证场景为例:
1)AuthenticationController
需要 aIAuthenticationService
反过来需要 aIUnitOfWork
和IRepository<User>
(我使用的是通用存储库)。
2)在控制器中,我只想关注服务对用户的身份验证:
if (userService.AuthenticateUser(model.userName, model.password)) {
FormsAuthentication.SetCookie(...);
return RedirectToAction(...);
}
return View(model);
有人会说这在控制器中逻辑太多了吧?因此,如果您愿意,我们似乎可能需要一个应用程序管理器:
if (appManager.AuthenticateUser(model.userName, model.password)) {
// Here the app manager calls the service???
return RedirectToAction(...);
}
我试图让我的域服务与消费应用程序无关,以便我可以在 MVC、WinForms、控制台、WPF、WCF 等上使用它们。
我的服务层只返回域对象,我需要一个将它们转换为视图模型的地方,但我想把它排除在控制器之外。
对此的任何输入都会很棒!