כיצד לעבוד עם GUIDs ב- C # 8

כשאתה עובד ביישומים ייתכן שתצטרך להשתמש במזהים ייחודיים גלובליים (GUID). מזהים ייחודיים כמו מפתחות עיקריים במסד נתונים של SQL מבטיחים שאובייקטים חשובים כמו לקוחות וחשבוניות אינם משוכפלים או מוחלפים. ללא מזהים ייחודיים, לא יכולנו למנוע אובדן נתונים או להבטיח את תקינות הנתונים של היישומים שלנו. 

מזהה או GUID ייחודי גלובלי מייצג מספר זיהוי ענק - מספר גדול כל כך שמובטח מתמטית שהוא ייחודי לא רק במערכת אחת כמו מסד נתונים, אלא במספר מערכות או יישומים מבוזרים. מאמר זה דן מדוע אנו זקוקים ל- GUID וכיצד אנו יכולים לעבוד עם GUID ב- C # 8.0.

כדי לעבוד עם דוגמאות הקוד המופיעות במאמר זה, עליך להתקין במערכת Visual Studio 2019 שלך. אם עדיין אין לך עותק, תוכל להוריד את Visual Studio 2019 כאן. 

צור פרויקט יישום קונסולה ב- Visual Studio

ראשית, בואו ניצור פרויקט יישום מסוף .NET Core ב- 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?

תאר לעצמך שיש לך יישום נקודת מכירה הזמין הן במצב מקוון והן במצב לא מקוון ביישום הנייד שלך. נניח שהיישום שלך מספק מספרי זיהוי שנוצרו אוטומטית החל מ- 1. כיצד ניתן למזג את הנתונים הלא מקוונים כאשר קישוריות משוחזרת? מה אם מספרי הזהות שלך נוצרו בשני המצבים? יכולות להיות התנגשויות, נכון? איך היית מטפל במספרי תעודת זהות כפולים? אתה בהחלט יכול להתמודד עם זה, אבל תצטרך לכתוב הרבה קוד - וזה לא מה שאתה רוצה לעשות.

כאן המקום להציל את המדריכים. GUID הוא מספר ענק - באורך 128 ביט - והוא כמעט ייחודי. למה כמעט ייחודי? מדוע איננו יכולים לומר שהוא ייחודי? ביסודו של דבר, מספר ה- GUID האפשרי כל כך גדול שסיכויי ההתנגשות הם מזעריים ביותר. אף על פי כן, הסיכוי להתנגשות אינו אפס. 

אתה יכול לנצל את ה- GUID על ידי הפיכתם למפתחות העיקריים לטבלאות מסדי הנתונים שלך. שימוש ב- GUID אפילו יעזור לך למנוע התנגשויות מיזוג בעת מיזוג של שני בסיסי נתונים או יותר. יתרון נוסף של GUID הוא שאתה יכול ליצור אותם במצב לא מקוון - אתה לא צריך להיות מחובר לרשת או לאינטרנט.

כיצד מיוצגים GUIDs?

להלן דוגמה ל- GUID. שים לב כי GUID הוא בדרך כלל באורך של 128 ביט והוא מיוצג בהקסדצימלי.

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

GUID מאורגן כרצף מוגדר היטב של 32 ספרות הקסדצימליות מקובצות לנתחים של 8-4-4-4-12. מכאן שאתה יכול לקבל מקסימום 2 ^ 128 GUIDs.

צור GUID ב- C # 8

בחלק זה נלמד כיצד אנו יכולים לעבוד עם GUIDs ב- C #. ניתן ליצור GUIDs ב- .NET באמצעות מבנה ה- Guid הזמין כחלק ממרחב השמות של המערכת. הנה הדרך הקלה ביותר ליצור GUID ב- C #. כתוב את הקוד הבא בשיטת Main () של הקובץ Program.cs בפרויקט שיצרת קודם.

Guid obj = Guid.NewGuid ();

Console.WriteLine ("המדריך החדש שנוצר הוא:" + obj.ToString ());

Console.ReadKey ();

צור GUID ריק ב- C # 8

מכיוון ש- Guid הוא מבנה, זהו סוג ערך ולכן אינך יכול להגדיר אותו ל- null. כדי ליצור מדריכים ריקים תוכלו לכתוב את הקוד הבא.

מדריך זהות = מדריך חדש ();

אם (id == Guid.Empty)

Console.WriteLine ("המדריך ריק");

ל Guid.Romy ערך של 00000000-0000-0000-0000-000000000000. אתה יכול לנצל GUID ריק כדי להשוות אותו עם אובייקט GUID אחר כדי לקבוע אם הוא לא אפס. קטע הקוד הבא ממחיש זאת. 

אם (guid! = Guid.Empty) { 

  // אובייקט ה- GUID מכיל ערכים שאינם אפסים

}

אַחֵר

{

  // אובייקט ה- GUID ריק

להלן שיטת הרחבה פשוטה שקובעת אם GUID הוא Guid.Empty. 

בול סטטי ציבורי IsNullOrEmpty (המדריך הזה)

{

  החזר (guid == Guid.Empty);

אתה יכול אפילו לבדוק אם ה- GUID שלך לביטול הוא null בשיטת ההרחבה הבאה. 

בול סטטי ציבורי IsNullOrEmpty (המדריך הזה? מדריך)

{

  אם (guid.HasValue)

    אם (guid == ברירת מחדל (Guid))

        לחזור אמיתי;

    להחזיר כוזב;

}

שים לב שברירת המחדל (Guid) זהה ל- Guid.Empty.

המרת GUID למחרוזת ב- C # 8

אתה יכול אפילו להמיר GUID למחרוזת. קטע הקוד הבא מראה כיצד ניתן להמיר GUID ריק למחרוזת.

מחרוזת str = Guid.Empty.ToString ();

Console.WriteLine (str);

שים לב שיש אזהרה עיקרית אחת לשימוש ב- GUIDs: ייתכן שתיתקל בהתנגשויות. שים לב גם ש- GUIDs תופסים מקום כלשהו והם לא נוצרים בסדר רציף. עם זאת, באפשרותך להפוך את ה- GUID שלך לייחודיים מבחינה תכנתית באמצעות מספר שלם של 128 סיביות שניתן לייצג באמצעות שני ערכי ULong ולהגדיל אותם ברצף. 

ייתכן שתרצה להמיר GUID למחרוזת לעתים קרובות ביישומים שלך. ייתכן שיהיה עליך לעשות זאת כדי לאגד נתוני GUID לפקדי הנתונים שלך או להעביר את ה- GUID לממשק המשתמש. אולי אפילו תרצה להמיר אובייקט GUID למחרוזת כדי לעצב את נתוני GUID בהתאם לדרישות שלך.

ניתן ליצור GUIDs בכמה דרכים שונות. אלה כוללים אקראי, מבוסס זמן, מבוסס חומרה ותוכן (כלומר, מבוסס על ערך חשיש 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 #