2013-12-22 46 views
2

我正在使用MVC4,EF5,存儲庫模式和Unity IoC。 邏輯代碼塊應該放在哪裏?MVC存儲庫模式正確的業務邏輯位置

  • 具體型號
  • 控制器的儲存庫內
  • 或通過擴展部分類的模式?作爲一個靜態函數?

在我的應用程序中,每個控制器都有一個工作單元的實例。如果邏輯將保存在其中一個存儲庫或部分類中,因此需要將工作單元作爲參數發送。你會推薦什麼作爲最佳實踐?

謝謝:)

+0

「邏輯」是什麼意思?商業邏輯?存儲庫應該注入適當的工作單元。 –

+0

我有一個複雜的業務邏輯,我想在我的應用程序中編寫代碼。 在我看來,控制器不適合它,因爲我不希望它充滿邏輯。既不在庫本身內。另一方面,如果我使用一個部分類(使用靜態函數),我將不得不發送工作單元的引用。 –

+1

我會把它放在一個命令處理程序中。我們的控制器將所有邏輯傳遞給CommandHandlers,並且它們和業務實體包含所有業務邏輯。基本上遵循類似於這篇文章http://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=91的東西。我們的控制器不知道任何有關存儲庫或工作單元的內容,因爲這些都是在Command Handler中注入的 – GraemeMiller

回答

0

由於GraemeMiller亮點,控制器應該是不存在的業務邏輯。我認爲一個倉庫在業務邏輯方面也應該相當輕鬆。 Dino Esposito推薦與GraemeMiller類似的模式,因爲控制器將視圖模型轉交給使用各種其他類執行其工作的某種協調器,生成修改的視圖模型或根據需要重新指向其他控制器。你的協調員可能依賴於一個工作單位,或者它可能自己建立一個工作單位。我贊成前者。