यह कैसे आप अपने डेटा अनुबंध की स्थापना की है पर निर्भर करता है।
डब्ल्यूसीएफ में, सभी डिफ़ॉल्टों का उपयोग करके, आपकी सेवा डेटा ऑब्जेक्ट सेरियलाइज़र (डीसीएस) का उपयोग आपके ऑब्जेक्ट को एक्सएमएल में क्रमबद्ध करने के लिए करेगी। डीसीएस आपके क्षेत्रों को क्रमशः क्रमबद्ध करेगा - पहले सार्वजनिक, फिर निजी वाले। प्रत्येक दृश्यता समूह के भीतर, यह नाम से फ़ील्ड/गुणों को क्रमबद्ध रूप से आदेश देगा।
इस प्रकार, यदि आप एक नया सार्वजनिक संपत्ति MiddleName
लागू करने और आप पहले से ही FirstName
और LastName
था, तो आप ठीक हो जाएगा: वर्ष एक्सएमएल
<YourObject>
....
<FirstName>.....</FirstName>
<LastName>.....</LastName>
</YourObject>
हो गया होता और अपने नए एक बस एक नया जोड़ना होगा अंत में संपत्ति:
<YourObject>
....
<FirstName>.....</FirstName>
<LastName>.....</LastName>
<MiddleName>....</MiddleName>
</YourObject>
ऐसे ही एक अद्यतन "अंत में कुछ जोड़ने" ठीक काम करना चाहिए, डीसीएस बस एक्सएमएल में अतिरिक्त टैग अनदेखी करेंगे।
हालांकि: यदि आप एक संपत्ति Gender
कहा जाता है, कि<FirstName>
और <LastName>
के बीच अटक जाएगा और इस प्रकार अपने XML में डेटा के क्रम टूट जाएगा और इस प्रकार डेटा अनुबंध टूट जाएगा पेश किया था - कोई "पुराने" ग्राहक होगा अपनी नई सेवा कॉल करने में सक्षम हो।
आदेश में इस का नियंत्रण लेने के लिए, आप अपने डेटा अनुबंध में अपने डेटा के सदस्यों पर विशिष्ट Order=
गुण रख सकते हैं:
[DataContract]
public class SomeAddress
{
[DataMember(Order=0)]
public string FirstName;
[DataMember(Order=1)]
public string LastName;
}
तो आप आसानी से एक नया संपत्ति जोड़ सकते हैं - बस के अंत में जोड़ने सूचि!
[DataContract]
public class SomeAddress
{
[DataMember(Order=0)]
public string FirstName;
[DataMember(Order=1)]
public string LastName;
[DataMember(Order=2)]
public string Gender;
}
तो अपने डेटा ठेके पर Order=
विशेषता का उपयोग करके, आप अपने एक्सएमएल लेआउट का नियंत्रण ले जा सकते हैं, और आप मौजूदा डेटा ठेके नॉन-ब्रेकिंग अद्यतन की सरल एक्सटेंशन बना सकते हैं।
अधिक पृष्ठभूमि और गहन जानकारी के लिए, आपको एमएसडीएन पत्रिका की वेबसाइट पर Serialization in Windows Communication Foundation पढ़ना चाहिए - अत्यधिक अनुशंसित।
मैं इसे आज़माउंगा लेकिन उम्मीद है कि "असेंबली लोड नहीं हो सका" संस्करण जो मुझे मिल रहा है? – HitLikeAHammer
उसने ऐसा किया। मैंने किसी भी मौजूदा सदस्यों के आदेश को नहीं बदला लेकिन नए सदस्यों को आदेश = 2 जोड़ा। अगले संस्करण में सभी नए सदस्यों पर ऑर्डर = 3 होगा और इसी तरह। – HitLikeAHammer