Controllo delle versioni del servizio dati (WCF Data Services)
OData (Open Data Protocol) consente di creare servizi dati in modo che i client possono accedere ai dati come risorse utilizzando URI basati su un modello di dati. OData supporta inoltre la definizione di operazioni del servizio. Dopo la distribuzione iniziale e, potenzialmente, più volte durante il loro ciclo di vita, potrebbe essere necessario cambiare i servizi dati per molteplici ragioni, ad esempio perché cambiano le esigenze aziendali, i requisiti IT o per risolvere altri problemi. Quando si apportano modifiche a un servizio dati esistente, è necessario valutare se definire una nuova versione del servizio dati e il modo migliore per ridurre l'impatto sulle applicazioni client esistenti. In questo argomento vengono fornite informazioni su quando e come creare una nuova versione di un servizio dati. Viene inoltre descritto il modo in cui in WCF Data Services viene gestito uno scambio tra client e servizi dati che supportano versioni diverse del protocollo OData.
Controllo delle versioni di un'istanza di WCF Data Services
Una volta che un servizio dati viene distribuito e i dati vengono utilizzati, le modifiche apportate al servizio dati potrebbero provocare problemi di compatibilità con le applicazioni client esistenti. Tuttavia, perché le modifiche spesso sono richieste dalle esigenze aziendali complessive relative al servizio, è necessario considerare quando e come creare una nuova versione del servizio dati con il minimo impatto sulle applicazioni client.
Modifiche al modello di dati per cui è consigliabile utilizzare una nuova versione del servizio dati
Quando si valuta se pubblicare una nuova versione di un servizio dati, è importante capire come i tipi diversi di modifiche possano influire sulle applicazioni client. Le modifiche a un servizio dati che potrebbero richiedere la creazione di una nuova versione di un servizio dati possono essere divise nelle due categorie seguenti:
Modifiche al contratto del servizio, ovvero aggiornamenti alle operazioni del servizio e all'accessibilità di set di entità (feed), modifiche alle versioni e altre modifiche ai comportamenti del servizio.
Modifiche al contratto dati, ovvero modifiche al modello di dati o ai formati o alle personalizzazioni di feed.
Nella tabella seguente sono contenute informazioni dettagliate sui tipi di modifiche che è necessario valutare per pubblicare una nuova versione del servizio dati:
Tipo di modifica |
Nuova versione richiesta |
Nuova versione non necessaria |
---|---|---|
Operazioni del servizio |
|
|
Comportamenti del servizio |
|
|
Autorizzazioni del set di entità |
|
|
Proprietà delle entità |
|
|
Set di entità |
|
|
Personalizzazione di feed |
|
1 Può dipendere da quanto un'applicazione client si basa sul ricevimento di un codice di errore specifico.
2 È possibile impostare la proprietà IgnoreMissingProperties su true in modo che il client ignori qualsiasi nuova proprietà inviata dal servizio dati non definita sul client. Tuttavia, quando vengono eseguiti inserimenti, le proprietà non incluse dal client nella richiesta POST vengono impostate sui valori predefiniti. Per gli aggiornamenti, qualsiasi dato esistente in una proprietà sconosciuto al client potrebbe essere sovrascritto da valori predefiniti. In questo caso, è necessario inviare l'aggiornamento come una richiesta MERGE (impostazione predefinita). Per ulteriori informazioni, vedere Gestione del contesto del servizio dati (WCF Data Services).
Come controllare le versioni di un servizio dati
Se necessario, una nuova versione del servizio dati viene definita creando una nuova istanza del servizio con un contratto di servizio o un modello di dati aggiornato. Questo nuovo servizio viene quindi esposto tramite un nuovo endpoint dell'URI che lo differenzia dalla versione precedente. Esempio:
Versione obsoleta: http://services.odata.org/Northwind/v1/Northwind.svc/
Nuova versione: http://services.odata.org/Northwind/v2/Northwind.svc/
Quando si aggiorna un servizio dati, sarà necessario inoltre aggiornare i client in base ai nuovi metadati del servizio dati e utilizzare il nuovo URI radice. Quando possibile, è necessario gestire la versione precedente del servizio dati per supportare i client non ancora aggiornati ancora per utilizzare la nuova versione. Quando non sono più necessarie, le versioni precedenti di un servizio dati possono essere rimosse. È opportuno valutare la gestione dell'URI dell'endpoint del servizio dati in file di configurazione esterno.
Versioni del protocollo OData
Al rilascio di nuove versioni di OData, le applicazioni client possono non utilizzare la stessa versione del protocollo OData supportata dal servizio dati. È possibile che un'applicazione client meno recente acceda a un servizio dati che supporta una versione più recente di OData. Un'applicazione client può inoltre utilizzare una versione più recente della libreria client di WCF Data Services che supporta una versione più recente di OData rispetto a quella a cui il servizio dati ha eseguito l'accesso.
WCF Data Services si avvale del supporto fornito da OData per gestire tali scenari di controllo delle versioni. È inoltre disponibile il supporto per la generazione e l'utilizzo di metadati del modello di dati per creare le classi del servizio dati client quando la versione di OData utilizzata dal client differisce da quella del servizio dati. Per ulteriori informazioni, vedere OData: Controllo delle versioni dei protocolli.
Negoziazione della versione
È possibile configurare il servizio dati per definire la versione massima del protocollo OData che verrà utilizzata dal servizio, indipendentemente dalla versione richiesta dal client. A tale scopo è possibile specificare un valore DataServiceProtocolVersion per la proprietà MaxProtocolVersion dell'oggetto DataServiceBehavior utilizzato dal servizio dati. Per ulteriori informazioni, vedere Configurazione del servizio dati (WCF Data Services).
Quando un'applicazione utilizza le librerie client WCF Data Services per accedere a un servizio dati, le intestazioni delle librerie vengono impostate automaticamente sui valori corretti, a seconda della versione di OData e delle caratteristiche utilizzate nell'applicazione. Per impostazione predefinita, WCF Data Services utilizza la versione minima del protocollo che supporta l'operazione richiesta.
Nella tabella seguente sono contenuti i dettagli delle versioni di .NET Framework e Silverlight che includono il supporto WCF Data Services per versioni specifiche del protocollo OData.
Versione del protocollo OData |
Supporto introdotto in… |
---|---|
Versione 1 |
|
Versione 2 |
|
Versione 3 |
|
Versioni di metadati
Per impostazione predefinita, WCF Data Services utilizza la versione 1.1 di CSDL per rappresentare un modello di dati. Questo comportamento viene applicato sempre nel caso di modelli di dati basati su un provider di reflection o un provider del servizio dati personalizzato. Tuttavia, quando il modello di dati è definito tramite Entity Framework, viene restituita la stessa versione di CSDL utilizzata da Entity Framework. La versione del linguaggio CSDL è determinata dallo spazio dei nomi dell'elemento Schema. Per ulteriori informazioni, vedere la specifica del formato di file CSDL (Conceptual Schema Definition Language) [MC-CSDL].
L'elemento DataServices dei metadati restituiti contiene inoltre un attributo DataServiceVersion che corrisponde al valore dell'intestazione DataServiceVersion nel messaggio di risposta. Le applicazioni client, ad esempio la finestra di dialogo Aggiungi riferimento al servizio in Visual Studio, utilizzano queste informazioni per generare classi del servizio dati client che funzionano correttamente con la versione di WCF Data Services che funge da host del servizio dati. Per ulteriori informazioni, vedere OData: Controllo delle versioni dei protocolli.
Vedere anche
Concetti
Provider di servizi dati (WCF Data Services)