14

मैं उलझन में हूं - मुझे एक्सएमएल सीरियलाइजेशन का उपयोग कब करना चाहिए और मुझे .NET ढांचे में बाइनरी सीरियलाइजेशन का उपयोग कब करना चाहिए?मुझे .NET ढांचे में एक्सएमएल सीरियलाइजेशन बनाम बाइनरी सीरियलाइजेशन का उपयोग कब करना चाहिए?

+1

बाइनरी चाहते समय बाइनरी क्रमिकरण का उपयोग करें? भ्रम कहां है? –

+0

बस चाहते हैं? या किसी भी परिस्थिति चाहिए? –

उत्तर

13

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

+0

यदि आप "xml serialization" कहते हैं तो डेटा अनुबंध Serializer शामिल करते हैं, तो मैं आपके साथ सहमत हूं। –

+0

उत्तर – Mahantesh

+6

@Mahantesh @Adeel - "बाइनरी" के लिए धन्यवाद बहुत कुछ मुद्दा नहीं है; यह ** सच नहीं है कि बाइनरी इंटरऑपरेबल नहीं है - बस: 'बाइनरीफॉर्मेटर' (एक बाइनरी सीरिएलाइज़र का * विशिष्ट उदाहरण * एक खराब विकल्प है। कई अन्य हैं। –

2

यदि आप उपयोगकर्ता के अनुकूल या क्रॉस प्लेटफ़ॉर्म आउटपुट चाहते हैं, तो XML का उपयोग करें। इसके अलावा, एक्सएमएल क्रमबद्धता सार्वजनिक क्षेत्रों और गुणों का उपयोग क्रमबद्ध करने के लिए करती है और यदि आप चाहें तो कक्षा स्तर पर विशेषताओं और कस्टम क्रमबद्धता का उपयोग कर आउटपुट को दोबारा बदल सकते हैं। बिन.Ser। serialize करने के लिए निजी क्षेत्रों का उपयोग करता है।

+0

श्वास; ओह पुरानी मिथक ... * दोनों * अंक के विपरीत; जबकि 'बाइनरीफॉर्मेटर' वास्तव में एक क्षेत्र धारावाहिक है, यह ** ** एकमात्र बाइनरी धारावाहिक नहीं है - अधिकांश अन्य बहुत बेहतर व्यवहार करते हैं - और इसी प्रकार, 'डेटाकंट्रैक्टसेरियलाइज़र' एक्सएमएल लिखता है, और * जब तक टाइप सही ढंग से एनोटेट नहीं किया जाता है * एक के रूप में कार्य करता है * फ़ील्ड * सीरिएलाइज़र। –

+0

डेटाकंट्रैक्टसाइराइज़र, डब्ल्यूसीएफ? इस प्रश्न में इसके बारे में कोई भी शब्द नहीं है। – SeeSharp

+0

मेरा संदर्भ "xml serialization" है, जो 'XmlSerializer' जैसा नहीं है। "एक्सएमएल सीरियलाइजेशन" बस एक वर्गीकरण है; 'XmlSerializer' "xml serialization" के लिए एपीआई का एक विशिष्ट उदाहरण है। 'DataContractSerializer' ** ** **" xml serialization "निष्पादित करता है। –

34

दोनों मौजूदा उत्तर "क्रॉस प्लेटफ़ॉर्म" पर केंद्रित हैं, लेकिन यह एक असंबंधित समस्या है। वे बिंदु बना रहे हैं "अगर आप क्रॉस-प्लेटफॉर्म कर रहे हैं तो BinaryFormatter का उपयोग न करें" - जिसे मैं पूरी तरह से समर्थन देता हूं। हालांकि बहुत अधिक क्रॉस-प्लेटफार्म - प्रोटोबफ/एएसएन .1 प्रमुख उदाहरण हैं, बाइनरी सीरियलाइजेशन प्रारूपों की एक श्रृंखला है।

तो, चलो देखते हैं कि प्रत्येक को क्या पेशकश करनी है;

  • बाइनरी (दोनों सिरों पर) आम तौर पर छोटा होता है, आम तौर पर प्रक्रिया करने के लिए तेजी से, और नहीं आसानी से मानव पठनीय/संपादन योग्य
  • पाठ प्रारूप (xml/json) (बाइनरी तुलना में अधिक वर्बोज़ हो जाते हैं, हालांकि अक्सर अच्छी तरह से संपीड़ित करता है), लेकिन हाथ से काम करना बहुत आसान है; लेकिन वह सब पाठ प्रसंस्करण एक मानचित्रण उन्हें बनाने के लिए धीमी
    • एक्सएमएल बहुत आम है इस तरह के XSD, xslt और मजबूत एक्सएमएल संपादक के रूप में समर्थन gooling
    • json से वेब सेवाओं, और लाभ है ब्राउज़र में मुख्य खिलाड़ी है आदत है आधारित संचारों (हालांकि यह भी वेब सेवाओं में प्रयोग किया जाता है) - जब तक आप चुनते के रूप में कम औपचारिक, लेकिन अभी भी बहुत प्रभावी

सूचना कैसे अंतर न तो एक ताकत है और न ही या तो की कमजोरी है, हो जाती है एक उपयुक्त द्विआधारी प्रारूप!

Here's an answer जो आपके संदर्भ के लिए .NET serializers के अधिकांश क्रमिकरण समय, deserialization और अंतरिक्ष मीट्रिक की तुलना करता है।

+0

किंडा उत्सुक, आप अपने पुराने उत्तरों को कैसे ढूंढते हैं? बस आज मैंने कुछ संबंधित प्रश्नों के अपने हालिया उत्तरों में से एक को ट्रैक करने का प्रयास किया और मुझे इसे खोजने में मुश्किल हुई। –

+0

@ एचबी। आमतौर पर Google के माध्यम से, [उदाहरण के लिए] (http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=%2B%22ok+i'll+bite%22+%2Bgravell+site:stackoverflow.com) –

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