GUID: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica |
tolti wikilink dai titoli (collegamenti già presenti nel testo) |
||
(63 versioni intermedie di 53 utenti non mostrate) | |||
Riga 1:
Il '''GUID''' ('''G'''lobally '''U'''nique '''Id'''entifier, ''identificatore unico globale'') è un [[Numeri pseudo-casuali|numero pseudo-casuale]] usato nella programmazione [[software]], per poter distinguere vari oggetti.
I GUID vengono utilizzati soprattutto nell'ambito
Il GUID viene utilizzato per identificare in maniera '''univoca''' un determinato [[programma]]; in questo modo due versioni (potenzialmente incompatibili) di uno stesso software, anche con lo stesso nome, possono essere distinte tramite i loro codici GUID. Sebbene il GUID non garantisca un'effettiva unicità, il numero possibile di combinazioni (2<sup>128</sup>) è talmente elevato da scongiurare una coincidenza tra due codici.▼
== Il GUID Microsoft ==
▲I GUID vengono utilizzati soprattutto nell'ambito dei [[Component Object Model]] Microsoft, tuttavia sono diffusi anche in altri sistemi software, quali [[Oracle]] e [[Novell]]. Oltre ai programmi, sono marcati tramite GUID anche i documenti [[Microsoft_Office|Office]] e i [[file]] di formato [[Advanced Streaming Format]]
▲Il GUID viene utilizzato per identificare in maniera
Oltre ai componenti, sono marcati tramite GUID anche i documenti [[Microsoft Office|Office]] e i [[file]] in formato [[Advanced Streaming Format]].
==Struttura==▼
La maggior parte dei GUID utilizzati da diverse applicazioni sono contenute nel [[registro di sistema]] di [[Windows]].
Nella pratica un GUID è un numero di 128 [[bit]] (16 [[byte]]) in formato [[esadecimale]] quale può essere:▼
▲=== Struttura ===
▲Nella pratica un GUID è un numero di 128 [[bit]] (16 [[byte]]) in formato [[esadecimale]] quale può essere:
3F 25 04 E0 4F 89 11 D3 9A 0C 03 05 E8 2C 33 01
I GUID di Microsoft vengono spesso scritti tra parentesi graffe e divisi in
{3f2504e0-4f89-11d3-9a0c-0305e82c3301}
La notazione è quindi una sequenza formata dai seguenti gruppi di caratteri, divisi da un trattino (-).
==Algoritmo==▼
# '''Gruppo 1''' (''8 caratteri'')
L'[[algoritmo]] specificato dalla OSF e utilizzato da Microsoft per la generazione dei GUID è stato oggetto di critica. Infatti tale algoritmo utilizzava come punto di partenza gli [[Indirizzo_MAC|indirizzi MAC]] delle [[Scheda_di_rete|schede di rete]] degli utenti che lo generavano. In questo modo, però, era possibile risalire da un file al computer che l'aveva generato, con gravi consguenze sulla [[privacy]]▼
# '''Gruppo 2''' (''4 caratteri'')
# '''Gruppo 3''' (''4 caratteri'')
# Due elementi iniziali del '''gruppo 4''' (''4 caratteri'')
# Due elementi rimanenti del '''gruppo 4''' (''4 caratteri'') seguiti dal '''gruppo 5''' (''8 caratteri'', ''per un totale di 12 caratteri'')
Nella definizione di una struttura atta a contenere un GUID, in un qualunque [[linguaggio di programmazione]], la struttura più utilizzata è la seguente.
GUID STRUCT
Data1 dd
Data2 dw
Data3 dw
Data4 db 8
GUID ENDS
In [[C (linguaggio di programmazione)|C]], la definizione contenuta nella libreria guiddef.h è questa:
Per sapere se un GUID è stato generato con la prima o con la seconda versione dell'algoritmo, bisgona fare riferimento alla prima cifra del terzo blocco. Quindi, nell'esempio precedente▼
typedef struct _GUID {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID;
Nel [[framework .NET]], è presente una classe apposita per la creazione di GUID, [https://msdn.microsoft.com/it-it/library/system.guid(v=vs.110).aspx System.Guid]
▲=== Algoritmo ===
▲L'[[algoritmo]] specificato dalla OSF e utilizzato da Microsoft per la generazione dei GUID è stato oggetto di critica. Infatti tale algoritmo utilizzava come punto di partenza gli [[
Dopo che venne alla luce questo problema, Microsoft modificò l'algoritmo (implementato nell'[[Application programming interface|API]] <kbd>[http://msdn2.microsoft.com/en-us/library/aa379205.aspx UuidCreate]</kbd>) in modo che non dipendesse più dagli indirizzi MAC. È ancora possibile generare volontariamente GUID dipendenti dall'indirizzo MAC usando l'API <kbd>[http://msdn2.microsoft.com/en-us/library/aa379322.aspx UuidCreateSequential]</kbd>.
▲Per sapere se un GUID è stato generato con la prima o con la seconda versione dell'algoritmo,
{3F2504E0-4F89-'''1'''1D3-9A0C-0305E82C3301}
Riga 25 ⟶ 53:
Se questa cifra è un 1, come in questo caso, il codice è generato dalla prima versione; viceversa, se la cifra è un 4, è generato dalla seconda.
=== Sottotipi ===
I GUID utilizzati nei COM possono essere di diverso tipo, a seconda della loro funzione:
* IID - identificatori di interfaccia
* ClsID - identificatori di classe (contenuti in HKEY_CLASSES_ROOT\CLSID)
* LibID - identificatori di libreria
* CatID - identificatori di categoria (la presenza di un CATID in una classe identifica tale classe come appartenente ad una certa categoria)
Le [[
* AppID - identificatori di applicazione
* MID - identificatori di macchina
Riga 43 ⟶ 71:
Due uguali GUID di diverso sottotipo possono coesistere senza problemi nello stesso sistema, ma non è ammessa l'esistenza di due uguali GUID dello stesso sottotipo.
== GUID in
Esistono anche dei GUID all'interno di alcune versioni di [[RSS]], marcati appunto dal tag <code>guid</code>, tuttavia non hanno niente a che fare con i GUID dei COM Microsoft. All'interno di RSS, infatti, i GUID possono essere un qualsiasi numero, una qualsiasi stringa o un [[URL]], valida o meno. Tipicamente si usa utilizzare come GUID l'URL univoco del post.
== Collegamenti esterni ==
{{Informatica}}▼
* [http://www.itu.int/ITU-T/studygroups/com17/oid.html Standard Internazionale "Generazione registrazione di Universally Unique Identifiers (UUIDs) e il loro uso come ASN.1 Object Identifier components"] (ITU-T Rec. X.667 | ISO/IEC 9834-8, tecnicamente compatibile con IETF RFC 4122)
* {{cita web|http://www.famkruithof.net/uuid/uuidgen|Generatore di UUID/GUID online}}
* [https://web.archive.org/web/20070510213105/http://www.firefoxextensions.com/guid-generator/ Estensione per Firefox per la generazione di GUID]
* {{cita web|https://www.opengroup.org/onlinepubs/9629399/apdxa.htm|Sintassi e semantica della variante DCE degli UUID}}
* {{cita web|http://johannburkard.de/software/uuid/|UUID – Generazione UUID (o GUID) in Java}}
* {{cita web|http://www.nowan.hu/guidgenerator.aspx|Generatore di UUID/GUID online (inglese, ungherese)}}
▲{{Portale|Informatica}}
[[Categoria:Software]]▼
[[Categoria:Gestione del software]]
|