Configurazione del servizio dati (WCF Data Services)
Con WCF Data Services è possibile creare servizi dati che espongono feed OData (Open Data Protocol) . I dati di questi feed possono provenire da una varietà di origini. WCF Data Services utilizza i provider di dati per esporre questi dati come feed OData . Tra tali provider sono inclusi un provider di Entity Framework , un provider di reflection e un set di interfacce del provider di servizio dati personalizzate. L'implementazione del provider definisce il modello di dati per il servizio. Per ulteriori informazioni, vedere Provider di servizi dati (WCF Data Services).
In WCF Data Services un servizio dati è una classe che eredita dalla classe DataService in cui il tipo di servizio dati è il contenitore di entità del modello di dati. Questo contenitore di entità dispone di una o più proprietà che restituiscono un oggetto IQueryable utilizzato per accedere ai set di entità nel modello di dati.
I comportamenti del servizio dati vengono definiti dai membri della classe DataServiceConfiguration, nonché dai membri della classe DataServiceBehavior accessibile dalla proprietà DataServiceBehavior della classe DataServiceConfiguration. La classe DataServiceConfiguration viene fornita al metodo InitializeService implementato dal servizio dati, come nella seguente implementazione di un servizio dati Northwind:
' This method is called only once to initialize service-wide policies.
Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration)
' Set the access rules of feeds exposed by the data service, which is
' based on the requirements of client applications.
config.SetEntitySetAccessRule("Customers", EntitySetRights.ReadSingle)
config.SetEntitySetAccessRule("Employees", EntitySetRights.ReadSingle)
config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead _
And EntitySetRights.WriteAppend _
And EntitySetRights.WriteMerge)
config.SetEntitySetAccessRule("Order_Details", EntitySetRights.All)
config.SetEntitySetAccessRule("Products", EntitySetRights.ReadMultiple)
' Set page size defaults for the data service.
config.SetEntitySetPageSize("Orders", 20)
config.SetEntitySetPageSize("Order_Details", 50)
config.SetEntitySetPageSize("Products", 50)
' Paging requires v2 of the OData protocol.
config.DataServiceBehavior.MaxProtocolVersion = _
System.Data.Services.Common.DataServiceProtocolVersion.V2
End Sub
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
// Set the access rules of feeds exposed by the data service, which is
// based on the requirements of client applications.
config.SetEntitySetAccessRule("Customers", EntitySetRights.ReadSingle);
config.SetEntitySetAccessRule("Employees", EntitySetRights.ReadSingle);
config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead
& EntitySetRights.WriteAppend
& EntitySetRights.WriteMerge);
config.SetEntitySetAccessRule("Order_Details", EntitySetRights.All);
config.SetEntitySetAccessRule("Products", EntitySetRights.ReadMultiple);
// Set page size defaults for the data service.
config.SetEntitySetPageSize("Orders", 20);
config.SetEntitySetPageSize("Order_Details", 50);
config.SetEntitySetPageSize("Products", 50);
// Paging requires v2 of the OData protocol.
config.DataServiceBehavior.MaxProtocolVersion =
System.Data.Services.Common.DataServiceProtocolVersion.V2;
}
Impostazioni di configurazione del servizio dati
La classe DataServiceConfiguration consente di specificare i comportamenti del servizio dati seguenti:
Membro | Comportamento |
---|---|
Consente di disabilitare le richieste di conteggio inviate al servizio dati tramite il segmento di percorso $count e l'opzione query $inlinecount. Per ulteriori informazioni, vedere OData: Convenzioni URI. |
|
Consente di disabilitare il supporto per la proiezione dei dati nelle richieste inviate al servizio dati tramite l'opzione di query $select. Per ulteriori informazioni, vedere OData: Convenzioni URI. |
|
Consente l'esposizione di un tipo di dati nei metadati per un provider di metadati dinamici definito tramite l'interfaccia IDataServiceMetadataProvider. |
|
Consente di specificare se il runtime del servizio dati deve convertire il tipo incluso nel payload nel tipo di proprietà effettivo specificato nella richiesta. |
|
Consente di specificare se gli intercettori di modifica registrati vengono richiamati sulle entità correlate quando viene eliminato un collegamento alla relazione tra due entità. |
|
Consente di limitare il numero massimo di set di modifiche e di operazioni di query consentite in un singolo batch. Per ulteriori informazioni, vedere OData: Batch e Invio in batch di operazioni (WCF Data Services). |
|
Consente di limitare il numero massimo di modifiche che è possibile includere in un singolo set di modifiche. Per ulteriori informazioni, vedere Procedura: abilitare il paging dei risultati del servizio dati (WCF Data Services). |
|
Consente di limitare le dimensioni di una risposta limitando il numero di entità correlate che è possibile includere in una singola richiesta tramite l'operatore di query $expand. Per ulteriori informazioni, vedere OData: convenzioni URI e Caricamento di contenuto posticipato (WCF Data Services). |
|
Consente di limitare le dimensioni di una risposta limitando la profondità del grafico di entità correlate che è possibile includere in una singola richiesta tramite l'operatore di query $expand. Per ulteriori informazioni, vedere OData: convenzioni URI e Caricamento di contenuto posticipato (WCF Data Services). |
|
Consentire di limitare il numero di entità da inserire che possono essere incluse in una singola richiesta POST. |
|
Definisce la versione del protocollo Atom utilizzata dal servizio dati. Quando il valore di MaxProtocolVersion è impostato su un valore minore del valore massimo di DataServiceProtocolVersion, le funzionalità più recenti di WCF Data Services non sono disponibili per i client che accedono al servizio dati. Per ulteriori informazioni, vedere Utilizzo di più versioni di WCF Data Services. |
|
Consentire di limitare le dimensioni di una risposta limitando il numero di entità in ogni set di entità restituito come feed di dati. |
|
Consente di aggiungere un tipo di dati all'elenco di tipi riconosciuti dal servizio dati. |
|
Consente di impostare i diritti di accesso per le risorse di set di entità disponibili nel servizio dati. Per il nome del parametro è possibile specificare un asterisco (* per impostare l'accesso per tutti i set di entità rimanenti sullo stesso livello. È consigliabile impostare l'accesso ai set di entità per fornire l'accesso con privilegi minimi alle risorse del servizio dati richieste dalle applicazioni client. Per ulteriori informazioni, vedere Protezione di WCF Data Services. Per esempi dei diritti minimi di accesso necessari per una data azione URI e HTTP, vedere la tabella presente nella sezione Minimum Resource Access Requirements. |
|
Consente di impostare le dimensioni massime della pagina per una risorsa del set di entità. Per ulteriori informazioni, vedere Procedura: abilitare il paging dei risultati del servizio dati (WCF Data Services). |
|
Consente di impostare i diritti di accesso per le operazioni del servizio definite nel servizio dati. Per ulteriori informazioni, vedere Operazioni del servizio (WCF Data Services). Per il nome del parametro è possibile specificare un asterisco (* per impostare l'accesso per tutte le operazioni del servizio sullo stesso livello. È consigliabile impostare l'accesso alle operazioni del servizio per fornire l'accesso con privilegi minimi alle risorse del servizio dati richieste dalle applicazioni client. Per ulteriori informazioni, vedere Protezione di WCF Data Services. |
|
Questa proprietà di configurazione consente di risolvere più facilmente i problemi relativi a un servizio dati restituendo ulteriori informazioni nel messaggio dell'errore. Questa opzione non è destinata all'utilizzo in un ambiente di produzione. Per ulteriori informazioni, vedere Sviluppo e distribuzione di WCF Data Services. |
Diritti minimi di accesso alle risorse
Nella tabella seguente vengono mostrati in dettaglio i diritti minimi dei set di entità che devono essere concessi per eseguire un'operazione specifica. Gli esempi di percorso sono basati sul servizio dati Northwind creato al completamento della guida rapida. Poiché le enumerazioni EntitySetRights e ServiceOperationRights vengono definite tramite FlagsAttribute, è possibile utilizzare un operatore logico OR per specificare più autorizzazioni per una sola operazione o un solo set di entità. Per ulteriori informazioni, vedere Procedura: abilitare l'accesso al servizio dati (WCF Data Services).
Percorso/Azione | GET | DELETE | MERGE | POST | PUT |
---|---|---|---|---|---|
|
Non supportato |
Non supportato |
Non supportato |
||
|
ReadSingle e WriteDelete |
ReadSingle e WriteMerge |
n/d |
ReadSingle e WriteReplace |
|
|
- e -
|
Non supportato |
Non supportato |
- e -
|
Non supportato |
|
- e -
|
- e -
|
- e -
|
Non supportato |
- e -
|
|
- e -
|
- e -
|
- e -
|
- e -
|
Non supportato |
|
- e -
|
Non supportato |
Non supportato |
- e -
|
Non supportato |
|
- e -
|
- e -
|
Non supportato |
Non supportato |
Non supportato |
|
- e -
|
|
- e -
|
Non supportato |
- e -
|
|
ReadMultiple |
Non supportato |
Non supportato |
Non supportato |
Non supportato |
|
ReadSingle |
Non supportato |
WriteMerge |
Non supportato |
WriteReplace |
|
ReadSingle |
WriteDelete |
Non supportato |
Non supportato |
Non supportato |
|
ReadSingle |
ReadSingle e WriteDelete |
WriteMerge |
Non supportato |
WriteReplace |
|
ReadSingle |
Non supportato |
Non supportato |
Non supportato |
WriteReplace |
|
- e -
|
Non supportato |
Non supportato |
|
Non supportato |
|
- e -
|
Non supportato |
Non supportato |
Non supportato |
Non supportato |
1 In questo esempio Address rappresenta una proprietà di tipo complesso dell'entità Customers caratterizzata da una proprietà denominata StreetAddress. Il modello utilizzato dai servizi dati Northwind non definisce in modo esplicito questo tipo complesso. Quando il modello di dati viene definito utilizzando il provider di Entity Framework , è possibile utilizzare gli strumenti di Entity Data Model per definire tale tipo complesso. Per ulteriori informazioni, vedere How to: Create and Modify Complex Types (Entity Data Model Tools).
2 Questo URI è supportato quando una proprietà che restituisce un oggetto BLOB viene definita come risorsa multimediale appartenente a un'entità che corrisponde a un elemento entry di collegamento multimediale, che in questo caso è Customers. Per ulteriori informazioni, vedere Provider di flusso (WCF Data Services).
Requisiti di versione
Per i seguenti comportamenti di configurazione del servizio dati è richiesta la versione 2 del protocollo OData o versioni successive:
Supporto per le richieste del conteggio.
Supporto per l'opzione di query $select per proiezione.
Per ulteriori informazioni, vedere Utilizzo di più versioni di WCF Data Services.
Vedere anche
Concetti
Hosting del servizio dati (WCF Data Services)