java - जेएसओएन बनाम एक्सएमएल बनाम जावा सीरियलाइजेशन




json serialization (3)

मैं सोच रहा हूं कि नेटवर्क पर स्थानांतरित ऑब्जेक्ट से निपटने के दौरान हम किस क्रमबद्ध तंत्र को चुनते हैं। पक्ष और विपक्ष क्या होते हैं ?

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


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

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

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

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

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


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

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

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

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

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


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





xml-serialization