1

我在这个 ASP.NET MVC 应用程序上使用 Entity Framework/Repository-UnitOfWork/Service 层方法,它工作得很好,但似乎为了保持控制器薄而缺少一个层。

让我们以一个用户认证场景为例:

1)AuthenticationController需要 aIAuthenticationService反过来需要 aIUnitOfWorkIRepository<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 等上使用它们。

我的服务层只返回域对象,我需要一个将它们转换为视图模型的地方,但我想把它排除在控制器之外。

对此的任何输入都会很棒!

4

1 回答 1

2

通常,人们会使用 AutoMapper 之类的东西将您的域对象映射到 ViewModel。然后,您只有一个包装服务层的 Map 调用。几乎没有理由只为对象映射引入一个全新的层。

于 2012-08-26T03:17:30.173 回答