MVC:重置密码属于服务层或实际实体

时间:2012-07-30 08:49:34

标签: asp.net-mvc model-view-controller software-design design-principles

我对MVC比较陌生,刚刚遇到一些预先存在的代码。

我们有一个UserService,它主要包含CRUD操作,也许还有一个或两个业务逻辑操作 - 我们的控制器都需要它们。它封装了上下文和成员资格。

我即将实施ResetPassword操作,但我不知道在哪里实现它;是在UserService还是在User Entity上实现它。


UserService

bool ResetPassword(string username, string newPassword);

这将导致我的控制器:

ActionResult ResetPassword(string username, string newPassword)
{
  userService.ResetPassword(username, newPassword);
}

VS

用户

bool ResetPassword(string newPassword)

这将导致我的控制器:

ActionResult ResetPassword(string username, string newPassword)
{
  var user = userService.GetUser(username);
  user.ResetPassword(newPassword);
}

建议使用哪种方法?

2 个答案:

答案 0 :(得分:0)

您应该始终从业务逻辑中分离数据,因此您应该通过业务逻辑修改控制器中的用户对象(数据层)(表示层 - 是视图,视图模型和控制器都是表示层的一部分)图层即UserService!

答案 1 :(得分:0)

我会建议第二种方法,你必须获益。

  1. 您的域/业务逻辑(此处为ResetPassword)将远离控制器/操作
  2. 您可以重复使用来自不同位置的功能(例如,如果您将ResetPassword作为服务公开)