【发布时间】:2011-06-16 03:38:36
【问题描述】:
Wiki说它用来做类,接口唯一标识符,那么对象(实际实例)呢??
使用 SQL 时,我还看到 ID 字段的 GUID(表用户,..etc 在 asp.net MVC 模板项目中的数据库 aspnetdb 中)
所以我想清楚的了解GUID的用法,在什么情况下应该使用它,它真的是独一无二的吗,
任何解释表示赞赏
谢谢
【问题讨论】:
Wiki说它用来做类,接口唯一标识符,那么对象(实际实例)呢??
使用 SQL 时,我还看到 ID 字段的 GUID(表用户,..etc 在 asp.net MVC 模板项目中的数据库 aspnetdb 中)
所以我想清楚的了解GUID的用法,在什么情况下应该使用它,它真的是独一无二的吗,
任何解释表示赞赏
谢谢
【问题讨论】:
要全面了解 GUID 是什么,请查看我们的好朋友 Wikipedia: GUID。
它真的很独特吗
从同一台机器生成的 GUID 几乎可以保证是唯一的。您在同一台机器上生成相同的两次的机会非常小。可以说,您在更广阔的世界中生成两个相同的 GUID 的机会很小,但是这个机会仍然很小,而且这两个 GUID 相遇的机会也很小。事实上,大型强子对撞机产生吞噬地球的黑洞的可能性可能比两个相同的 GUID 在网络上某处相遇的可能性更大。
正因为如此,有些人喜欢用它作为数据库表的主键。我个人不喜欢这样做,因为:
Wiki 说它用来制作类、接口的唯一标识符
如果您需要一个跨多个不同区域的唯一标识符(例如注册表中的配置单元),那么 GUID 是一个很好的解决方案。在这种特殊情况下,它们被用于识别类型。具体实例也可以在内部使用 GUID 标识符,但这实际上只对数据对象有用。
【讨论】: