2010-10-17 12 views
9

के साथ स्ट्रीमिंग मैं एक आंतरिक ऐप के लिए स्ट्रीमिंग समाधान बनाने की कोशिश कर रहा हूं, लेकिन एक रोडब्लॉक से पहले समाधान के लिए रिक्त स्थान खींच रहा हूं। वर्तमान में, मेरे कामकाजी उदाहरण में, मैं APE का उपयोग कर रहा हूं, लेकिन प्रतिबंधों के कारण मेरे पास मेजबान मशीन पर कोई विदेशी चल रही प्रक्रिया नहीं हो सकती है, इसलिए मैं एपीई सर्वर नहीं चला सकता।नोड.जेएस, या किसी अन्य धूमकेतु समाधान

मैं विकल्पों की तलाश में हूं, लेकिन अब तक जो कुछ भी मिला है, उसे सर्वर पर चल रही प्रक्रियाओं की आवश्यकता है।

परियोजना के बारे में कुछ विवरण।

  • जैसे ही वे उपलब्ध हैं लगभग 25 एक बार
  • पर जुड़ा आदर्श रूप में हर किसी को एक ही समय में अद्यतन देखना चाहिए लोग हो जाएगा।
  • यह विंडोज वातावरण में चल रहा है, इसलिए सी #/.NET समाधान PHP जैसी चीजों पर बेहतर होगा।

किसी के पास कोई विचार है, अगर node.js इसे संभालने में सक्षम है, या किसी अन्य समाधान के लिए?

+2

मेरा मानना ​​है कि विंडोज़ पर नोड उपलब्ध नहीं है, मुझे गलत हो सकता है। – Robert

उत्तर

10

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

पारंपरिक वेब सर्वर के लिए, अक्सर कनेक्शन प्राप्त करना लक्ष्य होता है, उपयोगकर्ता को कुछ सेवा प्रदान करता है जितनी जल्दी हो सके, और अगले कनेक्शन पर जाएं। यदि कोई कनेक्शन लंबे समय तक चल रहा है, तो इसकी वजह यह संभवतः कुछ गहन कर रही है, जैसे कि एक बड़ा डाउनलोड या बड़ी क्वेरी, लेकिन कुल मिलाकर सक्रिय रूप से सीपीयू का उपयोग करके थ्रेडेड मॉडल बहुत अच्छी तरह से काम करता है।

धूमकेतु (लंबे मतदान) में, आम तौर पर आप एक वेब सर्वर से कनेक्ट होते हैं जहां आप बस एक घटना होने की प्रतीक्षा करते हैं, और अक्सर नहीं। यह अधिक समवर्ती कनेक्शन को बढ़ावा देता है। इसके अलावा chacnes हैं कि इनमें से कई उपयोगकर्ता बोर्ड में होने वाली घटनाओं पर इंतजार कर रहे हैं।

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

यही कारण है कि धूमकेतु की अपनी जरूरतों पर धूमकेतु करने के लिए अक्सर अधिक फायदेमंद होता है क्योंकि पारंपरिक वेब सर्वर अपाचे और आईआईएस के पुराने संस्करण कॉमेट की ज़रूरतों के लिए कुशल हैं।

मानक एएसपी.NET ऐप्स थोड़ा खराब हो गए हैं क्योंकि .NET में थ्रेड पूल 25 सामान्य थ्रेड और 25 आईओ थ्रेड तक सीमित है (और http कनेक्शन आईओ थ्रेड लेते हैं)। वास्तविकता में आप उससे थोड़ा कम प्रभावी रूप से सीमित हो सकते हैं क्योंकि थ्रेड पूल को .NET में अन्य सभी चीजों के साथ साझा किया जाता है। हालांकि, आप कॉन्फ़िगरेशन सेटिंग के साथ थ्रेड पूल को टक्कर दे सकते हैं, लेकिन प्रदर्शन में आपके द्वारा फेंकने वाले अधिक थ्रेडों को क्षीण रूप से क्षय करने की प्रवृत्ति होती है। यदि आप गारंटी दे सकते हैं कि आप बहुत अधिक नहीं बढ़ेंगे, तो आप सिद्धांत को इस संख्या में टक्कर दे सकते हैं, और तो संभवतः अपने स्वयं के धूमकेतु घटना प्रेषण की चीज़ बनाने के लिए .NET में मानक थ्रेड मॉनीटर का उपयोग करें।

हालांकि आईआईएस के नए संस्करणों को चलाने वाले .NET ऐप्स में आशा की किरण है। आप एक कस्टम IAsyncHttpHandler बना सकते हैं। यह आपके लिए कैसे काम करता है इस पर पढ़ने के लिए कुछ महान मार्गदर्शिकाएं ऑनलाइन हैं। इसके साथ आप अपना खुद का कनेक्शन पूल बना सकते हैं और अपने ग्राहकों को अधिक कुशलता से सेवा दे सकते हैं। यह एक आदर्श समाधान नहीं है और आपको अपने आप में बहुत सारी नलसाजी बनाना है। WebSync एक वाणिज्यिक उत्पाद है जो आपके लिए इस इंटरफ़ेस को लपेटता है और आपको कुछ उच्च स्तरीय ढांचे के टुकड़े देता है जो आप काम कर सकते हैं।

+0

संबंधित: Azure/IIS के लिए धूमकेतु: http://www.windowsazure.com/en-us/develop/nodejs/ – LamonteCristo

0

आप लंबी पूलिंग का उपयोग करके इसे अपने आप लागू कर सकते हैं। 25 आईआईएस के लिए एक साथ अनुरोध जारी नहीं होना चाहिए। बस एक नज़र डालें कि ग्राहकों को एपीई स्ट्रीम क्या करता है - कोड की 100 पंक्तियों में मेरा पुनर्मूल्यांकन करने के लिए यह बहुत साफ है (मेरा मतलब संगत प्रारूप में क्रमबद्धता है)।

1

वेबसिंक आपके लिए एक अच्छा समाधान होगा; यह आईआईएस पर चलता है, इसलिए बाहरी प्रक्रियाओं की आवश्यकता नहीं होती है। इसे here देखें।

0

क्या आपने PubNub पर देखा है? यह आप जो कर रहे हैं उसे संभालने में सक्षम हो सकता है। यह पैसा खर्च करता है, लेकिन आप भी मुफ्त लेनदेन का एक गुच्छा मिलता है। सुनिश्चित नहीं है कि आप किस तरह के भार की उम्मीद करते हैं।

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