2008-10-03 5 views
12

मैं एक एकल जेवीएम ऐप (एक प्रक्रिया, संभावित रूप से एकाधिक धागे) और एक सी ++ डीएल से जुड़ा मूल सी ++ एप्लिकेशन के बीच एक मजबूत आईपीसी समाधान लागू करना चाहता हूं। डीएलएल एक ही भौतिक मशीन पर हो सकता है या नहीं भी हो सकता है। ऐसा करने के लिए सबसे अच्छा तरीका क्या है?जावा और सी ++ के बीच आईपीसी के लिए सबसे अच्छा तरीका क्या है?

किसी भी सुझाव की सराहना की जाएगी! धन्यवाद!

उत्तर

9

मैं एक मानक टीसीपी/आईपी सॉकेट, जहां एप्लिकेशन कुछ बंदरगाह पर सुनता है और पुस्तकालय रिपोर्ट करने के लिए क्या यह रिपोर्ट और जवाब की उम्मीद है उससे कनेक्ट का उपयोग करेंगे।

अमूर्त मजबूत है, अच्छी तरह से समर्थित है और इसमें कोई इंटरऑप समस्या नहीं होगी।

4

क्या आपने Facebook's Thrift framework पर विचार किया है?

थ्रिफ्ट स्केलेबल क्रॉस-भाषा सेवाओं के विकास के लिए एक सॉफ्टवेयर ढांचा है। यह एक कोड जनरेशन इंजन के साथ एक सॉफ्टवेयर स्टैक को जोड़ती है जो सी ++, जावा, पायथन, पीएचपी, रूबी, एरलांग, पर्ल, हास्केल, सी #, कोको, स्मॉलटॉक और ओकैमल के बीच कुशलतापूर्वक और निर्बाध रूप से काम करने वाली सेवाओं का निर्माण करती है।

बहाव आपको एक साधारण परिभाषा फ़ाइल में डेटा प्रकारों और सेवा इंटरफेस को परिभाषित करने की अनुमति देता है। उस फ़ाइल को इनपुट के रूप में लेते हुए, संकलक आसानी से RPC क्लाइंट और सर्वर बनाने के लिए कोड उत्पन्न करता है जो प्रोग्रामिंग भाषाओं में सहजता से संवाद करता है।

यह टीसीपी सॉकेट पर काम कर सकता है और क्रमबद्धता/deserialization पहले से ही अंतर्निहित है।

विवरण के लिए whitepaper पढ़ें।

+2

बहाव बहुत अच्छा होगा, लेकिन मुझे लगता है कि उनके दस्तावेज़ों में पहली वाक्य यह कहती है कि यह विंडोज पर काम नहीं करेगा ... क्या मैं इसे सही तरीके से व्याख्या कर रहा हूं? http://wiki.apache.org/thrift/ThriftInstallationWin32 –

+0

@ जस्टिन: हाँ, यह विजुअल स्टूडियो का उपयोग करके संकलित नहीं करता है। – dalle

+1

पुराना धागा, लेकिन अब विजुअल स्टूडियो (2010) परियोजनाओं के साथ जहाजों को शामिल किया गया –

0

मिमीएम - डीएलएल प्रक्रिया नहीं कर रहे हैं, इसलिए मुझे लगता है कि आप अपने जावा ऐप और डीएलएल से जुड़े कुछ अन्य मूल एप्लिकेशन के बीच आईपीसी का मतलब मान रहे हैं। सॉकेट, निश्चित रूप से, यहां जाने का तरीका हैं। यह आपके लिए सब कुछ आसान बना देगा।

एक और विकल्प डीएनओएम कार्यान्वयन से बात करने के लिए जेएनआई का उपयोग करना होगा, लेकिन मुझे नहीं लगता कि आपको अधिक लाभ मिलेगा (COM और JNI के सिरदर्द से निपटने के अलावा :-))।

4

Google protocol buffer आपको भाषा और प्लेटफ़ॉर्म तटस्थ तरीके से डेटा को क्रमबद्ध करने में मदद कर सकता है। यह धारावाहिक डेटा पढ़ने और लिखने को संभालने के लिए जावा और सी ++ में कोड भी उत्पन्न करेगा। फिर आप किसी भी संचार तंत्र का उपयोग कर सकते हैं जिसे आप डेटा भेजना चाहते हैं। उदाहरण के लिए, आप इसे एक टीसीपी सॉकेट या साझा मेमोरी आईपीसी के माध्यम से भेज सकते हैं।

0

मैं Remote Call Framework से देख रहा हूँ, मेरे विशुद्ध रूप से सी ++ क्षुधा के लिए। चश्मा सुंदर और आशाजनक लग रहे हैं। मैं इसे आजमाने जा रहा हूं।

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

  • कोई संबंधित समस्या नहीं^_^