15

私は DDD と境界付けられたコンテキストについて読んできましたが、考えが間違っていると思います。最初は、サブドメインと境界付けられたコンテキストのアイデアが好きで、次のように理解していました。開発するソフトウェアがありますが、一度に攻撃するのは多すぎるため、論理的な断片に分割して、一度に開発します。私たちが解決するもう 1 つの問題は、ユビキタス言語のあいまいさです。

これにより、境界付けられたコンテキストを基本的には、アプリケーションの特定の部分に関連するコードをグループ化してバインドする単なるフォルダーと考えるようになりました。このコードは、次のようなものから構成されていると信じていました

  • リポジトリとサービスの抽象化を含む、その境界付けられたコンテキストのドメイン モデル
  • その境界付けられたコンテキストのインフラストラクチャ層、リポジトリの実装など

もちろん、ドメイン モデルとインフラストラクチャは、境界のあるコンテキスト内で適切に分離されています。

しかし、さらに読むと、それぞれの境界付けられたコンテキストは、それ自体が完全なアプリケーションであるように見えます。たとえば、境界付けられたコンテキストごとに独自のアプリケーション層があるように見えることがあります。

これは私を混乱させました。なぜなら、大量のアプリケーションの開発を終わらせたくない場合があるからです。アプリケーションの境界付けられたコンテキスト区分は、1 つのアプリを構築することになっていました。統合されるアプリは多くありません。

@MikeSWがOPによって提示された両方のアプローチが有効であると言っているこの質問のようです。私が求めているのは、3番目の構造についてです:

<bc 1>
 |_ domain
 |_ infrastructure
<bc 2>
 |_ domain
 |_ infrastructure
|_ application
|_ presentation

少なくとも、私が見たすべてのアプリケーションでは、これははるかに理にかなっていると思います。いくつかのプレゼンテーションを備えた複数のアプリではなく、1 つのアプリが必要ですが、ドメインを壊して、「ユビキタス言語の境界」などの利点を得ることができるようにしたいと考えています。

では、境界付けられたコンテキストは完全なアプリケーションですか? または、私が理解し、より便利だと感じたように、境界付けられたコンテキストを使用できますか? 私のアプローチに問題はありますか?

4

4 に答える 4

3

結局のところ、答えは両方です。境界付けられたコンテキストから取り除かなければならない重要なことは、アプリをどのように構築するかではなく、何らかのコンテキストに関連する特定の動作をモデル化するさまざまなスペースを用意することです。これらのコンテキスト間の境界をどのように定義するかは、解決する必要がある問題によって異なります。

名前空間 (フォルダー) を使用して境界付けられたコンテキストを定義することは何も悪いことではありません。あなたが言ったように、ほとんどの場合、1 つのアプリケーションを作成するだけです。コンテキストごとに個別のプロジェクトを作成することで、境界付けられたコンテキストを定義することもできます。この場合、プレゼンテーション層は必要なプロジェクトを参照します。

DDD をコーディングする正しい方法はたくさんあります。「このようにすることで、コア原則に従っていますか」と自問する必要があります。

于 2015-02-18T20:10:13.043 に答える
1

境界付けられたコンテキストは、完全なソリューションのサブセットを記述し、そのコンテキスト内のすべてがそのコンテキストに役立ちます。したがって、各コンテキストには独自のドメインがあるため、別のアプリケーションまたは同じプロジェクトの単なるサブシステムである可能性があります。「コンテキスト」のポイントは、ユビキタス言語がそのコンテキストに直接適用されるということです。たとえば、Account コンテキストの User は、Sales コンテキストの User とはまったく異なるものを意味する場合があります。各「ユーザー」は異なる機能を持ち、各コンテキストで異なるルールに従います。各コンテキストは他のコンテキストから分離する必要があり、参照を共有することはできません (「共有」コンテキストを介していない限り)。すべての通信は、そのコンテキストの上にあるサービスを介して仲介される必要があります。コンテキストが DDD に従う必要さえありません。

異なる名前空間、ソリューション内の異なるアセンブリ、または完全に異なるプロジェクトを意味するかどうかにかかわらず、コンテキスト間の直接参照を防ぐために必要なことは何でも問題ありません。

于 2016-08-24T20:37:37.360 に答える