私は最初に、現在の設計でドメインモデルを実現しようとしているのではないことを言いたいと思います。
そうは言っても、私は現在、次のようなアーキテクチャを構築しています。
UI DTO <=> Service DTO <=> Business/Database DTO (using AutoMapper)
私はEricEvanのDDDの本を読んでいて、 Greg YoungのDDDプロジェクトが失敗する7つの理由を見てきました。そして、貧血モデルを恐れています。私はDDDを処方していませんが、非常に類似したものを前後にマッピングし続けるのが面倒になるほど多くのレイヤーを作成したくありません。
しかし、私が行うセットアップを持っている理由は2つあります。変更のしやすさとあいまいさ
- 変更のしやすさ:パブリックオブジェクトがサービスを介して公開されており、UIとビジネスオブジェクトを内部で使用している場合、既存のAPIを壊すことなく自由に変更を加えることができます。しかし、おそらく1つのDTOを使用して、DTOが逸脱し始めた場合にリファクタリングすることができますか?
- あいまいさ:パブリックオブジェクトを公開することはできますが、完全なオブジェクトとその実装が内部にある場合は公開できません。これは安全な製品である必要があるので、私はその準備をしています。しかし、多分また、後でそれをリファクタリングすることができますか?
だから、私の質問はこれです:私の現在のモデルは意味がありますか、それとも後で問題を求めていますか?これらのオブジェクトは主にDTOであるため、問題ありませんか?Evanの本でさえ、彼は、このモデルが異なるサーバーに分散されるように計画されている場合は問題ないことを示唆していますか?それで、UI、サービス、およびDBレイヤーを異なるサーバー上に配置できるようにすることを計画しているので、この理由だけでレイヤー化は問題ありません(現在は必要ないため、現在は使用されていません)。
オーバーアーキテクチャを認識しようとしているだけですが、同時にアンダーアーキテクチャを回避しようとしています.....それで、このモデル構造は私の現在の実装にとって良いのか悪いのか?