考慮:從現有的winforms應用程序中分離出視圖層的路徑?
- 我們的組織有一個標準的Windows窗體應用程序
- 的形式和業務邏輯相互交織 - 即Autonomous View。我們知道自主視圖模式使得編寫單元測試變得困難。我們的目標是採取單一形式,並將表現邏輯與表單本身分離,以便我們擁有一個獨立的域實體/對象,可以更輕鬆地針對它編寫單元測試。
- 我們沒有做完整的重寫。我正在尋找一種漸進的方法,可以單獨處理一個屏幕。
- 經過一番研究,我認爲Presentation Model模式或MVVM模式最適合這個組織做事情的方式。
- 該組織通常偏好較少的間接層次,因此更簡單(即使不太穩健)更好。
- 從過去到現在應該是公式化(容易教導任何已經熟悉內部概念的開發人員)。這就是爲什麼他們想要通過其他更新的技術如WPF堅持使用Windows窗體。
- 域模型對視圖(表單)一無所知。表單將完全意識到域模型的更改。這使得兩層間接。再多1個就可以了(這就是爲什麼我會允許MVVM)。
我發現的大多數MVVM示例都演示了它如何與WPF配合使用,而不是使用普通的舊窗體。
兩個問題:
考慮到這一切,有什麼事我說了,你想我不是一個很好的路徑上,或者我在錯誤的軌道上?我期待向管理層提出一些建議。
最後,你知道一個很好的在線代碼示例,可以幫助我充實原型嗎?
winforms不支持MVVM。 MVVM實際上是專門爲WPF創建的,主要基於Martin Fowler的[Presentation Model](http://martinfowler.com/eaaDev/PresentationModel.html) –
如果您期望winform支持MVVM,您將需要一個基於winforms的框架支持諸如(Real)DataBinding,DataTemplates,DataTriggers等等。沒有這些概念,MVVM就不可能存在。沒有這樣的框架,所以你必須自己創建它。這是一個毫無意義的巨大努力。這就像爲QBasic創建一個Windows UI框架。 –
感謝HighCore。我確定有一個混合(或替代方法),它可以做類似我所問的事情(即使WPF是MVVM的自然伴侶)。我對那些也曾經想過穿越這座橋的人有興趣。 – Mario