Come lavorare con i GUID in C # 8

Quando si lavora in applicazioni, spesso potrebbe essere necessario utilizzare identificatori univoci globali (GUID). Identificatori univoci come le chiavi primarie in un database SQL assicurano che oggetti importanti come clienti e fatture non vengano duplicati o sovrascritti. Senza identificatori univoci, non potremmo prevenire la perdita di dati o garantire l'integrità dei dati delle nostre applicazioni. 

Un identificatore univoco globale o GUID rappresenta un numero di identificazione gigantesco, un numero così grande che è matematicamente garantito essere univoco non solo in un singolo sistema come un database, ma su più sistemi o applicazioni distribuite. In questo articolo viene illustrato il motivo per cui sono necessari i GUID e come è possibile lavorare con i GUID in C # 8.0.

Per lavorare con gli esempi di codice forniti in questo articolo, dovresti avere Visual Studio 2019 installato nel tuo sistema. Se non hai già una copia, puoi scaricare Visual Studio 2019 qui. 

Crea un progetto di applicazione console in Visual Studio

Prima di tutto, creiamo un progetto di applicazione console .NET Core in Visual Studio. Supponendo che Visual Studio 2019 sia installato nel sistema, seguire i passaggi descritti di seguito per creare un nuovo progetto di applicazione console .NET Core in Visual Studio.

  1. Avvia l'IDE di Visual Studio.
  2. Fai clic su "Crea nuovo progetto".
  3. Nella finestra "Crea nuovo progetto", seleziona "App Console (.NET Core)" dall'elenco dei modelli visualizzati.
  4. Fare clic su Avanti.
  5. Nella finestra "Configura il tuo nuovo progetto" mostrata di seguito, specifica il nome e la posizione per il nuovo progetto.
  6. Fare clic su Crea.

Questo creerà un nuovo progetto di applicazione console .NET Core in Visual Studio 2019. Useremo questo progetto per lavorare con i GUID nelle sezioni successive di questo articolo. Tieni presente che qui utilizzeremo C # 8, quindi potresti voler aggiornare la versione della lingua nel tuo progetto.

Perché abbiamo bisogno dei GUID?

Immagina di avere un'applicazione per punti vendita disponibile sia in modalità online che offline sulla tua applicazione mobile. Supponiamo che la tua applicazione fornisca numeri ID che vengono generati automaticamente a partire da 1. Come puoi unire i dati offline una volta ripristinata la connettività? E se i tuoi numeri ID fossero stati generati in entrambe le modalità? Possono esserci collisioni, giusto? Come gestireste i numeri ID duplicati? Potresti sicuramente gestirlo, ma dovresti scrivere molto codice, che non è quello che vuoi fare.

È qui che i GUID vengono in soccorso. Un GUID è un numero gigantesco - lungo 128 bit - ed è quasi unico. Perché quasi unico? Perché non possiamo dire che è unico? Fondamentalmente, il numero di GUID possibili è così grande che le possibilità di collisione sono estremamente minime. Tuttavia, le possibilità di collisione non sono pari a zero. 

È possibile sfruttare i GUID rendendoli le chiavi primarie per le tabelle del database. L'uso dei GUID ti aiuterà anche a evitare conflitti di unione quando unisci due o più database. Un altro vantaggio dei GUID è che puoi generarli offline: non è necessario essere connessi alla rete oa Internet.

Come sono rappresentati i GUID?

Quello che segue è un esempio di un GUID. Notare che un GUID è in genere lungo 128 bit ed è rappresentato in esadecimale.

eaa24756-3fac-4e46-b4bb-074ff4f5b846

Un GUID è organizzato come una sequenza ben definita di 32 cifre esadecimali raggruppate in blocchi di 8-4-4-4-12. Quindi puoi avere un massimo di 2 ^ 128 GUID.

Crea un GUID in C # 8

In questa sezione impareremo come lavorare con i GUID in C #. È possibile creare GUID in .NET utilizzando la struttura Guid disponibile come parte dello spazio dei nomi di sistema. Ecco il modo più semplice per generare un GUID in C #. Scrivere il codice seguente nel metodo Main () del file Program.cs nel progetto creato in precedenza.

Guid obj = Guid.NewGuid ();

Console.WriteLine ("Il Guid appena creato è:" + obj.ToString ());

Console.ReadKey ();

Crea un GUID vuoto in C # 8

Poiché Guid è una struttura, è un tipo di valore e quindi non è possibile impostarlo su null. Per creare Guide vuote puoi scrivere il seguente codice.

ID Guid = nuovo Guid ();

if (id == Guid.Empty)

Console.WriteLine ("Il Guid è vuoto");

Un Guid.Empty ha un valore di 00000000-0000-0000-0000-000000000000. È possibile sfruttare un GUID vuoto per confrontarlo con un altro oggetto GUID per determinare se è diverso da zero. Lo snippet di codice seguente lo illustra. 

if (guid! = Guid.Empty) { 

  // L'oggetto GUID contiene valori diversi da zero

}

altro

{

  // L'oggetto GUID è vuoto

Ecco un semplice metodo di estensione che determina se un GUID è Guid.Empty. 

public static bool IsNullOrEmpty (questa guida guid)

{

  return (guid == Guid.Empty);

Puoi anche verificare se il tuo GUID nullable è nullo utilizzando il seguente metodo di estensione. 

public static bool IsNullOrEmpty (this Guid? guid)

{

  if (guid.HasValue)

    if (guid == default (Guid))

        restituire vero;

    return false;

}

Notare che il valore predefinito (Guid) è lo stesso di Guid.Empty.

Converte un GUID in una stringa in C # 8

Puoi persino convertire un GUID in una stringa. Il frammento di codice seguente mostra come convertire un GUID vuoto in una stringa.

stringa str = Guid.Empty.ToString ();

Console.WriteLine (str);

Nota che c'è un avvertimento importante per l'uso dei GUID: potresti avere collisioni. Notare anche che i GUID occupano un po 'di spazio e non vengono generati in ordine sequenziale. Tuttavia, è possibile rendere i GUID univoci a livello di programmazione utilizzando un numero intero a 128 bit che può essere rappresentato utilizzando due valori ULong e incrementandolo in modo sequenziale. 

Potresti voler convertire un GUID in una stringa spesso nelle tue applicazioni. Potrebbe essere necessario eseguire questa operazione per associare i dati GUID ai controlli dati o per passare il GUID all'interfaccia utente. Potresti anche voler convertire un oggetto GUID in una stringa per formattare i dati GUID secondo i tuoi requisiti.

È possibile creare GUID in diversi modi. Questi includono casuale, basato sul tempo, basato su hardware e basato sul contenuto (ovvero, basato su un valore hash MD5 o SHA-1 di un pezzo di dati). Ti guiderò attraverso tutti questi modi e altre funzionalità avanzate dei GUID in un prossimo articolo qui.

Come fare di più in C #

  • Quando usare una classe astratta e un'interfaccia in C #
  • Come lavorare con AutoMapper in C #
  • Come usare le espressioni lambda in C #
  • Come lavorare con i delegati Action, Func e Predicate in C #
  • Come lavorare con i delegati in C #
  • Come implementare un semplice logger in C #
  • Come lavorare con gli attributi in C #
  • Come lavorare con log4net in C #
  • Come implementare il modello di progettazione del repository in C #
  • Come lavorare con la riflessione in C #
  • Come lavorare con Filesystemwatcher in C #
  • Come eseguire l'inizializzazione pigra in C #
  • Come lavorare con MSMQ in C #
  • Come lavorare con i metodi di estensione in C #
  • Come utilizzare espressioni lambda in C #
  • Quando usare la parola chiave volatile in C #
  • Come utilizzare la parola chiave yield in C #
  • Come implementare il polimorfismo in C #
  • Come creare il proprio pianificatore di attività in C #
  • Come lavorare con RabbitMQ in C #
  • Come lavorare con una tupla in C #
  • Esplorazione di metodi virtuali e astratti in C #