Προγραμματισμός

Πώς να εργαστείτε με GUID στο C # 8

Όταν εργάζεστε σε εφαρμογές, ίσως χρειαστεί συχνά να χρησιμοποιήσετε Globally Unique Identifiers (GUIDs). Μοναδικά αναγνωριστικά όπως πρωτεύοντα κλειδιά σε μια βάση δεδομένων SQL διασφαλίζουν ότι σημαντικά αντικείμενα όπως πελάτες και τιμολόγια δεν αντιγράφονται ή αντικαθίστανται. Χωρίς μοναδικά αναγνωριστικά, δεν θα μπορούσαμε να αποτρέψουμε την απώλεια δεδομένων ή να διασφαλίσουμε την ακεραιότητα των εφαρμογών μας.

Ένα Παγκόσμιο Μοναδικό Αναγνωριστικό ή GUID αντιπροσωπεύει έναν τεράστιο αριθμό ταυτοποίησης - έναν αριθμό τόσο μεγάλο που είναι μαθηματικά εγγυημένο ότι είναι μοναδικό όχι μόνο σε ένα σύστημα όπως μια βάση δεδομένων, αλλά σε πολλά συστήματα ή κατανεμημένες εφαρμογές. Αυτό το άρθρο περιγράφει γιατί χρειαζόμαστε GUID και πώς μπορούμε να εργαστούμε με GUID στο C # 8.0.

Για να εργαστείτε με τα παραδείγματα κώδικα που παρέχονται σε αυτό το άρθρο, θα πρέπει να έχετε εγκαταστήσει το Visual Studio 2019 στο σύστημά σας. Εάν δεν έχετε ήδη αντίγραφο, μπορείτε να κατεβάσετε το Visual Studio 2019 εδώ.

Δημιουργήστε ένα έργο εφαρμογής κονσόλας στο Visual Studio

Πρώτα απ 'όλα, ας δημιουργήσουμε ένα έργο εφαρμογής .NET Core Console στο Visual Studio. Ας υποθέσουμε ότι το Visual Studio 2019 είναι εγκατεστημένο στο σύστημά σας, ακολουθήστε τα βήματα που περιγράφονται παρακάτω για να δημιουργήσετε ένα νέο έργο εφαρμογής .NET Core Console στο Visual Studio.

  1. Εκκινήστε το Visual Studio IDE.
  2. Κάντε κλικ στο "Δημιουργία νέου έργου".
  3. Στο παράθυρο "Δημιουργία νέου έργου", επιλέξτε "Εφαρμογή κονσόλας (.NET Core)" από τη λίστα των προτύπων που εμφανίζονται.
  4. Κάντε κλικ στο Επόμενο.
  5. Στο παράθυρο "Διαμόρφωση του νέου έργου" που εμφανίζεται στη συνέχεια, καθορίστε το όνομα και την τοποθεσία για το νέο έργο.
  6. Κάντε κλικ στο Δημιουργία.

Αυτό θα δημιουργήσει ένα νέο έργο εφαρμογής .NET Core κονσόλας στο Visual Studio 2019. Θα χρησιμοποιήσουμε αυτό το έργο για να εργαστούμε με GUID στις επόμενες ενότητες αυτού του άρθρου. Λάβετε υπόψη ότι θα χρησιμοποιήσουμε το C # 8 εδώ, οπότε ίσως θελήσετε να ενημερώσετε τη γλωσσική έκδοση του έργου σας.

Γιατί χρειαζόμαστε GUID;

Φανταστείτε ότι έχετε μια εφαρμογή σημείου πώλησης η οποία είναι διαθέσιμη τόσο σε διαδικτυακό όσο και σε offline τρόπο στην εφαρμογή σας για κινητά. Ας υποθέσουμε ότι η εφαρμογή σας παρέχει αριθμούς ταυτότητας που δημιουργούνται αυτόματα από το 1. Πώς μπορείτε να συγχωνεύσετε τα δεδομένα εκτός σύνδεσης όταν αποκατασταθεί η συνδεσιμότητα; Τι γίνεται αν οι αριθμοί ταυτότητάς σας έχουν δημιουργηθεί και στις δύο λειτουργίες; Μπορεί να υπάρξουν συγκρούσεις, σωστά; Πώς θα χειρίζατε τους διπλούς αριθμούς ταυτότητας; Θα μπορούσατε σίγουρα να το χειριστείτε αυτό, αλλά θα πρέπει να γράψετε πολύ κώδικα - κάτι που δεν είναι αυτό που θέλετε να κάνετε.

Εδώ είναι που οι GUID έρχονται στη διάσωση. Το GUID είναι ένας τεράστιος αριθμός - μήκος 128 bit - και είναι σχεδόν μοναδικός. Γιατί σχεδόν μοναδικό; Γιατί δεν μπορούμε να πούμε ότι είναι μοναδικό; Βασικά, ο αριθμός των πιθανών GUIDs είναι τόσο μεγάλος που οι πιθανότητες σύγκρουσης είναι εξαιρετικά ελάχιστες. Ωστόσο, οι πιθανότητες σύγκρουσης δεν είναι μηδενικές.

Μπορείτε να επωφεληθείτε από τα GUID καθιστώντας τα τα κύρια κλειδιά για τους πίνακες βάσης δεδομένων σας. Η χρήση των GUID θα σας βοηθήσει ακόμη και να αποφύγετε τη συγχώνευση διενέξεων όταν συγχωνεύετε δύο ή περισσότερες βάσεις δεδομένων. Ένα άλλο πλεονέκτημα των GUID είναι ότι μπορείτε να τα δημιουργήσετε εκτός σύνδεσης - δεν χρειάζεται να είστε συνδεδεμένοι στο δίκτυο ή στο διαδίκτυο.

Πώς αντιπροσωπεύονται τα GUID;

Το παρακάτω είναι ένα παράδειγμα ενός GUID. Σημειώστε ότι ένα GUID έχει συνήθως μήκος 128 bit και αντιπροσωπεύεται σε δεκαεξαδικό.

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

Ένα GUID είναι οργανωμένο ως μια καλά καθορισμένη ακολουθία 32 δεκαεξαδικών ψηφίων ομαδοποιημένων σε κομμάτια των 8-4-4-4-12. Ως εκ τούτου, μπορείτε να έχετε έως 2 ^ 128 GUID.

Δημιουργήστε ένα GUID στο C # 8

Σε αυτήν την ενότητα θα μάθουμε πώς μπορούμε να εργαστούμε με GUID στο C #. Μπορείτε να δημιουργήσετε GUID στο .NET χρησιμοποιώντας τη δομή Guid που διατίθεται ως μέρος του χώρου ονομάτων συστήματος. Εδώ είναι ο ευκολότερος τρόπος για να δημιουργήσετε ένα GUID στο C #. Γράψτε τον ακόλουθο κώδικα στη μέθοδο Main () του αρχείου Program.cs στο έργο που δημιουργήσατε νωρίτερα.

Guid obj = Guid.NewGuid ();

Console.WriteLine ("Ο νέος οδηγός είναι:" + obj.ToString ());

Κονσόλα.ReadKey ();

Δημιουργήστε ένα κενό GUID στο C # 8

Δεδομένου ότι το Guid είναι μια δομή, είναι ένας τύπος τιμής και ως εκ τούτου δεν μπορείτε να το ρυθμίσετε σε μηδέν. Για να δημιουργήσετε άδειους οδηγούς μπορείτε να γράψετε τον ακόλουθο κωδικό.

Οδηγός id = νέος Οδηγός ();

εάν (id == Guid.Empty)

Console.WriteLine ("Ο Οδηγός είναι άδειος");

Το Guid.Empty έχει τιμή 00000000-0000-0000-0000-000000000000. Μπορείτε να εκμεταλλευτείτε ένα κενό GUID για να το συγκρίνετε με ένα άλλο αντικείμενο GUID για να προσδιορίσετε εάν είναι μη μηδενικό. Το ακόλουθο απόσπασμα κώδικα το δείχνει αυτό.

εάν (guide! = Guid.Empty) {

// Το αντικείμενο GUID περιέχει μη μηδενικές τιμές

}

αλλού

{

// Το αντικείμενο GUID είναι κενό

Εδώ είναι μια απλή μέθοδος επέκτασης που καθορίζει εάν ένα GUID είναι Guid.Empty.

public static bool IsNullOrEmpty (αυτός ο οδηγός οδηγιών)

{

επιστροφή (guide == Guid.Empty);

Μπορείτε ακόμη και να ελέγξετε αν το μηδενικό GUID σας είναι μηδενικό χρησιμοποιώντας την ακόλουθη μέθοδο επέκτασης.

δημόσιο στατικό bool IsNullOrEmpty (αυτός ο οδηγός; Οδηγός)

{

εάν (guide.HasValue)

εάν (guide == προεπιλογή (Guid))

επιστροφή αληθινή?

επιστροφή ψευδής?

}

Σημειώστε ότι το προεπιλεγμένο (Guid) είναι το ίδιο με το Guid.Empty.

Μετατρέψτε ένα GUID σε συμβολοσειρά στο C # 8

Μπορείτε ακόμη και να μετατρέψετε ένα GUID σε συμβολοσειρά. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να μετατρέψετε ένα κενό GUID σε συμβολοσειρά.

string str = Guid.Empty.ToString ();

Κονσόλα.WriteLine (str);

Λάβετε υπόψη ότι υπάρχει μια σημαντική προειδοποίηση για τη χρήση GUID: Μπορεί να έχετε συγκρούσεις. Σημειώστε επίσης ότι τα GUID καταλαμβάνουν χώρο και δεν δημιουργούνται με διαδοχική σειρά. Ωστόσο, μπορείτε να κάνετε τα GUID σας μοναδικά μέσω προγραμματισμού χρησιμοποιώντας έναν ακέραιο αριθμό 128-bit που μπορεί να αναπαρασταθεί χρησιμοποιώντας δύο τιμές ULong και αυξάνοντάς τα διαδοχικά.

Ίσως θελήσετε να μετατρέψετε ένα GUID σε συμβολοσειρά συχνά στις εφαρμογές σας. Ίσως χρειαστεί να το κάνετε αυτό για να συνδέσετε τα δεδομένα GUID στα στοιχεία ελέγχου δεδομένων σας ή για να μεταβιβάσετε το GUID στη διεπαφή χρήστη. Ίσως θέλετε να μετατρέψετε ένα αντικείμενο GUID σε συμβολοσειρά για να μορφοποιήσετε τα δεδομένα GUID σύμφωνα με τις απαιτήσεις σας.

Μπορείτε να δημιουργήσετε GUID με πολλούς διαφορετικούς τρόπους. Αυτά περιλαμβάνουν τυχαία, βάσει χρόνου, βάσει υλικού και βάσει περιεχομένου (δηλαδή, με βάση μια τιμή κατακερματισμού MD5 ή SHA-1 ενός κομματιού δεδομένων). Θα σας καθοδηγήσω σε όλους αυτούς τους τρόπους και άλλες προηγμένες δυνατότητες των GUID σε ένα μελλοντικό άρθρο εδώ.

Πώς να κάνετε περισσότερα στο C #

  • Πότε να χρησιμοποιήσετε μια αφηρημένη τάξη εναντίον διεπαφής στο C #
  • Πώς να εργαστείτε με το AutoMapper στο C #
  • Πώς να χρησιμοποιήσετε τις εκφράσεις λάμδα στο C #
  • Πώς να συνεργαστείτε με τους αντιπροσώπους Action, Func και Predicate στο C #
  • Πώς να συνεργαστείτε με εκπροσώπους στο C #
  • Πώς να εφαρμόσετε έναν απλό καταγραφέα στο C #
  • Πώς να εργαστείτε με χαρακτηριστικά στο C #
  • Πώς να εργαστείτε με το log4net στο C #
  • Πώς να εφαρμόσετε το μοτίβο σχεδίασης αποθετηρίου στο C #
  • Πώς να εργαστείτε με προβληματισμό στο C #
  • Πώς να εργαστείτε με το σύστημα παρακολούθησης αρχείων στο C #
  • Πώς να εκτελέσετε τεμπέλης αρχικοποίηση στο C #
  • Πώς να εργαστείτε με το MSMQ στο C #
  • Πώς να εργαστείτε με μεθόδους επέκτασης στο C #
  • Πώς να μας εκφράσεις λάμδα στο C #
  • Πότε να χρησιμοποιήσετε την ευμετάβλητη λέξη-κλειδί στο C #
  • Πώς να χρησιμοποιήσετε τη λέξη-κλειδί απόδοσης στο C #
  • Πώς να εφαρμόσετε τον πολυμορφισμό στο C #
  • Πώς να δημιουργήσετε τον δικό σας προγραμματιστή εργασιών στο C #
  • Πώς να εργαστείτε με το RabbitMQ στο C #
  • Πώς να εργαστείτε με μια πλειάδα στο C #
  • Εξερεύνηση εικονικών και αφηρημένων μεθόδων στο C #