मुझे इस विषय पर बहुत कम जानकारी मिली है, उम्मीद है कि कोई मुझे कुछ जानकारी और संभावित नमूना कोड पर निर्देशित कर सकता है।सी # अनुप्रयोग में धागे के बीच एक डीबी कनेक्शन साझा करना?
उत्तर
मैं कहूंगा कि कनेक्शन ऑब्जेक्ट को स्वयं साझा न करें, बस एक नया कनेक्शन बनाएं और ADO.net को कनेक्शन पूलिंग संभाल दें।
मैं सहमत हूं कि डेटाबेस सर्वर कनेक्शन पूलिंग को प्रबंधित करने के लिए डिज़ाइन किया गया है, डीबी सर्वर को यह देना सबसे अच्छा है कि यह क्या था करने के लिए डिज़ाइन किया गया। –
आम तौर पर कनेक्शन थ्रेड सुरक्षित नहीं होते हैं (SQL कनेक्शन, MySQL कनेक्शन और OracleConnection विशेष रूप से उल्लेख करते हैं कि वे थ्रेड सुरक्षित नहीं हैं)।
धागे के बीच कनेक्शन साझा न करें।
जंगली में कोई नमूना कोड नहीं है क्योंकि (लगभग) कोई भी ऐसा नहीं करता क्योंकि यह इतना, बहुत बुरा विचार है।
सवाल का वास्तविक मापदंडों का जवाब करने के लिए, न कि उन्हें नकारने से, मैं कनेक्शन के लिए उपयोग सिंक्रनाइज़ (यदि और केवल यदि आप पूरी तरह करना होता है) में मदद करने के DbCommand
लपेटो जाएगा।
public class SyncedDbCommand : DbCommand
{
private DbCommand _cmd;
private object _sync;
public SyncedDbCommand(DbCommand cmd, object sync)
{
_cmd = cmd;
_sync = sync;
}
// omitted basic proxy method overrides
protected override DbDataReader ExecuteDbDataReader(CommandBehavior behavior)
{
Monitor.Enter(_sync);
return _cmd.ExecuteReader();
}
public override int ExecuteNonQuery()
{
Monitor.Enter(_sync);
return _cmd.ExecuteNonQuery();
}
public override object ExecuteScalar()
{
Monitor.Enter(_sync);
return _cmd.ExecuteScalar();
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
Monitor.Exit(_sync);
}
base.Dispose(disposing);
}
}
नमूना का उपयोग करने के लिए आपको एक वास्तविक DbCommand
के साथ-साथ किसी वस्तु उदाहरण है कि एक कनेक्शन के सभी प्रयोगों में साझा किया जाने के साथ यह दृष्टांत किया है। सबसे सरल उपयोग में, आप लॉक ऑब्जेक्ट के रूप में कनेक्शन ऑब्जेक्ट को भी पास कर सकते हैं। तात्कालिकता using
कथन में होनी चाहिए। यह आपको यह जानने से नहीं रोकता कि आपकी उपयोग आवश्यकताओं क्या हैं और Monitor
कक्षा और लॉकिंग कार्य कैसे करें।
एक तरफ या दूसरा, आप धागे के कनेक्शन के उपयोग को सिंक्रनाइज़ करना चाहते हैं, और उपर्युक्त ऐसा करने का एक दृष्टिकोण है।
बिल्कुल ऐसा नहीं करते हैं, ऐसा करने का कोई अच्छा कारण नहीं है और आप अपने आवेदन के प्रदर्शन को प्रभावित करेंगे। उपर्युक्त उत्तर राज्यों जैसे कनेक्शन पूलिंग का उपयोग करें। –
"कोई अच्छा कारण नहीं है"? अपने कोड की वास्तुकला को जानने के बिना आप इसका दावा कैसे कर सकते हैं? कनेक्शन साझा करने के लिए, यह एमएसडीटीसी को बढ़ावा दिए बिना लेनदेन को सक्षम करने के लिए एक प्रसिद्ध तरीका है। यह एक बड़ा प्रदर्शन लाभ है। फिर भी, खरोंच से शुरू, निश्चित रूप से मैं अपने जवाब में वर्णित दृष्टिकोण की सलाह नहीं दूंगा। लेकिन * पूछताछ का सम्मान करने और अपने प्रश्न के विवरणों का जवाब देने में *, यह मेरी सिफारिश है। –
अभी भी प्रबुद्ध होने का इंतजार कर रहा है ... –
- 1. कोर डेटा - एकाधिक धागे के बीच एनएसएमएनेज्ड ऑब्जेक्ट्स साझा करना
- 2. सी # धागे के बीच संचार
- 3. सी वैश्विक स्थैतिक - धागे के बीच साझा किया?
- 4. गतिविधियों के बीच एक वस्तु साझा करना
- 5. webservice और asp.net अनुप्रयोग के बीच सत्र साझा करना
- 6. सेलेरी श्रमिकों के बीच साझा एक्सएमपीपी कनेक्शन
- 7. एकाधिक जावा अनुप्रयोगों के बीच कनेक्शन पूल कैसे साझा करें
- 8. एक MySQL डीबी कनेक्शन
- 9. सी अलग-अलग धागे के बीच एक चर
- 10. जावा दो धागे के बीच एक चर साझा करें
- 11. साझा करना: स्मृति: sqlite3 पैकेज का उपयोग कर पायथन में विभिन्न धागे के बीच डेटाबेस
- 12. साझा करना .NET अनुप्रयोग पूल
- 13. एओपी का उपयोग कर सी # में विभिन्न धागे के बीच डेटा कैसे साझा करें?
- 14. रजिस्ट्रार धागे के बीच कैसे साझा किए जाते हैं?
- 15. सी ++, प्रक्रियाओं या धागे के बीच डेटा साझा करने के लिए कैसे करें
- 16. विभिन्न प्रक्रियाओं के बीच एचडीसी साझा करना
- 17. अनुप्रयोगों के बीच सेटिंग साझा करना
- 18. रेल में एक से अधिक डीबी कनेक्शन
- 19. गतिविधियों के बीच डोमेन ऑब्जेक्ट्स साझा करना
- 20. रेल अनुप्रयोग में धागे के अंदर लॉगिंग
- 21. मुझे डीबी कनेक्शन कब बंद करना चाहिए?
- 22. एंड्रॉइड ऐप में सभी गतिविधियों के बीच डेटाबेस कनेक्शन साझा करने के लिए एक सेवा बनाना?
- 23. मॉड्यूल के बीच संसाधनों का अच्छा अभ्यास साझा करना?
- 24. कई NPM के बीच एक नेवला उदाहरण साझा करना पैकेज
- 25. 'कुछ' सबडोमेन के बीच एक कुकी साझा करना संभव है?
- 26. jQuery यूआई टैब के बीच एक तत्व साझा करना?
- 27. pgAdmin - साझाकरण डीबी कनेक्शन परिभाषा
- 28. साझा कोडबेस और डीबी
- 29. पायथन प्रक्रियाओं के बीच एक जटिल वस्तु साझा करना?
- 30. SQLite कनेक्शन और लॉक करना
मुझे लगता है कि यह डेटाबेस से डेटाबेस विक्रेता से भी अलग है ... mysql, ms sql, sqlite ... – tuinstoel