मैं एक 2 डब्ल्यूसीएफ सेवाओं को डिजाइन कर रहा हूं जो मेरे सभी ग्राहक कनेक्ट होंगे। इनमें से एक सेवा अधिसूचना सेवा होगी।डब्ल्यूसीएफ डुप्लेक्स - प्रत्येक ग्राहक को अलग-अलग अधिसूचनाएं पुश करें?
मैं चाहता हूं कि प्रत्येक क्लाइंट सेवा से जुड़ें, इसकी सदस्यता लें और फिर डुप्लेक्स कॉलबैक इंटरफ़ेस का उपयोग करके अधिसूचनाएं प्राप्त करें (सेवा ग्राहकों में 'सूचित करें' ऑपरेशन को आग लग जाएगी)।
यह मेरा डिजाइन आइडिया है:
मेरे सवाल यह है: प्रत्येक ग्राहक मेरी सेवा को जोड़ता है, मैं इसे अपने डेटाबेस में 'उपयोगकर्ता' तालिका के विरुद्ध सत्यापन (मैं एक का उपयोग किया जाएगा होगा UserNamePasswordValidator और 'मान्य' फ़ंक्शन लागू करें)।
आवश्यकता: डेटाबेस में परिभाषित नियमों के आधार पर प्रत्येक उपयोगकर्ता को विभिन्न अधिसूचनाएं प्राप्त करने की आवश्यकता होती है, लेकिन वे सभी एक ही अनुबंध का उपयोग करते हैं।
उदाहरण के लिए:
जॉन स्मिथ की डीबी में नियम हो सकता है हो सकता है: मुझे सभी नए उत्पादों के 100 से अधिक डॉलर की कीमत है पर सूचित करें।
डीबी में जेन डो के नियम हो सकते हैं: उन सभी नए उत्पादों पर मुझे सूचित करें जिनके नाम 'जेए' से शुरू होते हैं।
डीबी में जिम जबरा के नियम हो सकते हैं: मुझे 'खाद्य' प्रकार के सभी नए उत्पादों पर सूचित करें।
मेरी सेवा में एक कार्यकर्ता थ्रेड होगा जो डेटाबेस में परिवर्तन का पता लगाता है (डेटाबेस में एक नया उत्पाद डाला गया था)।
इसे फिर से जुड़े सभी ग्राहकों पर लूप करना चाहिए - और प्रत्येक क्लाइंट के लिए उसे नए उत्पाद की अधिसूचना भेजनी चाहिए, केवल तभी जब यह ग्राहक के अधिसूचना अनुरोधों से मेल खाती हो।
फिर से - सभी क्लाइंट एक ही प्रकार के अपडेट (नए उत्पाद) प्राप्त करते हैं, लेकिन प्रत्येक क्लाइंट को डेटाबेस में नियम के अनुसार विभिन्न उत्पादों को प्राप्त करना चाहिए।
- ग्राहक Enpoint
- उपयोगकर्ता ऑब्जेक्ट (डेटाबेस से)
:
एक दृष्टिकोण मैं इस लागू करने के लिए एक सिंगलटन सेवा का उपयोग किया जाएगा सोचा था, की एक सूची रखता है इस तरह - प्रत्येक बार जब कार्यकर्ता थ्रेड एक नए उत्पाद का पता लगाता है, तो यह इस सूची में छूट देता है और जिसकी आवश्यकता होती है उसे अधिसूचनाएं भेजती हैं। इस दृष्टिकोण के साथ समस्या यह है कि ग्राहकों की एक वैश्विक सूची रखने के लिए - मुझे सिंगलटन के रूप में सेवा की आवश्यकता है, है ना?
दूसरा दृष्टिकोण होगा ... ठीक है ... मुझे लगता है मैं एक कार्यकर्ता धागे से सेवा से जुड़े ग्राहकों की एक सूची कैसे उपयोग कर सकते हैं की एक और विचार की जरूरत नहीं है ...
मुझे लगता है कि मेरी मुख्य समस्या यह है कि प्रत्येक ग्राहक विभिन्न प्रकार के उत्पाद को अधिसूचित कर सकता है।मतलब - पब \ सब विधि यहां इतना अच्छा नहीं है, क्योंकि मेरे परिदृश्य में ग्राहकों के बारे में जानना आवश्यक है।
इस सिरदर्द को हल करने के तरीके पर कोई सुझाव?
क्या आपने कतार का उपयोग करने के बारे में सोचा है। जहां आपका प्रत्येक ग्राहक कतार और डेटा के लिए मतदान के साथ जोड़ता है, जहां वे उपलब्ध हैं। और सरल है कि डब्ल्यूसीएफ सेवा डेटा की सदस्यता लेने के लिए एक सेवा है। फिर अपने कार्यकर्ता थ्रेड में, जब डेटा से संबंधित डेटा क्लाइंट कतार में डेटा दबाएं। – rpgmaker
एक कतार मेरी समस्या को ठीक तरह से कैसे हल करेगी? आपका क्या मतलब है 'डब्ल्यूसीएफ सेवा डेटा की सदस्यता लेने के लिए एक सेवा होगी'? क्या आपके पास नमूना या उदाहरण है जिसे मैं देख सकता हूं? –
मेरी प्रतिक्रिया – rpgmaker