2010-08-17 66 views
2

我正在開發一個EMR應用程序作爲我的項目。有Im使用WCF從中央服務器傳輸所有數據,用於UI和PRISM的WPF構建模塊。什麼是更好的方式來使用WPF,WCF,PRISM

我有3個項目在我的WPF/PRISM應用

  1. 液的主項目(mainApplication),其中外殼和bootsrapper是。
  2. 類庫(modulesLib)持有的所有模塊
  3. 類庫(基礎設施)與WCF服務(增值業務與參考scvutil.exe在Visual Studio 2008)

項目引用添加作爲溝通下面

  • mainApplication有 'modulesLib' 和 '基礎設施' 的引用
  • modulesLib有refence爲 '基礎設施'

我現在的程序是下面

  1. 有6個WCF服務(6個主機)使用的是Windows服務
  2. WCF服務實現內部硬編碼數據庫的詳細信息(查詢,字段,表)
  3. 曝光直接用模塊的視圖模型/演示者(通過基礎架構庫)調用WCF服務。稱爲抽象​​ViewModelBase(其實現INotifyPropertyChanged,還具有IUnityContainer,IRegionManager,IEventAggregator參考文獻),抽象ModuleBase(它實現的IModule)
  4. 創建類和我使用這些2類從每當我添加視圖模型或模塊繼承
  5. 我把所有的數據綁定屬性中視圖模型,並使用視圖模型的構造函數來實例化一個給定的視圖,設置它的數據上下文,並在外殼添加到區域
  6. 列表項

每當我想之間的通信模塊,我使用CompositePresentationEvents

我想知道

  1. 我做事情的方式,是否是它似乎爲你們確定什麼。
  2. 仍然有大量的錯誤,崩潰的錯誤等..我可以有一個地方來處理這些異常,所以應用程序不會中斷(日誌或類似的東西)
  3. 什麼是你的方式來處理項目使用WPF,WCF,MSSQL和PRISM

謝謝你, 納頓

回答

2

你們中的大多數已經做過的事情是好的。

但是對於日誌記錄模塊:在您的基礎架構中創建一個單獨的項目,並將其註冊爲Unity的單例對象。

2 - 爲您的項目更好的單元測試,使用統一在它的全爲您的CLASSE的依賴創作者喜歡依賴的合同,而不是實際的實現。

3-對於Communication您的模塊之間使用EventAgreegator

4-對於全局命令使用CompositeCommand。

5-如果你的用戶界面有像Combobox,ListBox這樣的選擇器控件,試着擴展Attached屬性,就像在Composite Button for Button base中做的那樣,這樣你就不會在你的代碼中勾選選擇已更改的事件,能夠調用命令。

+0

喜SAURABH,在您的文章幾點引起我的注意:)。附加屬性擴展(I當前把手選擇的項目通過在視圖模型的屬性結合到列表/組合框的selectedItem屬性改變,然後在INotifyPropertyChanged的實施我已經把一個開關來執行另一種方法)和測井的方法。我會對這些進行一些研究。如果你不介意,我將不回答這個問題,所以人們仍然可以分享他們的想法。希望其對你罰款:)感謝您的答覆.. – Nadun 2010-08-19 15:01:07

+0

閱讀從終端到終端的[棱鏡手冊(http://msdn.microsoft.com/en-us/library/gg406140.aspx)。這會給你MVVM,命令和event2command等數百萬想法。 – Shimmy 2011-03-01 03:43:07