所以我一直在尋找一段時間,所有我在模型部分的搜索只是混淆了我。與模型和業務層連接mvvm淹沒
我已經看到很多例子,其中視圖模型直接引用模型,然後設置模型的成員變量。但是,不是模型應該是業務對象,以便業務層可以使用該數據進行計算嗎?
所以......
1)我應該分享兩個UI和業務層,兩者相互引用完全相同的對象(不應該每一層「皮」的內容之間的模型,其中情況下這不會是最好的)。
2),還是應該模型是在業務層。然後,UI使用提供的業務接口從視圖模型調用訪問模型信息?這樣,模型本身就從UI中隱藏起來了。類似於選項1的圖像,除了會有一些接口訪問模型和服務。
3)或UI確實有模型。但是我可以看到許多場合,業務層需要這些信息,導致多個模型看起來相對完全相同。想象一下,下面的整個圖片都在用戶界面中。然後在模型訪問的模型下面有一個業務層。 http://rarcher.azurewebsites.net/Images/mvvm00.png
我明白這一切。我遇到的問題是誰實際上擁有該模型,並直接由UI和業務層引用。對我來說,它聽起來像我提供的選項1是正確的。但是選項2是否可行?選項2似乎對大型項目更靈活,但我沒有看到任何示例顯示或說話選項2.謝謝。 – 2015-02-06 01:43:42
技術上來說,ViewModel不是UI(看起來你對所有選項都感到困惑)。 ViewModel是表示層(n層術語),其中只包含persentation邏輯,但是與UI無關(閱讀:您可以在控制檯應用程序,Windows Store應用程序,Silverlight或MVC5 WebApp中重複使用ViewModel)。只有一層。有不同類型的模型。您的「域」模型位於域(又稱商業)層。其他模型是DataTransferObjects(跨邊界問題的業務數據的子集或組合)或ViewModels(準備要由視圖使用的數據) – Tseng 2015-02-06 08:56:51
並且您獲得DAO(DataAccess對象),它們是表示持久性並屬於基礎結構的模型層。這就像服務。您擁有域服務和應用程序服務。域服務處理您的域/業務邏輯。應用程序服務特定於應用程序的類型並轉到應用程序層。即FrameNavigationService(適用於WindowsStoreApps的Prism)對導航非常具體,只能在Windows應用商店應用中使用。它不能在MVC Web應用程序中重複使用 – Tseng 2015-02-06 08:59:51