0

セッションでいくつか保存する必要があります。現在、開発マシンで InProc セッションを使用していますが、SQL サーバー セッションと Azure の AppFabric セッションを使用してデプロイしたいと考えています。

すべてプリミティブ型のいくつかのプロパティを含むオブジェクトを作成しました。セッションの読み取りを次のように処理しています。

SessionObject TheCurrentSession = 
    HttpContext.Current.Session["UserAppSession"] as SessionObject;

基本的に、私はセッション変数を、セッションがロードおよび保存されるたびにシリアライズおよびデシリアライズされるオブジェクトにラップしています。

各プロパティをネイティブ形式で保存し、ラッピングオブジェクトにセッション内の各プロパティをネイティブタイプとして読み取り/保存させる方がよいかどうか疑問に思っています。

たとえば、次のような RecreateSession というメソッドがあります。

public class SessionObject
{
   public void RecreateSession()
   {
        this.SessionObjectProperty1 = 
                         HttpContext.Current.Session["SessionObjectProperty1"];
        this.SessionObjectProperty2 = ...;
        this.SessionObjectProperty3 = ...;
   }
}

そうすることで、シリアル化/逆シリアル化プロセスが妨げられ、コードの他の部分 (つまり、HTTP モジュール) で値に直接アクセスできるようになると思います。

セッションの実装を変更する価値はありますか? このためのベストプラクティスは何ですか?

ご提案いただきありがとうございます。

4

2 に答える 2

1

セッションの実装を変更する価値はありますか?

使いやすくする場合のみ。

このためのベストプラクティスは何ですか?

あなたはすでにそれらをほとんど行っています。いくつかの関連するプロパティ (一緒に使用される可能性が高い) を保持する単一のオブジェクトを作成し、それを一連の個別のセッション プロパティの代わりにセッションに格納することは理にかなっています。

于 2012-05-05T14:04:33.287 に答える
1

私は常に、各プロパティが特定のセッション アイテムを参照するカスタム オブジェクトを作成しました...これが最良のオプションだと思います。

于 2012-05-05T14:04:42.433 に答える