ソフトウェア アーキテクチャ (および Visual Studio) の学習演習として、4 つの最小限の WPF/C# アプリケーション (ソリューション) のセットを 1 つの目的で作成することにしました。ボタンが押されたときにファイルからいくつかの円パラメーターを読み取り、表示します。 GUI 上の結果:
- 1 つのアプリケーションは .txt ファイルから読み取り、パラメーターをテキスト ボックスに表示します。
- 1 つのアプリケーションは .xml ファイルから読み取り、キャンバスに円を表示します。
- 1 つのアプリケーションは .txt から読み取り、円を表示します。
- 1 つのアプリケーションは .xml から読み取り、テキスト パラメータを表示します。
つまり、Circle クラスを含む 1 つの Domain プロジェクト、2 つの DataAccess プロジェクト (1 つは xml 用、もう 1 つは txt 用)、2 つのプレゼンテーション プロジェクト (1 つはジオメトリ描画用、もう 1 つはテキスト表示用) を持っています。4 つのソリューションはそれぞれ、これらの再利用可能なモジュール化されたプロジェクトの組み合わせを指します。
また、FAÇADE デザイン パターンを使用して、プレゼンテーションがファサードを「見る」が、データ アクセスやドメインを認識しないようにしたいと考えています。Façade は Domain と DataAccess を認識し、各 DataAccess は盲目的にビジネスを行います。
問題は次のとおりです。
- Façade プロジェクト内で DataAccess 名前空間を使用するには、2 つの DataAccess レイヤーのいずれかに名前空間の依存関係を作成する必要があるため、2 つの Façade が必要でした。したがって、1 つの Façade は XmlBackend に依存し、他の Façade は TxtBackend に依存します。
- 各プレゼンテーションは Façade に依存するため、名前空間を利用できますが、私には 2 つのファサードがあるため、各プレゼンテーション プロジェクトは 2 つの異なるファサード プロジェクトに依存することになり、これは悪いことです。
各プレゼンテーションがそれを参照するように単一の Façade プロジェクトを作成しようとしましたが、この Façade は 2 つの異なる DataAccess バックエンドに依存します。次に、ソリューションでは、Façade プロジェクトが 2 つの異なるプロジェクトに依存するため、DataAccess バックエンド プロジェクトを 1 つだけにすることはできませんでした。
問題は、これを解決して 4 つのソリューションを作成し、各ソリューションに必要なプロジェクト (ドメイン、ファサード、1 つのプレゼンテーション、1 つのデータ バックエンド) のみを持たせ、階層化アーキテクチャに違反せず、各プロジェクトをどのように解決できるかです。他の人についてあまり知る必要はありませんか?
更新: Msdn ライブラリには次のように書かれていますが、これはヒントかもしれません。「[ソリューション エクスプローラーを使用すると、ソリューション内の複数のプロジェクトに役立つアイテムを追加したり、各プロジェクトのアイテムを参照せずにソリューションに追加したりできます。」
読んでくれてありがとう!