2011-02-28 76 views
7

模塊化應用程序通過模塊化的應用我的意思是應用中的基本功能和數據模型可以在不修改核心應用程序代碼進行擴展。與實體框架代碼只和ASP.NET MVC

這是一種流行的方法,例如。開源的CRM如SugarCRM或VTiger。

這種方法可能使用領域或(從MVC的contrib便攜式區域),其允許添加新的控制器和視圖在單獨的組件,而不會影響芯的DLL遵循在asp.net MVC應用程序。

問題出現時,一個要擴展基本應用程序的數據模型。對於模型定義集中在Edmx文件中的實體框架,在實際意義上是不可能的。這種方法不允許添加一個新的表格來引用新程序集中的一些基本模塊表格。

我注意到,該果園CMS通過使用NHibernate實現了全模塊化(這是告訴,因爲他們有微軟的支持,該項目本來是作爲一個技術展示)。由於POCO方法,Nhibernate可以實現這種模塊化。每個實體/表格都是在單獨的文件中定義的,這顯然是使用模塊化應用程序的方式。

有,然而,與實體框架代碼只辦法,產生使用POCO定義在運行時EDMX模型中的希望。有沒有人嘗試過這種方法來將數據模型的定義分佈在單獨的可插拔項目中?

+0

你用過Code Only嗎? – jfar 2011-02-28 14:26:07

+0

似乎暫時還是有限的,但這種可擴展性的可能性看起來是切換的好理由。 – aaimnr 2011-03-01 16:37:18

+0

這是很久以前問過的,但是我想知道你做了什麼@deadbeef。我遇到了類似的概念問題 – MrJD 2012-09-27 04:46:21

回答

3

我已經實現了這一點使用EF代碼優先和GUI擴展點的核心模塊上的組合。這導致:

  • 每個模塊處理作爲一個獨立的應用程序(除GUI)
  • 每個模塊都有它自己的數據庫(如代碼第一滴&重新創建數據庫)
  • 每個模塊可能在另一個模塊中複製需要的數據
  • 每個模塊都是一個服務
  • 每個模塊可以延長t他通過IoC容器
  • 模塊可以相互溝通,通過核心擴展點 GUI或者通過異步消息(nServiceBus)和同步RPC(WCF)

請注意,這是一個企業我們爲SOA設計的應用程序。使用EF Code First,如果您手動管理您的數據庫(即不要刪除&重新創建),您可以使用上面的一些概念並簡化它。您可能需要自定義IDatabaseInitializer來支持它,但它應該是可能的。

+0

提問者是不是要求相同的數據庫解決方案? – jfar 2011-02-28 17:00:28

+0

確實,我正在尋找更簡單的解決方案。儘管如此,這種方法非常有趣(儘管在大多數情況下都是過度的)。 – aaimnr 2011-03-01 16:35:36