我期待在我們的ASP.NET MVC應用程序中實現洋蔥結構。我理解需要將視圖模型與域實體分開,但是我發現自己正在編寫冗餘代碼。有冗餘的代碼,因爲我的視圖模型和域實體看起來與我的視圖模型具有[Serializable]數據註釋的異常完全相同。我需要這些可串行化的模型,因爲我使用的是ASP.NET會話狀態,其中狀態服務器需要對象可序列化。洋蔥體系結構:我們應該允許我們的域實體中的數據註釋嗎?
我個人覺得域實體不應該是可序列化的,因爲它會變得依賴於特定的技術。但是,我怎樣才能避免冗餘代碼?
我應該補充說我的服務方法依賴於這些可序列化的數據模型。
您可以始終考慮通過可以序列化和反序列化您的域對象的工廠模式添加服務。 – IdahoSixString 2015-02-10 15:34:29
我在我的個人項目中使用帶有DDD的洋蔥結構(端口和適配器),我的視圖模型很少看起來像我的域模型。另外,當我爲客戶做以數據庫爲中心的項目時,我會在所有圖層中看到它們使用相同的EF模型,因此我必須聆聽由此導致的數十個問題。 – 2015-02-11 09:07:23
@MickyDuncan一個模型對任何非平凡的非CRUD應用程序都是不利的。它迫使你將不同的用例(關注點)放到一個地方,最終你會得到一個frankenstein的怪物。隨着時間的推移,這些模型會以不同的方式演變,因此您需要每層/有界的上下文都有一個模型,以保持您的理智和生產力。很多開發中的問題都是因爲糟糕的設計以及最快/最淺的解決方案。 – MikeSW 2015-02-11 17:53:50