セッションでいくつか保存する必要があります。現在、開発マシンで 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 モジュール) で値に直接アクセスできるようになると思います。
セッションの実装を変更する価値はありますか? このためのベストプラクティスは何ですか?
ご提案いただきありがとうございます。