28

彼の本の中でエリックはモジュールの主題にほとんど触れていません。彼はまた、モジュールの構造と制限されたコンテキストとの関係についても例を挙げて話していません。バウンドコンテキストにはモジュールが含まれていますか、それともモジュールにはバウンドコンテキストが含まれていますか?アプリケーションにDDDがある場合、どのくらい簡単に拡張できますか?

Extensibleアプリケーションを設計する場合、アプリケーションの構造は非常に重要です。Microsoft MEFフレームワークは、dllからモジュール/コンポーネントを自動検出できます。

例を見てみましょう。eコマースアプリケーションでは、支払い処理のコンテキストを制限することができます。支払い処理は抽象的である可能性があるため、後でPaypalやPayflowなどのより多くの支払い処理業者でアプリを拡張できます。現在、私はPaypalしか持っていませんが、数か月後にPayflowを統合したいと思っています。Payflowを統合するために、支払い処理のインターフェイスを実装するアセンブリ(dll)を作成できます。そのdllをアプリケーションにドロップすると、MEFが自動的に検出します。

ここでの課題は、PayFlow支払い処理用に作成されたdllがモジュールであり、Bounded Context(BC)ではないことです。BCとして作成した場合、支払い処理用に2つのBCがあります。(Paypal用に作成されたBCとPayflow用に作成されたBC)。境界コンテキスト内のモジュールとアセンブリ(dll)としての境界コンテキストを使用してアプリケーションを構造化する場合、モジュールはアセンブリではなくフォルダーとしてBCに存在できます(Visual Studioで作成されたC#ライブラリと考えることができます)。

DDDでこの拡張性の問題をどのように処理できますか?支払い処理、BC、およびその下にあるモジュールとしてのさまざまなフォルダー、Paypal用のものなど...または別のBC内にサブBCが必要ですか?

4

1 に答える 1

30

彼の本の中でエリックはモジュールの主題にほとんど触れていません。彼はまた、モジュールの構造と制限されたコンテキストとの関係についても例を挙げて話していません。

はい、モジュールとBC構造が本で十分にカバーされていないことに同意します。詳細については、VaughnVernonによるドメイン駆動設計の実装をお勧めします。

バウンドコンテキストにはモジュールが含まれていますか、それともモジュールにはバウンドコンテキストが含まれていますか?

BCにはモジュールが含まれています。モジュールは軽量のBCのようなものであり、ユビキタス言語にも属しています。

アプリケーションにDDDがある場合、どのくらい簡単に拡張できますか?

それはあなたがそれをどのように設計するかに依存します。DDD自体については、拡張性を妨げるものは何もありません。

支払い処理、BC、およびその下にあるモジュールとしてのさまざまなフォルダー、Paypal用のものなど...または別のBC内にサブBCが必要ですか?

各支払いプロセッサの統合を、単一の支払い処理BC内のモジュールとしてモデル化します。さらに、各統合は、支払い処理モデルとPayPalなどのサードパーティとの間のACLです。

または、別のBC内にサブBCが必要ですか?

いいえ、しかしこれはサブBCの興味深い概念に触れています。サブBCは良い考えではないと思います。なぜなら、階層組織は危険であり、厳密な設計につながる可能性があるからです(たとえば、明示的な型階層を持つOOPを見ると問題が発生する可能性があります)。代わりに、潜在的により多くのBCを備えたよりフラットなモデルを選択してください。また、あなたの場合、モジュールを使用して目的の構造化を実現できます。

于 2012-12-24T17:12:22.313 に答える