2008-09-16 6 views
8

हमारे पास हमारी वेबसाइट पर कई विज़ार्ड स्टाइल फॉर्म एप्लिकेशन हैं जहां हम प्रत्येक पृष्ठ पर उपयोगकर्ता से जानकारी प्राप्त करते हैं और फिर वेब सेवा का उपयोग करके बैकएंड प्रक्रिया में जमा करते हैं।उपयोगकर्ता सत्र ऑब्जेक्ट में आप कितना डेटा स्टोर कर सकते हैं?

दुर्भाग्य से हम प्रत्येक फॉर्म सबमिशन के दौरान भागों में जानकारी जमा नहीं कर सकते हैं, इसलिए हमें इसे प्रक्रिया के अंत तक उपयोगकर्ता सत्र को स्टोर करना होगा और इसे एक ही समय में सबमिट करना होगा।

क्या सर्वर मेमोरी/एसक्यूएल सर्वर डिस्क स्पेस की मात्रा केवल उपयोगकर्ताओं की सत्र में कितनी स्टोर कर सकती है या क्या मुझे कुछ और विचार करने की आवश्यकता है?

संपादित करें: साइट एएसपी.नेट वेब फॉर्म पर बनाई गई है।

+0

आप अभी भी asp.net के साथ प्रत्येक रूप से डेज़ी चेन पोस्टडाटा कर सकते हैं, बस runat = सर्वर को हटा दें और दूसरे .net पृष्ठ पर पोस्ट करें। – mmattax

उत्तर

3

मान लीजिए कि जानकारी संवेदनशील नहीं है तो आप जानकारी को कुकी में संग्रहीत कर सकते हैं जो सर्वर की तरफ संग्रहीत करने के लिए आवश्यक जानकारी की मात्रा को कम कर देगी। यह आपको जावास्क्रिप्ट के माध्यम से जानकारी तक पहुंचने की अनुमति देगा।

वैकल्पिक रूप से आप जानकारी स्टोर करने के लिए व्यूस्टेट का उपयोग कर सकते हैं हालांकि इससे सर्वर और क्लाइंट के बीच बड़ी मात्रा में डेटा भेजा जा सकता है और मेरा पसंदीदा समाधान नहीं।

सत्र जानकारी की मात्रा आप संग्रहीत करना चाहिए बेतहाशा आवेदन, उम्मीद उपयोगकर्ताओं की संख्या, सर्वर विनिर्देशन आदि पर निर्भर करता है एक और अधिक सटीक जवाब देने के लिए और अधिक जानकारी :)

अंत में की आवश्यकता होगी, जानकारी है कि यह सोचते हैं पूरे प्रक्रिया में एकत्रित पृष्ठ से पृष्ठ तक आवश्यक नहीं है, तो आप डेटाबेस की सभी जानकारी को डेटाबेस तालिका में संग्रहीत कर सकते हैं और केवल सत्र में रिकॉर्ड्स अद्वितीय आईडी संग्रहीत कर सकते हैं। चूंकि प्रत्येक पृष्ठ सबमिट किया जाता है, डीबी रिकॉर्ड अपडेट किया जाता है और फिर अंतिम पृष्ठ पर सभी जानकारी पुनर्प्राप्त और सबमिट की जाती है। यदि आपको आवश्यक डीबी पढ़ने की संख्या के कारण प्रत्येक आगामी पृष्ठ पर पिछली जानकारी पुनर्प्राप्त करने की आवश्यकता है, तो यह एक विचार समाधान नहीं है।

0

यदि आप पारंपरिक HTTP मॉडल का उपयोग करते हैं (यानी रनैट = "सर्वर" का उपयोग न करें) तो आप डेटा को अन्य एएसपी पेज पर पोस्ट कर सकते हैं और पोस्ट किए गए डेटा को छिपे हुए फॉर्म तत्वों में डाल सकते हैं, आप इसे कई पृष्ठों के लिए कर सकते हैं आपको सत्र चर में कुछ भी रखने से बचने की आवश्यकता है।

2

तुम भी 1 एएसपी पेज पूरे एचटीएमएल फार्म के साथ हो सकता है, और उपयोगकर्ता को भरने जब तक यह के कुछ हिस्सों को छिपाने और "प्रस्तुत" दृश्य भाग ...

तो बस हिस्सा भर लेने और है कि छिपाने फॉर्म के अगले भाग को दिखाएं ...

यह .NET ढांचे में बेहद आसान होगा, प्रत्येक "विज़ार्ड चरण" के लिए पैनलों का उपयोग करें और प्रत्येक पैनल को प्रदर्शित और छिपाने के लिए लॉगगिक जोड़ें।

तब आपके पास एक पृष्ठ पर सभी डेटा होगा।

0

चूंकि यह उपयोगकर्ता सत्र ऑब्जेक्ट में बड़ी मात्रा में डेटा स्टोर करने के लिए प्रदर्शन बिंदु से समस्याग्रस्त है, इसलिए एएसपी.Net ऊपर दिए गए पदों में उल्लिखित कुछ के शीर्ष पर कुछ अन्य कामकाज प्रदान करता है। ASP.NET Profile Provider आपको डेटाबेस में सत्र संबंधित जानकारी को जारी रखने की अनुमति देता है। आप Session State Server का भी उपयोग कर सकते हैं जो सभी सत्र जानकारी स्टोर करने के लिए एक अलग सर्वर का उपयोग करता है। इन दोनों स्थितियों में ध्यान दिया जाता है यदि आपको क्लस्टर या लोड बैलेंसर्स का उपयोग करने की आवश्यकता है, तो सर्वर अब भी विभिन्न सर्वरों पर सत्र जानकारी को पहचान सकते हैं। यदि आप एचटीपी सत्र ऑब्जेक्ट में जानकारी संग्रहीत करते हैं, तो आप उस समस्या में भाग लेते हैं कि एक उपयोगकर्ता को हमेशा उस सत्र के लिए उसी सर्वर पर जाना होगा।

0

सत्र, व्यूस्टेट, डेटाबेस।ये सब धीमे हैं लेकिन काम पूरा हो जाएगा।

छिपे हुए फॉर्म फ़ील्ड वह उत्तर है जो मुझे सबसे अच्छा लगता है।

राज्य को बनाए रखने के अन्य तरीके हैं। कुकीज़, पॉपअप विंडो, फ्रेमसेट या iframes।

संबंधित मुद्दे