यह सॉफ़्टवेयर डिज़ाइन के बारे में एक सामान्य "नोब" प्रश्न है, इसलिए अगर यह अस्पष्ट लगता है, तो मैं क्षमा चाहता हूं, लेकिन मैं वास्तव में सलाह की सराहना करता हूं। ध्यान दें कि नीचे वर्णित प्रणाली पूरी तरह से एक उदाहरण है, मेरे मन में एक विशिष्ट उत्पाद नहीं है।एकाधिक भाषाओं को गठबंधन करने के लिए आईपीसी का उपयोग
मुझे अक्सर विभिन्न भाषाओं में लिखी गई कई पुस्तकालयों या उपयोगिताओं की कार्यक्षमता को गठबंधन करने की आवश्यकता होती है। उदाहरण के लिए, यदि मैं डेस्कटॉप के लिए एक उच्च-प्रदर्शन ऑडियो प्रोसेसिंग एप्लिकेशन को कोड करना चाहता हूं, तो मैं इसे सी/सी ++ में लिखूंगा। फिर, मैं एक अच्छा जीयूआई जोड़ना चाहता हूं। लेकिन मैं क्यूटी सीखना नहीं चाहता। मुझे एडोब एयर का स्वरूप और अनुभव पसंद है, और इसका उपयोग करना चाहूंगा। बाद में, मुझे एक यूएसबी डिवाइस तक पहुंचने की आवश्यकता है। लेकिन यूएसबी लाइब्रेरी में मेरे पास जावा में केवल एक एपीआई है। अपनी सापेक्ष ताकत का लाभ उठाने के लिए, मैं इन सभी तत्वों को एक साथ कैसे जोड़ सकता हूं?
स्पष्ट रूप से, मैं इन विभिन्न तत्वों को एक एकल निष्पादन योग्य में संकलित नहीं कर सकता। इसलिए मुझे उन्हें अलग-अलग बनाने और चलाने की ज़रूरत है, और उन्हें संवाद करने का साधन दें। ऐसा करने का सबसे आम तरीका आईपीसी (इंटर प्रोसेस कम्युनिकेशन), जैसे साझा स्मृति या सॉकेट का उपयोग करना प्रतीत होता है। मैं सॉकेट के विचार को प्राथमिकता देता हूं, क्योंकि प्रोग्राम संभावित रूप से नेटवर्क पर पृथक मशीनों पर चल सकते हैं।
इसलिए मैं इन तत्वों को संवाद करने की अनुमति देने के लिए एक कस्टम एपीआई के साथ स्थानीय क्लाइंट/सर्वर सिस्टम बनाने का निर्णय लेता हूं। उदाहरण के लिए, एयर एप्लिकेशन को सी एप्लिकेशन से एक संदेश प्राप्त होगा, इसे इसके यूआई को अपडेट करने के लिए कहा जाएगा। जावा में चल रहे यूएसबी एप्लिकेशन को यूएस अनुप्रयोग से ऑडियो स्ट्रीम करने के लिए सॉकेट का उपयोग सी अनुप्रयोग में किया जाएगा।
मेरा प्रश्न: इस तरह के सिस्टम को डिजाइन करने के लिए एक सामान्य तरीका स्थानीय सॉकेट का उपयोग कर रहा है? क्या प्रदर्शन वास्तव में मूल एप्लिकेशन (जैसे जावा या सी में सब कुछ एक निष्पादन योग्य में) से भी बदतर होगा? ऐसा लगता है कि ऐसा दृष्टिकोण बग के लिए प्रवण होगा, और बनाए रखना मुश्किल होगा?
मैं अक्सर अपने आप को मौजूदा सॉफ्टवेयर पुस्तकालयों (जैसे एक सुंदर, लचीला यूआई के साथ एक ग्राफिक्स लाइब्रेरी, लेकिन निम्न स्तर के हार्डवेयर तक पहुंचने का कोई तरीका नहीं, या एक मीडिया लाइब्रेरी जो कई ऑडियो धाराओं को मिश्रित कर सकता है, के खिलाफ आ रहा है, लेकिन मुझे लगता है कि, वीडियो प्लेबैक के लिए कोई समर्थन नहीं है), और इसे बहुत निराशाजनक लगता है। अगर कोई इस तरह मनमाना सॉफ्टवेयर पुस्तकालयों को गठबंधन करने का सबसे अच्छा तरीका सुझा सकता है, तो मैं वास्तव में इसकी सराहना करता हूं।
अग्रिम धन्यवाद!
दोनों अच्छे उत्तर, लेकिन यह एक आसान है समझने के लिए Ier। मेरे अधिकांश कामों में सी/सी ++ की आवश्यकता है, मुझे लगता है कि क्यूटी पर मेरे "मंच" के रूप में शर्त लगाना सुरक्षित हो सकता है। – darasan