SQL Server 2008 R2 バックエンドで C# 3.0 と ASP.NET 3.5 を使用して単純なプロジェクト管理システムを作成しています。
現時点では基本的に、基本的な CRUD 機能、少量のビジネス ロジック、およびいくつかの検証を備えたデータ ドリブン アプリケーションです。
このシステムは、より複雑なビジネス機能を含むように成長することが予想されます。私は、ドメイン駆動設計 (DDD) の原則を使用してシステムを改造することに興味があります。
現時点でのシステムの状態からすると、これはやり過ぎだと認識しており、今のところ貧血ドメインを作成することを期待しています.
システムは、顧客、クライアント、プロジェクト、コンポーネント、およびアクティビティで構成されています。
顧客には、0、1、または多数のクライアントがあります。クライアントには 0、1 または多くのプロジェクトがあります プロジェクトには 0、1 または多くのコンポーネントがあり、コンポーネントには 0、1 または多くのアクティビティがあります。
DDDを使用してこれをモデル化するにはどうすればよいですか? Customer、Client、Project、Component、および Activity を Aggregate ルートとして持つか、それとも 1 つの Aggregate ルート (Customer) を持ち、Customer を介してアクセス可能なエンティティとして Client、Project、Component、および Activity を持つか? エンティティ/集約ルート間の多対 1 の関係をモデル化する推奨される方法はありますか?
これは値オブジェクト(明らかに顧客、クライアントなどにはいくつかの属性が含まれています)などには触れていませんが、私はここで完全な初心者であり、ほぼ完全な答えと同じくらいいくつかの指針が大好きです。
質問のオープンエンドの性質についてお詫び申し上げます。私はすでに動作するシステムを持っていますが、将来を見据えています。
ありがとう、リッチ。