O SSAG3.0 utiliza diferentes tipos de identificadores para atender a requisitos específicos de cada cenário. Este documento descreve os métodos disponíveis para geração de IDs, seus usos recomendados e exemplos práticos.
using SSAG3.Shared.Utils;
public void ExemploDeUsoSequentialGuid()
{
Guid novoId = GuidGenerator.GenerateSequentialGuid();
Console.WriteLine($"GUID Sequencial Gerado: {novoId}");
}
using SSAG3.Shared.Utils;
public void ExemploDeUsoShortGuid()
{
string shortId = GuidGenerator.GenerateShortGuid();
Console.WriteLine($"GUID Curto Gerado: {shortId}");
}
| Método | Tamanho | Performance | Uso Ideal |
|---|---|---|---|
GenerateSequentialGuid |
16 bytes | Alta | Processos de alta frequência e ordenados. |
GenerateShortGuid |
22 caracteres | Alta | URLs amigáveis e identificações legíveis. |
Desempenho:
GenerateSequentialGuid melhora a performance do banco de dados ao reduzir a fragmentação de índices.GenerateShortGuid oferece um identificador mais compacto, ideal para situações onde o tamanho importa.Flexibilidade:
Unicidade Garantida:
System.Guid, ambos os métodos geram identificadores únicos.// =============================================
// Direitos Reservados: SSAG Tecnologia - CNPJ: 17.593.830/0001-72
// Autor: Márcio de Matos Costa
// Data: 29/11/2024
// Descrição: Utilitário para geração de GUIDs sequenciais e compactos.
// Namespace: Shared.Utils
// Objetivo: Gerar identificadores únicos.
// =============================================
using System;
namespace SSAG3.Shared.Utils
{
public static class GuidGenerator
{
public static Guid GenerateSequentialGuid()
{
byte[] guidArray = Guid.NewGuid().ToByteArray();
DateTime baseDate = new DateTime(1900, 1, 1);
TimeSpan timeSpan = DateTime.UtcNow - baseDate;
byte[] daysArray = BitConverter.GetBytes((int)timeSpan.TotalDays);
byte[] millisecondsArray = BitConverter.GetBytes((long)(timeSpan.TotalMilliseconds % TimeSpan.TicksPerDay));
Array.Reverse(daysArray);
Array.Reverse(millisecondsArray);
Array.Copy(daysArray, daysArray.Length - 2, guidArray, 0, 2);
Array.Copy(millisecondsArray, millisecondsArray.Length - 4, guidArray, 2, 4);
return new Guid(guidArray);
}
public static string GenerateShortGuid()
{
var guid = Guid.NewGuid();
var shortGuid = Convert.ToBase64String(guid.ToByteArray())
.Replace("/", "_")
.Replace("+", "-")
.Substring(0, 22);
return shortGuid;
}
}
}
SSAG3.Shared.UtilsGuidGenerator.csShared, pasta Utils.| Última Atualização | Responsável | Status |
|---|---|---|
| 29 de novembro de 2024 | Márcio de Matos Costa | Padronização do Core |