1

是否有可能使用DDD和豐富的域模型,如果你的應用程序是這樣的:我可以在WCF中使用豐富的域模型嗎?

  • Windows客戶端(WPF)
  • 窗口服務

和溝通與WCF發生什麼呢?

我以前只有數據狀態的DTO,並且在服務層有業務規則,但是每個人都告訴我應該有一個豐富的域模型,其中數據狀態和規則/方法都在對象中他們自己。

我只是不確定這個豐富的域模型是否適用於具有UI並通過WCF與服務進行通信的系統(就像我上面介紹的那樣)。在我的情況下,繼續使用WCF的貧血域模型會更好嗎?如果沒有,請給我一個關於如何使用豐富的域模型構建它的例子,考慮WCF,代理等?

謝謝!

回答

3

一般而言,您將序列化您的域對象以通過WCF進行傳輸,就像一些簡化的DTO一樣,而這正是您的客戶端應用程序所使用的。

您可以serialize user defined types並在客戶端反序列化它們,但對於大多數應用程序來說,這是不必要的。只要你不需要客戶對象的「豐富」行爲(無論如何你都不應該擁有一個好的DDD),這聽起來像你可以在你的服務層使用豐富的設計並且通過電線發送簡單的DTO。

+0

謝謝肉體。在這種情況下,我會重複定義。例如,對於用戶,我將擁有一個用戶域對象(具有數據狀態和方法)以及一個用戶DTO(僅具有數據狀態)。這是一件好事還是可以接受的事情?謝謝 – Name123 2009-11-30 20:54:27

+0

是的,沒關係。實際上,這通常是您用來支持Web服務和智能客戶端應用程序之類的模式。我使用類似的模式 - 將狀態包/ DTO傳遞給客戶端,並在域中使用更豐富的模型,以便封裝行爲。 – flesh 2009-11-30 23:17:17

+2

@flesh:「......只要你不需要你客戶中的對象的'豐富'的行爲(無論如何你都不應該擁有一個好的DDD)......」。這是一個非常苛刻的限制!你是否建議客戶端PC不應執行邏輯? – 2009-12-01 10:45:38

相關問題