2011-10-20 24 views
6

मैं कुछ सी ++/ओपनजीएल मॉड्यूल के साथ कुछ एडीए मॉड्यूल के बीच संचार प्रक्रिया को लागू करने के लिए कुछ तकनीकों का मूल्यांकन करने की कोशिश कर रहा हूं। एक (विंडोज एक्सपी) एडीए एप्लीकेशन है जो COM का उपयोग कर सी ++ एप्लिकेशन के साथ संचार करता है, लेकिन मैं COM को एक नई तकनीक पर स्विच करना चाहता हूं। कुछ सुझाव सामने आए, जैसे डायरेक्ट सॉकेट, डीएसए, पॉलीओर्ब, कोर्बा और डीएसएस/ओपनेंसप्लिस।एडीए/सी/++ वितरित अनुप्रयोग

  • DSA, बस एडीए -implemented (यकीन नहीं)
  • Polyorb 2006 को अपनी आखिरी कार्यान्वयन है प्रतीत होता है http://polyorb.ow2.org/ के अनुसार
  • कोरबा किसी argumented है कि यह काफी सरल नहीं करने के लिए इसकी जटिलता का औचित्य साबित करने से हो सकता है सरल अनुप्रयोगों को कार्यान्वित करना
  • डीएसएस/ओपनेंसप्लिस केवल सी/सी ++ लागू होता है, इसलिए एक एडी बाध्यकारी किया जाना चाहिए। यह भी लागू करने के लिए बहुत आसान नहीं लग रहा है।

व्यक्तिगत रूप से मुझे COM पसंद है, लेकिन माइग्रेशन के कारण, मैं इसकी सादगी के कारण सॉकेट विकल्प लेना चाहता हूं, और इंटरफ़ेस आर्किटेक्चर को बहुत आसानी से कार्यान्वित किया जा सकता है।

तो, आपको क्या लगता है? क्या आप इन तकनीकों के बारे में टिप्पणी कर सकते हैं या यहां तक ​​कि अन्य सुझाव भी दे सकते हैं?

बहुत बहुत धन्यवाद।

+4

इससे पहले कि आप सोचने के जाल में आ जाएंगे कि सॉकेट "सरल" हैं, तो एक निष्पादक, लचीला और स्केलेबल आईपीसी तंत्र का समर्थन करने के लिए आपको अपनी नंगे सॉकेट परत के शीर्ष पर बनाने के लिए सामानों की मात्रा पर विचार करें। अधिक जानकारी के लिए, मेरा यह जवाब किसी अन्य प्रश्न से देखें: http://stackoverflow.com/questions/6067538/restful-web-services-vs-socket-programming-for-a-data-intensive- appplication/6067635#6067635 –

+1

हाल ही के अपडेट के साथ, एडोरकोर द्वारा पॉलीओर्ब सक्रिय रूप से बनाए रखा प्रतीत होता है। आप http://libre2.adacore.com//viewvc/trunk/polyorb/ –

+1

पर भंडार ब्राउज़ कर सकते हैं CORBA को चाल करना चाहिए, पॉलीओरब एक विकल्प है, आप मौजूदा ओआरबी के लिए भाषा बाध्यकारी के रूप में भी विकसित हो सकते हैं, हमारे पास है उदाहरण ने पहले ही टीएओ के लिए रूबी बाध्यकारी बनाया है, टीएओ के लिए एक नया सी ++ 11 बाध्यकारी और जैकब के लिए एक जेआरबी बाध्यकारी बनाया है। Http://www.orbzone.org भी देखें। यदि आप डीडीएस का उपयोग करना चाहते हैं, तो ओपनडीडीएस के लिए एडी बाध्यकारी बनाने पर विचार करें (http://www.opendds.org/ देखें) –

उत्तर

4

आपकी पसंद में एक बड़ा कारक उस प्रणाली का आकार और जटिलता है जिसे आप पुनर्वितरण कर रहे हैं। क्या यह बहुत जटिल संदेशों के साथ व्यापक रूप से वितरित प्रणाली है? क्या यह एक अपेक्षाकृत छोटी प्रणाली है जिसमें कुछ हद तक संदेश संदेश आदान-प्रदान हैं?

छोटी प्रणालियों के लिए मैं केवल अपने स्वयं के सॉकेट-आधारित कॉम मॉड्यूल रोल करता था। अब, मैं ZeroMQ (ब्रोकरलेस) या STOMP (टेक्स्ट-आधारित) की ओर अधिक दुबला हूं। और इनके लिए कुछ एडीए समर्थन हैं, zeromq-Ada और TOMI_4_Ada (दोनों का समर्थन करता है)।

हालांकि ये वितरण यांत्रिकी को संभालते हैं, फिर भी आपको संदेशों के क्रमिकरण को परिवहन योग्य रूप में संभालने की आवश्यकता होगी।

कोर्बा/पॉलीओआरबी और डीडीएस समाधान बल्कि हेवीवेट हैं, लेकिन पूर्ण समाधान हैं। यदि आप आईडीएल और ब्रोकरों के प्रबंधन से डरते नहीं हैं, तो वे बड़े पैमाने पर वितरित सिस्टम के लिए अच्छा कर सकते हैं। हाँ, कुछ एडा बाइंडिंग बनने की आवश्यकता हो सकती है, लेकिन यदि आप सी हेडर या सी एपीआई को बांधने के लिए प्राप्त कर सकते हैं, तो आमतौर पर यह बहुत बुरा नहीं होता है यदि आप केवल आवश्यक कार्यों और डेटा संरचनाओं को बाध्य करने पर ध्यान केंद्रित करते हैं। एक व्यापक बाध्यकारी बनाने के बजाय, उदारतापूर्वक अपारदर्शी और शून्य पॉइंटर्स (void_ptr, opaque_structure_def_ptr) को structs और पैरामीटर के लिए नियोजित करें जिनकी आंतरिक सामग्री आप परवाह नहीं करते हैं।

+0

मैंने ज़ीरोम-एडा में एक नज़र डाली, यह बहुत दिलचस्प लगता है। कोड खोला गया है लेकिन अगर हमें आवश्यकता हो तो समर्थन की संभावना है। धन्यवाद मार्क। – Rego

1

आपकी सूची के लिए एक और विकल्प एडा के distributed programming support का उपयोग करना चाहिए, और इसमें सी/सी ++ रैपर को इंटरफ़ेस करने के लिए सी/सी ++ रैपर लिखें।

मुझे नहीं पता कि इसकी आपकी आवश्यकताओं के लिए सर्वोत्तम विकल्प है, लेकिन यदि आपका एडा संकलक अनुलग्नक ई का समर्थन करता है, तो यह सूची में होना चाहिए।

+0

मैं अनुलग्नक ई की जांच करूंगा। मुझे लगता है कि मेरा कंपाइलर इसका समर्थन करता है। धन्यवाद टेड। – Rego

+0

असल में, जब मैंने पिछली बार चेक किया (स्वीकार्य रूप से काफी समय पहले), कुछ एडा संकलक ने उस विशेष अनुबंध का समर्थन किया। हालांकि, अगर आपके पास ऐसा करने वालों में से एक होता है, तो आप व्यवसाय में हो सकते हैं। –

3

हम, के बाद से COM अधिक माइक्रोसॉफ्ट

जो कोई भी तुमसे कहा था कॉम अब समर्थित नहीं है पूरी तरह से अनजान है द्वारा समर्थित नहीं है एक नया (suported) प्रौद्योगिकी के लिए कॉम स्विच करने के लिए करना चाहते हैं।

जबकि पिछले कई दशकों में COM ने कई नाम परिवर्तन (ओएलई, कॉम, ओएलई ऑटोमेशन, डीसीओएम, COM +, ActiveX, WinRT) और एक्सटेंशन किए हैं, यह एमएस प्लेटफॉर्म के लिए सबसे महत्वपूर्ण तकनीक है: अतीत, वर्तमान और भविष्य । The .NET runtime uses COM extensively। Win32 एपीआई में से अधिकांश COM में लिखा गया है, और जो भाग नहीं थे, वे Win8 में होंगे, WinRT components are COM objects के बाद से।

+0

ठीक है, बस यह पता लगाना था कि हमारे फ्रेमवर्क से कई COM ऐप्स SP3 Win XP इंस्टॉल करने के बाद क्यों काम करना बंद कर दिया। अगर हम .NET के रूप में एक नए COM- पर माइग्रेट नहीं करते हैं, तो हमारे ऐप की कई विशेषताओं से समझौता किया जाएगा। सुरक्षित/महत्वपूर्ण sw के लिए यह स्वीकार्य नहीं है कि संचार प्रोटोकॉल हमेशा बदल जाता है ओएस को अपग्रेड किया जाता है (विंडोज़ के साथ लगातार), तो हमें एक और अधिक स्थिर दृष्टिकोण का प्रयास करना पड़ा। इसके अलावा, एडा के पास बहुत अच्छा COM बाध्यकारी GNATCOM है, जो अब विकास में नहीं है। मैं आपकी राय की सराहना करता हूं, और सहमत हूं कि COM के पास सहायक हैं, लेकिन क्या आपके पास इस प्रश्न का कोई सुझाव है? धन्यवाद – Rego

+0

@Rego: ये COM के उत्तराधिकारी नहीं हैं, वे COM हैं। या COM का उपयोग करें। COM नियमों का पालन करने वाला कोई भी कोड अभी भी काम करता है, अगर कुछ ऐप्स XP SP3 पर काम करना बंद कर देते हैं, तो मैं केवल यह सोच सकता हूं कि या तो (1) उन्होंने कुछ विशेष घटक का उपयोग किया जो सुरक्षा कारणों से हटा दिए गए थे या (2) वे अनियंत्रित व्यवहार पर निर्भर थे दस्तावेजी नियमों का पालन करना। –

+0

@ रेगो: इसके अलावा, उत्पाद के विकास में नहीं होने वाले कई संभावित कारण हैं। इसे छोड़ दिया जा सकता है, या यह स्थिर हो सकता है। ऐसा लगता है जैसे GNATCOM स्थिर है। –

2

एएमक्यूपी (RabbitMQ सर्वर के लिए) पर भी एक नज़र डालें, ऐसा लगता है कि http://www.gti-ia.upv.es/sma/tools/AdaBinding/index.php के लिए एडी लाइब्रेरी उपलब्ध है।

यदि आप एडा के लिए बाध्यकारी पा सकते हैं, Apache thrift हल्का विकल्प भी हो सकता है। हो सकता है कि आप अपना बाध्यकारी भी लिख सकें, यह अधिक कठिन नहीं होना चाहिए कि सॉकेट पर अपने आप को कुछ रोल करना।

यदि आप सॉकेट मार्ग जाते हैं, तो मैं ZeroMQ "सुपरसॉक" के रूप में सुझाव दूंगा।

+0

वह एएमक्यूपी बाइंडिंग, "एडाक्पिड", बहुत कम और नाजुक था, आईआईआरसी, और अंततः मैंने अपनी क्षमताओं को बढ़ाने की कोशिश की। इसके अलावा, यह आधा assed संग्रह है, जिसमें संपादक द्वारा किए गए नवीनतम बैकअप फ़ाइल संस्करण भी शामिल हैं (कई फाइलनामों पर '~' प्रत्यय द्वारा इंगित), और * किसी भी * रीडमे या मार्गदर्शन मार्गदर्शन सहित। ऊपर से जुड़े TOMI_4_Ada में, मैंने ओपनएएमक्यू के वायरएपीआई के आधार पर अपना स्वयं का आंशिक एएमक्यूपी बाध्यकारी किया। –

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