2011-01-31 9 views
4

私はASP.NET 4を読んでいますUnleashedと私はこの文に来ました。 「セッション状態がインプロセスで保存されると、特定のWebサーバーに格納されます。つまり、Webファームでインプロセスセッション状態を使用することはできません。サーバーファームでのInProcセッションの使用

私は、セッションに辞書を格納することに依存してそれに依存するWebアプリケーションを構築しています。今私は、セッションを使用するときに辞書のシリアル化にいくつかの問題があることを知っているが、InProcセッションでは、シリアル化がないので、私は大丈夫だろうと思った。しかし、今私は疑問に思っている:私は私のアプリケーションをホストするために行くときに厄介な驚きを持っていますか?

ありがとうございました。

答えて

5

最初に、あなたのアプリケーションが単一のサーバー(およびおそらく共有ホスティング)上で動作する場合、in-procセッションはOKであり、おそらく唯一の方法です。あなたが動作しませんインプロセスWebサイト(Webガーデン)となる同一サーバー上の複数のサーバ(Webファーム)、あるいは複数のプロセスを持っている場合

しかしは、ない限り、あなたはスティッキーセッションを使用します:セッションの開始後に同じサーバーに要求を送信するようにロードバランサを構成する必要があります。

辞書のシリアライゼーションを心配する必要はありません。セッション処理では、サーバーまたはSQL Serverの状態でソートできる必要があります。

しかし、通常、プロセス境界に限定されたインプロセスセッションまたは状態に依存することは、悪い設計とみなされ、非常に推奨されません。

+0

理由は主にスケーラビリティです。要件が変更され、複数のサーバーを取得する必要がある場合は、問題が発生し、再設計が終了する可能性があります。また、ステートレスなWebアプリケーションを設計することで、一般にはるかに優れたコードが生成さそのような言葉があれば、通常は「無国籍」を達成することはそれほど難しくありません:) – Aliostad

+0

私はそれが悪いデザインであると聞いていますが、私は理由を理解できません。私の計画は次のとおりです。特定の日付のレポートをユーザーがプルすると、このレポートがセッションに保存され、その後のリクエストでデータベースを呼び出す代わりにセッションからデータが取得されます。これらのレポートは過去のものなので変更されません。なぜこれは悪いデザインと見なされますか? – frenchie

+0

しかし、明らかにスティッキーセッションはそれを解決しますか? – frenchie