GRPC C ++ से कैसे कनेक्ट करें InProcessChannel C ++ से नहीं?

Dec 21 2020

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

मैं C ++ gRPC सर्वर से कैसे जुड़ सकता हूं InProcessChannel()? समस्या यह है कि मैं करने की जरूरत है पारित एक nameजावा के लिए InProcessServerBuilder

C ++ gRPC परीक्षणों में (जैसे। यहाँ ) मैं इसे सेट नहीं कर पा रहा हूँ और इससे मुझे लगता है कि InProcessChannelइसका उपयोग केवल शुद्ध C ++ में किया जा सकता है (सर्वर और क्लाइंट दोनों C ++ में हैं)। क्या यह अभी भी सी ++ सेवा और जावा क्लाइंट के लिए संभव है?

पुनश्च मैं इसे जावा-सर्वर + जावा-क्लाइंट के लिए करने में सक्षम था।

पी पी एस। मुझे कुछ इसी तरह के QnAs जैसे मिले हैं। यहाँ लेकिन मुझे आश्चर्य है कि अगर वहाँ अभी भी एक साथ काम करने का एक तरीका है (शायद कुछ 3-पार्टी चैनल के साथ निहित है)। क्या यह यूनिक्स डोमेन सॉकेट्स पर काम कर सकता है?

जवाब

3 EricAnderson Dec 22 2020 at 06:14

C ++ और Java "इन-प्रोसेस" ट्रांसपोर्ट को उन मामलों के लिए उचित रूप से नामित नहीं किया गया था जब एक ही प्रक्रिया में कई भाषाएं होती हैं। इन-प्रोसेस ट्रांसपोर्ट केवल प्रत्येक व्यक्तिगत भाषा में काम करता है; C ++ और Java इन-प्रोसेस ट्रांसपोर्ट इंटरैक्ट नहीं कर सकते हैं।

आपको सामान्य HTTP / 2 क्लाइंट / सर्वर का उपयोग करना चाहिए।

जबकि आप चाहते हैं कि कुछ मौजूद हो सकता है, जैसे कि "साझा मेमोरी" परिवहन, यह काम का एक महत्वपूर्ण हिस्सा है और रखरखाव के बोझ के लिए अपेक्षाकृत कम उपयोग होगा।

1 4ntoine Dec 22 2020 at 20:24

मैंने एरिक के एंडरसन के उत्तर को सही माना है। हालाँकि यह जानना उपयोगी हो सकता है कि मैंने इसे यूनिक्स डोमेन सॉकेट के साथ कैसे काम किया।

मुझे एंड्रॉइड के लिए पैच netty करना और इसका उपयोग करना था । कुछ Android- विशिष्ट अनुमति नोटों पर अपना ध्यान दें ।