2011-10-11 5 views
7

私は最初の「本当の」DDDアプリケーションに取り組んでいます。DDD。ユーザーの設定可能な設定はどこに属していますか?

現在のところ、クライアントは自分のドメイン層にアクセスできず、コマンドを発行してドメインへの変更を要求します。

次に、単純なCQRSのような情報を表示するための別の(平坦化された)読み取りモデルがあります。

私は現在、ユーザーが設定する設定、具体的には設定について作業中です。例としてブログアプリケーションを使用すると、設定はブログタイトルまたはロゴである可能性があります。

シンプルなキー値ペアのコレクションに基づいて厳密に型指定された設定オブジェクト(BlogSettingsなど)を構築する一般的な設定ビルダーを開発しました。これらの設定オブジェクトが私のドメインの一部であるかどうかはわかりません。クライアントとサーバーからアクセスする必要があります。

これらの設定オブジェクトを含む「共有」ライブラリを作成することを検討しています。これは正しいアプローチですか?

最後に、このような構成設定を保存するコードはどこにあるべきですか?簡単な解決策は、このコードを私のDomain.Persistenceプロジェクトに置くことですが、ドメインの一部でない場合は、本当にそこにいるべきですか?彼らは強く型付けされたとユビキタス言語、すなわち「blog設定」に基づいてモデル化されている場合

おかげで、

ベン

+2

別の「設定」または「設定」境界のあるコンテキストがあるかもしれません。論理的な分離であり、物理的な分離ではありません。したがって、さまざまな技術(クライアントとサーバー)を使用してコンテキストへのアクセスを提供することができます。しかし、これを行うためのすべてのコードはコンテキストに属します。 –

+0

@ YvesReynhoutこれは私たちがやりとりしたルートで、私たちがやり取りする設定コンテキストを持っています。ただし、構成オブジェクトを共有しました。この場合、分離によって不要なコードの重複が発生しただけです。 –

+0

ああ、しかし、論理的な分離は、コードの重複につながることはありません。これは、境界のあるコンテキストがコードを担当していることを意味します。バインドされたコンテキストのコードがどのようにデプロイされるのかは、その事実と完全に直交しています(他のバインドされたコンテキストのコードとともにプロセス内で完全にホストされる可能性があります)。 –

答えて

8

ユーザー設定可能な設定は、ドメインに属しています。設定と他のドメインオブジェクトとの唯一の違いは、概念上の設定は「ドメインシングルトン」です。彼らは他のエンティティのようなライフサイクルを持たず、インスタンスを1つしか持てません。

汎用設定ビルダーは、設定の保存と読み取りを担当するコードと同じように、持続性に属します。

+0

は、これらの「ドメインシングルトン」をクライアントに公開することは容認できますか、クライアントの「読み取り」バージョンを作成する必要があります(基本的にはまったく同じです)。私はこれまでクライアントから自分のドメインを参照しないようにしようとしてきました。 –

+0

他のエンティティを扱うのと同じ方法で、この '設定'オブジェクトを扱います。それ以外のエンティティの「読み込み」バージョンがある場合は、「読み込み」バージョンの「設定」も持っていると意味があります。 – Dmitry

関連する問題