2015-04-02 39 views
3

我目前正在開發一個已經開發和構建的大型WPF項目,並且預計將會增長。但是它沒有任何MVVM模式體系結構組件。是否正確將一個項目拆分爲兩個獨立的MVVM子項目

我們現在的一個目標是重構包含的UI以支持MVVM模式組件。

由於MVVM視圖層開發分離的設計,幾乎消除了所有UI「代碼隱藏」,我們提出了上述想法。

上述想法利用了重組到未來的發展,所以我們認爲,目前該項目分爲兩個:

  • UI項目 - 包含和管理當前和未來的UI代碼(查看和的ViewModels) 。

  • 邏輯項目 - 包含和管理現在和將來的邏輯代碼(模型)。

應用這種分割是否正確?將來對於未來的開發,調試和測試會有些過火嗎?

+0

嘿,我們使用棱鏡,我們有我們的意見和viewmodel拆分成5個單獨的項目,更不用說其他項目(基礎設施,數據層等)。我們使用棱鏡來管理他們5個(其中4個是棱鏡模塊 - wpf類庫),其中一個是將其他人加載到shell中的主要wpf項目。 – adminSoftDK 2015-04-02 08:07:52

回答

4

我在你提出的建議中沒有看到任何問題。如果您正確地遵循MVVM模式,那麼它應該提供視圖和ViewModels之間的完全分離。因此,將所有視圖放在一個單獨的項目中放到ViewModels中也是有意義的。你的ViewModels 應該都沒有視圖完美運行,給你一個真正乾淨的UI生產任務和邏輯生產任務之間的分離。您的視圖可以利用設計時間數據來模擬ViewModels的行爲,而無需實際存在任何邏輯。

+0

我繼續開發你的答案與三個獨立的項目(視圖,ViewModel,模型)。你的想法給了我一個完整的分離,這樣如果我不小心寫視圖代碼內部的ViewModel類可能會打破MVVM模式,它不會發生,我會得到編譯錯誤,因爲我的ViewModel項目實際上並沒有適當的引用視圖代碼。非常感謝您的回答。 – Eido95 2015-05-12 16:47:29

2

將業務邏輯分解爲另一個項目,這將被構建到DLL中是一個非常好的主意。在此之後,您可以在其他前端應用程序(例如Web項目)中重用所有業務邏輯。在此之後,您可以利用MVVM模式來替換前端部分並重用邏輯部分。

未來發展

這是未來發展拆分項目更好,因爲可以不接觸UI項目進行業務邏輯的變化。

調試

調試工具,今天可以處理這個問題,沒有任何限制。

測試

通常你可以做測試相同的分裂。如果您爲邏輯項目中的所有功能進行單元測試,除了用戶界面之外,所有內容都會被覆蓋。

這意味着,拆分項目總是更好的選擇。

2

我們使用棱鏡,我們有我們的觀點和viewmodel拆分成5個獨立的項目,更不用說其他項目(基礎設施,數據層等)。我們使用棱鏡來管理這5個(其中4個是棱鏡模塊--WPF類庫),其中一個是主要的wpf項目,將其他項加載到一個shell中。

相關問題