2011-01-20 98 views
39

我現在有點過時了WPF,並且有興趣聽聽關於Prism(我使用過幾個版本)的最新版本的人們的觀點與MVVM Light + Unity方法(我有從來沒有做過 - 體面的例子URL會很好)。MVVM Light + Unity還是Prism?

我的項目將是由多個開發人員編寫的包含多個模塊的大型項目。還有資金引入第三方控制套件,以便使用其中一個奇特的Docking/Workspace佈局管理器來建立一個漂亮的工作空間(我知道有些在Prism地區比其他地方更適合使用)。

如果您現在正在從頭開始一個項目,您會怎麼做?爲什麼? 有關特定推薦體系結構模式的詳細信息會很有用(例如,自動發現模塊dll?注入日誌記錄服務?)。基本上,任何想法和建議都不錯。我想進行一次很好的討論。也許你會建議進入另一個方向嗎?我非常處於研究階段,希望獲得儘可能多的意見。

我把這個放在這裏是因爲我認爲它會比Prism/MVVM Light論壇得到的偏見更少,但如果有更適合這個問題的地方,請指出我的方向。

回答

55

如果你需要模塊化,你會想看看棱鏡。棱鏡有一些元素,可以幫助你與MVVM(例如DelegateCommand和CompositeCommand),但我認爲它與另一個MVVM框架更完整。

前幾天有一個關於如何建立棱鏡模型的問題。請檢查一下如何考慮Prism功能的詳細說明。 High Level Modelling Advice for Prism MVVM

Unity是一個控制容器反轉的實現,它絕對是好的,但Prism有能力使用其他容器。它內置了對MEF的支持(反過來,它也支持.NET 4.0),但它不是你唯一的選擇。查看棱鏡中包含的一些樣本,並確定您更喜歡哪種方法。在我看來,Unity並沒有完全用於UI合成。如果您想嘗試將UI與MVVM框架+ IoC框架方法結合起來,MEF可能是更接近的選擇。

MVVM Light實際上是Prism的免費框架。其他MVVM框架來考慮:

  • MVVM基金會(非常輕巧...好的小項目)
  • 卡利(非常健壯的框架)
  • 卡利科技(股票名稱,並從卡利的作者,但它類似於MVVM Light,帶有一些不錯的約定)
  • ReactiveUI(以前稱爲「ReactiveXAML」。這是一個大腦的改進,但是如果你學習了.NET的Reactive Extensions(Rx),這個框架簡直太棒了......神奇在我看來。)

如果我要開始一個新項目:我會與Prism和ReactiveUI一起去。

棱鏡,因爲你必須具有大型項目的模塊化,我喜歡通過刪除或添加DLL來刪除和添加大單位功能的能力(而且你不必像實施DLL嗅探功能一樣你只需要一個IoC + MVVM方法)。更容易測試,更易於調試,更易於單獨開發。周圍好。

ReactiveUI因爲用戶界面編程這些天,你大部分時間都花在管理你的UI線程上的時間。阻止是一個禁忌...用戶不希望看到UI凍結;他們希望看到動畫GIF等待符號旋轉,以便他們知道在加載數據時他們可以在其他東西上工作。此外,如今很多價值應用程序正在從不同系統獲取數據並將它們放在UI中......不僅需要一個好的合成系統(Prism),還需要一個好的MVVM框架將異步操作視爲麪包和黃油...... ReactiveUI就是這樣。

+0

對不起延遲迴應,突然有另一個項目優先,這一切都推到了我的腦海。 非常有幫助的回覆,我會看看你指出的其他線程和框架。 – David 2011-01-28 14:22:27