मुझे डेस्कटॉप एप्लिकेशन में अपने सत्र को प्रबंधित करना अधिक कठिन लगता है, क्योंकि आप HttpContext जैसे स्पष्ट बंधन का लाभ नहीं उठा सकते हैं। तो आलसी लोडिंग का लाभ उठाने के लिए आप अपने सत्र के जीवनकाल का प्रबंधन कैसे करते हैं लेकिन पूरे एप्लिकेशन के लिए एक सत्र खुला नहीं है?डेस्कटॉप अनुप्रयोगों में NHibernate के लिए आपकी सत्र प्रबंधन रणनीति क्या है?
उत्तर
मुझे लगता है कि यह आपकी वस्तुओं के डिजाइन के लिए उबलता है। चूंकि प्रति-ऑब्जेक्ट स्तर में आलसी लोडिंग लागू की जा सकती है, इसलिए जब आप सत्र प्रबंधन के बारे में सोचते हैं तो आप उस तथ्य का लाभ उठा सकते हैं।
उदाहरण के लिए, मेरे पास ऑब्जेक्ट्स का एक समूह है जो डेटा समृद्ध और आलसी लोड होता है, और मेरे पास एक ग्रिड/सारांश दृश्य है, और उनके लिए विवरण देखें। ग्रिड-सारांश दृश्य में, मैं ऑब्जेक्ट के आलसी-लोड संस्करण का उपयोग नहीं करता हूं। मैं उस डेटा को प्रस्तुत करने के लिए एक सरोगेट ऑब्जेक्ट का उपयोग करता हूं, और वह सरोगेट ऑब्जेक्ट आलसी लोड नहीं होता है।
दूसरी तरफ, उपयोगकर्ता एक बार देखने/संपादित करने के लिए उस रिकॉर्ड का चयन करता है, और आप ऑब्जेक्ट के बहु-पेज किए गए विवरण दृश्य दर्ज करते हैं, तब जब हम विशिष्ट ऑब्जेक्ट पर आलसी लोडिंग लागू करते हैं। डेटा अब आलसी लोड हो गया है, इस पर निर्भर करता है कि कौन से विवरण केवल मांग पर देखे जाते हैं। इस तरह, आलसी लोडिंग के लिए मेरे सत्र का खुलासा केवल तब तक रहता है जब तक विवरण दृश्य का उपयोग किया जा रहा हो।
जैसा कि आपने पहले कहा था, आप HttpRequest की सीमा का उपयोग नहीं कर सकते हैं, लेकिन आप समझ सकते हैं कि आपके डेस्कटॉप एप्लिकेशन में "HttpRequest" क्या है।
मुझे समझाएं। आमतौर पर आपका HttpRequest एक क्रिया के लिए नियंत्रक होगा और आप उस सत्र को अपने विशिष्ट कार्यवाही तक सीमित कर देंगे। अब आपके डेस्कटॉप एप्लिकेशन में "नियंत्रक" (घटनाएं) छोटी हो सकती हैं, लेकिन जैसा कि @ जोन ने कहा, एक खिड़की आसानी से सीमा का प्रतिनिधित्व कर सकती है: आप वहां चीजों के साथ काम करते हैं, उन्हें अपने सत्र में रहने दें।
शायद हम एक कमांड पैटर्न सेट अप के बारे में सोच सकते हैं। प्रत्येक महत्वपूर्ण घटना एक कमांड को खिलाएगी और ट्रिगर करेगी, और इसे निष्पादित करेगी। बेस AbstractCommand.Execute() कार्यान्वयन सत्र को प्रारंभ करने, लेनदेन को लपेटने, कंक्रीट को कॉल करने के प्रभारी कुछCommand._Execute() कार्यान्वयन और सभी सामान बंद करने का प्रभारी है।
वैसे भी, यह दृढ़ता से अज्ञेय होने से बहुत दूर है, क्योंकि यह तब होना चाहिए जब मैंने अपना ऑब्जेक्ट लोड किया हो और मैं केवल सादा उदाहरणों के साथ सौदा करना चाहता हूं (मैं विशेष रूप से आलसी लोड का जिक्र कर रहा हूं)।
क्या यह किसी अन्य प्रकार के ऑटो-ओपन/ऑटो-क्लोज़ व्यवहार को लागू करना संभव है? यह उच्च परतों द्वारा प्रश्नों के लिए जरूरी दृढ़ता परत को संवेदनशील बनाकर पूरा किया जाना चाहिए, यहां तक कि आलसी लोड ट्रिगर्स जैसे निहित मामलों में भी। कनेक्शन को बंद करने के लिए, दृढ़ता परत डीबी निष्क्रियता के दिए गए टाइमआउट (10 सेकंड?) के बाद बंद हो सकती है। मुझे पता है, यह तेज नहीं है। लेकिन यह वास्तव में उच्च परतों दृढ़ता अज्ञेयवादी बना देगा।
धन्यवाद, मार्सेलो
Ayende हाल ही में a great article on the subject in MSDN लिखा है।
- 1. NHibernate सत्र प्रबंधन?
- 2. NHibernate सत्र प्रबंधन
- 3. NHibernate सत्र और HttpModule
- 4. आपकी बग प्रबंधन प्रक्रिया क्या है?
- 5. क्या Nhibernate एंटरप्राइज़ अनुप्रयोगों के लिए सही विकल्प है?
- 6. सत्र प्रबंधन के लिए क्या उपयोग करें?
- 7. PlayFramework अनुप्रयोगों के लिए सर्वश्रेष्ठ तैनाती रणनीति?
- 8. सत्र प्रबंधन
- 9. NHibernate में सत्र का प्रबंधन करने का सबसे अच्छा तरीका?
- 10. .NET डेस्कटॉप अनुप्रयोगों के लिए एमवीसी फ्रेमवर्क
- 11. "सत्र बंद है!" - NHibernate
- 12. विंडोज डेस्कटॉप अनुप्रयोगों के लिए उपयोग ट्रैकिंग
- 13. डेस्कटॉप अनुप्रयोगों के लिए सर्वश्रेष्ठ जावास्क्रिप्ट ढांचा
- 14. रूबी परियोजनाओं में रिपोर्ट से निपटने के लिए आपकी पसंदीदा रणनीति क्या है?
- 15. पृष्ठभूमि-श्रमिकों के साथ वेब अनुप्रयोग के लिए सत्र प्रबंधन रणनीति को रोकें?
- 16. क्यूटी त्वरित डेस्कटॉप अनुप्रयोगों के लिए पर्याप्त परिपक्व है?
- 17. एक बेहतर रिलीज प्रबंधन रणनीति?
- 18. Wordpress साइट रिहाई प्रबंधन रणनीति
- 19. क्यूटी और त्रुटि प्रबंधन रणनीति
- 20. वेब अनुप्रयोगों के लिए गिट के भीतर आपकी आदर्श शाखा वास्तुकला क्या है?
- 21. क्या जावाएफएक्स डेस्कटॉप या स्टैंडअलोन अनुप्रयोगों के लिए गतिशील जीयूआई के लिए एक विकल्प है?
- 22. NHibernate सत्र .Evict()
- 23. NHibernate में सत्र। क्लीयर() का व्यवसाय क्या है?
- 24. एचटीएमएल/सीएसएस/जेएस डेस्कटॉप अनुप्रयोगों में
- 25. सत्र पर NHibernate त्रुटि।
- 26. फायरबेस के साथ सत्र प्रबंधन?
- 27. Nhibernate आदेश जब सत्र
- 28. NHibernate सत्र ऑब्जेक्ट्स देखें
- 29. nHibernate सत्र और multithreading
- 30. एनएचबेर्नेट विन फॉर्म सत्र प्रबंधन