COM

2009-06-06 14 views
9

के लिए क्रॉस-प्लेटफ़ॉर्म विकल्प मैं घटक आधारित प्रोग्रामिंग (इसे COM, अन्य सिस्टम, या सादा सी ++ में प्रतिमान का उपयोग करके) के साथ मोहक बना रहा हूं। यदि आमतौर पर "पारंपरिक" ओओपी मॉडल में उपयोग किया जाता है, तो इसका उपयोग करने के लिए थोड़ा सा उपयोग करने की आवश्यकता होती है, लेकिन यह निश्चित रूप से इसके लायक है। यह मेरे कोड को और अधिक रखरखाव और विस्तार करने में आसान बना दिया गया है।COM

जिस परियोजना पर मैं वर्तमान में काम कर रहा हूं वह प्रतिमान का उपयोग कर रहा है, लेकिन कोई सेट सिस्टम नहीं है। हालांकि, मैं वास्तव में कुछ प्रकार की प्रणाली ढूंढना चाहता हूं जो मैं निम्नलिखित आवश्यकताओं के साथ उपयोग कर सकता हूं। मेरे पास अब एक नई प्रणाली में जो कुछ है, उसमें से कुछ समय लगेगा, लेकिन मैं उस समय के एक से अधिक समय को बचाऊंगा।

आवश्यकताओं:

  1. क्रॉस-प्लेटफॉर्म
  2. फास्ट
  3. निर्माण अच्छी तरह से सी ++
  4. का समर्थन करता है पार प्रक्रिया मार्शलिंग

मुझे उन आवश्यकताओं पर विस्तृत करते हैं:

क्रॉस-प्लेटफार्म

असल में, मुझे इसे विंडोज और मैक पर काम करने की आवश्यकता है। लिनक्स अच्छा होगा, लेकिन किसी भी तरह से आवश्यक नहीं है। इसके अलावा, इसे वास्तव में सभी प्लेटफार्मों के लिए अन्य आवश्यकताओं को पूरा करने की आवश्यकता है। मैक के लिए एक COM है, जो आदर्श होगा लेकिन यह आवश्यकता 4 का समर्थन नहीं करता है। इसके अतिरिक्त, इसे जीसीसी और एमएसवीसी दोनों का समर्थन करना होगा।

फास्ट

यह जहां CORBA दुर्भाग्य से खो देता है, भले ही यह अन्य तीन आवश्यकताओं को पूरा है। इन-प्रोसेस विधि कॉल जितनी जल्दी हो सके (आदर्श, COM की तरह) की आवश्यकता होती है, क्योंकि कुछ रूटीन को ऑडियो इंटरप्ट से भी बुलाया जा सकता है।

सी ++

साथ अच्छी तरह से काम करता है ... मुझे लगता है कि यह एक ज्यादातर स्पष्ट है। मुझे घटकों को लागू करने के लिए सी ++ कक्षाओं का उपयोग नहीं करना पड़ेगा, हालांकि यह निश्चित रूप से सहायक होगा, और विकल्प का उपयोग करना अभी भी आसान होना चाहिए, खासकर जब से मैं तीसरे पक्ष के एक्सटेंशन के लिए एपीआई जारी करना चाहता हूं।

पार प्रक्रिया

कि करके प्राथमिकता निर्धारण का समर्थन करता है मेरा मतलब है कम से कम कॉल क्रमानुसार करने में सक्षम होने के। यदि यह आईडीएल से उत्पन्न कोड के माध्यम से किया जाता है, तो यह मेरे साथ बिल्कुल ठीक है, और मुझे क्रॉस-प्रोसेस संचार को लागू करने में भी कोई फर्क नहीं पड़ता।

COM बहुत अच्छा होगा, लेकिन यह पूरी तरह से आवश्यकता 1 को पूरा नहीं करता है। कोर्बा भी बहुत अच्छा होगा, लेकिन यह आवश्यकता 2 को पूरा नहीं करता है (यहां तक ​​कि सबसे तेज ओआरबी के साथ भी)। XPCOM आवश्यकता 2 को पूरा नहीं कर सकता है, और एमएसवीसी के साथ काम नहीं करता है इसलिए आवश्यकता को पूरा नहीं करता है।

कोई विचार क्या और बाहर है? मेरा अगला कदम प्रोटोबफ या कुछ समान का उपयोग करके अपना खुद का रोल करना होगा, लेकिन निश्चित रूप से मैं इससे बचना चाहता हूं।

अद्यतन

विस्तार से बता दें - इस संदर्भ में एक ऑडियो बाधा 2-3ms तक कम हो सकता है। वह समय मेरे लिए भी उपलब्ध नहीं है, क्योंकि उस समय अन्य घटकों को संसाधित करने की आवश्यकता है, और मेरा सॉफ़्टवेयर स्वयं सॉफ्टवेयर का एक और टुकड़ा लपेट रहा है जिसे उस समय संसाधित करने की आवश्यकता है। यही कारण है कि इन-प्रोसेस और क्रॉस-प्रोसेस दोनों मार्शलिंग को बेहद तेज होना चाहिए।

+0

XPCOM को एमएसवीसी, AFAIK के साथ काम करना चाहिए। इसके अलावा, अगर ऐसा नहीं होता है, तो क्या आप MinGW का उपयोग नहीं कर सकते? – Zifre

+0

मैं मिनीजीडब्लू का उपयोग कर सकता हूं, लेकिन एक के लिए, मेरा पूरा टूलचैन एमएसवीसी के साथ एकीकृत है, और जब भी मैं मिनगब्लू को एकीकृत कर सकता हूं, मैं एमएसवीसी में अद्भुत डीबगर का उपयोग नहीं कर सकता। – arke

+0

मुझे लगता है कि अगर आप इसे बनाते हैं तो आप बहुत पैसा कमाएंगे। प्रक्रिया में, प्रक्रिया से बाहर, पीसी, मैक, लिनक्स, तेज तेज। बहुत पैसे। :) –

उत्तर

2

कोर्बा निश्चित रूप से एक उत्तर होगा - आपको गति के आधार पर इसे खारिज करने से पहले इसका परीक्षण करना चाहिए।

एक निश्चित विकल्प XPCOM http://en.wikipedia.org/wiki/XPCOM होगा - एमएसवीसी की कमी का मतलब प्लेटफॉर्म पार नहीं करना है।

अच्छी किस्मत

+1

क्या आप एक ओआरबी कार्यान्वयन की सिफारिश कर सकते हैं? मैंने गति के आधार पर विभिन्न ओआरबी की तुलना में एक वेबपृष्ठ खोजने की कोशिश की है, यह देखने के लिए कि क्या पर्याप्त तेज़ है, लेकिन मुझे इसके साथ कोई भाग्य नहीं मिला है। – arke

+1

यदि आप संभवतः इससे बच सकते हैं तो आप वास्तव में कॉरबा का उपयोग नहीं करना चाहते हैं - इस पर मेरा विश्वास करें। –

+1

टीएओ, "एसीई ओर्ब" http://www.cs.wustl.edu/~schmidt/TAO.html एक बहुत ही सम्मानित कार्यान्वयन है। – sdg

3

अधिकतम चौड़ाई के लिए, मैं बस वेब सेवाओं का उपयोग करता हूं। एक सेवा-उन्मुख दृष्टिकोण घटक-उन्मुख दृष्टिकोण के बहुत करीब है, क्योंकि केवल सेवा अनुबंध (इंटरफेस) का खुलासा किया जाता है, और सेवा के आंतरिक कार्यों के बारे में कोई जानकारी ग्राहकों द्वारा कभी भी जानी चाहिए।

+0

उनकी प्रदर्शन आवश्यकताओं शायद एक विकल्प के रूप में रोकें (हालांकि मैं सहमत हूं, किसी भी प्रकार की HTTP- आधारित सेवा अच्छी शुरुआत है)। – Tom

+1

दरअसल, यह सिद्धांत रूप में अच्छा लगता है, लेकिन ऑडियो बाधा में इसे चलाने की आवश्यकता सिर्फ दुर्भाग्य से यह व्यवहार्य नहीं बनाती है। – arke

+0

इंटरप्ट आवश्यकता को नहीं देखा। सुनने के लिए आश्चर्यचकित एक COM कार्यान्वयन है जो इसे संभाल सकता है। –

0

AF Architecture पर एक नज़र डालें:

"। अफ-आर्क पुस्तकालयों और उपकरण का एक पूरा सेट जो distribuited प्रणाली विशेष रूप से मास्टर ऑफ बिजनेस अनुप्रयोगों के बारे में समस्याओं का सामना करने के लिए डिज़ाइन को विकसित करने की अनुमति देता है"

मुझे पता है कि यह लिनक्स और विंडोज के साथ काम करता है। मुझे यह भी पता है कि इसके लिए बहुत तेज़ सी एपीआई और सी # बाइंडिंग है।

+0

के लिए एक हत्यारा है, यह पहली बार आकर्षक लग रहा था, लेकिन यह कुछ हद तक मुझे बंद कर दिया: "अफ-आर्क प्रोग्रामिंग मॉडल में एक टीसीपी क्लाइंट-सर्वर सिस्टम आधारित है बीईईपी कोर प्रोटोकॉल के शीर्ष पर एक्सएमएल-स्वरूपित संदेश एक्सचेंज में। " मुझे डर है कि यह मेरी गति आवश्यकताओं को पूरा नहीं करेगा। : / – arke

1

आपको क्यों लगता है कि कॉर्बा पर्याप्त तेज़ नहीं है? क्या आपने हाल ही में चीजों को माप लिया है?

कॉरबा के आधुनिक कार्यान्वयन 150 से कम उपयोग में रिमोट कॉल कर सकते हैं। आपके 2 एमसीसी बजट के नीचे रास्ता। सीओआरबीए के आधुनिक कार्यान्वयन मूल रूप से दो आभासी फ़ंक्शन कॉलों में इन-प्रोसेस कॉल को अनुकूलित कर सकते हैं, हालांकि आमतौर पर एप्लिकेशन को कुछ विशेषताओं (उदाहरण के लिए इंटरसेप्टर) से गुजरना पड़ता है। यहां तक ​​कि सबसे बुरी स्थिति परिदृश्य में एक पूर्ण विशेष रुप से प्रदर्शित स्थानीय कॉल कुछ लुकअप हैं + कुछ आभासी कॉल, मेरे पास संख्याएं आसान नहीं हैं, लेकिन मुझे यकीन है कि यह 50 उपयोग से कम है।

कुछ प्रदर्शन संख्या के लिए इस चेक आउट:

http://www.dre.vanderbilt.edu/Stats/performance.shtml

1

आप कहते हैं कि CORBA बहुत अच्छा होगा। मैं केवल यह मान सकता हूं कि आपने इसका कभी भी उपयोग नहीं किया है। यह रात्रिभोज का स्पोग्रामिंग कर रहा है, और पोर्टेबिलिटी की पेशकश नहीं करता है। मैं केवल तभी इसका उपयोग करूंगा जब कोई मौजूदा एप्लिकेशन पहले ही लागू हो। हालांकि, मैं प्रदर्शन के आधार पर इसे बाहर नहीं निकालूंगा - मैंने किसी भी कॉरबा कार्यान्वयन के साथ किसी भी प्रदर्शन समस्याओं का अनुभव किया है।

3

ज़ीरो http://www.zeroc.com/ से आईसीई एक और विकल्प है।

उन कॉरबा पुराने टाइमर के लिए, माइक हेनिंग दिन के गुरुओं में से एक था। वह अब ज़ीरो के साथ है। यह एक खुला स्रोत है, क्रॉस-प्लेटफ़ॉर्म, जिसमें आपके सभी लक्ष्य (लिनक्स समेत), सिस्टम शामिल हैं।

सी ++ केवल भाषाओं में से एक है, और आईसीई की सी ++ बाइंडिंग कोर्बा सी ++ बाइंडिंग की तुलना में काफी बेहतर हैं।

1

D-Bus (हाँ, windows too के लिए) पर एक नज़र डालें, जो विभिन्न घटक फ्रेमवर्क (कोर्बा, जीनोम बोनोबो, केडीई के डीसीओएम) का आधुनिक आध्यात्मिक उत्तराधिकारी है।

यदि क्रॉस-प्रोसेस मार्शलिंग एक प्रदर्शन समस्या साबित होती है, तो भारी भारोत्तोलन साझा स्मृति में स्थानांतरित करने के लिए देखें (boost.interprocess इसे क्रॉस-प्लेटफॉर्म रखने में मदद करेगा)।

0

मुझे लगता है कि आपको VortexLibrary पर एक नज़र रखना चाहिए।

यह एक पूर्ण बीईईपी कार्यान्वयन है जो सहकर्मी अनुप्रयोग प्रोटोकॉल के लिए किसी भी सहकर्मी को विकसित करने के लिए एक अच्छी नींव प्रदान करता है। यह पहले से ही प्रमाणीकरण (एसएएसएल का उपयोग कर) और दोनों विकल्प, सुरक्षित कनेक्शन (टीएलएस का उपयोग कर) एकीकृत करता है।

वोर्टेक्स में एक आईडीएल कंपाइलर के साथ एक्सएमएल-आरपीसी प्रोफाइल का कार्यान्वयन भी शामिल है जो आपको मार्शलिंग सामान के लिए पर्याप्त आधार प्रदान करेगा .... और सबसे अच्छा यह है कि आप बाद में एक और विशेष प्रोटोकॉल प्रदान कर सकते हैं एक्सएमएल-आरपीसी द्वारा सीमित किए बिना द्विआधारी हस्तांतरण करने के लिए, उसी सत्र के शीर्ष पर।

यह सी के साथ प्रोग्राम किया गया है लेकिन सी ++ के साथ भी काम करता है। वर्तमान में यह चल रहा है, रिग्रेशन परीक्षण लिनक्स, विंडोज और मैक के तहत अपने कार्य को सुनिश्चित करने के साथ।

चीयर्स!

2

क्यूटी वैकल्पिक नहीं होना चाहिए?

http://qt.io

आप कम से कम पर इसका इस्तेमाल कर सकते हैं AFAIKT: विंडोज | मैक | लिनक्स/एक्स 11 | सोलारिस | एम्बेडेड लिनक्स | विंडोज एम्बेडेड | ग्रीन हिल्स सॉफ्टवेयर इंटिग्रिटी | क्यूएनएक्स | VxWorks

यह काफी IMHO है।