7

對於正在使用NHibernate並試圖引入一些DDD概念的WebForms解決方案,您推薦什麼作爲正確的項目結構?DDD,NHibernate和項目結構/命名

假設根命名空間和解決方案的名稱是樣品

  • Sample.Domain - 包含我的域對象和我的映射文件
  • Sample.Repositories - 包含我的資料庫和NHibernate連接配置文件
  • 樣品.Business - 包含我的業務邏輯
  • Sample.Web - 實際的WebForms項目 - 全部演示文稿

我忘了什麼?是否有更加標準的方法來命名這些?
關於這個話題的任何精彩的博客文章?

+0

應該包括測試項目。 thx – BuddyJoe 2009-04-14 14:56:19

+0

我們來看看CodeCampServer的功能。無法檢出源代碼。奇怪的存儲庫已重新定位錯誤。其他人能夠檢查出來嗎?詳細信息:http://code.google.com/p/codecampserver/source/checkout – BuddyJoe 2009-04-14 15:23:19

+2

您的業務邏輯應該位於域中。 – Paco 2009-04-14 18:54:22

回答

3

缺少一些零件似乎是整個解決方案和測試項目所需服務的中心位置。我通常有這樣的事情:

  • Sample.Core - 域類和庫接口
  • Sample.Data.NHibernate - - 需要在整個應用
  • Sample.Data使用的服務和代碼映射文件,流利的配置等,以及儲存庫實現方式中,基本上什麼數據映射層具體
  • Sample.Services - 服務實現和接口
  • Sample.Web - web應用

我有測試項目的匹配樹:

  • 測試\ Sample.Core.Tests
  • 測試\ Sample.Data.NHibernate.Tests
  • 等...

當然,根據項目的不同,樹會變得更復雜。至於討論,請查看Onion Architecture。您也可以查看Domain-Driven Design上的示例項目,並瞭解您可以從中獲得什麼。

2

我發現每個人都有自己的喜好來命名,我更喜歡:

  • Sample.Domain - 域對象,映射文件
  • Sample.Services - 業務邏輯和服務(和存儲庫,雖然我可以看到這些分開)
  • Sample.Web - Web Stuff。
  • Sample.Migrations - 數據遷移。

Ben Scheirman最近也發佈了關於此:Exporting Visual Studio Solutions with Solution Factory

他使用不同的結構,但也包括一個偉大的方式來標準化您的模板。

2

我保持簡單,並傾向於按名稱空間而不是按項目分隔,特別是在開始時。我通常從解決方案中的三個項目開始:

  • 示例 - 包含名稱空間Sample.Model,Sample.Model.Mappings和Sample.Services。
  • Sample.Tests - 包含單元測試的結構與Sample相同。
  • Sample.Web - UI