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 dati. WCF Data Services utilizza i provider di dati per esporre i dati in questione 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<T> 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<T> 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 nel servizio Northwind seguente creato al completamento della guida rapida:

Public Class Northwind
    Inherits DataService(Of NorthwindEntities)

    ' This method is called only once to initialize service-wide policies.
    Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration)
        ' Grant only the rights needed to support the client application.
        config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead _
             Or EntitySetRights.WriteMerge _
             Or EntitySetRights.WriteReplace)
        config.SetEntitySetAccessRule("Order_Details", EntitySetRights.AllRead _
            Or EntitySetRights.AllWrite)
        config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead)
    End Sub
End Class
public class Northwind : DataService<NorthwindEntities>
{
    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config)
    {
        // Grant only the rights needed to support the client application.
        config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead
             | EntitySetRights.WriteMerge
             | EntitySetRights.WriteReplace);
        config.SetEntitySetAccessRule("Order_Details", EntitySetRights.AllRead
            | EntitySetRights.AllWrite);
        config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead);
        config.DataServiceBehavior.MaxProtocolVersion =
            System.Data.Services.Common.DataServiceProtocolVersion.V3;
    }
}

Impostazioni di configurazione del servizio dati

La classe DataServiceConfiguration consente di specificare i comportamenti del servizio dati seguenti:

Membro

Comportamento

AcceptAnyAllRequests

Consente di disabilitare il supporto per le query che includono gli operatori any e all.

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.

AcceptSpatialLiteralsInQuery

Consente di disabilitare il supporto per l'indicazione di valori letterali spaziali nell'URI di una query.

AnnotationsBuilder

Consente di applicare vocabolari al modello dati mediante annotazioni. La proprietà AnnotationsBuilder restituisce un delegato che consente di specificare una o più annotazioni di modello, come una raccolta di istanze di IEdmModel, per il modello dati, che viene fornito al delegato come un'istanza di IEdmModel. Per ulteriori informazioni, vedere il post Vocabolari in WCF Data Services.

DisableValidationOnMetadataWrite

Consente di disabilitare la convalida del modello dati prima che il servizio risponda a una richiesta all'endpoint $metadata.

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.

IncludeAssociationLinksInResponse

Consente di specificare se gli elementi di collegamento che indirizzano in modo specifico la relazione tra entità, dette anche associazioni, sono inclusi nella risposta dal servizio dati. Le associazioni vengono indirizzate tramite l'operatore $links. Per ulteriori informazioni, vedere 3.2. Indirizzamento di collegamenti tra voci nel protocollo OData. Il servizio dati restituisce sempre elementi di collegamento che indirizzano le entità correlate, anche quando IncludeAssociationLinksInResponse è false.

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 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 delle entità correlate che è possibile includere in una singola richiesta tramite l'operatore di query $expand. Per ulteriori informazioni, vedere 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 Controllo delle versioni del servizio dati (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).

SetServiceActionAccessRule(String, ServiceActionRights)

Consente di impostare i diritti di accesso per le azioni di servizio definite nel servizio dati. Per ulteriori informazioni, vedere Utilizzo di azioni OData per implementare il comportamento lato server. Per il parametro name è possibile specificare un valore asterisco (*) per impostare l'accesso per tutte le azioni di servizio sullo stesso livello. È consigliabile impostare l'accesso sulle azioni di 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.

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 parametro name è possibile specificare un valore asterisco (*) per impostare l'accesso per tutte le operazioni di 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 URI e opzione query

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/$value1

ReadSingle

WriteDelete

Non supportato

Non supportato

Non supportato

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

ReadSingle

ReadSingle e WriteDelete

WriteMerge

Non supportato

WriteReplace

/Customers('ALFKI')/$value2

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 3 del protocollo OData o versioni successive:

  • Supporto per includere gli elementi di collegamento della relazione nel feed di risposta.

  • Supporto per operatori di query any e all.

  • Supporto per la definizione di azioni e funzioni di servizio.

  • Supporto per tipi di dati spaziali.

  • Supporto per i vocabolari tramite la definizione di annotazioni del modello dati.

  • Supporto per la disabilitazione della convalida del modello dati per una richiesta dell'endpoint $metadata.

Per i seguenti comportamenti di configurazione del servizio dati è richiesta la versione 2 del protocollo OData o versioni successive:

  • Il supporto delle richieste del conteggio e la proiezione di query richiede la versione 2.0 del protocollo OData e versioni successive.

  • Il supporto dell'opzione query $select per la proiezione richiede la versione 2.0 del protocollo OData e versioni successive.

Per ulteriori informazioni, vedere Controllo delle versioni del servizio dati (WCF Data Services).

Vedere anche

Concetti

Hosting del servizio dati (WCF Data Services)

Altre risorse

Servizio dati (WCF Data Services)