2011-09-20 18 views
8

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

लेकिन मैंने कुछ परीक्षण किए और पाया कि एक बाइनरीफॉर्मेटर सीरियलize() या Deserialize() कॉल में सभी संदर्भों को रिकर्सिव रेफरेंसिंग के लिए भी बनाए रखा जाता है।

क्या मैं पुष्टि कर सकता हूं कि बाइनरीफॉर्मेटर वास्तव में संदर्भ बनाए रखता है? प्रोटोबफ-नेट से यह अलग कैसे है? ऐसा लगता है कि मैं गलत तरीके से "ग्राफ क्रमबद्धता" समझता हूं? मुझे और क्या देखना चाहिए?

अग्रिम धन्यवाद।

उत्तर

7

टीएल; डॉ; संस्करण - BinaryFormatter हमेशा संदर्भों को संरक्षित करता है। के बाद से है कि आवश्यक सही रूप में एक ग्राफ पुन: पेश करने के लिए है

तथ्य यह है कि BinaryFormatter एक "ग्राफ serializer" है, के साथ "यह संदर्भ को बरकरार रखता है" पर्याय बन गया है। (; सभी पेड़-आधारित हैं XmlSerializer, DataContractSerializer (एक विशेष विकल्प के बिना सक्षम), JavascriptSerializer और Protobuf शुद्ध AsReference बिना जो है उनमें से सबसे) विकल्प एक पेड़ serializer है। वृक्ष serializers आम तौर पर संदर्भों को संरक्षित करता है (जब तक वे कुछ चालें नहीं करते हैं, यानी DataContractSerializer करता है यदि आप पूर्ण-ग्राफ मोड सक्षम करते हैं, या प्रोटोबफ-नेट AsReference के साथ करता है)। वृक्ष धारावाहिक (बिना वूडू सक्षम) एक पुनरावर्ती मॉडल के साथ एक गड़बड़ी में विस्फोट होता है, जो उन्हें स्थानांतरित करना आसान बनाता है।

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

  • कोई संबंधित समस्या नहीं^_^