2012-03-23 14 views
12

मान लें कि मेरे पास एक सर्वर पर एक C++ प्रोग्राम चल रहा है जो वेब सर्वर के साथ Node.js. द्वारा चलाया जाता है।नोडज सी ++ कार्यक्रम के साथ संवाद करते हैं?

सीपीपी प्रोग्राम एक कतार बनाए रखता है, जो मैं नोड.जेएस के साथ करना चाहता हूं, कुछ डेटा को कतार में खींचें।

यह करने के लिए सबसे अच्छा तरीका क्या है?

कौन सा बेहतर है? सॉकेट या आईपीसी?

(ओएस लिनक्स है)

+0

हमने हमारे एम्बेडेड सिस्टम पर सी ++ और नोडजेज़ के बीच संवाद करने के लिए 'dbus' का उपयोग किया। डीबीयूएस लिनक्स सिस्टम पर एक डिफ़ॉल्ट बस है। –

उत्तर

10

का उपयोग करने के लिए आसान कर रहे हैं, मैं UNIX-domain sockets सुझाव है। वे मूल रूप से आपको बीएसडी सॉकेट इंटरफ़ेस का उपयोग करके आईपीसी का उच्च प्रदर्शन देते हैं, यदि आपको C++ (या node.js) एप्लिकेशन को किसी दूसरे कंप्यूटर पर स्थानांतरित करने की आवश्यकता होती है तो बाद में टीसीपी सॉकेट के लिए स्विच करना आसान हो जाता है।

वे already supported by node.js हैं और केवल सॉकेट खोलने वाला कोड बदलना होगा। MySQL समेत कई एप्लिकेशन आसानी से कॉन्फ़िगरेशन फ़ाइल में इसे दूर करते हैं।

1

मैं सॉकेट का उपयोग करेंगे, वे स्वच्छ और आप लिनक्स उपयोग कर रहे हैं

+0

लेकिन वास्तव में वे एक ही सर्वर पर हैं, मुझे आश्चर्य है कि आईपीसी चीजों की तुलना में सॉकेट धीमा हो सकता है, क्या मैं सही हूँ? –

+0

यह निश्चित रूप से धीमा है लेकिन यह आपके ऐप को स्केल करने के लिए तैयार करेगा यदि किसी दिन दो सर्वर एक ही सर्वर पर रहते हैं। – luke14free

+0

@ luke14free: यह निर्भर करता है। यूनिक्स सॉकेट नियमित टीसीपी सॉकेट से तेज हो सकता है। –

1

यदि आप आईपीसी तंत्र का उपयोग करना चाहते हैं, तो आप Node.js C++ module लिखने पर विचार कर सकते हैं, और फिर Boost.Interprocess लाइब्रेरी से अपने अन्य ऐप के साथ संवाद करने के लिए कुछ उपयोग कर सकते हैं।

बूस्ट। इंटरप्रोसेस में पहले से ही मानक पुस्तकालय से कंटेनर साझा करने के लिए तंत्र बनाये गये हैं। यदि आप भविष्य में इसके लिए खुले रहना चाहते हैं तो यह भी क्रॉस प्लेटफार्म है।

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