最初はセッション変数を渡していましたが、Azure ではサポートされていないと誰かに言われました。他に提案はありますか?ログインユーザーのオブジェクトを保存しています。
2 に答える
Azure はセッションをサポートしていますが、個々の Web ロールにセッションを配置することはうまく機能しません。たとえば、アプリを 2 台、4 台、または 8 台のサーバーにスケーリングしたり、高可用性を維持したりする場合は、異なるサーバー間で要求をルーティングするロード バランサーを用意します。したがって、複数の Web サーバーがあり、それぞれがロード バランサーの背後に独自のユーザー セッションを持っている場合は、セッション状態データなしで Web ロール (サーバー) に要求が送信される可能性があるため、問題が発生します。
すべての Web ロールで使用できる単一の変数を保存する場合...
- 分散キャッシュ (Azure には、このためのオプションがいくつかあります)
- Azure Table Storage (変数が 1 つの場合は高速です)
- SQL Azure DB (単一の変数ではおそらくやり過ぎ)
上記のオプションはすべて、複数の Azure Web ロールからの共有アクセス (読み取り/書き込み) を許可します。Azure Caching および SQL Azure DB 用に記述された ASP.NET セッション状態プロバイダーも利用できます。逆に、Azure Table Storage は、一意のキーに基づいてデータを非常に高速に取得するための非常に優れたオプションです。
Web ロールが単一インスタンスで実行されている場合、セッションは正常に機能します。ただし、スケーラビリティが必要な場合は、キャッシュを使用する必要があります。