Condividi tramite


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

AcceptCountRequests

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.

AcceptProjectionRequests

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.

EnableTypeAccess

Consente l'esposizione di un tipo di dati nei metadati per un provider di metadati dinamici definito tramite l'interfaccia IDataServiceMetadataProvider.

EnableTypeConversion

Consente di specificare se il runtime del servizio dati deve convertire il tipo incluso nel payload nel tipo di proprietà effettivo specificato nella richiesta.

InvokeInterceptorsOnLinkDelete

Consente di specificare se gli intercettori di modifica registrati vengono richiamati sulle entità correlate quando viene eliminato un collegamento alla relazione tra due entità.

MaxBatchCount

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).

MaxChangesetCount

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).

MaxExpandCount

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).

MaxExpandDepth

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).

MaxObjectCountOnInsert

Consentire di limitare il numero di entità da inserire che possono essere incluse in una singola richiesta POST.

MaxProtocolVersion

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.

MaxResultsPerCollection

Consentire di limitare le dimensioni di una risposta limitando il numero di entità in ogni set di entità restituito come feed di dati.

RegisterKnownType

Consente di aggiungere un tipo di dati all'elenco di tipi riconosciuti dal servizio dati.

SetEntitySetAccessRule

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.

SetEntitySetPageSize

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).

SetServiceOperationAccessRule

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.

UseVerboseErrors

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

/Customers

ReadMultiple

Non supportato

Non supportato

WriteAppend

Non supportato

/Customers('ALFKI')

ReadSingle

ReadSingle e WriteDelete

ReadSingle e WriteMerge

n/d

ReadSingle e WriteReplace

/Customers('ALFKI')/Orders

Customers: ReadSingle

- e -

Orders: ReadMultiple

Non supportato

Non supportato

Customers: ReadSingle e WriteMerge o WriteReplace

- e -

Orders : e WriteAppend

Non supportato

/Customers('ALFKI')/Orders(10643)

Customers: ReadSingle

- e -

Orders: ReadSingle

Customers: ReadSingle

- e -

Orders: ReadSingle e WriteDelete

Customers: ReadSingle

- e -

Orders: ReadSingle e WriteMerge

Non supportato

Customers: ReadSingle

- e -

Orders: ReadSingle e WriteReplace

/Orders(10643)/Customer

Customers: ReadSingle

- e -

Orders: ReadSingle

Customers: ReadSingle e WriteDelete

- e -

Orders: ReadSingle

Customers: ReadSingle e WriteMerge

- e -

Orders: ReadSingle

Customers: WriteAppend

- e -

Orders: WriteAppend e ReadSingle

Non supportato

/Customers('ALFKI')/$links/Orders

Customers: ReadSingle

- e -

Orders: ReadMultiple

Non supportato

Non supportato

Customers: ReadSingle e WriteMerge o WriteReplace

- e -

Orders: ReadSingle

Non supportato

/Customers('ALFKI')/$links/Orders(10643)

Customers: ReadSingle

- e -

Orders: ReadSingle

Customers: ReadSingle e WriteMerge o WriteReplace

- e -

Orders: ReadSingle

Non supportato

Non supportato

Non supportato

/Orders(10643)/$links/Customer

Customers: ReadSingle

- e -

Orders: ReadSingle

Orders: ReadSingle e WriteMerge o WriteReplace

Customers: ReadSingle

- e -

Orders: ReadSingle e WriteMerge

Non supportato

Customers: ReadSingle;

- e -

Orders: ReadSingle e WriteReplace

/Customers/$count

ReadMultiple

Non supportato

Non supportato

Non supportato

Non supportato

/Customers('ALFKI')/ContactName

ReadSingle

Non supportato

WriteMerge

Non supportato

WriteReplace

/Customers('ALFKI')/Address/StreetAddress/$value 1

ReadSingle

WriteDelete

Non supportato

Non supportato

Non supportato

/Customers('ALFKI')/ContactName/$value

ReadSingle

ReadSingle e WriteDelete

WriteMerge

Non supportato

WriteReplace

/Customers('ALFKI')/$value 2

ReadSingle

Non supportato

Non supportato

Non supportato

WriteReplace

/Customers?$select=Orders/*&$expand=Orders

Customers: ReadSingle

- e -

Orders: ReadMultiple

Non supportato

Non supportato

Customers: WriteAppend

Non supportato

/Customers('ALFKI')?$select=Orders/*&$expand=Orders

Customers: ReadSingle

- e -

Orders: ReadMultiple

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)

Altre risorse

Definizione di WCF Data Services