DDD アーキテクチャを利用するようにリファクタリングする予定の WinForms アプリケーションがあります。まず、私はアーキテクチャ自体に頭を悩ませようとしています。Evans の本と Vernon の本を持っていますが、アプリケーションですぐに直面する 3 つのシナリオに苦労していることに気づきました。概念設計プロセスで考えすぎたり、厳密すぎたりするのではないかと心配しています。
1.) DDD に関する Pluralsight チュートリアル内で提供された例を利用して、スピーカーは、さまざまな境界付けられたコンテキストを独自のソリューションで表す必要があることを指摘しました。ただし、サービス指向ではない winforms アプリがある場合 (これは最終的に変更され、この質問の多くは意味がなくなります)、これは実行可能ではないようです。したがって、相互依存関係がないことに注意して、これらを異なるプロジェクト/名前空間に分離するという前提で運用しています。これはそれについて考える正しい方法ですか、それとも明らかな何かが欠けていますか?
2.) 異なる境界付けられたコンテキストの別々のプレゼンテーション レイヤーに属する他のモジュール/ウィンドウを起動するナビゲーション UI があります。ERP アプリケーションを起動したときに最初に開くウィンドウを考えてみてください。これは特定の BC 内にきれいに収まらないため、このようなものを適切に実装するにはどうすればよいでしょうか。これは共有カーネル内に収まる必要がありますか?
3.) ジョブ管理境界コンテキストと評価/原価計算境界コンテキストがあります。ジョブが作成されたときにその詳細が評価されるのは、ビジネス プロセスの一部です。これには独自の UI などがありますが、このプレゼンテーションがまだジョブ管理のコンテキスト内に適切に収まっていることは非常に良いと思います。ただし、これらの詳細の実際の評価プロセスは絶対にすべきではありません。bc は互いに分離されているため、Rating/Costing コンテキストと通信する方法が完全にはわかりません。メッセージングを行うことができることはわかっていますが、非分散アプリにとってはやり過ぎのようです。各 BC は、ある種の API を自己ホストすることもできますが、これはやり過ぎのように思えますが、これにより、後で分散アーキテクチャに移行するためのチームの準備が整います。ついに、私の最後のアイデアは、一種のイベントストアであるある種の共有依存関係を持つことです。これがドメイン イベントと同じかどうかはわかりません。ドメイン イベントはそれ自体に別の懸念があるようです。では、これは共有カーネルまたは他のタイプのソリューションに該当するということですか?
前もって感謝します。