GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成GUID的API。生成算法很有意思,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。GUID的唯一缺陷在于生成的结果串会比较大。”
1. 一个GUID为一个128位的整数(16字节),在使用唯一标识符的情况下,你可以在所有计算机和网络之间使用这一整数。
2. GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。例如:337c7f2b-7a34-4f50-9141-bab9e6478cc8 即为有效的 GUID 值。
3. 世界上(Koffer注:应该是地球上)的任何两台计算机都不会生成重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。
4. 在 Windows 平台上,GUID 应用非常广泛:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。
.NET中使用GUID
当Windows开发人员需要一个唯一数值时,他们通常使用到一个全局唯一标识符(GUID, Globally Unique Identifier)。微软采用GUID术语来表示这一唯一数值,而这一数值能够标识一个实体,比如一个Word文档。
一个GUID为一个128位的整数(16字节),在使用唯一标识符的情况下,你可以在所有计算机和网络之间使用这一整数。
这一篇文章将解释.NET框架如何尽其最大潜力地为你建立自己的GUID。
你所看到的
GUIDs被用于整个Windows环境。当你在一个Windows系统中仔细阅读注册表时,你可以看到GUIDs被广泛用于唯一识别程序。特别地,它们作为程序的Ids集中在HKEY_CLASSES_ROOT部分(AppID键)。
这就是一个典型的GUID的格式:
936DA01F-9ABD-4d9d-80C7-02AF85C822A8
在.NET中生成一个GUID
处理一个唯一标识符使得存储和获得信息变得更加容易。在处理一个数据库中这一功能变得尤其有用,因为一个GUID能够操作一个主键。
同样,SQL Server也很好地集成了GUID的用途。SQL Server数据类型uniqueidentifier能够存储一个GUID数值。你可以通过使用NEWID()函数在SQL Server中生成这一数值,或者可以在SQL Server之外生成GUID,然后再手动地插入这一数值。
在.NET中,后面一种方法显得更加直接。.NET Framework中的基本System类包括GUID数值类型。除此之外,这一数值类型包含了处理GUID数值的方法。特别地,NewGUID方法允许你很容易地生成一个新的GUID。
以下的C#命令行程序说明这一使用过程:
using System;
namespace DisplayGUID {
class GuidExample {
static void Main(string[] args) {
GenerateGUID();
}
static void GenerateGUID() {
Console.WriteLine("GUID: " + System.Guid.NewGuid().ToString());
} } }
下面为这一程序的输出:(虽然不同系统之间的GUID是变化的。)
GUID: 9245fe4a-d402-451c-b9ed-9c1a04247482
这里是使用VB.NET时的相同代码:
Module BuilderExamples
Sub Main()
GenerateGUID()
End Sub
Public Sub GenerateGUID()
Console.WriteLine("GUID: " + System.Guid.NewGuid().ToString())
End Sub
End Module
这里是使用J#时的相同代码:
package BuilderExamples;
import System.Console;
public class GUIDExample {
public GUIDExample() { }
public static void main(String[] args) {
GenerateGUID();
}
static void GenerateGUID() {
Console.WriteLine("GUID: " + System.Guid.NewGuid().ToString());
} }
以上范例使用到System.Guid空间名称的NewGuid函数来返回一个数值。(如果你在Visual Basic中使用到这一代码,你应该感谢这一方法的简洁性。)
在这一点上,你可以看到GUID是一个很好的功能,但在程序的什么地方使用到它们,并如何使用它们?
在程序中使用一个GUID
一个GUID可以在后台数据库中操作一个主键。以下代码使用一个GUID在一个后台数据库中存储信息,这一数据库包含以下的列:
pk_guid—uniqueidentifier数据类型
name—nvarchar数据类型
这样出现一个包含文本框的简单Windows窗体。当选择按钮时,文本框中的数据被插入到数据库中。通过程序代码可以生成一个GUID并存储在其它列中:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using Microsoft.ApplicationBlocks.Data;
namespace GuidDBExampleCSharp {
public class frmBuilderTest : Form {
private Label lblName;
private TextBox txtName;
private Button btnInsert;
private Container components = null;
public frmBuilderTest() {
InitializeComponent();
}
static void Main() {
Application.Run(new frmBuilderTest());
}
private string GenerateGUID() {
return System.Guid.NewGuid().ToString();
}
private void btnInsert_Click(object sender, System.EventArgs e) {
string cs = "server=(local);Initial Catalog=Northwind;Integrated
Security=SSPI";
using ( SqlConnection conn = new SqlConnection(cs) ) {
try {
string sqlInsert = "INSERT INTO dbo.tblBuilderTest (pk_guid, [name]) VALUES ('"
+ System.Guid.NewGuid().ToString() + "', '" + txtName.Text + "')";
conn.Open();
SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sqlInsert);
} catch(Exception ex) {
System.Console.Write("Error: " + ex.Message);
} } } } }
另一个GUID程序将一个唯一的标识符分配给一个.NET类或者接口,也就是说,GUID作为一个属性被分配给类或者接口。可以使用标准属性语法来实现这一过程: 本文发表于www.bianceng.cn
我们可以扩展第一个范例来分配一个GUID。System.Runtime.InteropServices空间名称必须被引用来使用GUID属性。以下C#代码实现了这一过程:
using System;
using System.Runtime.InteropServices;
namespace DisplayGUID {
[Guid("9245fe4a-d402-451c-b9ed-9c1a04247482")]
class GuidExample {
static void Main(string[] args) {
GenerateGUID();
}
static void GenerateGUID() {
Console.WriteLine("GUID: " + System.Guid.NewGuid().ToString());
} } }
GUID永远是方便的
对于程序开发的各个方面,.NET Framework简化了建立和处理GUID数值的过程。在.NET程序需要的地方,这一功能很容易地生成唯一的数值。
分享到:
相关推荐
总的来说,C# ASP.NET中的随机码生成类是一个强大的工具,能够帮助提升Web应用的安全性。通过自定义参数和图片效果,我们可以创建出满足各种需求的验证码系统。在设计和实现这类系统时,应考虑易用性、安全性和性能...
在.NET框架中,C#语言提供了方便的API来生成GUID。标题“随机生成GUID”指的是使用C#编程语言编写的一段代码示例,其目的是演示如何生成具有唯一性的GUID值。 GUID由128位数字组成,通常以32个十六进制数字和4个破...
在"**C#174生成GUID程序 源代码**"中,我们可以学习到如何使用C#来生成这些独特的ID。 源代码是程序员与计算机进行交流的语言,是软件开发的核心。在提供的压缩包中,"C#174生成GUID程序 源代码"文件名表明包含了一...
生成GUID程序,C#源代码,System.Guid.NewGuid().ToString()全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装。在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID。 GUID...
在C#中获取程序的GUID,主要是指获取程序集(Assembly)的GUID,因为每个.NET程序集在编译时都会自动生成一个唯一的GUID,这个信息存储在程序集的元数据中。下面详细介绍如何实现这一操作: 1. **使用AssemblyInfo....
Guid是.NET Framework中的一个内置类型,用于生成全局唯一的128位整数,通常以字符串形式表示,如"{12345678-9ABC-DEF0-1234-56789ABCDEF0}"。Oracle数据库没有直接对应的类型来存储这种格式,因此需要进行转换。 ...
通过阅读和分析源码,他们可以了解如何在C#中实现GUI界面,处理用户交互,并生成GUID。Winform是.NET Framework提供的一种用于创建桌面应用程序的用户界面框架,它基于事件驱动模型,允许开发者通过拖放控件来构建UI...
Guid生成器是使用C#代码编写的,所以要想使用必须先安装dot.net环境。
在Windows系统中,它通常会基于时间戳、进程ID、线程ID等信息生成GUID,确保这些组合在理论上几乎不可能重复。 C#源码实现一个简单的GUID生成工具,首先需要引入`System`命名空间,然后可以创建一个简单的控制台...
`Guid`(全局唯一标识符)是C#中用于生成128位唯一值的类。生成的`Guid`通常以32位十六进制字符串的形式表示,中间用破折号分隔。在代码中,可以使用`Guid.NewGuid()`来创建一个新的`Guid`实例。 ```csharp Guid ...
C#中的`PrintPreviewDialog`和`PrintDocument`类协同工作,允许开发者设置打印选项,生成预览图像,并提供交互式的缩放和平移操作。 4. **实例52:如何屏蔽鼠标消息** 在某些特定情况下,可能需要阻止鼠标事件的...
在IT行业中,C# ASP.NET MVC框架是一种广泛用于构建Web应用程序的技术栈,它结合了C#编程语言、ASP.NET框架以及Model-View-Controller(MVC)设计模式。本篇文章将深入探讨如何在C# ASP.NET MVC环境中实现在线拍照...
生成GUID的常用方法在.NET中是通过`System.Guid`类提供的静态方法`NewGuid()`。这个方法会返回一个新的、全局唯一的`Guid`实例。使用这个工具,开发者可以方便地为他们的应用程序或数据记录生成这样的唯一标识,而...
在 .NET 中,GUID 类提供了生成、解析和比较 GUID 的方法。例如,`NewGuid()` 方法可以用来生成一个新的、全局唯一的 GUID,`ToString()` 方法将其转换为字符串形式,`Equals()` 和 `CompareTo()` 方法则用于比较和...
标签“guid”和“guid_生成器”进一步明确了这个压缩包的内容,它是一个专注于生成GUID的实用程序。开发者和程序员可能会经常需要这个工具,特别是在需要创建唯一标识符的场景下。 在压缩包的子文件列表中,我们只...
标题中的“简单Guid生成器”指的是一个用于生成全局唯一标识符(GUID)的软件工具,主要面向Windows 7用户,并且需要系统已安装.NET Framework 4版本。在.NET框架中,GUID是一个128位的数字,以字符串形式表示,通常...
1. **生成GUID**: 在C#中,可以使用`Guid.NewGuid()`方法来生成一个新的GUID。例如: ```csharp Guid guid = Guid.NewGuid(); ``` 2. **字符串表示**: 生成的GUID通常以32位数字加4个短横线的格式显示,如"{12345678...
2. **Guid**:使用.NET的`System.Guid`类可以生成全局唯一的标识符,几乎不可能重复。但这种流水号通常较长,不适合显示或打印。 3. **时间戳+随机数**:结合当前时间戳和随机数,可以生成既唯一又具有一定顺序的...
在C#中,可以先使用`Guid.NewGuid()`生成GUID,然后将其作为参数传递给数据库操作。 ```csharp using System.Data.SqlClient; // 假设已经建立了数据库连接 using (SqlConnection connection = new SqlConnection...
在C#中,我们可以使用`System.Random`类来生成随机数。这个类可以生成一定范围内的整数,适用于创建防伪码的数字部分。例如,我们可能需要一个固定长度的防伪码,可以通过设置随机数的起始值和结束值来控制生成的...