【发布时间】:2012-08-21 01:25:48
【问题描述】:
我在这个 ASP.NET MVC 应用程序上使用 Entity Framework/Repository-UnitOfWork/Service 层方法,它工作得很好,但似乎为了保持控制器薄而缺少一个层。
让我们以用户身份验证场景为例:
1) AuthenticationController 采用 IAuthenticationService,而 IUnitOfWork 和 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 等上使用它们。
我的服务层只返回域对象,我需要一个地方将它们转换为视图模型,但我想将其排除在控制器之外。
对此的任何意见都会很棒!
【问题讨论】:
-
如果您只是在寻找“最佳实践”建议,这可能更适合programmers.stackexchange.com。不过,您肯定朝着正确的方向前进。
标签: asp.net-mvc-3 repository-pattern unit-of-work service-layer