你似乎在問兩個問題。首先是:我如何使用PRISM來確保我的模塊特定模式存在於數據庫中,如果沒有,請創建它。第二個問題是:如何最好地構建我的數據層,以便在模塊化應用程序中解耦。
要獲得關於如何做的模塊架構檢查的第一個問題,我要說的是:
如果你已經經歷棱鏡,你無疑想出了幾種方法來完成它。和編程中的任何東西一樣,有很多方法可以實現它。如果我需要使用Prism完成此操作,我可能會執行以下操作:在實現Microsoft.Practices.Prism.Modularity.IModule接口的模塊組合件中創建一個類(MyPlugInModule.cs)。然後我將代碼放入構造函數或Initialize方法中,該方法檢查數據庫以查看模塊模式是否存在。如果沒有,則創建它。
要獲得關於如何最佳結構數據模塊的第二個問題,我要說的是:
像精靈說,這真的取決於你所要完成的是什麼類型的模塊性。如果您正在銷售該應用程序,並且想要將模塊作爲獨立軟件包銷售,那麼您可能不希望創建數據模型來支持軟件包,直到最終用戶付費。
您應該能夠使用實體框架來確保您的模塊能夠與基本應用程序模塊共享實體。此外,根據您的要求,或者您的架構允許,您可能需要將模型/數據層抽象爲與模塊不完全對齊的裝配。這將減少代碼重複和依賴性。
在我目前正在使用的應用程序上,我們使用帶MVVM的WPF,帶MEF的PRISM和WCF數據服務。我們的客戶端模塊共享一個數據程序集,它與位於基本應用程序模型之上的主數據服務端點(身份驗證/角色表,應用程序數據等)進行通信。當創建數據庫中特定於模塊域的表時,將在服務器上創建新模型和服務端點,並在客戶端上創建一個單獨的程序集以與數據模型進行通信。
如果特定於模塊的模型發生更改,則只有受影響的組件必須更改,因爲模塊特定的數據將封裝在其自己的服務和客戶端組合件中。從測試,安全性等方面的隔離角度來看,這是一個更好的選擇。當然,如果基本應用程序模型發生變化,所有關聯的模塊特定實現都必須更新,那麼缺點就是如此。
但是,這又取決於您的要求。如果您堅持使用MEF,模塊化設計模式和實體框架4的PRISM 4,您應該能夠提出一種模塊化而不緊密耦合的優秀解決方案。
難道這就是你要找的人的見解? – BernicusMaximus 2010-11-29 20:42:17
+1爲一個很好,深思熟慮的答案。 – 2011-01-08 04:37:25