2009-01-07 91 views
6

我正在學習MVC,並且在決定何時創建新控制器而不是添加與現有控制器相關的操作和視圖方面遇到困難。一方面,單一責任似乎是說控制者應該僅限於一些行爲。然而,當我嘗試這個時,類的數量呈指數級增長(每個類的模型,視圖和控制器) - 我想知道我是否會過度。什麼時候應該在ASP.NET MVC中創建一個新的控制器類?

例如,默認的AccountController具有Login,ChangePassword和Register操作。我傾向於創建一個LoginController,PasswordController和ProfileController以及相關的模型類。所以有1班的時候,會有3-6人。

這有什麼好的經驗法則嗎?

+0

也許這是有幫助的(來自Ruby):http://stackoverflow.com/a/8050513/1627888 – 2014-05-21 07:22:46

回答

6

我認爲你需要務實。我正在開發一個由StatsController組成的項目。行動的數量在不斷增長(RandomStat,MostPopular,MostViewed,MostVoted等等)。這些操作很容易滿足,因爲StatsController的依賴關係不會改變。我正在使用IoC來滿足我的控制器需要的功能,當我開始看到我的控制器需要引用新對象時,這是一個需要分解的信號。

如果您的LoginController,PasswordController和ProfileController都依賴於相同的對象,爲什麼要將它們分開?

7

您應該爲每個正在操作的模型類型分配一個控制器。控制器充當對這些模型採取行動的一系列行動。這通常是經驗法則,但有時控制器的範圍超出了單個模型。

AccountController處理與身份驗證相關的所有事情。這是超越單一模型範圍以涵蓋一般身份驗證的一個例子。認證的關鍵部分是什麼?檢索用戶,更改密碼等。

+0

我正在使用Rails應用程序,它沒有任何模型,因爲所有的信息都是由外部API獲取的。在這種情況下,如何決定何時創建新控制器?應用程序中不需要存儲。我的應用程序中的主要實體是具有搜索,檢查可用性,預訂等API支持的航班。TIA – furiabhavesh 2015-06-24 13:11:38

0

我目前的AccountController有12個方法對我來說是完全可管理的。

我有另一個控制器,目前有34個方法,但都是綁定到一個單一的視圖,他們每個都有大約8-10行代碼最大(檢查所需的參數,更新模型,並根據需要重定向)。

他們的關鍵是將您的業務邏輯封裝在一個完全獨立的模塊中。這將允許您的操作處理程序保持非常輕的重量,並且可以使您的業務邏輯更容易測試。

相關問題