2012-03-05 16 views
14

एक अधिसूचना प्रोजेक्ट के लिए, ईवेंट नोटिफिकेशन को पुश करना चाहते हैं। ये लॉगिन जैसी चीजें हैं, प्रोफ़ाइल में परिवर्तन इत्यादि हैं, और उपयुक्त ग्राहक को प्रदर्शित करने के लिए। मैं इसे एक साथ रखने पर कुछ विचारों पर चर्चा करना चाहता हूं, और सर्वोत्तम दृष्टिकोण पर कुछ सलाह लेना चाहता हूं।कैसे घटना आधारित पुश नोटिफिकेशन के लिए ASP.Net, IISNode, Node.js, और SQL सर्वर के साथ Socket.IO लागू करने के लिए?

मैंने here देखा कि एक कॉच डीबी में किए गए परिवर्तनों को नोड द्वारा उठाए गए _changes स्ट्रीम के साथ पता लगाया जा सकता है, और एक प्रक्रिया बंद हो जाती है। मैं इस तरह कुछ कार्यान्वित करना चाहता हूं (मैं SQL सर्वर का उपयोग कर रहा हूं, लेकिन इस स्तर पर एक प्रविष्टि बिंदु सबसे अच्छा समाधान नहीं हो सकता है)।

कॉच डीबी उदाहरण का पालन करने के बजाय (डेटाबेस-आधारित घटनाओं का पता लगाने के बाद, मुझे लगता है कि यह केवल चीजों को जटिल करता है, क्योंकि हम ग्राहक घटनाओं में रूचि रखते हैं), मैं सोच रहा था कि जब कोई ईवेंट होता है, जैसे उपयोगकर्ता लॉगिन, तो कुछ घटना विवरण (रीस्टफुल अनुरोध?) के साथ नोड सर्वर पर एक संदेश भेजा जाता है। यह संदेश तब संसाधित और सभी जुड़े ग्राहकों को प्रसारित किया जाता है; उपयुक्त ग्राहक अधिसूचना प्रदर्शित करता है।

प्रस्तावित पारिस्थितिकी तंत्र:

  • नेट 4.0
  • IIS
  • IISNode
  • Socket.IO
  • Node.js
  • एसक्यूएल सर्वर 2008

हो जाएगा ताकि पर बनाया जाना चाहिए नेट फ्रेमवर्क (आईआईएस, आदि) का उपयोग कर मौजूदा परियोजना के शीर्ष। कई क्लाइंट के ब्राउज़र वेब सॉकेट का समर्थन नहीं करते हैं, इसलिए सॉकेट.आईओ का उपयोग करना एक अच्छा विकल्प है (फ़ॉलबैक समर्थन)। हालांकि, I can see से, सॉकेट.आईओ केवल अभी भी आईआईएसएनोड (जो वास्तव में कोई समस्या नहीं है) के माध्यम से लंबे मतदान का समर्थन करता है।

एक विकल्प सभी ग्राहकों को सॉकेट.आईओ/नोड एंडपॉइंट का पर्दाफाश करना होगा, ताकि क्लाइंट-आधारित नोटिफिकेशन जेएस के माध्यम से नोड सर्वर पर भेजा जा सके, जो संदेश को प्रसारित करता है। (मूल चैट-सर्वर/क्लाइंट/सर्वर उदाहरणों का पालन करता है)।

वैकल्पिक रूप से, एक आईआईएस endpoint इस्तेमाल किया जा सकता है, लेकिन केवल लंबे समय तक मतदान का समर्थन कर सकता है (Socket.IO के माध्यम से)। यह कुछ अतिरिक्त नेट बैक-एंड प्रोसेसिंग प्रदान करेगा, लेकिन आर्किटेक्चर को अधिक जटिल बना सकता है।

क्या SQL सर्वर-आधारित ईवेंट अधिसूचना नोड के लिए उपलब्ध है?

सबसे अच्छा तरीका क्या होगा?

अगर मैं शब्दावली पारिस्थितिकी तंत्र विन्यास सही नहीं मिला, कृपया स्पष्ट।

धन्यवाद।

उत्तर

13

मैं आपको अपने पूर्व-मौजूदा एएसपी.NET एप्लिकेशन की तकनीकों के मिश्रण में iisnode/node.js जोड़ने पर विचार करने से पहले SignalR देखें।

websockets के संबंध में, भले ही आप ASP.NET या node.js (socket.io) का उपयोग करते हैं, आप केवल निम्न विलंबता अधिसूचनाओं के लिए HTTP लंबे मतदान का उपयोग कर सकते हैं, क्योंकि websockets HTTP.SYS/IIS द्वारा Windows 8 तक समर्थित नहीं हैं iisnode वर्तमान में websockets (विंडोज 8 पर भी) का समर्थन नहीं करता है, लेकिन इस तरह के समर्थन बाद में जोड़ा जा सकता है।

मैं कुछ शोध हाल ही में node.js. से MSSQL पहुँच के बारे में किया था वहां कुछ ओएसएस परियोजनाएं हैं, उनमें से कुछ मूल, प्लेटफॉर्म-विशिष्ट एक्सटेंशन का उपयोग करती हैं, कुछ प्रयास जावास्क्रिप्ट में पूरी तरह से टीडीएस प्रोटोकॉल को लागू करने का प्रयास करते हैं। मुझे किसी ऐसे व्यक्ति से अवगत नहीं है जो आपको SQL नोटिफिकेशन कार्यक्षमता तक पहुंचने में सक्षम बनाता है। हालांकि, MSSQL टीम ही Node.js के लिए एक प्रथम श्रेणी MSSQL ड्राइवर में निवेश कर रही है, तो यह कुछ आगे (https://github.com/tjanczuk/iisnode/issues/139) जा रहा पर नज़र रखने के लिए है।

आप कम विलंबता सूचनाओं का समर्थन करने के लिए एसक्यूएल सूचनाएं उपयोग करना चाहते हैं, मैं दृढ़ता से प्रदर्शन बेंचमार्क है कि SQL सर्वर के स्तर पर यातायात के वांछित स्तर अनुकरण के साथ शुरू की सिफारिश करेंगे। एसक्यूएल अधिसूचना मुख्य रूप से डेटाबेस की सामग्री के अनुरूप स्मृति कैश में बनाए रखने में मदद के लिए एक तंत्र के रूप में थी, इसलिए यह आपके अधिसूचना परिदृश्य की आवश्यकताओं को पूरा कर सकता है या नहीं। कम से कम इन मापों से आपको बेहतर डिजाइन शुरू करने में मदद मिलेगी।

+0

धन्यवाद टोमाज़। आप सिग्नलआर को लागू करने के बारे में एक बहुत अच्छा मुद्दा बनाते हैं। हालांकि, मुद्दा यह है कि परियोजना विरासत एएसपी कोड और नेट कोड के बीच खंडित है, इसलिए मुझे लगता है कि है कि अब के लिए, Javascript आधारित संचार (नहीं सी #) शायद सबसे अच्छा विकल्प होगा। अगर मुझे सिग्नलआर अवधारणा सही तरीके से मिल रही है, तो भविष्य में जब परियोजना पूरी तरह से .NET पर माइग्रेट हो जाती है, तो सिगलनआर पर स्विच करें। क्या नोड.जेएस, आईआईएसएनओड, और सॉकेट.आईओ के कुछ अच्छे चलने वाले हैं? कुछ SQL सर्वर विकल्पों को भी देखा, लेकिन इस ऐप के लिए ओवरकिल। – ElHaix

+0

सुधार: .NET 4.0 में एक डब्ल्यूसीएफ सेवा के रूप में एक सिग्नलआर दृष्टिकोण लागू करें जिसे क्लासिक एएसपी कोड द्वारा उपभोग किया जा सकता है। हल किया। – ElHaix

+1

टॉमसज़ - क्या आप इस सीमा को iisnode दस्तावेज़ों में स्पष्ट कर सकते हैं? मैंने वेबस्क्रिप्ट समर्थन का उपयोग करने के मुख्य लक्ष्य के साथ अपने विंडोज बॉक्स पर आईज़नोड और नोडजेज स्थापित किए हैं - इसलिए मुझे लगता है कि मेरे विकल्प विंडोज पर nginx या apache का उपयोग कर रहे हैं, या लिनक्स पर जा रहे हैं। – jnoss

1

मैं अत्यधिक Pusher का उपयोग कर की सिफारिश करेंगे। यही वह है जिसे हम उपयोग करते हैं और यह कार्यान्वित करना आसान बनाता है क्योंकि यह एक होस्टेड समाधान है। तो इसे प्लग करना और इसे काम करना वास्तव में आसान है। जब तक आप बड़े पैमाने पर इसके माध्यम से एक पागल राशि संदेश को धक्का नहीं दे रहे हैं, तब तक इसका अधिक खर्च नहीं होता है।

+0

हाय मैट - क्या आपके पास 'पुशर' के लिए एक लिंक है ?? – pithhelmet

संबंधित मुद्दे