Kako raditi s GUID-ovima u C # 8

Kada radite u aplikacijama, možda ćete često trebati koristiti globalne jedinstvene identifikatore (GUID). Jedinstveni identifikatori poput primarnih ključeva u SQL bazi podataka osiguravaju da se važni objekti poput kupaca i računa ne dupliciraju ili prepisuju. Bez jedinstvenih identifikatora ne bismo mogli spriječiti gubitak podataka niti osigurati cjelovitost podataka naših aplikacija. 

Globalno jedinstveni identifikator ili GUID predstavlja gigantski identifikacijski broj - broj toliko velik da je matematički zajamčeno jedinstven ne samo u jednom sustavu poput baze podataka, već u više sustava ili distribuiranih aplikacija. Ovaj članak raspravlja zašto su nam potrebni GUID-ovi i kako možemo raditi s GUID-ovima u C # 8.0.

Da biste radili s primjerima koda iz ovog članka, u sustavu biste trebali instalirati Visual Studio 2019. Ako još nemate kopiju, ovdje možete preuzeti Visual Studio 2019. 

Stvorite projekt aplikacije konzole u Visual Studiju

Prvo stvorimo projekt .NET Core Console Application u Visual Studiju. Pod pretpostavkom da je Visual Studio 2019 instaliran u vašem sustavu, slijedite korake opisane u nastavku da biste stvorili novi projekt aplikacije .NET Core Console u Visual Studio-u.

  1. Pokrenite Visual Studio IDE.
  2. Kliknite "Stvori novi projekt".
  3. U prozoru "Stvori novi projekt" s popisa predložaka odaberite "Aplikacija konzole (.NET Core)".
  4. Kliknite Dalje.
  5. U sljedećem prozoru "Konfiguriranje novog projekta" navedite naziv i mjesto za novi projekt.
  6. Kliknite Stvori.

To će stvoriti novi projekt aplikacije .NET Core konzole u Visual Studio 2019. Ovaj ćemo projekt koristiti za rad s GUID-ovima u sljedećim odjeljcima ovog članka. Imajte na umu da ćemo ovdje koristiti C # 8, tako da ćete možda htjeti ažurirati jezičnu verziju u svom projektu.

Zašto su nam potrebni GUID-ovi?

Zamislite da imate aplikaciju na prodajnom mjestu koja je dostupna u mrežnom i izvanmrežnom načinu rada na vašoj mobilnoj aplikaciji. Pretpostavimo da vaša aplikacija pruža ID brojeve koji se automatski generiraju počevši od 1. Kako možete spojiti izvanmrežne podatke kada se uspostavi veza? Što ako su vaši ID brojevi generirani u oba načina? Može biti sudara, zar ne? Kako biste postupili s dvostrukim ID brojevima? Svakako biste se mogli nositi s tim, ali morali biste napisati puno koda - što nije ono što želite učiniti.

Ovdje GUID-ovi dolaze u pomoć. GUID je gigantski broj - dug 128 bita - i gotovo je jedinstven. Zašto gotovo jedinstveno? Zašto ne možemo reći da je jedinstven? U osnovi, broj mogućih GUID-ova je toliko velik da su šanse za sudar krajnje minimalne. Ipak, šanse za sudar nisu jednake nuli. 

GUID-ove možete iskoristiti tako što ćete ih učiniti primarnim ključevima za vaše tablice baze podataka. Korištenje GUID-ova čak će vam pomoći da izbjegnete sukobe spajanja kada spajate dvije ili više baza podataka. Još jedna prednost GUID-ova je ta što ih možete generirati izvan mreže - ne trebate biti povezani s mrežom ili internetom.

Kako su GUID-ovi predstavljeni?

Slijedi primjer GUID-a. Imajte na umu da je GUID obično 128 bita i predstavljen je u heksadecimalnom obliku.

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

GUID je organiziran kao dobro definiran slijed od 32 heksadecimalne znamenke grupirane u dijelove od 8-4-4-4-12. Stoga možete imati najviše 2 ^ 128 GUID-ova.

Stvorite GUID u C # 8

U ovom ćemo odjeljku naučiti kako možemo raditi s GUID-ovima u C #. GUID-ove možete stvoriti u .NET-u pomoću strukture Guid koja je dostupna kao dio prostora imena sustava. Ovdje je najlakši način generiranja GUID-a u C #. Napišite sljedeći kod u metodu Main () datoteke Program.cs u projektu koji ste ranije kreirali.

Vodič obj = Guid.NewGuid ();

Console.WriteLine ("Novostvoreni vodič je:" + obj.ToString ());

Console.ReadKey ();

Stvorite prazan GUID u C # 8

Budući da je Guid struktura, to je vrsta vrijednosti i stoga ga ne možete postaviti na nulu. Da biste stvorili prazne vodiče, možete napisati sljedeći kod.

Guid id = novi Guid ();

if (id == Vodič.Prazno)

Console.WriteLine ("Vodič je prazan");

Vodič.Prazno ima vrijednost 00000000-0000-0000-0000-000000000000. Možete iskoristiti prazan GUID da biste ga usporedili s drugim GUID objektom da biste utvrdili nije li nula. Sljedeći isječak koda to ilustrira. 

if (guid! = Guid.Prazno) { 

  // GUID objekt sadrži vrijednosti koje nisu nula

}

drugo

{

  // GUID objekt je prazan

Ovdje je jednostavna metoda produženja koja određuje je li GUID Guid.Empty. 

javni statički bool IsNullOrEmpty (ovaj vodič)

{

  return (guid == Guid.Empty);

Možete čak provjeriti je li vaš NULL GUID null pomoću sljedeće metode proširenja. 

javni statički bool IsNullOrEmpty (ovaj vodič? vodič)

{

  if (guid.HasValue)

    if (guid == zadani (Guid))

        povratak istinit;

    return false;

}

Imajte na umu da je zadani (Guid) isti kao Guid.Empty.

Pretvorite GUID u niz u C # 8

Možete čak pretvoriti GUID u niz. Sljedeći isječak koda pokazuje kako možete pretvoriti prazan GUID u niz.

niz str = Guid.Empty.ToString ();

Console.WriteLine (str);

Imajte na umu da postoji jedno glavno upozorenje za upotrebu GUID-ova: možda ćete se sudariti. Imajte na umu da GUID-ovi zauzimaju malo prostora i oni se ne generiraju u slijedu. Međutim, svoje GUID-ove možete programski učiniti jedinstvenima pomoću 128-bitnih cijelih brojeva koji se mogu predstaviti pomoću dvije ULong vrijednosti i uzastopno povećavajući. 

Možda biste trebali pretvoriti GUID u niz često u svojim aplikacijama. To ćete možda morati učiniti da biste podatke GUID-a povezali s vašim kontrolama podataka ili da biste proslijedili GUID korisničkom sučelju. Možda čak želite pretvoriti GUID objekt u niz za formatiranje GUID podataka prema vašim zahtjevima.

GUID-ove možete stvoriti na nekoliko različitih načina. Uključuju nasumične, vremenske, hardverske i sadržajne (tj. Na temelju MDS ili SHA-1 raspršene vrijednosti dijela podataka). Provest ću vas kroz sve ove načine i druge napredne značajke GUID-ova u sljedećem članku ovdje.

Kako učiniti više u C #

  • Kada koristiti apstraktnu klasu naspram sučelja u C #
  • Kako raditi s AutoMapperom u C #
  • Kako koristiti lambda izraze u C #
  • Kako raditi s delegatima Action, Func i Predicate u C #
  • Kako raditi s delegatima u C #
  • Kako implementirati jednostavni zapisnik u C #
  • Kako raditi s atributima u C #
  • Kako raditi s log4netom na C #
  • Kako implementirati obrazac dizajna spremišta u C #
  • Kako raditi s refleksijom u C #
  • Kako raditi s nadzornikom datoteka u C #
  • Kako izvesti lijenu inicijalizaciju u C #
  • Kako raditi s MSMQ-om u C #
  • Kako raditi s metodama produženja u C #
  • Kako do nas lambda izrazi u C #
  • Kada upotrijebiti hlapljivu ključnu riječ u C #
  • Kako koristiti ključnu riječ yield u C #
  • Kako implementirati polimorfizam u C #
  • Kako izraditi vlastiti planer zadataka u C #
  • Kako raditi s RabbitMQ u C #
  • Kako raditi s korpicom u C #
  • Istraživanje virtualnih i apstraktnih metoda u C #