2012-06-19 24 views
21

मुझे आश्चर्य है कि नेटवर्क पर स्थानांतरित ऑब्जेक्ट से निपटने के दौरान हम किस क्रमबद्ध तंत्र को चुनते हैं। पक्ष और विपक्ष क्या होते हैं ?जावा सीरियलाइजेशन बनाम जेएसओएन बनाम एक्सएमएल

मैं समय हम हस्तांतरण प्रारूप के बाद से JSON या XMLAJAX के लिए उपयोग के सबसे पता काफी Javascript प्रारूप हैं और प्लस JSON छोटे पदचिह्न के साथ बहुत हल्के है, इसलिए Java क्रमबद्धता तालिका से बाहर पूरी तरह से है?

उत्तर

15

आम तौर पर महत्वपूर्ण सवाल यह है कि कौन सा क्लाइंट धारावाहिक वस्तुओं - ब्राउज़र/जावास्क्रिप्ट इंजन जैसे (नोड-जेएस), जावा क्लाइंट, अज्ञात/एकाधिक क्लाइंट प्राप्त करेगा।

JSON - जेएसओएन सिंटैक्स मूल रूप से जावास्क्रिप्ट है और इसलिए जेएस इंजन के साथ कोई भी घटक अपने पार्सिंग को बहुत अच्छी तरह से संभाल लेगा - यहां तक ​​कि जटिल डेटा-स्ट्रक्चर को "जीवित" ऑब्जेक्ट्स को कुशलता से परिवर्तित कर दिया जाएगा।जेएसओएन पार्सर्स व्यावहारिक रूप से किसी भी भाषा के लिए मौजूद हैं और जेएस इंजन का उपयोग न करने के दौरान भी उपयोग करना आसान है, (उदाहरण के लिए Google जीसन लें जो JSON को आसानी से संबंधित वस्तुओं में परिवर्तित करने में सक्षम है) जो क्रॉस-भाषा संचार के लिए एक अच्छा उम्मीदवार बनाता है - उदाहरण के लिए messaging architecture में।

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

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

एक और नोट - सामान्य रूप से सीरियलाइजेशन का ओवरहेड होता है। हालांकि जब नेटवर्क पर संचार किया जाता है तो बाधा अक्सर सीरियलाइजेशन/deserialization के बजाय नेटवर्क होता है।

+0

तो क्या आप अभी भी जावा सीरियलाइजेशन पर जेएसओएन या एक्सएमएल पर विचार करेंगे जब यह जावा-टू-जावा संचार है? – peter

+0

यदि आप जो भी पास कर रहे हैं वह डेटा है जो मैं एक्सएमएल या जेएसओएन के लिए जाऊंगा। मैं मैन्युअल रूप से जावा ऑब्जेक्ट्स को क्रमबद्ध करने और संचारित करने में नहीं जाऊंगा। जावा आरएमआई में देखें यदि यह दोनों सिरों पर एक ही ऑब्जेक्ट परिभाषा है, और यदि आप रिमोट ऑब्जेक्ट पर विधियों को आविष्कार करने में रुचि रखते हैं। आशा करता हूँ की ये काम करेगा। –

6

मुझे लगता है कि यह निर्भर करता है। यदि आप http अनुरोध या कुछ भेज रहे हैं तो JSON या XML स्पष्ट रूप से एक अच्छी पसंद है। यदि आप कुछ वितरित एल्गोरिदम के लिए एक टीसीपी सॉकेट पर एक जावा ऑब्जेक्ट भेज रहे हैं या मुझे लगता है कि जावा सीरियलाइजेशन आसान/बेहतर है

1

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

  1. JSON प्रतिक्रिया को XML के विपरीत एन्कोडेड प्रतिक्रिया की आवश्यकता नहीं है।
  2. जेएसओएन की हैंडलिंग और प्रसंस्करण एक्सएमएल की तुलना में तेज़ी से है क्योंकि इसका विश्लेषण नहीं किया गया है।
  3. AJAX के लिए XML प्रतिक्रिया हमेशा एन्कोड किया जाता है इसलिए प्रसंस्करण में समय लगता है।
  4. जेएसओएन यूआई से संबंधित कोडिंग के लिए जेक्री के साथ सबसे अच्छा फिट बैठता है और तेज़ है।
  5. भारी डेटा प्रोसेसिंग: सर्वर से/से अनुक्रमण सूचकांक डेटा लाने, जेएसओएन हैंडलिंग तेज है।
4

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

  • उपभोक्ता कुछ जानकारी का अनुरोध और स्क्रीन पर कुछ प्रस्तुत करना अजाक्स का उपयोग एक ब्राउज़र है, तो आम तौर पर जेसन के रूप में सबसे अधिक उपयुक्त रहेगी इसकी पहले से ही जावास्क्रिप्ट वस्तु प्रारूप में है और वहाँ जावास्क्रिप्ट संगत वस्तुओं के लिए परिवर्तित करने की कोई भूमि के ऊपर है । वास्तव में कई अजाक्स libs (उदा। JQuery) जेसन के लिए अच्छा समर्थन है।

  • यदि आप उपभोक्ता एक अन्य अनुप्रयोग है जो जावा में हो सकता है या नहीं हो सकता है, तो एक्सएमएल सीरियलाइजेशन तंत्र पसंद है। वेब सेवाएं एक्सएमएल का बहुत भारी उपयोग करती हैं।

  • यदि आपका उपभोक्ता एक और जावा प्रोग्राम है तो निश्चित रूप से जावा क्रमबद्धता विकल्प (उदा। आरएमआई) पसंद किया जाता है। तो यह अभी तक बाहर नहीं है :-)।

लेकिन हाँ एक्सएमएल और जेसन के बीच धुंधली रेखा है। मैंने यहां जो सामान्य उल्लेख किया है वह सामान्य अभ्यास है। यहां एक nice article है जो xml बनाम जेसन पर सभी पहलू डाल रहा है।

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