क्या फायदे एक सिंगलटन पूल से अधिक कई पूल होने के लिए देखते हैं?
मैं सबसे वस्तु पूल उपयोग हम चाहिए, ThreadPool की तरह, सादगी के लिए एकमात्र के रूप में लागू किया जाता है: कि में, उन पूल के डिजाइनरों कई उदाहरण पूल में एक उद्देश्य या तो नहीं देखा।
हालांकि, कुछ ऐसे स्थान हैं जहां हमारे पास वास्तव में कई पूल हैं: आईआईएस एप्लिकेशन पूल और डेटाबेस कनेक्शन पूल।
अनुप्रयोग पूल
आईआईएस में, यदि आप एकाधिक अनुप्रयोग पूल कॉन्फ़िगर कर सकते हैं ताकि संबंधित वेब अनुप्रयोगों अपने स्वयं के पूल में सभी रन। इस डिजाइन के लिए लाभ के एक जोड़े हैं, और लाभ आईआईएस के बाहर पूल कार्यान्वयन से सामान्य कर सकते हैं:
एकाधिक वस्तु पूल, अलगाव के कुछ डिग्री के लिए अनुमति तो एक पूल में एक त्रुटि एक प्रभाव नहीं होना चाहिए अन्य पूल में वस्तुओं पर।
प्रत्येक पूल एक अलग उपयोगकर्ता के तहत चलाया जा सकता है, जो आपको अपने एप्लिकेशन पूल के आधार पर सुरक्षा के विभिन्न स्तर प्रदान करता है।
प्रत्येक पूल में त्रुटियों के लिए एक अलग हैंडलर हो सकता है।
प्रत्येक पूल .NET ढांचे के एक अलग संस्करण के साथ चला सकता है।
प्रत्येक पूल का अपना HTTP टाइमआउट हो सकता है।
कनेक्शन पूल
एसक्यूएल सर्वर में, हर क्वेरी पर एक नया डेटाबेस कनेक्शन, तथापि एसक्यूएल सर्वर creates a new pool per connection string बनाने की भूमि के ऊपर से बचने के लिए पूलिंग एक डेटाबेस उपयोग कनेक्शन से कई कॉल। मुझे लगता है कि इस डिजाइन के पीछे तर्क निम्नानुसार है:
प्रत्येक पूल में एक विशिष्ट डेटाबेस उदाहरण से कनेक्शन होता है। यदि सभी कनेक्शन वाले केवल एक पूल थे, तो इसे तब तक सभी कनेक्शनों के माध्यम से खोज की आवश्यकता होगी जब तक कि आपके द्वारा अनुरोधित कनेक्शन स्ट्रिंग से मेल खाने वाला कनेक्शन न मिल जाए। चूंकि प्रति कनेक्शन स्ट्रिंग के कई पूल हैं, इसलिए अन्य कनेक्शन के माध्यम से खोज किए बिना उस विशेष पूल से पहले उपलब्ध कनेक्शन को खींचना आसान है।
दूसरे शब्दों में, मुझे संदेह है कि SQL सर्वर एकाधिक कनेक्शन पूल का उपयोग डेटाबेस कनेक्शन को जल्दी से पकड़ने के लिए अनुकूलन के रूप में करता है।
मैं यह भी कल्पना कर सकता हूं कि उन सभी कनेक्शनों में शायद उनके कनेक्शन पूल के लिए कुछ संसाधन साझा किए जाएंगे, जो एक पूल के साथ संभव नहीं हो सकता है। उदाहरण के लिए, आप कनेक्शन कनेक्शन प्रति अधिकतम कनेक्शन पूल आकार निर्दिष्ट कर सकते हैं; आप सिंगल-पूल डिज़ाइन का उपयोग करके किसी विशेष डेटाबेस में एक साथ कनेक्शन की संख्या को नियंत्रित करने में सक्षम नहीं हो सकते हैं।
एक पूल
आप वास्तव में कई पूल या क्या तुम सच में अपने डिजाइन से जरूरत की ओर देखे बिना एक भी पूल के लिए है कि क्या चयन नहीं कर सकते कैसे डिजाइन करने के लिए।
यदि आपके पास एक बहुत ही सरल ऑब्जेक्ट पूल है, तो आप एक सिंगलटन डिज़ाइन से दूर हो सकते हैं। यदि आपको वास्तव में अतिरिक्त लचीलापन, अनुकूलन की आवश्यकता है, या हो सकता है कि आपके पास कई प्रक्रियाओं या मशीनों में वितरित ऑब्जेक्ट पूल जैसी वास्तव में अनूठी सेटअप हो, तो आपको इसके बजाय एन-ग्लेटन डिज़ाइन से निश्चित रूप से लाभ होगा।
सब कहाँ है? –
मुझे आश्चर्य है कि मैंने ऑब्जेक्ट पूल (सरल, पुन: प्रयोज्य वस्तुओं की स्मृति/आजीवन प्रबंधन) का उपयोग कैसे किया है, इस बात से प्रभावित हुआ है कि मैं इन उत्तरों को कैसे समझता हूं। ऐप पूल, थ्रेड पूल, ऑब्जेक्ट पूल की मेरी समझ बनाम कनेक्शन पूल मुझे बहुत से सेब बनाम संतरे लगता है। –