तो मैं अपने डेटाबेस कनेक्शन पर सर्वोत्तम प्रथाओं को समझने की कोशिश कर रहा हूं। मेरे पास एक बड़ा .NET GUI है जो MySQL डीबी के लिए फ्रंट एंड के रूप में कार्य करता है। वर्तमान में मैं एप्लिकेशन लोड पर एक कनेक्शन खोलता हूं और मुझे जो भी इंटरैक्शन चाहिए, उसके लिए इसका उपयोग करता हूं। हालांकि, संपूर्ण जीयूआई एकल थ्रेडेड है।मल्टीथ्रेडिंग और डेटाबेस कनेक्शन
मैं बड़े प्रश्नों के लिए BackgroundWorkers जोड़ने के लिए शुरू करने और कार्यान्वित मैं अपने खुले कनेक्शन को लेकर चिंतित हूं रूप में। मुझे पता है, उदाहरण के लिए, कि उस कनेक्शन पर खुले समय में केवल एक डेटा रीडर हो सकता है। एकाधिक धागे के साथ, उपयोगकर्ता उस से अधिक तत्काल करने की कोशिश कर सकता है।
क्या आवेदन जितने भी आदान प्रदान के लिए एक नया कनेक्शन खोलने बनाम का एक खुला संबंध रखने के फायदे/नुकसान कर रहे हैं?
इसके लिए कुछ सामान्य डिजाइन पैटर्न क्या हैं?
धन्यवाद
जोनाथन
जब आप कहते हैं कि कनेक्ट एंडडिस्कनेक्ट परिदृश्य के लिए लेनदेन समर्थन संभव नहीं है, तो क्या आप एक "वैश्विक" लेनदेन के बारे में बात कर रहे हैं जो एप्लिकेशन लॉन्च होने के बाद से सबकुछ वापस करने का समर्थन करेगा? यदि नहीं, तो Connect और डिस्कनेक्ट के साथ भी आप लेनदेन का समर्थन कर सकते हैं। आपको "उच्च स्तरीय" लेनदेन की पहचान करने के लिए अपना कोड व्यवस्थित करना होगा और फिर सी # (http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx) में "ट्रांज़ेक्शनस्कोप" उदाहरण के लिए उपयोग करना होगा। – FrenchData
@ फ्रैंचडाटा मैं व्यापार तर्क परत से आने वाले मध्यम स्तर के लेनदेन के बारे में बात कर रहा हूं। हमने ट्रांज़ेक्शनस्कोप दृष्टिकोण की कोशिश की है लेकिन यह पर्याप्त नहीं था, हम जल्दी से परेशानी में भाग गए, क्योंकि मध्य-स्तर कोड का उपयोग विभिन्न अप्रत्याशित तरीकों से किया गया था। समाधान किसी भी तरह से दोनों दृष्टिकोणों के बीच एक संकर था, हमारे कनेक्शन प्रबंधक वर्ग दोनों दृष्टिकोणों का समर्थन करते थे। बेशक कि ऐप से लेनदेन की कोई आवश्यकता नहीं थी, यही कारण है कि हाइब्रिड समाधान बेहतर था। – AureliusMarcus