2009-07-10 34 views
9

मैं एक अच्छे ओपन सोर्स नेटवर्क आधारित पब/सब (पर्यवेक्षक पैटर्न) पुस्तकालय के लिए बाजार में हूं। मैं किसी भी नहीं मिला है मुझे पसंद है:सर्वश्रेष्ठ प्रकाशित/सदस्यता लें "मिडलवेयर"

  • JMS - $$, आईडीएल

  • CORBA/बर्फ के उपयोग - जावा से बंधा, गूंगा द्विआधारी धब्बे

  • NDDS के रूप में संदेश की सामग्री के व्यवहार करता है - पब/उप ऑन-शीर्ष RPC के साथ बनाया गया है, CORBA एपीआई गैर सहज है

  • JBoss/ESB - साथ भी परिचित नहीं

,210

यह अच्छा होगा अगर इस तरह के एक पैकेज सकता है के लिए निम्न:

  • नेटवर्क आधारित

  • पेलोड डेटा से वाकिफ है, उपयोगकर्ताओं के बारे में endian/क्रमबद्धता चिंता करने की ज़रूरत नहीं होना चाहिए मुद्दों

  • एकाधिक भाषा समर्थन (सी ++, रूबी, जावा, पायथन अच्छा होगा)

  • कोई ऑटो-जेनरेट कोड नहीं (कोई आईडीएल नहीं!)

  • सहज सदस्यता/विषय प्रबंधन

मस्ती के लिए, मैं created my own है। विचार?

उत्तर

3

हम RTI DDS कार्यान्वयन का उपयोग करते हैं। यह $$ खर्च करता है, लेकिन यह कई गुणवत्ता सेवा पैरामीटर का समर्थन करता है।

OpenDDS नामक एक मुफ्त डीडीएस कार्यान्वयन है, लेकिन मैंने इसका उपयोग नहीं किया है।

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

+2

मैंने हमेशा सोचा है कि डेटा एक्सएमएल होना चाहिए, इस तरह यह अर्ध-पूर्वनिर्धारित (स्कीमा के माध्यम से) है, लेकिन किसी भाषा से बंधे नहीं है। – David

2

विभिन्न जेएमएस कार्यान्वयन में थोड़ा गहराई से देखो।

उनमें से अधिकतर केवल जावा नहीं हैं, वे अन्य भाषाओं के लिए क्लाइंट लाइब्रेरी भी प्रदान करते हैं।

सन्स ओपनएमक्यू में कम से कम एक सी ++ इंटरफ़ेस है, अपाचे ActiveMQ कई सामान्य भाषाओं के लिए क्लाइंट साइड लाइब्रेरी प्रदान करता है।

जब संदेश स्वरूपों की बात आती है, तो आमतौर पर उन्हें संदेश मिडलवेयर से ही हटा दिया जाता है। आप अपना खुद का संदेश प्रारूप परिभाषित कर सकते हैं। आप अपनी खुद की एक्सएमएल स्कीमा परिभाषित कर सकते हैं और एक्सएमएल संदेश भेज सकते हैं। यदि आप चाहें तो कुछ 3. पार्टी लाइब्रेरी का उपयोग करके आप बीईआर एन्कोडेड ASN.1 भेज सकते हैं। या JSON लाइब्रेरी के साथ डेटा स्वरूपित करें और पार्स करें।

0

आप PubSubHubbub पर एक नज़र डाल सकते हैं। यह वेबहूक के माध्यम से पबब को कम करने के लिए एटम/आरएसएस का विस्तार है। इंटरफेस HTTP और एक्सएमएल है, इसलिए यह भाषा-अज्ञेयवादी है। यह अब गोद लेने में बढ़ रहा है कि Google रीडर, फ्रेंडफिड और फीडबर्नर इसका उपयोग कर रहे हैं।मुख्य उपयोग केस ब्लॉग और सामान है, लेकिन निश्चित रूप से आपके पास किसी भी प्रकार का पेलोड हो सकता है।

Google AppEngine के लिए अब तक का एकमात्र खुला स्रोत कार्यान्वयन this one है। वे कहते हैं कि स्वयं-होस्टिंग के लिए समर्थन आ रहा है।

1

आपको मस्केल लाइब्रेरी में रुचि हो सकती है (अस्वीकरण: मैंने इसे लिखा है, इसलिए मुझे पक्षपातपूर्ण हो सकता है)। मुझे लगता है कि यह आपके द्वारा निर्दिष्ट सभी मानदंडों को पूरा करता है।

https://public.msli.com/lcs/muscle/

0

भी OpenSplice DDS नहीं है। यह आरटीआई के डीडीएस के समान है, सिवाय इसके कि यह एल जीपीएल है!

चेक it आउट:

+1

ओपनस्प्लिस से लिंक http://www.opensplice.org/cgi-bin/twiki/view/Community/WebHome – tuergeist

+0

उन्होंने कहा "कोई ऑटो-जेनरेट कोड नहीं (कोई आईडीएल नहीं!)" – tobsen

4

इस सूत्र में पहले डाक से बताया-आउट के रूप में, अपने विकल्पों में से एक OpenSplice DDS जो OMG DDS स्टैंडर्ड के एक मुक्त स्रोत कार्यान्वयन (समान मानक NDDS द्वारा कार्यान्वित) है ।

  • प्रदर्शन
  • क्यूओएस (हठ, दोष-सहिष्णुता, समयबद्धता, आदि) के लिए रिच समर्थन
  • :

    अन्य मिडलवेयर आप विचार कर रहे हैं से अधिक OpenSplice DDS के मुख्य लाभ के रूप में संक्षेप किया जा सकता है

  • डाटा केन्द्रित (लगाने और उन्हें छानने डेटा स्ट्रीम में जैसे संभावना)

कोई चीज जो मुझे समझ में करना चाहते हैं आईडीएल के साथ अपने मुद्दे हैं क्या है। डीडीएस आईडीएल का उपयोग उपयोगकर्ता डेटा प्रकारों को निर्दिष्ट करने के भाषा-स्वतंत्र तरीके के रूप में करता है। हालांकि डीडीएस आईडीएल तक ही सीमित नहीं है, यदि आप चाहें तो एक्सएमएल का उपयोग कर सकते हैं। अपने डेटा प्रकार का उल्लेख करते है और एक विशिष्ट प्रोग्रामिंग भाषा से उनका प्रतिनिधित्व decoupling का लाभ यह है कि मिडलवेयर कर सकते हैं:

(1) आप से दूर serializing डेटा का बोझ ले

(2) बहुत उत्पन्न समय/अंतरिक्ष कुशल क्रमबद्धता,

(3) सुनिश्चित एंड-टू-एंड प्रकार सुरक्षा,

(4) (न सिर्फ JMS में तरह हेडर) पूरे डेटा प्रकार पर सामग्री फ़िल्टरिंग की अनुमति देते हैं, और

(5) enabl ई प्रोग्रामिंग भाषाओं में वायर इंटरऑपरेबिलिटी (उदा। जावा, सी/सी ++, सी #, आदि)

आपके द्वारा डिजाइन किए जा रहे सिस्टम या एप्लिकेशन के आधार पर, उपरोक्त कुछ गुण उपयोगी/प्रासंगिक नहीं हो सकते हैं। उस स्थिति में, आप केवल एक, कुछ, "डीडीएस प्रकार" उत्पन्न कर सकते हैं जो आपके द्वारा क्रमबद्ध डेटा धारक है।

यदि आप जेएमएस के बारे में सोचते हैं, तो यह आपको 5 अलग-अलग विषय प्रकार प्रदान करता है जिनका उपयोग आप अपना डेटा भेजने के लिए कर सकते हैं। डीडीएस के साथ आप वही कर सकते हैं, लेकिन आपके पास बिल्कुल विषय प्रकार को परिभाषित करने की लचीलापन है।

अंत में, आप स्केल और डीडीएस पर this blog entry पर लंबी चर्चा के लिए जांच कर सकते हैं कि क्यों प्रकार और स्थैतिक-टाइपिंग विशेष रूप से वितरित सिस्टम में अच्छे हैं।

-ac

1

तीन मैं का उपयोग किया है:

  • आईबीएम MQ श्रृंखला -, बहुत महँगा के साथ काम करने के लिए कठिन।

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

  • ActiveMQ - मैं वर्तमान में इसका उपयोग कर रहा हूं लेकिन इसे अक्सर क्रैश ढूंढ रहा हूं। इसके अलावा जावा से वसंत कुछ परियोजनाओं की आवश्यकता है जैसे spring.net। यह काम करता है लेकिन स्थिरता के मुद्दों के कारण मैं इसकी सिफारिश नहीं कर सकता।

इसके अलावा मेरे अपने Pub/Sub निर्माण करने की कोशिश में MSMQ इस्तेमाल किया है, लेकिन अपने अटक के बाद से यह यह बॉक्स से बाहर हैंडल नहीं करता कोड की एक पर्याप्त राशि लेखन।

+0

टीआईबीसीओ रेन्डेज़वस और टीआईबीसीओ ईएमएस दो अलग-अलग उत्पाद हैं । ईएमएस एक जेएमएस प्रदाता है जिसमें एक या अधिक केंद्रीय संदेश सर्वर शामिल हैं। रेंडेज़स एक कनेक्शन रहित पब/सब मिडलवेयर है जिसमें कोई केंद्रीय सर्वर नहीं है। आपकी आवश्यकताओं के आधार पर दो उत्पाद मानार्थ हैं। – scaganoff

0

आईबीएम वेबशेयर एमक्यू, और यदि आप कॉर्पोरेट स्तर पर काम करते हैं तो लाइसेंस बहुत अधिक नहीं है।

+1

ओपी ने ओपन सोर्स * समाधान के लिए कहा! –