close

GUID

Siirry navigointiin Siirry hakuun

GUID ( G lobally Unique Id entifier ) ​​on näennäissatunnainen luku , jota käytetään ohjelmistojen ohjelmoinnissa erilaisten objektien erottamiseen. Tunnetuin GUID-tyyppi on Microsoftin Open Software Foundationin kehittämä UUID -tunnus , mutta on myös muita käyttötapoja, kuten XML :n sisällä .

GUID-tunnisteita käytetään enimmäkseen Microsoftin Component Object Modelissa (COM), mutta ne ovat suosittuja myös muissa ohjelmistojärjestelmissä, kuten Oracle ja Novell .

Microsoftin GUID

GUID-tunnusta käytetään tietyn COM - ohjelmistokomponentin yksilölliseen tunnistamiseen; tällä tavalla saman komponentin kaksi (mahdollisesti yhteensopimatonta) versiota, vaikka niillä olisi sama nimi, voidaan erottaa niiden GUID-koodien perusteella. Vaikka GUID ei takaa tehokasta yksilöllisyyttä, mahdollinen yhdistelmien määrä (2 128 ) on niin suuri, että kahden koodin yhteensopivuus vältetään. Ajatuksen antamiseksi, kun otetaan huomioon, että koko havaittavassa maailmankaikkeudessa on 5 × 10 22 tähteä, jokaiselle yksittäiselle tähdelle voitaisiin antaa 6,8 × 10 15 erilaista GUID-tunnusta.

Komponenttien lisäksi Office -asiakirjat ja Advanced Streaming Format -tiedostot on merkitty myös GUID:n kautta . Useimmat eri sovellusten käyttämät GUID:t ovat Windowsin rekisterissä .

Rakenne

Käytännössä GUID on 128- bittinen luku (16 tavua ) heksadesimaalimuodossa , joka voi olla:

3F 25 04 E0 4F 89 11 D3 9A 0C 03 05 E8 2C 33 01

GUID-tunnisteet on kirjoitettu kaareviin hakasulkeisiin ja jaettu viiteen lohkoon, joista yksi on 4-tavuinen, kolme 2-tavuinen ja yksi 6-tavuinen. Edellisessä esimerkissä meillä olisi:

{3F2504E0-4F89-11D3-9A0C-0305E82C3301}

Merkintä on siksi sarja, joka muodostuu seuraavista merkkiryhmistä jaettuna yhdysviivalla (-).

  1. Ryhmä 1 ( 8 merkkiä )
  2. Ryhmä 2 ( 4 merkkiä )
  3. Ryhmä 3 ( 4 merkkiä )
  4. Ryhmän 4 kaksi alkuelementtiä ( 4 merkkiä )
  5. Kaksi jäljellä olevaa elementtiä ryhmästä 4 ( 4 merkkiä ) ja sen jälkeen ryhmä 5 ( 8 merkkiä , yhteensä 12 merkkiä )

GUID:n sisältävän rakenteen määrittelyssä millä tahansa ohjelmointikielellä eniten käytetty rakenne on seuraava.

GUID RAKENNE
Päivämäärä 1 pv
Data2 dw
Data3 dw
Data4 db 8
OHJAUS PÄÄTTYY

C : ssä guiddef.h-kirjaston määritelmä on tämä:

typedef struct _GUID {
    allekirjoittamaton pitkä Data1;
    allekirjoittamaton lyhyt Data2;
    allekirjoittamaton lyhyt Data3;
    unsigned char Data4 [8];
} GUID;

.NET-kehyksessä on erityinen luokka GUID-tunnusten luomista varten, System.Guid

Algoritmi

OSF: n määrittelemä algoritmi , jota Microsoft käyttää GUID-tunnusten luomiseen, on joutunut kritiikkiin. Itse asiassa tämä algoritmi käytti lähtökohtana sen luoneiden käyttäjien verkkokorttien MAC-osoitteita . Tämän menetelmän etuna oli ehdoton varmuus luodun GUID:n ainutlaatuisuudesta (koska kaksi samanlaista MAC-osoitetta ei ole), mutta tällä tavalla oli mahdollista jäljittää GUID takaisin sen luoneeseen tietokoneeseen, millä oli mahdollisia seurauksia yksityisyydestä ja turvallisuudesta.

Tämän ongelman paljastuttua Microsoft muutti algoritmia (toteutettu API UuidCreate :ssa ) niin, että se ei enää riipu MAC-osoitteista. On edelleen mahdollista luoda vapaaehtoisesti MAC - osoitteesta riippuvia GUID - tunnisteita API : n avulla UuidCreateSequential.

Jotta saadaan selville, luotiinko GUID algoritmin ensimmäisellä vai toisella versiolla, on viitattava kolmannen lohkon ensimmäiseen numeroon. Eli edellisessä esimerkissä

{3F2504E0-4F89- 1 1D3-9A0C-0305E82C3301}

Jos tämä numero on 1, kuten tässä tapauksessa, ensimmäinen versio tuottaa koodin; päinvastoin, jos numero on 4, se luo sekunti.

Alatyypit

COM:issa käytetyt GUID:t voivat olla erityyppisiä niiden toiminnasta riippuen:

  • IID - käyttöliittymätunnisteet
  • ClsID - luokkatunnisteet (sisältyy kansioon HKEY_CLASSES_ROOT \ CLSID)
  • LibID - kirjaston tunnisteet
  • CatID - luokkatunnisteet (CATID-tunnuksen läsnäolo luokassa tunnistaa luokan kuuluvan tiettyyn luokkaan)

DCOM:t ovat ottaneet käyttöön muita alatyyppejä

  • AppID - sovellustunnisteet
  • MID - koneen tunnisteet
  • IpID - käyttöliittymän osoittimen tunnisteet
  • CID - RPC-istuntoon viittaavat satunnaiset tunnisteet
  • OID - objektitunnisteet
  • OxID - objektien viejän tunnisteet
  • SetID - objektiryhmän tunnisteet

Kaksi identtistä eri alatyyppiä olevaa GUID:tä voi esiintyä ilman ongelmia samassa järjestelmässä, mutta kahden identtisen saman alatyypin GUID:n olemassaolo ei ole sallittua.

GUID XML :ssä

Joissakin RSS -versioissa on myös GUID-tunnisteita, jotka on merkitty tarkasti tunnisteella guid, mutta niillä ei ole mitään tekemistä Microsoftin COM-GUID-tunnusten kanssa. Itse asiassa RSS:ssä GUID:t voivat olla mikä tahansa numero, mikä tahansa merkkijono tai URL -osoite , kelvollinen tai ei. Yleensä käytämme GUID-tunnuksena viestin ainutlaatuista URL-osoitetta.

Ulkoiset linkit