Comment travailler avec les GUID en C # 8

Lorsque vous travaillez dans des applications, vous devrez souvent utiliser des identificateurs uniques globaux (GUID). Les identifiants uniques tels que les clés primaires dans une base de données SQL garantissent que les objets importants tels que les clients et les factures ne sont pas dupliqués ou écrasés. Sans identifiants uniques, nous ne pourrions pas empêcher la perte de données ou garantir l'intégrité des données de nos applications. 

Un identifiant ou GUID globalement unique représente un numéro d'identification gigantesque - un nombre si grand qu'il est mathématiquement garanti d'être unique non seulement dans un seul système comme une base de données, mais sur plusieurs systèmes ou applications distribuées. Cet article explique pourquoi nous avons besoin de GUID et comment nous pouvons travailler avec des GUID dans C # 8.0.

Pour utiliser les exemples de code fournis dans cet article, vous devez disposer de Visual Studio 2019 installé sur votre système. Si vous n'en avez pas déjà une copie, vous pouvez télécharger Visual Studio 2019 ici. 

Créer un projet d'application console dans Visual Studio

Tout d'abord, créons un projet d'application de console .NET Core dans Visual Studio. En supposant que Visual Studio 2019 est installé sur votre système, suivez les étapes décrites ci-dessous pour créer un nouveau projet d'application console .NET Core dans Visual Studio.

  1. Lancez l'IDE de Visual Studio.
  2. Cliquez sur "Créer un nouveau projet".
  3. Dans la fenêtre «Créer un nouveau projet», sélectionnez «Application console (.NET Core)» dans la liste des modèles affichés.
  4. Cliquez sur Suivant.
  5. Dans la fenêtre «Configurer votre nouveau projet» ci-dessous, spécifiez le nom et l'emplacement du nouveau projet.
  6. Cliquez sur Créer.

Cela créera un nouveau projet d'application console .NET Core dans Visual Studio 2019. Nous utiliserons ce projet pour travailler avec les GUID dans les sections suivantes de cet article. Notez que nous utiliserons C # 8 ici, vous souhaiterez peut-être mettre à jour la version linguistique de votre projet.

Pourquoi avons-nous besoin de GUID?

Imaginez que vous disposez d'une application de point de vente disponible en mode en ligne et hors ligne sur votre application mobile. Supposons que votre application fournisse des numéros d'identification générés automatiquement à partir de 1. Comment fusionner les données hors connexion lorsque la connectivité est rétablie? Et si vos numéros d'identification ont été générés dans les deux modes? Il peut y avoir des collisions, non? Comment gérez-vous les numéros d'identification en double? Vous pouvez certainement gérer cela, mais vous devrez écrire beaucoup de code - ce qui n'est pas ce que vous voulez faire.

Voici où les GUID viennent à la rescousse. Un GUID est un nombre gigantesque - 128 bits de long - et est presque unique. Pourquoi presque unique? Pourquoi ne pouvons-nous pas dire que c'est unique? Fondamentalement, le nombre de GUID possibles est si grand que les chances de collision sont extrêmement minimes. Néanmoins, les chances de collision ne sont pas nulles. 

Vous pouvez tirer parti des GUID en en faisant les clés primaires de vos tables de base de données. L'utilisation de GUID vous aidera même à éviter les conflits de fusion lorsque vous fusionnez deux ou plusieurs bases de données. Un autre avantage des GUID est que vous pouvez les générer hors ligne - vous n'avez pas besoin d'être connecté au réseau ou à Internet.

Comment les GUID sont-ils représentés?

Voici un exemple de GUID. Notez qu'un GUID est généralement de 128 bits de long et est représenté en hexadécimal.

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

Un GUID est organisé sous la forme d'une séquence bien définie de 32 chiffres hexadécimaux regroupés en blocs de 8-4-4-4-12. Par conséquent, vous pouvez avoir un maximum de 2 ^ 128 GUID.

Créer un GUID en C # 8

Dans cette section, nous allons apprendre comment travailler avec les GUID en C #. Vous pouvez créer des GUID dans .NET à l'aide de la structure Guid disponible dans le cadre de l'espace de noms System. Voici le moyen le plus simple de générer un GUID en C #. Écrivez le code suivant dans la méthode Main () du fichier Program.cs dans le projet que vous avez créé précédemment.

Guid obj = Guid.NewGuid ();

Console.WriteLine ("Le Guid nouvellement créé est:" + obj.ToString ());

Console.ReadKey ();

Créer un GUID vide en C # 8

Puisque Guid est une structure, il s'agit d'un type valeur et vous ne pouvez donc pas le définir sur null. Pour créer des Guids vides, vous pouvez écrire le code suivant.

Guid id = nouveau Guid ();

if (id == Guid.Empty)

Console.WriteLine ("Le Guid est vide");

Un Guid.Empty a une valeur de 00000000-0000-0000-0000-000000000000. Vous pouvez tirer parti d'un GUID vide pour le comparer avec un autre objet GUID pour déterminer s'il est différent de zéro. L'extrait de code suivant illustre cela. 

if (guid! = Guid.Empty) { 

  // L'objet GUID contient des valeurs non nulles

}

autre

{

  // L'objet GUID est vide

Voici une méthode d'extension simple qui détermine si un GUID est Guid.Empty. 

public static bool IsNullOrEmpty (ce guide Guid)

{

  return (guid == Guid.Empty);

Vous pouvez même vérifier si votre GUID nullable est nul à l'aide de la méthode d'extension suivante. 

public static bool IsNullOrEmpty (ce Guid? guid)

{

  if (guid.HasValue)

    if (guid == default (Guid))

        retourne vrai;

    retourner faux;

}

Notez que la valeur par défaut (Guid) est la même que Guid.Empty.

Convertir un GUID en chaîne en C # 8

Vous pouvez même convertir un GUID en chaîne. L'extrait de code suivant montre comment vous pouvez convertir un GUID vide en chaîne.

string str = Guid.Empty.ToString ();

Console.WriteLine (str);

Notez qu'il existe une mise en garde majeure pour l'utilisation des GUID: vous pourriez avoir des collisions. Notez également que les GUID prennent de l'espace et qu'ils ne sont pas générés dans un ordre séquentiel. Toutefois, vous pouvez rendre vos GUID uniques par programme en utilisant un entier de 128 bits qui peut être représenté à l'aide de deux valeurs ULong et en l'incrémentant de manière séquentielle. 

Vous souhaiterez peut-être convertir un GUID en une chaîne souvent dans vos applications. Vous devrez peut-être effectuer cette opération pour lier les données GUID à vos contrôles de données ou pour transmettre le GUID à l'interface utilisateur. Vous souhaiterez peut-être même convertir un objet GUID en une chaîne pour mettre en forme les données GUID selon vos besoins.

Vous pouvez créer des GUID de plusieurs manières. Il s'agit notamment de l'aléatoire, du temps, du matériel et du contenu (c'est-à-dire, basé sur une valeur hachée MD5 ou SHA-1 d'un élément de données). Je vais vous expliquer toutes ces méthodes et d'autres fonctionnalités avancées des GUID dans un prochain article ici.

Comment faire plus en C #

  • Quand utiliser une classe abstraite ou une interface en C #
  • Comment travailler avec AutoMapper en C #
  • Comment utiliser les expressions lambda en C #
  • Comment travailler avec les délégués Action, Func et Predicate en C #
  • Comment travailler avec des délégués en C #
  • Comment implémenter un simple logger en C #
  • Comment travailler avec des attributs en C #
  • Comment travailler avec log4net en C #
  • Comment implémenter le modèle de conception de référentiel en C #
  • Comment travailler avec la réflexion en C #
  • Comment travailler avec Filesystemwatcher en C #
  • Comment effectuer une initialisation différée en C #
  • Comment travailler avec MSMQ en C #
  • Comment travailler avec des méthodes d'extension en C #
  • Comment utiliser les expressions lambda en C #
  • Quand utiliser le mot clé volatile en C #
  • Comment utiliser le mot clé yield en C #
  • Comment implémenter le polymorphisme en C #
  • Comment créer votre propre planificateur de tâches en C #
  • Comment travailler avec RabbitMQ en C #
  • Comment travailler avec un tuple en C #
  • Explorer les méthodes virtuelles et abstraites en C #