エンタープライズスケールコンポジットアプリケーション(CAG)を整理する方法
-
23-10-2019 - |
質問
CAGドキュメントのすべてのクイックスタートとRIの例は優れていますが、私はより多くのエンタープライズスケールの例がありません。
それぞれにプロキシ、ファサード、プレゼンテーションモデル、モデル、ビューが含まれている40以上のモジュールがあるとしましょう。また、各モジュールは、IISまたはスタンドアロンコンソールホストでホストされるモジュール固有のWCFサービスを呼び出します。私たちのアプローチは、UIモジュール、サービスモジュール、および関連テストを1つのソリューションに含めることで、他のモジュールとは別に開発およびテストできるようにすることでした。
私の問題は、サービスが別々のモジュールにあるときにサービスのホスティングを行う方法と、F5を押すときに他のアプリケーションモジュールと一緒に個別のモジュールを実際に実行する方法です。これにベストプラクティスはありますか?以前に行われたと思いますか?
解決 2
結局、ホスティングプロジェクトをソリューションに「スタートアップ」プロジェクトとして含めるかなりシンプルなソリューションになりました。このプロジェクトは、構築せず、モジュールの依存関係を持つように設定されています。
すべてのサービスdll:sは、ホストプロジェクトが動的にロードされている共通フォルダーに出力され、servicecontract属性を探してホストを起動します。
他のヒント
確かに各モジュールをサービスポイントのアプリケーションまたは仮想ディレクトリインスタンスとしてホストすることができますが、私は言うことは、あなたがあなたのサービスの制作アーキテクチャを決定するソリューションパーティションの開発の「利便性」を許可していると思いますか?通常、モジュールパーティションではなくレイヤーに基づいてこれを処理しました。つまり、ドメイン/モデルを備えたプロジェクトとサービスを使用しているプロジェクトがあり、各「モジュール」はサービスの共通プールを参照できます。相互に関連したモジュールがどのようになっているか、クロスコミュニケーションがどれだけあるかなどに依存します。
各サービスは、さまざまなポートまたはターゲットで実行されるように構成できますが、おそらくあなたの問題はサービスのアーキテクチャに起因すると感じており、モジュール間で共有される共通のサービスプロジェクトを持つことから利益を得るかもしれません。