1

同じワーカー プロセスで 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 を開発し続けることができるためです。つまり、ビルドが高速になります。

これはリモートでも実行可能ですか?

4

1 に答える 1

0

これはかなり古い投稿であり、まだ関連性があるかどうかはわかりませんが、私はこれに遭遇したのは今だけです-ここに私の提案があります:

WebForms を webApp に変換することをお勧めします。これはかなり単純なプロセスであり、非常に堅牢です (私はこれを数回行いました)。

Web フォームが WebApp になると、同じサイトの同じワーカー IIS プロセスで他のアプリを実行できます。これにより、メモリが 2 倍になることはありません。

詳細が必要な場合はお知らせください。

于 2015-01-29T02:51:36.960 に答える