@Alisson
これで良いアプリケーションの状態を使用している場合
アプリケーションの状態の考慮事項 は、次の重要な考慮事項に注意する必要があります読み:それはですので :
リソースメモリに格納されているため、ディスクやデータベースにデータを保存する場合と比べて、アプリケーションの状態は非常に高速です。ただし、大量のデータブロックをアプリケーションの状態で保存すると、サーバーのメモリがいっぱいになり、サーバーがメモリをディスクにページングする可能性があります。アプリケーション状態を使用する代わりに、大量のアプリケーションデータを格納するためにASP.NETキャッシュメカニズムを使用できます。 ASP.NETキャッシュはデータをメモリに格納するため、非常に高速です。ただし、ASP.NETは積極的にキャッシュを管理し、メモリが不足するとアイテムを削除します。詳細については、「ASP.NETキャッシュの概要」を参照してください。
ボラティリティ:アプリケーション状態はサーバーメモリに格納されているため、アプリケーションが停止または再起動されるたびに失われます。たとえば、アプリケーション状態値がデータベースなどの不揮発性記憶媒体に書き込まれない限り、Web.configファイルが変更されると、アプリケーションが再起動され、すべてのアプリケーション状態が失われます。
スケーラビリティ:アプリケーションの状態は、Webガーデンのように、Webファームのように、あるいは同じサーバー上の同じアプリケーションを提供する複数のワーカープロセスの中で、同じアプリケーションにサービスを提供する複数のサーバ間で共有されていません。したがって、アプリケーションは、異なるサーバーまたはプロセスにわたってアプリケーション状態の同じデータを含むアプリケーション状態に依存することはできません。 アプリケーションをマルチプロセッサ環境またはマルチサーバー環境で実行する場合は、アプリケーション全体で忠実度を維持する必要があるデータに対して、データベースなどのよりスケーラブルなオプションを使用することを検討してください。
同時実行性:アプリケーション状態はフリースレッドです。つまり、アプリケーション状態データには多くのスレッドが同時にアクセスできます。したがって、アプリケーションの状態データを更新するときは、組み込みの同期サポートを組み込むことで、スレッドセーフな方法でデータを確実に更新することが重要です。 LockメソッドとUnLockメソッドを使用すると、一度に1つのソースのみで書き込み用のデータをロックすることで、データの整合性を確保できます。また、Global.asaxファイルのApplication_Startメソッドでアプリケーションの状態値を初期化することで、並行性の問題の可能性を減らすこともできます。
アプリケーション変数とはどういう意味ですか? 'Global.asax'の中にあるpublic static変数?あるいは 'Application [" Foo "] =" Bar ";'? – Alisson
Application ["Foo"] = "Bar"のようなアプリケーション状態変数 – anveshtummala
私は両方のサーバーにRedisをインストールし、フェールオーバーで複製を構成しました。しかし、あなたが尋ねたように使用することができれば、それが可能かどうかを知りたいと思っています。 +1 – Alisson