दूसरों ने जो कहा है, उसका पालन करना। मेरी दो परतें हैं:
कोर परत। यह एक DLL के भीतर है जो लगभग सभी वेब ऐप परियोजनाओं में जोड़ा जाता है । इसमें मेरे पास एक सत्रवार वर्ग है जो सत्र राज्य पाने वालों / बसने वालों के लिए गंभीर काम करता है। इसमें निम्नलिखित जैसे कोड शामिल हैं:
public class SessionVar
{
static HttpSessionState Session
{
get
{
if (HttpContext.Current == null)
throw new ApplicationException("No Http Context, No Session to Get!");
return HttpContext.Current.Session;
}
}
public static T Get<T>(string key)
{
if (Session[key] == null)
return default(T);
else
return (T)Session[key];
}
public static void Set<T>(string key, T value)
{
Session[key] = value;
}
}
किसी भी प्रकार को प्राप्त करने के लिए जेनरिक पर ध्यान दें।
फिर मैं विशिष्ट प्रकारों के लिए गेटर्स / सेटर्स भी जोड़ता हूं, विशेष रूप से स्ट्रिंग क्योंकि मैं अक्सर स्ट्रिंग के साथ काम करना पसंद करता हूं। उपयोगकर्ताओं को प्रस्तुत किए गए चर के लिए रिक्त होने के बजाय खाली।
उदाहरण के लिए:
public static string GetString(string key)
{
string s = Get<string>(key);
return s == null ? string.Empty : s;
}
public static void SetString(string key, string value)
{
Set<string>(key, value);
}
और इसी तरह...
फिर मैं दूर करने के लिए रैपर बनाता हूं और इसे एप्लिकेशन मॉडल तक लाता हूं। उदाहरण के लिए, यदि हमारे पास ग्राहक का विवरण है:
public class CustomerInfo
{
public string Name
{
get
{
return SessionVar.GetString("CustomerInfo_Name");
}
set
{
SessionVar.SetString("CustomerInfo_Name", value);
}
}
}
आपको सही अंदाजा है? :)
नोट: स्वीकृत उत्तर के लिए एक टिप्पणी जोड़ते समय बस एक विचार था। राज्य सर्वर का उपयोग करते समय हमेशा वस्तुओं को क्रम में रखना सुनिश्चित करें जब उन्हें सत्र में संग्रहीत किया जाता है। वेब फ़ार्म पर जाने पर जेनरिक का उपयोग करके किसी ऑब्जेक्ट को सहेजने और सहेजने के लिए यह सब बहुत आसान हो सकता है। मैं काम पर एक वेब फ़ार्म पर तैनात हूं, इसलिए मेरे कोड में कोर लेयर में चेक जोड़े जाएं ताकि यह पता चल सके कि ऑब्जेक्ट सीरियस है या नहीं, सैशन गेटर्स और सेटर्स को एन्कैप्सुलेट करने का एक और फायदा :)