0

セッション状態に情報を保存することはスケーラビリティにとって悪い考えだと読みましたが、セッション状態が Proc ではなく SQL に保存されていても問題ありませんか?

通常、ユーザーがログインすると、ほとんどすべてのページで情報をフィルタリングするために使用されるセッション変数に customerID を割り当てます。セッション変数にない場合、この顧客IDを保存するための最良の方法は何ですか?

User.Identity.Name フィールドを使用してデータベースにクエリを実行し、customerID を取得できますが、SQL にセッション変数を保存することに違いはありません。また、User.Identity クラスを拡張して CustomerID 変数を含める方法はありますか? 繰り返しますが、これがセッション変数を保存するよりも優れているとは思いません。

どんな考えでも大歓迎です!

4

1 に答える 1

0

はい、これらすべてを行うことができます。スケーラビリティだけでなく、いくつかの理由から、セッションに物を保存することはお勧めできません。理由の 1 つは、セッションがタイムアウトし、ユーザーがまだログインしている可能性があることです。変数が null であるかどうかをいつでも確認して再設定できますが、すべてのページでそれを行うか、ヘルパー メソッドを作成する必要があります。ページごとにフォームを呼び出します。

SQL セッションは非常に遅く、リクエストごとにデータベース ルックアップが必要です。それがそれらを避ける1つの理由です。

グローバル アクション フィルターのようなもので ID を検索できますが、これもすべての要求に対してデータベース検索が発生します。

もう 1 つのオプションは、IIdentity インターフェイス (User.Identity オブジェクトの内容) を拡張して CustomerID を追加することです。「IIdentity MVC」をグーグルで検索すると、さまざまな例があります

于 2012-10-13T10:57:15.390 に答える