如果你在做DDD,我覺得很奇怪你沒有領域模型。你有一個所謂的引擎,它有多個問題。它實現您的業務邏輯並知道如何將您的業務邏輯託管爲Windows服務。
我會提出一個項目結構如下:
MyProject.Model:定義抽象庫,實體,值對象,服務(DDD項)等領域邏輯。它沒有提及其他項目
MyProject.DataAccess:使用linq2sql實現存儲庫。有一個參考MyProject.Model
MyProject.ServiceModel:包含服務合約和其他相關的東西公開您的域模型作爲WCF服務。該項目還將包含服務所服務和接受的域對象的服務特定表示。原因是你可能不應該使用WCF數據合同中所需的屬性來修飾你的域類。該項目引用MyProject.Model。
MyProject.Service:包含您的服務的app.config並通過自定義的ServiceHost和ServiceHostFactory執行依賴注入。它引用MyProject.Model MyProject.ServiceModel和MyProject.DataAccess +你最喜歡的DI框架(例如Windsor Castle)
MyProject。PresentationModel:定義用戶界面中使用的各種視圖模型和命令。它具有對由MyProject公開的服務的服務引用。服務
MyProject.WinUI:您的WPF應用程序。參考MyProject.PresentationModel。
請注意,您可能在Eric Evans的關於DDD的書中讀到的大部分內容只涉及MyProject.Model的內容。其他項目正在構建額外的層次,而不是直接在先生中提到。埃文斯的書。
請記住,通過明確區分問題並使用依賴注入,您最終將獲得易於測試的代碼。使用上面提出的結構,您應該可以測試幾乎所有的東西,因爲您的UI只包含XAML。
無論如何,這只是我的承擔。請隨時詢問是否需要澄清一些內容。
祝你好運。
/Klaus
+1寫得很好。 – 2009-12-01 03:46:46