version (attributo)
L'attributo dell'interfaccia [versione] identifica una versione specifica tra più versioni di un'interfaccia RPC. Con l'attributo versione, assicurarsi che solo le versioni compatibili del software client e del server siano consentite per l'associazione.
version ( major-value[[. minor-value]] )
-
valore principale
-
Specifica un numero intero senza segno breve compreso tra zero e 65.535, inclusivo, che rappresenta il numero di versione principale.
-
valore secondario
-
Specifica un intero senza segno breve compreso tra zero e 65.535, inclusivo, che rappresenta il numero di versione secondaria. Il valore della versione secondaria è facoltativo. Se presente, il valore della versione secondaria è separato dal numero di versione principale in base a un carattere di periodo (.). Se non specificato, il valore della versione secondaria è zero.
Il compilatore MIDL non supporta più versioni di un'interfaccia COM. Di conseguenza, un elenco di attributi dell'interfaccia che include l'attributo [object] non può includere l'attributo [versione]. Per creare una nuova versione di un'interfaccia COM esistente, usare l'ereditarietà dell'interfaccia. Un'interfaccia COM derivata ha un UUID diverso, ma eredita le funzioni membro dell'interfaccia, i codici di stato e gli attributi dell'interfaccia di base.
In combinazione con il valore [uuid] il valore [versione] identifica in modo univoco l'interfaccia. La libreria di runtime passa i valori [version] e [uuid] al server quando il client chiama una funzione remota. Un client può eseguire il binding a un server per un'interfaccia specifica se:
- Il valore [uuid] è lo stesso.
- Il numero di versione principale è lo stesso.
- Il numero di versione secondaria del client è minore o uguale al numero di versione secondaria del server.
Si tratta del vantaggio e del vantaggio degli utenti di mantenere la compatibilità verso l'alto tra le versioni, ovvero modificare l'interfaccia in modo che solo il numero di versione secondaria cambi. È possibile mantenere la compatibilità verso l'alto quando si aggiungono nuovi tipi di dati non usati dalle funzioni esistenti e quando si aggiungono nuove funzioni senza modificare la specifica dell'interfaccia per le funzioni esistenti.
Modificare il numero di versione principale se si applica una delle seguenti condizioni:
- Se si modifica un tipo di dati utilizzato da una funzione esistente.
- Se si modifica la specifica dell'interfaccia per una funzione esistente, ad esempio l'aggiunta o la rimozione di un parametro.
- Se si aggiungono callback chiamati da funzioni esistenti.
Modificare il numero di versione secondaria se si applicano tutte le condizioni seguenti:
- Se si aggiungono definizioni di tipo o costanti non usate da funzioni o callback esistenti.
- Se non si modificano funzioni esistenti e si aggiungono nuove funzioni all'interfaccia.
- Se si aggiungono callback che non vengono chiamati da funzioni esistenti e i nuovi callback seguono le funzioni esistenti.
Se le modifiche sono qualificate come modifiche compatibili verso l'alto nell'interfaccia, usare la procedura seguente.
Per modificare il file IDL (Interface)
- Aggiungere nuove definizioni costanti e di tipo al file di interfaccia.
- Aggiungere funzioni di callback alla fine del file di interfaccia.
- Aggiungere nuove funzioni alla fine del file di interfaccia.
L'attributo [version] può verificarsi al massimo una volta nell'intestazione dell'interfaccia.
Quando l'attributo di versione non è presente, l'interfaccia ha una versione predefinita di 0.0.
Il carattere di periodo tra i numeri principali e minori è un delimitatore e non rappresenta un punto decimale. Il numero secondario viene considerato come intero. Gli zero iniziali non sono significativi. Gli zero finali sono significativi.
Ad esempio, l'impostazione della versione 1.11 rappresenta un valore principale di uno e un valore secondario pari a undici. La versione 1.11 non rappresenta un valore compreso tra 1.1 e 1.2.