2009-01-05 14 views
10

मैं वर्तमान में जावा नेटवर्किंग लाइब्रेरी खोज रहा हूं। मैं जो करना चाहता हूं वह क्लाइंट से एक्सएमएल, जेएसओएन या अन्य धारावाहिक संदेशों को क्लाइंट से दूसरे क्लाइंट और/या क्लाइंट को सर्वर पर भेज रहा है।क्या कोई अच्छी जावा नेटवर्किंग लाइब्रेरी है?

मेरा पहला प्रयास प्रत्येक संदेश के लिए POJO बनाना था, साथ ही संदेश भेजने के लिए एक संदेश लेखक और इसे प्राप्त करने के लिए एक संदेश लेखक। प्लस सॉकेट और त्रुटि हैंडलिंग। जो बहुत अधिक त्रुटि प्रवण काम है।

जो मैं खोज रहा हूं वह उच्च स्तर की लाइब्रेरी है जो सॉकेट से निकलती है। इसके अलावा इसे संदेशों के लिए कोड जनरेशन जैसे कुछ का समर्थन करना चाहिए।

Google के प्रोटोकॉल बफर (http://code.google.com/apis/protocolbuffers/) आशाजनक लग रहा है। लेकिन क्या विकल्प हैं? जोर गति या सुरक्षा (फिलहाल) पर नहीं है, यह केवल विश्वसनीय और कम मात्रा में कार्यान्वयन समय के साथ काम करना चाहिए।

उत्तर

4

आह ... गोचा। लेकिन कोड जेन का उपयोग करने के बजाय। मार्शल और अनारशेल के लिए, यदि आपके पास दोनों सिरों पर जावा है, तो क्या आप सरल ऑब्जेक्ट क्रमबद्धता का उपयोग कर सकते हैं? यदि प्रदर्शन और/या संदेश का आकार चिंता का विषय है, तो आप अपना संदेश वर्ग बाहरी कर सकते हैं।

मैंने पहले प्रोटोबफ को नहीं देखा था। बहुत सभ्य लग रहा है। इसका उपयोग करके, आपको केवल एक ट्रांसमिशन विधि की आवश्यकता होगी।

+1

जेग्रुप संदेश को स्थानांतरित करने के लिए काफी आशाजनक दिखता है। –

2

यदि आप पहले से ही वसंत का उपयोग नहीं कर रहे हैं, तो यह संभवतः आप जितना अधिक ढूंढ रहे हैं उससे अधिक हो सकता है। लेकिन HttpInvoker messagess भेजने के लिए एक बहुत उच्च स्तर abstraction है। remoting information के सभी ऑनलाइन उपलब्ध हैं, और HTTP Invoker अनुभाग 17.4 पर स्थित है।

13

आपके पास कच्चे सॉकेट से कितने अमूर्त हैं, इस पर निर्भर करते हुए आपके पास कई विकल्प हैं। RMI और JMS

  • प्रत्येक ग्राहक में JMX Mbeans और सर्वर को लागू करें और प्रयोग JMX दूरस्थ: एक बार जब आप सॉकेट स्तरीय प्रोग्रामिंग से विदा, आप दूरस्थ क्षेत्र,

    • जावा के लिए मानक दूरस्थ विकल्प में काफी हो संदेश उत्तीर्ण संचालन का आह्वान करने के लिए।
    • यदि आपको लगता है कि आप मल्टीकास्ट का उपयोग करना चाहते हैं, तो मैं निश्चित रूप से JGroups जांचूंगा।
    • यदि आप अपना खुद का प्रोटोकॉल बनाना चाहते हैं लेकिन कुछ मौजूदा बिल्डिंग ब्लॉक का उपयोग करना चाहते हैं, तो Jakarta Commons Net देखें। उत्तर # 1 में संदर्भित HttpClient इस पैकेज में शामिल किया गया है।
    • कुछ दिलचस्प स्वामित्व संदेश प्रणाली भी हैं जिनमें Spread और DBus जैसे कई प्लेटफ़ॉर्म/भाषाओं का समर्थन करने का जोड़ा गुण है।
    • वेब सेवा का उल्लेख किए बिना रिमोटिंग विकल्पों की गणना नहीं कर सकता .... लेकिन .... ब्लीच!

    मैं पूरी तरह से सुनिश्चित करें कि आप संदेशों के लिए कोड पीढ़ी से क्या मतलब है नहीं कर रहा हूँ। क्या आप विस्तार से समझा सकते हैं ?

  • +0

    मुझे वास्तविक संदेश का प्रतिनिधित्व करने के लिए किसी ऑब्जेक्ट की आवश्यकता है। (वर्ग संदेश {getId(); getSender(); ...}) लेकिन आपको इस ऑब्जेक्ट में स्ट्रीम और स्ट्रीम से अपने डेटा को खिलाने के लिए एक पाठक होना चाहिए। मैं इस प्रक्रिया को सरल बनाना चाहता हूं। Protobuf एक संदेश विवरण फ़ाइल से एक पाठक/लेखक उत्पन्न कर सकते हैं। –

    0

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

    +0

    मैंने अभी जेजी समूह और जावा क्रमबद्धता के साथ थोड़ा सा खेला। ऐसा लगता है कि यह वह चीज है जिसे मैं ढूंढ रहा था। धन्यवाद। –

    0

    आईडीएल (इंटरफ़ेस विवरण के रूप भाषाएं) आधारित भाषा तटस्थ (प्रकार) नेटवर्क लाइब्रेरी/ढांचे:

    • Thrift - अपाचे लाइसेंस।
    • Ice - जीपीएल और वाणिज्यिक लाइसेंस।
    • CORBA - यदि आप अधिक विकल्प चाहते हैं।
    0

    मेरा सुझाव है कि आप संदेश भेजने के लिए ActiveMQ देखें। यह सरल, लचीला और तेज़ है। यह Serializable ऑब्जेक्ट्स का समर्थन करता है, लेकिन मैप संदेश और अन्य जेएमएस संदेश प्रकारों का भी समर्थन करता है, इसलिए जब तक दक्षता महत्वपूर्ण न हो, आपको अपने स्वयं के सीरियलाइजेशन प्रारूप की आवश्यकता नहीं होनी चाहिए। यदि प्रदर्शन महत्वपूर्ण है तो मैं हेसियन का सुझाव दूंगा, कोड कोड की आवश्यकता के बिना यह बहुत तेज है।

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