2

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

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

我正要实现 ResetPassword 操作,但不知道在哪里实现;是在 UserService 还是在 User Entity 实现它。


用户服务

bool ResetPassword(string username, string newPassword);

这将导致我的控制器成为:

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

对比

用户

bool ResetPassword(string newPassword)

这将导致我的控制器成为:

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

推荐哪种方法?

4

2 回答 2

0

我会推荐第二种方法,你必须有所收获。

  1. 您的域/业务逻辑(此处为 ResetPassword)将远离控制器/操作
  2. 您从不同的地方重复使用该功能(例如,如果您将 ResetPassword 作为服务公开)
于 2013-01-18T13:41:50.693 回答
0

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

于 2012-10-16T13:52:10.263 回答