2

我對MVC比較陌生,剛剛遇到一些預先存在的代碼。MVC:重置密碼屬於服務層或實際實體

我們有一個UserService,主要包含CRUD操作,也許還有一兩個業務邏輯操作 - 我們的控制器都需要這些操作。它封裝了上下文和成員資格。

我正要執行ResetPassword操作,但我不確定在哪裏執行它;是否在UserService或用戶實體上實現它。


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); 
} 

哪種方法建議?

回答

0

您應始終從業務邏輯中分離數據,以便通過您的業務修改控制器中的用戶對象(數據層)(表示層 - 是視圖,視圖模型和控制器都是表示層的一部分)邏輯層即UserService!

0

我會推薦第二種方法,你必須得到收益。

  1. 你域/業務邏輯(這裏ResetPassword)將遠離控制器遠/動作
  2. 您重新使用來自不同地方的功能(比如,如果你暴露ResetPassword即服務)
相關問題