यह पुराने दस्तावेज़ से लिया गया है लेकिन यह अभी भी बहुत मान्य है और एक इलाज करता है ... मैं यहां लिंक सामग्री डालूंगा, खासकर क्योंकि यह एक पुराना लिंक है जो गायब हो सकता है। Taken from here.
पृष्ठभूमि
ASP.Net में सत्र वस्तु जानकारी है कि साइट के किसी एक उपयोगकर्ता के लिए विशिष्ट है स्टोर करने के लिए इस्तेमाल किया जा सकता। सत्र को एक प्रमुख नाम से अनुक्रमित किया जाता है, और जब इसे सीधे इस तरह से उपयोग किया जाता है तो यह बड़ी संख्या में व्यक्तिगत सत्र नामों का कारण बन सकता है। एक वैकल्पिक दृष्टिकोण इसके बजाय समूह से संबंधित वस्तुओं के लिए सिंगलटन ऑब्जेक्ट बनाना और उस ऑब्जेक्ट को किसी दिए गए कुंजी नाम से स्टोर करना है। "सिंगलटन" एक आम डिजाइन पैटर्न है जो यह सुनिश्चित करता है कि किसी भी समय कक्षा का केवल एक ही उदाहरण मौजूद है।
सिंगलटन सत्र के लाभ संगठन प्रयोजनों
विशेष रूप से इस तरह के एक साइट पर पंजीकरण के रूप में एक क्षणिक प्रक्रिया पर पृष्ठों की एक श्रृंखला के लिए उपयोगी के लिए ऑब्जेक्ट्स सत्र मदों की
- समूहीकरण। एक बार प्रक्रिया पूरी हो जाने वस्तु सत्र से साफ किया जा सकता स्मृति (सर्वर का बेहतर इस्तेमाल संसाधन)
- प्रभाव सत्र जानकारी में परिवर्तन के विश्लेषण के पुन: दावा किया जा सकता है इतना आसान
- साइट हैं कि के क्षेत्रों की पहचान है जानकारी का दुरुपयोग प्रॉपर्टी नामों के लिए
- Intellisense और प्रकार एक बार वस्तु का उपयोग (अधिक स्पष्ट सिर्फ अगर यह उपयोग करने के लिए उचित है निर्धारित करने के लिए चर के नाम का उपयोग की तुलना में)
सिंगलटन सत्र का नुकसान ऑब्जेक्ट्स
अधिक सत्र में अलग-अलग आइटम की संख्या को देखने के लिए जब प्रक्रिया सत्र स्थिति भंडारण से बाहर का उपयोग कर ASP.Net ट्रेस परिणाम वस्तु प्रदर्शन गिरावट के अंदर मान प्रदर्शित नहीं करता है मुश्किल (प्रभावित करता क्रमबद्धता)
कार्यान्वयन
पहला कार्यान्वयन चरण एक वर्ग फ़ाइल बनाना है जो वस्तुओं के लॉजिकल ग्रुपिंग का प्रतिनिधित्व करता है जिसे एकल ऑब्जेक्ट में एक साथ संग्रहीत किया जाना चाहिए। निम्नलिखित एक नमूना वर्ग है कि तकनीक को दर्शाता है है:
public class singleton
{
//Name that will be used as key for Session object
private const string SESSION_SINGLETON = "SINGLETON";
//Variables to store the data (used to be individual
// session key/value pairs)
string lastName = "";
string firstName = "";
public string LastName
{
get
{
return lastName;
}
set
{
lastName = value;
}
}
public string FirstName
{
get
{
return firstName;
}
set
{
firstName = value;
}
}
//Private constructor so cannot create an instance
// without using the correct method. This is
// this is critical to properly implementing
// as a singleton object, objects of this
// class cannot be created from outside this
// class
private singleton()
{
}
// Create as a static method so this can be called using
// just the class name (no object instance is required).
// It simplifies other code because it will always return
// the single instance of this class, either newly created
// or from the session
public static singleton GetCurrentSingleton()
{
singleton oSingleton;
if (null == System.Web.HttpContext.Current.Session[SESSION_SINGLETON])
{
//No current session object exists, use private constructor to
// create an instance, place it into the session
oSingleton = new singleton();
System.Web.HttpContext.Current.Session[SESSION_SINGLETON] = oSingleton;
}
else
{
//Retrieve the already instance that was already created
oSingleton = (singleton)System.Web.HttpContext.Current.Session[SESSION_SINGLETON];
}
//Return the single instance of this class that was stored in the session
return oSingleton;
}
}
इस वस्तु का उपयोग करने के लिए बस है निम्नलिखित चाहता है कि एक पृष्ठ:
singleton oSingleton = singleton.GetCurrentSingleton();
oSingleton.FirstName = "Robert";
oSingleton.LastName = "Boedigheimer";
आमतौर पर इस तकनीक का बहुत अधिक चर किसी वर्ग में स्टोर करेगा या एक वेब पेजों की एक श्रृंखला के लिए इस्तेमाल किया जाएगा जो एक प्रक्रिया करता है। किसी वेब साइट पर प्रक्रिया के लिए इसका उपयोग करने का एक अन्य लाभ यह है कि सत्र चर के लिए आवश्यक सभी मेमोरी को सिंगलटन ऑब्जेक्ट के संदर्भ को हटाकर साफ़ किया जा सकता है। वर्ग एक विधि है कि ग्राहकों के संदर्भ में, यह निपटान नामित किया जा सकता है स्पष्ट करने के लिए उपयोग कर सकते हैं लागू कर सकते हैं() ठेठ नेट पैटर्न का पालन करने के लिए जब एक वर्ग के सफाई के लिए एक रास्ता प्रदान करता है:
public static void Dispose()
{
//Cleanup this object so that GC can reclaim space
System.Web.HttpContext.Current.Session.Remove(SESSION_SINGLETON);
}
निष्कर्ष
सूचना संग्रहित करने के लिए अलग-अलग सत्र कुंजी का उपयोग करने के बजाय सत्र ऑब्जेक्ट में संग्रहीत सिंगलटन ऑब्जेक्ट्स का उपयोग करने के कई फायदे हैं। यह उन ऑब्जेक्ट्स के लिए उपयोगी है जो पूरे सत्र (समूह लॉजिकल आइटम, इफेक्ट विश्लेषण, इंटेलिजेंस इत्यादि) के लिए मौजूद हैं और खासकर उन ऑब्जेक्ट्स के लिए जो वास्तव में केवल एक वेब साइट पर केवल समय की आवश्यकता होती है जब तक उपयोगकर्ता कोई विशेष कार्य नहीं करता प्रक्रिया (चर के दुरुपयोग की पहचान करने और प्रक्रिया पूरी होने पर संसाधनों को संरक्षित करने के लिए बहुत आसान है लेकिन सत्र जारी रहेगा)।
[आवेदन स्थिति] (https://msdn.microsoft.com/en-us/library/ms178594.aspx?f=255&MSPPError=-2147217396) एएसपी .NET प्रक्रिया में 'सिंगलटन' का एक शानदार उदाहरण है) स्तर। किसी भी प्रकाश-भार कुंजी मूल्य जोड़ी का मतलब वेबसाइट के सभी उपयोगकर्ताओं के लिए किया जा सकता है। ये कुंजी-मूल्य जोड़े वेब कॉल पर पहुंच योग्य रहेगा।भारी वजन या संसाधन गहन वस्तुओं के लिए किसी को [कैश] (https://msdn.microsoft.com/en-us/library/ms178597.aspx) का उपयोग करने पर विचार करना चाहिए। – RBT