2009-09-10 123 views
2

我正在向新的Wpf應用程序引入Prism,並使用MVVM模式。我構建Wpf應用程序的最初方法是添加一個項目來保存模型類,一個保存視圖模型類等。稍後可以拆分它們以避免同一項目中有不同的邏輯組件。然而,這在使用Prism(以及一般的...)時會使我感覺不好。使用MVVM模式的Wpf Prism應用程序架構

在Prism中,您希望將事物組織到不同的邏輯模塊中 - 與同一事物相關的任何事物將放置在同一個模塊中。所以這告訴我,我應該將與我的應用程序的邏輯部分相關的所有內容放入此部分的模塊中。對於這個組件,相關的視圖模型和必要的模型類,這可能會存在一些不同的視圖。然而,使用這種方法,我會將模型分散在我的解決方案中。由於模型將與數據庫綁定,畢竟這可能是一個糟糕的做法。我使用NHibernate,所以數據庫不會真的是「視覺」,但。

所以我看到三種不同的結構。這些通常都是需要的嗎?還是有不同的方式我應該構建我的應用程序?

  1. 項目「Model」,「ViewModel」,以及一個用於保存UserControls的項目。等。
  2. 一個項目的主要部分 - 包括這部分的相關視圖,視圖模型和模型。
  3. 一個項目主題部分 - 包括視圖和視圖模型,但模型在單獨的項目中定義。如果所有模型類別之間存在邏輯關係,甚至可能只有一個項目。

任何意見都非常感謝!

回答

2

把你的模型放在一個單獨的項目是好的。如果它足夠大,真正受益於棱鏡風格的架構,我會說它是推薦的。該模型不侷限於V和VM的垂直筒倉,而是位於其下面的較低層。

您的視圖和視圖模型使感覺彼此接近。您可能會發現視圖或視圖模型的重用,但如果您不這樣做,則不要強調。也就是說,一個觀點並不總是與一個特定的觀點模型相關聯,反之亦然。例如,我有一個視圖模型,可以顯示所有銷售情況以及在當前季度過濾的視圖模型,但我可以將兩者都視爲相同的視圖。另一方面,我在同一個視圖模型上有一個餅圖與條形圖。所以分裂這些並不像切割和乾燥。但是,您可能會發現比查看/查看模型對更大的塊。銷售與客戶管理等。

+0

Thx。我同意你的看法,這就是我現在選擇的結構。但是,從一個模塊引用到另一個模塊還是可以的,還是應該理想地彼此不瞭解?你可能會有一個模塊來處理「客戶」。但是,如果您有另一個處理「銷售」的模塊,您可能也想從中引用Customer ViewModel。這是好的,還是典型的跡象表明這兩個模塊並不像你最初那樣孤立 - 解決方案是你將兩個模塊都移動到同一個模塊中?你對此有何看法? – stiank81 2009-09-10 19:43:40

+3

你的模塊不應該彼此瞭解。否則它們不會是模塊化的。理想情況下,您的應用程序可以在刪除一個或多個模塊時正常工作。 我將在模塊之間保持共同的唯一類型將被視爲您的「模型」或其他合同類型的類型。例如,如果你有一個Customer對象,你會將它保存在一個共享程序集中,但絕對不是一個CustomerViewModel,它包含僅適用於特定視圖且不適合共享的行爲代碼。 – 2009-09-10 19:49:18

相關問題