पर अपडेट को सूचित या पुश करने के लिए अपना डेटाबेस (एसक्यूएल) चाहता हूं। मैं इस एप्लिकेशन को VB.net 2010
और SQL 2008
पर विकसित कर रहा था।
मैं चाहता था कि ग्राहकों को डीबी पर अपडेट के लिए अधिसूचित किया जाए, और एक टाइमर का उपयोग करके निर्दिष्ट मिनट में परिवर्तन के लिए डीबी की जांच करने के लिए उपयोग किया गया एप्लिकेशन, जो वास्तव में कुशल नहीं है। मैंने query notification
, sqldependency
, service broker
पढ़ा, लेकिन फिर मैंने कुछ ऐसा पढ़ा जो कहा कि यदि मेरे पास 100 क्लाइंट हैं तो वे कुशल नहीं हो सकते हैं और मैं अपने एप्लिकेशन पर नोटिफिकेशन पुश करने के लिए क्वेरी नोटिफिकेशन का उपयोग कर रहा हूं।
क्या कोई मुझे यह करने में मदद करेगा कि मुझे क्या करना चाहिए, और मैं इसे कैसे कर सकता हूं (उदाहरण उपलब्ध होने पर वास्तव में सहायक होगा)। अग्रिम में धन्यवाद!मैं क्लाइंट एप्लिकेशन
उत्तर
प्रश्न अधिसूचना एक सेवा ब्रोकर सेवा को सीधे धक्का देगी, न कि सीधे आपके आवेदन पर। यह समझने के लिए The Mysterious Notification देखें कि यह कैसे काम करता है। आपका आवेदन डेटाबेस पर WAITFOR(RECEIVE)
कथन पोस्ट करके अधिसूचनाओं का इंतजार कर रहा है। जिसका अर्थ है कि 100 में से प्रत्येक ग्राहक एक SQL सर्वर वर्कर थ्रेड पर कब्जा कर रहा है (जो सीमित हैं, max worker threads
विकल्प देखें)। मैंने इसे +1000 क्लाइंट्स के साथ उत्पादन में काम किया है (अधिकतम वर्कर थ्रेड विकल्प को बंप करने के बाद) लेकिन मैं के खिलाफ सलाह दूंगा।
मेरी सिफारिश एक एसक्लड पर निर्भरता/क्वेरी नोटिफिकेशन का उपयोग करके परिवर्तन के लिए सेवा निगरानी होगी। यह सेवा उदाहरण के लिए डब्ल्यूसीएफ का उपयोग करके, आपके सभी चल रहे ऐप्स पर नोटिफिकेशन पुश करेगी। आप जेनेरिक परिवर्तनों की सदस्यता लेंगे (the table Foo was changed
), विशिष्ट लोगों के लिए नहीं (the row x in table Foo was inserted
)।
एक सामान्य नियम के रूप में SqlDependency/क्वेरी अधिसूचनाएं केवल आपको सूचित कर सकती हैं कि डेटा बदल गया है, लेकिन यह नया डेटा धक्का नहीं देगा। अधिसूचित होने के बाद आवेदन को फिर से प्रश्नों को चलाकर अपने स्थानीय डेटासेट को रीफ्रेश करना होगा।
SqlDependency कक्षा का उपयोग करके सावधान रहें - इसमें problems मेमोरी लीक के साथ है। होवर, आप SqlDependency क्लास - SqlDependencyEx के ओपन सोर्स प्राप्ति का उपयोग कर सकते हैं। यह टेबल परिवर्तनों के बारे में घटनाओं को प्राप्त करने के लिए डेटाबेस ट्रिगर और मूल सेवा ब्रोकर अधिसूचना का उपयोग करता है।
int changesReceived = 0;
using (SqlDependencyEx sqlDependency = new SqlDependencyEx(
TEST_CONNECTION_STRING, TEST_DATABASE_NAME, TEST_TABLE_NAME))
{
sqlDependency.TableChanged += (o, e) => changesReceived++;
sqlDependency.Start();
// Make table changes.
MakeTableInsertDeleteChanges(changesCount);
// Wait a little bit to receive all changes.
Thread.Sleep(1000);
}
Assert.AreEqual(changesCount, changesReceived);
SqlDependecyEx के साथ आप सिर्फ अद्यतन नजर रखने के लिए, हटाएँ और सम्मिलित करें परहेज सक्षम हैं: यह एक प्रयोग उदाहरण है। उम्मीद है की यह मदद करेगा।
- 1. कोको क्लाइंट/सर्वर एप्लिकेशन
- 2. क्लाइंट सर्वर जावा एप्लिकेशन
- 3. सबवर्सन क्लाइंट-साइड एप्लिकेशन
- 4. किसी एप्लिकेशन क्लाइंट और स्टैंड-अलोन क्लाइंट
- 5. एंड्रॉइड: एचटीपी क्लाइंट प्रति एप्लिकेशन
- 6. मेरा जावा स्विंग एप्लिकेशन क्लाइंट-सर्वर एप्लिकेशन कैसे बनाएं?
- 7. विंडोज क्लाइंट एप्लिकेशन के लिए लॉगिन संवाद
- 8. क्लाइंट फॉर्म जमा करें, एमवीसी एप्लिकेशन
- 9. क्लाइंट
- 10. क्लाइंट
- 11. क्लाइंट
- 12. मैं क्लाइंट http कनेक्शन के लिए node.js
- 13. मैं वीबीस्क्रिप्ट कंसोल एप्लिकेशन
- 14. मैं सिल्वरलाइट एप्लिकेशन
- 15. मैं एएसपीनेट एमवीसी एप्लिकेशन
- 16. मैं अपने डेस्कटॉप एप्लिकेशन
- 17. मैं एक आईफोन एप्लिकेशन
- 18. मैं .NET MVC3 एप्लिकेशन
- 19. मैं आईफोन एप्लिकेशन
- 20. मैं एंड्रॉइड एप्लिकेशन स्तर
- 21. मैं अपने एंड्रॉइड एप्लिकेशन
- 22. मैं वाईएआई (वार) एप्लिकेशन
- 23. मैं आईफोन वेब एप्लिकेशन
- 24. मैं विनफॉर्म एप्लिकेशन
- 25. एप्लिकेशन क्लाइंट से रिमोट ईजेबी मॉड्यूल को कैसे कनेक्ट करें
- 26. सर्वर-साइड एप्लिकेशन से क्लाइंट को संदेशों को धक्का देना?
- 27. एक सी ++ एसओएपी (बहुप्रचारित) क्लाइंट एप्लिकेशन लिखना - जीएसओएपी
- 28. वेबसाइट क्लाइंट एप्लिकेशन से बात कर रही है?
- 29. जब आप एक मोटी क्लाइंट बनाम वेब एप्लिकेशन बनाते हैं?
- 30. अपने क्लाइंट-सर्वर एप्लिकेशन में System.IdentityModel का उपयोग कैसे करें