यदि आप BinaryFormatter
का उपयोग कर रहे हैं, तो यह पूर्ण शामिल है डेटा में टाइप करें, जिसमें डीटीओ की असेंबली शामिल है (प्रकारों को हमेशा उनकी असेंबली द्वारा परिभाषित किया जाता है)। यहां एक विकल्प एक अलग डीटीओ लाइब्रेरी बनाना है जिसे आप प्रत्येक से संदर्भित करते हैं - लेकिन ध्यान दें कि BinaryFormatter
संस्करण के आने पर अभी भी अविश्वसनीय है: मैंने लोगों को डेटा खो दिया है क्योंकि उन्होंने अपना डीटीओ संपादित किया है और सब कुछ काम करना बंद कर दिया है।
मैं दृढ़ता से एक गैर-प्रकार-निर्भर धारावाहिक का उपयोग करने की सलाह दूंगा; उदाहरण के लिए, XmlSerializer
/DataContractSerializer
/JSON.NET
/सर्विसस्टैक JsonSerializer
, या प्रोटोबफ-नेट। इन सभी के ठीक से काम करेंगे, लेकिन महत्वपूर्ण बात आप झगड़ा ना करें, दो अलग अलग तरीकों:
- वे कर रहे हैं बहुत संस्करण के अनुकूल
- वे परवाह नहीं है अगर आप विधानसभाओं के बीच ले जाने के प्रकार
के साथ यह संभवतः सीरियलाइज्ड प्रकारों के लिए एक अलग डीटीओ असेंबली को बनाए रखने के लिए सबसे सुविधाजनक है, लेकिन यह बल नहीं है। आखिरकार, चूंकि ये धारावाहिक क्रॉस-ओएस/क्रॉस-वर्जन/क्रॉस-लैंग्वेज/क्रॉस-सीपीयू काम करने में सभी खुश हैं, इसलिए "अलग-अलग असेंबली" का तथ्य केवल "मेह, जो भी हो" है।
कुंजी टेकवे: BinaryFormatter
भंगुर हो सकता है। मैं इन-फ्लाइट डेटा को छोड़कर किसी भी चीज़ के लिए कभी भी इसकी अनुशंसा नहीं करता (उदाहरण के लिए, दो AppDomain
उदाहरणों के बीच रिमोटिंग)। मैं निश्चित रूप से किसी भी समय के लिए किसी भी चीज के लिए इसका उपयोग नहीं करता, क्योंकि मैं बस गारंटी नहीं दे सकता कि मैं इसे भविष्य में फिर से लोड कर पाऊंगा।
स्रोत
2013-05-08 09:43:34
यदि आप .NET बाइनरी क्रमबद्धता का उपयोग कर रहे हैं, तो आपको वास्तव में उसी अंतर्निहित प्रकार (जैसा कि एक ही डीएलएल से एक में) संदर्भित करना होगा। यदि आपको किसी भिन्न प्रकार में स्थानांतरित करने की आवश्यकता है तो आपको एक अलग क्रमबद्धता प्रोटोकॉल का उपयोग करने की आवश्यकता होगी। –
आपको धारावाहिक वर्ग की परिभाषा को एक अलग वर्ग लाइब्रेरी असेंबली में रखना होगा, जिसे आप दोनों अनुप्रयोगों से संदर्भित करते हैं (इस प्रकार कक्षा परिभाषा साझा करते हैं)। –