在VB.NET中生成本地唯一标识符的首选方法是什么?

kns*_*lyr 1 vb.net

我正在寻找一种为本地创建的记录类生成唯一标识符的方法,然后以各种格式(XML,SQL等)保存

我见过人们使用DateTime和GetHashCode,但这似乎有助于根据样本大小重复标识符.

GUID有点矫枉过正,因为我不需要在全球范围内有任何独特(大)的东西.我也知道使用GUID和GetHashCode来减小尺寸,但是重复也会在这里出现.

有人可以建议生成简单唯一标识符的最佳实践或方法吗?

Ale*_*ort 5

指导或增加反击.

Guid可以"从空中"生成,但需要更多空间

对于计数器,您需要将计数器存储在某处,如果使用线程,则需要使其成为线程安全的.但它的尺寸更小.


Han*_*ant 5

实现自己的几乎总是一个错误.小的唯一数字需要真正可靠地记录最后使用的数字.很难得到,硬盘崩溃,注册表偶尔会被破坏.你需要组织它,以便有一个单点的失败.类似于dbase的自动递增列.确保如果丢失了最后一个数字,也会完全丢失数据.这意味着,对于一个人来说,不应该有一种方法让用户复制数据而不复制最后一个数字的记录.或者您始终拥有所有数据的可靠副本,并可以从中恢复最后一个数字.很快.

您还将很难确保数字以原子方式递增.刚开始你的程序的两个实例通常足以引起混乱.修复这个问题很棘手,你需要一个存储数字的独立仲裁程序.

然后就是必须猜测从现在起10年或20年后会发生什么的负担.您的应用程序是否会扩展以满足当时的需求?这是非常罕见的,指望机器越来越快完成.什么是本地唯一号码现在需要成为全球唯一号码. 对此的要求非常不同.

不要乱用这个,16个字节什么都不是.使用Guid.