क्या ASP.NET में सर्वर पर स्मृति में एक साधारण तालिका को स्टोर करने का कोई आसान तरीका है कि सभी उपयोगकर्ता साझा करेंगे? मान लें कि मेरे पास उदाहरण के लिए एक साधारण चैट प्रोग्राम है और मैं केवल स्मृति में पिछले 100 रिकॉर्ड रखना चाहता हूं (यह वास्तविक एप्लिकेशन नहीं है, केवल एक उदाहरण है)। मान लें कि मैं इस चैट बफर को केवल 100 रिकॉर्ड के साथ समर्पित एसक्यूएल में एक पूरी टेबल नहीं लेना चाहता था। क्या कोई तरीका है कि मैं इन-मेमोरी डेटा टेबल बना सकता हूं और इसे कनेक्टेड उपयोगकर्ताओं के बीच साझा कर सकता हूं?ASP.NET में स्मृति में एक साधारण तालिका स्टोर करें?
उत्तर
उपयोग Cache (MSDN)
एक इस वर्ग के उदाहरण आवेदन डोमेन प्रति बनाई गई है, और यह जब तक आवेदन डोमेन सक्रिय रहता है के रूप में मान्य रहता है। इस कक्षा के उदाहरण के बारे में जानकारी HttpContext ऑब्जेक्ट की कैश प्रॉपर्टी या पृष्ठ ऑब्जेक्ट की कैश प्रॉपर्टी के माध्यम से उपलब्ध है।
DataTable yourDataTable = new DataTable();
Cache["yourTable"] = yourDataTable;
//to access it
DataTable dt = Cache["yourTable"] as DataTable;
आप सभी उपयोगकर्ताओं के लिए स्मृति और accesable में चीजों को स्टोर करने के लिए HttpApplicationState
वस्तु का उपयोग कर सकते हैं:
HttpContext.Current.Application["MyTable"] = myTable;
या Cache
वस्तु (जो अधिक धागे की सुरक्षित):
HttpContext.Current.Cache["MyTable"] = myTable;
यहां दिया गया Application and Cache के बारे में अच्छा लेख।
कैश और एप्लिकेशन ऑब्जेक्ट सत्र ऑब्जेक्ट की तुलना में व्यापक दायरा प्रदान करते हैं और डेटा एएसपी.NET एप्लिकेशन के भीतर सभी कक्षाओं के लिए उपलब्ध है।
हां, यह एक वैश्विक कैश होगा। ऐसा करने के लिए नीचे और गंदा तरीका मूल्यों को स्टोर करना है एप्लिकेशन स्थिति। यह अनिवार्य रूप से एक महत्वपूर्ण मूल्य स्टोर है जो हमेशा आईआईएस चल रहा है जब तक।
Application["someKey"} = SomeObject;
आप इसे उसी तरह `
var myObject = Application["someKey"];`
भी बहुत कुछ कर रहे हैं सुरुचिपूर्ण समाधान का उपयोग कर सकते हैं, लेकिन यह है कि आप जब आप डेटा की थोड़ी मात्रा स्टोर करने के लिए की जरूरत है, सरल वैश्विक बातों के लिए से मिल जाएगा।
आप कई विकल्प, आवेदन कैश सभी उपयोगकर्ताओं के बीच साझा किया जाता है और एक ही ASP.NET अनुप्रयोग पूल के दौरान सभी सत्रों, यहाँ की जाँच की है:
http://msdn.microsoft.com/en-us/library/6hbbsfk6(v=vs.100).aspx
एक और विकल्प स्मृति में एक का उपयोग करने के किया जा सकता है/एम्बेडेड डेटाबेस, एसक्यूएल सर्वर कॉम्पैक्ट या एसक्यूएल लाइट की तरह कुछ, अगर आप वास्तव में एक डीबी दृष्टिकोण की तरह उपयोग करना चाहते हैं।
इसे एक टेबल होने की आवश्यकता क्यों है? एक साधारण 'स्थिर कतार' के बारे में कैसे? –
paul