Dalam aplikasi kami, kami membuat file Xml dengan atribut yang memiliki nilai Guid. Nilai ini harus konsisten di antara peningkatan file. Jadi, meskipun semua hal lain di file berubah, nilai guid untuk atribut harus tetap sama.
Salah satu solusi yang jelas adalah membuat kamus statis dengan nama file dan Panduan yang akan digunakan untuk kamus tersebut. Kemudian setiap kali kami membuat file, kami mencari nama file di kamus dan menggunakan guid yang sesuai. Tapi ini tidak layak karena kami mungkin menskalakan hingga 100 file dan tidak ingin menyimpan daftar besar panduan.
Jadi pendekatan lain adalah membuat Panduan sama berdasarkan jalur file. Karena jalur file dan struktur direktori aplikasi kami unik, Panduan harus unik untuk jalur itu. Jadi setiap kali kita menjalankan peningkatan, file tersebut mendapatkan panduan yang sama berdasarkan jalurnya. Saya menemukan satu cara keren untuk menghasilkan 'Panduan Penentu ' seperti itu (Terima kasih Elton Stoneman). Ini pada dasarnya melakukan ini:
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;
}
Jadi jika diberi string, Panduannya akan selalu sama.
Apakah ada pendekatan lain atau cara yang direkomendasikan untuk melakukan ini? Apa pro atau kontra dari metode itu?