GUID
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 (-).
- Ryhmä 1 ( 8 merkkiä )
- Ryhmä 2 ( 4 merkkiä )
- Ryhmä 3 ( 4 merkkiä )
- Ryhmän 4 kaksi alkuelementtiä ( 4 merkkiä )
- 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
- Kansainvälinen standardi "Universally Unique Identifier -tunnisteiden (UUID) rekisteröinnin luominen ja niiden käyttö ASN.1 Object Identifier -komponentteina" (ITU-T Rec. X.667 | ISO / IEC 9834-8, teknisesti yhteensopiva IETF RFC 4122 -standardin kanssa )
- Online UUID / GUID - generaattori osoitteessa famkruithof.net .
- GUID-sukupolven Firefox-laajennus
- UUID - tunnuksen DCE - muunnelman syntaksi ja semantiikka osoitteessa opengroup.org .
- UUID - UUID (tai GUID) sukupolvi Javassa osoitteessa johannburkard.de .
- Online UUID / GUID Generator (englanti, unkari) osoitteessa nowan.hu .