同じワーカー プロセスで 2 つの個別の ASP.NET Web プロジェクトのコードを並べて実行するエレガントな方法はありますか?
バックグラウンド
私のチームは、大規模な ASP.NET WebForms アプリケーションを管理しています。Microsoft の新しい WebAPI フレームワークを使用して構築した API を使用する Android/iOS アプリも開発しています。
WebForms アプリと API は現在、IIS で個別のサイトとしてセットアップされていますが、これは実行可能な長期的なソリューションではありません。私たちのアプリケーションは、それぞれが異なるデータベースを持つ複数のテナントを処理します。NHibernate を多用しており、各クライアントには独自のヘビーSessionFactory
オブジェクトが必要です。このように、WebForms アプリは大量のメモリ フットプリントを持ち、API を別の IIS サイトとして実行すると、各クライアントに必要なメモリが本質的に 2 倍になります。
WebForms アプリ内で API をホストすることで、NHibernate リソースの共有とメモリ負荷の軽減の両方が可能になります。
現在、Web アプリケーションと API は別のソリューション ファイルにありますが、どちらも共通のビジネス ロジック/データ アクセス プロジェクトへのリンクを持っていますCore
。
私たちの Web アプリケーション ソリューションは次のようになります (簡略化)。
MyWebFormsApplication
- Core
- WebFormsProject
- AnotherProject
- AnotherProject1
- AnotherProject2
- AnotherProject3
API ソリューションは次のようになります。
MyAPI
- Core
- WebAPIProject
理想的には、Webforms アプリと API の両方を同じソリューション内に共存させたいと考えています。
MyHappyCombinedApplication
- Core
- WebFormsProject
- WebAPIProject
- AnotherProject
- AnotherProject1
- AnotherProject2
- AnotherProject3
オプション
各 API ファイルを WebForms プロジェクト内のリンクとして追加することもできますが、これはメンテナンスに大きな手間がかかります。
私が考えることができる他の唯一のオプションは、別の API プロジェクトを完全に捨てて、API と WebForms プロジェクトをマージすることです。
API を独自のプロジェクトに保持することを好む理由は、メイン ソリューションのすべての余分な荷物を持たない小さなソリューション ファイルから API を開発し続けることができるためです。つまり、ビルドが高速になります。
これはリモートでも実行可能ですか?