2011-09-01 39 views
19

我正在開發一個敏捷的MVC3項目,它開始變得相當龐大,特別是我的管理部分,用戶可以在其中設置很多配置等。這是我的第一個MVC3項目,所以我只是好奇何時使用區域有意義?MVC3何時使用區域?

像在管理層這樣的特定部門的控制器應該多大,然後才決定將其分解爲一個區域併爲單個管理操作創建控制器?

另外,在使用區域時,我應該重構爲所有區域使用區域,還是僅針對需要區域的區域?

回答

19

關於如何組織開發者,有許多意見,但我的觀點如下:

控制器應該只負責與視圖進行交互。也就是說,實例化和填充模型對象,從業務對象或數據訪問層檢索數據,響應來自頁面的任何請求(表單提交,AJAX請求,動態資源創建方法/類的接口(例如創建CAPTCHA或其他動態圖像))等等。如果你堅持這一理念,它們的大小和複雜性不應超過你的觀點。

區域我傾向於使用區域將應用​​程序分解爲子應用程序。例如,一個網站可能有一個論壇,產品目錄,公司信息,支持數據庫,等等,所有這些都將是獨立的區域:

/areas/forum/... 
/areas/product/... 
/areas/company/... 
/areas/support/... 

然後,在每個領域,你可能有

/areas/support/{views|controllers} 
/areas/support/search/ 
/areas/support/contact/ 
/areas/support/knowledgebase/ 

正如在每個文件夾所代表的網站的一個獨特的「區域」一個web表單的網站,提供地區組織的另一個層面,讓您保持相關的控制器,視圖,等在一個共同的位置,應該以類似的方式使用。

+0

謝謝你的詳細解答。這很有幫助,我想我將在下一次迭代中實施區域。 – shuniar

0

當你需要單獨控制和重用控制器名稱時,它是最實用的。像你可以用它來管理網站,博客部分等。

8

我們使用區域來區分值得注意的單獨關注內的應用程序。特別是單獨的問題可能需要對每個區域進行獨特的身份驗證或佈局/樣式。例如,我正在研究具有各種「模塊」的應用程序。每個模塊都是一個mvc區域,每個模塊都是一個設置部分,也是一個mvc區域。該應用程序有三個模塊,因此共有六個區域 - 有六個用戶權限可供使用。這允許每個模塊具有新的「主頁面/佈局」(外觀)和特定的安全級別。

它有助於分離代碼; AreaA中的代碼與AreaB中的代碼無關,但有時AreaA和AreaB使用在項目根目錄中找到的公共代碼。

該網站的非區域部分包含用戶登錄頁面,錯誤頁面(404等),進入模塊的主「啓動器」區域,異常處理以及其他包含交叉切割的內容穿越任何mvc區域。