हमारे आवेदन में हम Xml फाइलें एक विशेषता के साथ बना रहे हैं, जिसमें एक दिशानिर्देश मूल्य है। फ़ाइल अपग्रेड के बीच संगत होना आवश्यक है। इसलिए भले ही फ़ाइल में बाकी सब कुछ बदल जाए, लेकिन विशेषता के लिए गाइड मूल्य समान रहना चाहिए।
एक स्पष्ट समाधान उनके लिए इस्तेमाल किए जाने वाले फ़ाइलनाम और गाइड के साथ एक स्थिर शब्दकोश बनाना था। फिर जब भी हम फ़ाइल जनरेट करते हैं, तो हम फ़ाइल नाम के लिए शब्दकोश को देखते हैं और संबंधित गाइड का उपयोग करते हैं। लेकिन यह संभव नहीं है, क्योंकि हम 100 की फाइलों के पैमाने पर हो सकते हैं और कुछ छापों की बड़ी सूची को बनाए नहीं रखना चाहते।
इसलिए एक अन्य तरीका यह था कि गाइड को फाइल के पथ के आधार पर समान बनाया जाए। चूंकि हमारी फ़ाइल पथ और एप्लिकेशन निर्देशिका संरचना अद्वितीय हैं, इसलिए उस पथ के लिए मार्गदर्शिका अद्वितीय होनी चाहिए। इसलिए हर बार जब हम अपग्रेड चलाते हैं, तो फ़ाइल को उसी पथ पर आधारित गाइड मिलती है। मुझे इस तरह के ' निर्धारक मार्गदर्शक ' (धन्यवाद एल्टन स्टोनमैन) को उत्पन्न करने के लिए एक अच्छा तरीका मिला । यह मूल रूप से ऐसा करता है:
private Guid GetDeterministicGuid(string input)
{
//use MD5 hash to get a 16-byte hash of the string:
MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
byte[] inputBytes = Encoding.Default.GetBytes(input);
byte[] hashBytes = provider.ComputeHash(inputBytes);
//generate a guid from the hash:
Guid hashGuid = new Guid(hashBytes);
return hashGuid;
}
तो एक तार दिया, गाइड हमेशा एक ही रहेगा।
क्या ऐसा करने के लिए कोई अन्य दृष्टिकोण या अनुशंसित तरीके हैं? उस विधि के पेशेवरों या विपक्ष क्या हैं?