問題,我有一個MVC應用程序,它具有以下架構...使用MVC和有關於域實體的作用和MVC組件
UI項目(MVC) 控制器(C) - 實例化視圖模型 的ViewModels( M) - 用於饋送數據到視圖 視圖
主車輛業務層從庫層,並返回實體/模型
返回的數據對象
實體/模型層(域實體層)
庫層(數據層) 數據訪問和返回實體/模型對象,業務層
因此,上述架構什麼與業務層進行交互?(視圖模型或控制器)。
問題,我有一個MVC應用程序,它具有以下架構...使用MVC和有關於域實體的作用和MVC組件
UI項目(MVC) 控制器(C) - 實例化視圖模型 的ViewModels( M) - 用於饋送數據到視圖 視圖
主車輛業務層從庫層,並返回實體/模型
返回的數據對象
實體/模型層(域實體層)
庫層(數據層) 數據訪問和返回實體/模型對象,業務層
因此,上述架構什麼與業務層進行交互?(視圖模型或控制器)。
沒有試圖通過您的術語進行排序,我會說,在Java中(我想你會看到,這通常是如何適用)以下結構通常用於:
控制器被映射到URL,並驗證參數。他們將業務邏輯委託給服務類。服務類返回模型,控制器將其傳遞給視圖進行渲染。
服務類具有對dao/repository層的依賴,dao/repository層通過某種類型的db查找來獲取模型對象並向其應用一些業務邏輯。
回到您的示例,它是與業務層交互的控制器。這個想法是保持業務邏輯不在控制器之外,並且不在dao層中。
您的控制器負責獲取數據,使用該數據構建視圖模型並將該Viewmodel傳遞給視圖。爲此,您可以將所需的服務注入到控制器中,如果您沒有服務層,該控制器會與您的服務層或業務層進行通信。
實際上,要獲取數據,您不需要業務層或域對象。您可以創建一個查詢服務,根據您的視圖的需要返回數據,這樣可以輕鬆獲取數據,而無需域模型的開銷,而您不需要查詢(命令查詢分離)。
是的,我明白你在說什麼。 我目前使用ViewModels(可能會提供一個域模型到視圖)。這非常類似於此鏈接的變體#2 http://blogs.msdn.com/b/simonince/archive/2010/01/26/view-models-in-asp-net-mvc.aspx 我是使用視圖模型導致加載我的域對象純粹用於將數據遷移到視圖看起來很奇怪。通過viewmodels,我可以構建我這樣的方式來促進視圖構建。 – David