グローバルな状態に代わるものについて利用できる投稿はたくさんありますが、Web環境での実装に関しては長引く質問があります。
Session[]
ASP.NETでは、セッションに格納される値は実質的にグローバル変数ですが、コレクションに頼らずに、ページやイベント間で認証されたユーザー名やアクセス許可などを合理的に格納することはできないようです。(私は通常、依存性注入を使用しますが、これらの値をviewstate / urlでクライアントに渡したくないでしょう。)
したがって、私は、グローバル状態はWeb開発に必要な悪であると考えています(HTTPのステートレスな性質のため)。答えは、責任を持ってそれを使用することです。実装に適したファサードパターンは何ですか?以下のような静的クラスは、セッション内get
のsとset
sの値だけでは、グローバル状態をマスクするのにあまり効果がありません。
public class SessionWrapper
{
public static string UserName
{
get { return Convert.ToString(Session["UserName"]); }
set { Session["UserName"] = value; }
}
public static bool IsAuthenticated
{
get { return Convert.ToBoolean(Session["IsAuthenticated"]); }
set { Session["IsAuthenticated"] = value; }
}
}