GUID: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
SieBot (discussione | contributi)
tolti wikilink dai titoli (collegamenti già presenti nel testo)
 
(31 versioni intermedie di 30 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. Il tipo più noto di GUID è l'utilizzo di [[Microsoft]] dell'UUID, ideato dalla [[Open Software Foundation]], ma vi sono anche altri usi, come quello all'interno di [[XML]].
 
I GUID vengono utilizzati soprattutto nell'ambito del [[Component Object Model]] (COM) di Microsoft, tuttavia sono diffusi anche in altri sistemi software, quali [[Oracle Corporation|Oracle]] e [[Novell]].
 
== Il GUID Microsoft ==
Il GUID viene utilizzato per identificare in maniera univoca un determinato [[componente software]] COM; in questo modo due versioni (potenzialmente incompatibili) di uno stesso componente, 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. Per rendere l'idea, considerando che in tutto l'universo osservabile sono contenute 5×10<sup>22</sup> stelle, ad ogni singola stella potrebbero essere assegnati 6.8×10<sup>15</sup> diversi GUID.
 
Oltre ai componenti, sono marcati tramite GUID anche i documenti [[Microsoft_OfficeMicrosoft Office|Office]] e i [[file]] in formato [[Advanced Streaming Format]].
La maggior parte dei GUID utilizzati da diverse applicazioni sono contenute nel [[registro di sistema]] di [[Windows]].
 
=== 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 trecinque blocchi, uno di 4 byte, 3tre di 2 byte e uno di 6 byte. Nell'esempio precedente si avrebbe:
 
{3f2504e0-4f89-11d3-9a0c-0305e82c3301}
I GUID vengono scritti tra parentesi graffe e divisi in tre blocchi di 4, 3 e 6 byte. Nell'esempio precedente si avrebbe:
 
{3F2504E0-4F89-11D3-9A0C-0305E82C3301}
 
La notazione è quindi una sequenza formata dai seguenti gruppi di caratteri, divisi da un trattino (-).
Riga 23 ⟶ 22:
# '''Gruppo 3''' (''4 caratteri'')
# Due elementi iniziali del '''gruppo 4''' (''4 caratteri'')
# SeiDue 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.
Riga 42 ⟶ 40:
} 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 [[Indirizzo_MACIndirizzo MAC|indirizzi MAC]] delle [[Scheda_di_reteScheda di rete|schede di rete]] degli utenti che lo generavano. Il vantaggio di questo metodo era l'assoluta certezza dell'univocità del GUID generato (perché non esistono due indirizzi MAC uguali), ma in questo modo era possibile risalire da un GUID al computer che l'aveva generato, con potenziali conseguenze sulla [[privacy]] e sulla sicurezza.
 
Dopo che venne alla luce questo problema, Microsoft modificò l'algoritmo (implementato nell'[[Application programming interface|API]] <ttkbd>[http://msdn2.microsoft.com/en-us/library/aa379205.aspx UuidCreate]</ttkbd>) in modo che non dipendesse più dagli indirizzi MAC. È ancora possibile generare volontariamente GUID dipendenti dall'indirizzo MAC usando l'API <ttkbd>[http://msdn2.microsoft.com/en-us/library/aa379322.aspx UuidCreateSequential]</ttkbd>.
===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 [[Indirizzo_MAC|indirizzi MAC]] delle [[Scheda_di_rete|schede di rete]] degli utenti che lo generavano. Il vantaggio di questo metodo era l'assoluta certezza dell'univocità del GUID generato (perché non esistono due indirizzi MAC uguali), ma in questo modo era possibile risalire da un GUID al computer che l'aveva generato, con potenziali conseguenze sulla [[privacy]] e sulla sicurezza.
 
Dopo che venne alla luce questo problema, Microsoft modificò l'algoritmo (implementato nell'[[Application programming interface|API]] <tt>[http://msdn2.microsoft.com/en-us/library/aa379205.aspx UuidCreate]</tt>) in modo che non dipendesse più dagli indirizzi MAC. È ancora possibile generare volontariamente GUID dipendenti dall'indirizzo MAC usando l'API <tt>[http://msdn2.microsoft.com/en-us/library/aa379322.aspx UuidCreateSequential]</tt>.
 
Per sapere se un GUID è stato generato con la prima o con la seconda versione dell'algoritmo, bisogna fare riferimento alla prima cifra del terzo blocco. Quindi, nell'esempio precedente
Riga 56 ⟶ 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 [[Distributed_Component_Object_ModelDistributed Component Object Model|DCOM]] hanno introddottointrodotto altri sottotipi
* AppID - identificatori di applicazione
* MID - identificatori di macchina
Riga 74 ⟶ 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 [[XML]] ==
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 ==
* [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]
* [http{{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, ungaricoungherese)]}}
 
{{Portale|Informatica}}
Riga 89 ⟶ 86:
[[Categoria:Gestione del software]]
[[Categoria:Microsoft]]
[[Categoria:Acronimi]]
 
[[de:Globally Unique Identifier]]
[[en:Globally Unique Identifier]]
[[es:Globally Unique Identifier]]
[[fr:Globally Unique Identifier]]
[[he:Globally Unique Identifier]]
[[hu:Globálisan egyedi azonosító]]
[[id:GUID]]
[[ja:GUID]]
[[kaa:Guid]]
[[ko:전역 고유 식별자]]
[[nl:Globally Unique Identifier]]
[[pl:GUID]]
[[ru:GUID]]
[[sv:Globally Unique Identifier]]