Compartir a través de


Configurar el servicio de datos (WCF Data Services)

Con Servicios de datos de Microsoft WCF, puede crear servicios de datos que expongan fuentes de Open Data Protocol (OData). Los datos de estas fuentes pueden proceder de diferentes orígenes de datos. Servicios de datos de Microsoft WCF utiliza proveedores de datos para exponer estos datos como una fuente de OData. Estos proveedores incluyen un proveedor de Entity Framework, un proveedor de reflexión y un conjunto de interfaces de proveedor de servicio de datos personalizados. La implementación del proveedor define el modelo de datos del servicio. Para obtener más información, vea Proveedores de servicios de datos (WCF Data Services).

En Servicios de datos de Microsoft WCF, un servicio de datos es una clase que hereda de la clase DataService<T>, donde el tipo del servicio de datos es el contenedor de entidades del modelo de datos. Este contenedor de entidades tiene una o varias propiedades que devuelven una interfaz IQueryable<T>, que se usa para tener acceso a los conjuntos de entidades del modelo de datos.

Los miembros de la clase DataServiceConfiguration definen los comportamientos del servicio de datos junto con los miembros de la clase DataServiceBehavior, a la que se tiene acceso desde la propiedad DataServiceBehavior de la clase DataServiceConfiguration. La clase DataServiceConfiguration se proporciona al método InitializeService, implementado por el servicio de datos, como en el servicio de Northwind siguiente que se crea al completar el tutorial rápido:

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;
    }
}

Parámetros de configuración del servicio de datos

La clase DataServiceConfiguration permite especificar los comportamientos siguientes del servicio de datos.

Miembro

Comportamiento

AcceptAnyAllRequests

Le permite deshabilitar la compatibilidad con consultas que incluyen los operadores any y all.

AcceptCountRequests

Permite deshabilitar las solicitudes de recuento que se envían al servicio de datos usando el segmento de ruta de acceso $count y la opción de consulta $inlinecount. Para obtener más información, vea OData: convenciones URI.

AcceptProjectionRequests

Permite deshabilitar la compatibilidad con la proyección de los datos en las solicitudes que se envían al servicio de datos usando la opción de consulta $select. Para obtener más información, vea OData: convenciones de URI.

AcceptSpatialLiteralsInQuery

Le permite deshabilitar la compatibilidad con el suministro de valores literales espaciales en el URI de una consulta.

AnnotationsBuilder

Le permite aplicar vocabularios al modelo de datos mediante anotaciones. La propiedad AnnotationsBuilder devuelve un delegado que le permite proporcionar una o más anotaciones del modelo, como una colección de instancias de IEdmModel, para el modelo de datos, que se suministra al delegado como una instancia de IEdmModel. Para obtener más información, vea la entrada de blog Vocabularios en WCF Data Services.

DisableValidationOnMetadataWrite

Le permite deshabilitar la validación del modelo de datos antes de que el servicio responda a una solicitud al extremo $metadata.

EnableTypeAccess

Permite exponer un tipo de datos en los metadatos para un proveedor de metadatos dinámico definido mediante la interfaz IDataServiceMetadataProvider.

EnableTypeConversion

Le permite especificar si el motor en tiempo de ejecución del servicio de datos debe convertir el tipo contenido en la carga al tipo de propiedad real que se especifica en la solicitud.

IncludeAssociationLinksInResponse

Le permite especificar si los elementos link que direccionan específicamente la relación entre entidades, también denominados asociaciones, se incluyen en la respuesta del servicio de datos. Las asociaciones se direccionan mediante el operador $links. Para obtener más información, vea 3.2. Direccionar vínculos entre entradas en el protocolo OData. El servicio de datos siempre devuelve los elementos link que direccionan entidades relacionadas, incluso cuando IncludeAssociationLinksInResponse es false.

InvokeInterceptorsOnLinkDelete

Permite especificar si se invocan o no interceptores de cambio registrados en las entidades relacionadas cuando se elimina un vínculo de relación entre dos entidades.

MaxBatchCount

Permite limitar el número de conjuntos de cambios y operaciones de consulta que se permiten en un solo lote. Para obtener más información, vea OData: Batch y Realizar operaciones por lotes (WCF Data Services).

MaxChangesetCount

Permite limitar el número máximo de cambios que se pueden incluir en un solo conjunto de cambios. Para obtener más información, vea Como: Habilitar la paginación de los resultados del servicio de datos (WCF Data Services).

MaxExpandCount

Permite limitar el tamaño de una respuesta limitando el número de entidades relacionadas que pueden incluirse en una sola solicitud utilizando el operador de consulta $expand. Para obtener más información, vea vea OData: convenciones de URI y Cargar contenido aplazado (WCF Data Services).

MaxExpandDepth

Permite limitar el tamaño de una respuesta limitando la profundidad del gráfico de las entidades relacionadas que pueden incluirse en una sola solicitud usando el operador de consulta $expand. Para obtener más información, vea vea OData: convenciones de URI y Cargar contenido aplazado (WCF Data Services).

MaxObjectCountOnInsert

Permite limitar el número de entidades que se van a insertar que puede contener una sola solicitud POST.

MaxProtocolVersion

Define la versión del protocolo Atom utilizado por el servicio de datos. Cuando el valor de la propiedad MaxProtocolVersion se establece en un valor menor que el valor máximo de DataServiceProtocolVersion, la funcionalidad más reciente de Servicios de datos de Microsoft WCF no está disponible para los clientes que tengan acceso al servicio de datos. Para obtener más información, vea Control de versiones del servicio de datos (Servicios de datos de Microsoft WCF).

MaxResultsPerCollection

Le permite limitar el tamaño de una respuesta limitando el número de entidades de cada conjunto de entidades que se devuelve como fuente de distribución de datos.

RegisterKnownType

Agrega un tipo de datos a la lista de tipos reconocidos por el servicio de datos.

SetEntitySetAccessRule

Establece los derechos de acceso para los recursos del conjunto de entidades que están disponibles en el servicio de datos. Se puede proporcionar el valor asterisco (* para el parámetro de nombre para establecer el acceso en el mismo nivel para todos los conjuntos de entidades restantes. Se recomienda establecer el acceso a los conjuntos de entidades para proporcionar el acceso con privilegios mínimos a los recursos del servicio de datos requeridos por las aplicaciones cliente. Para obtener más información, vea Proteger WCF Data Services. Para obtener ejemplos de los derechos de acceso mínimos requeridos para una acción HTTP y un URI determinado, vea la tabla de la sección Minimum Resource Access Requirements.

SetEntitySetPageSize

Establece el tamaño de página máximo de un recurso de conjunto de entidades. Para obtener más información, vea Como: Habilitar la paginación de los resultados del servicio de datos (WCF Data Services).

SetServiceActionAccessRule(String, ServiceActionRights)

Establece los derechos de acceso para las acciones de servicio definidas en el servicio de datos. Para obtener más información, vea Usar acciones OData para implementar el comportamiento del lado servidor. Se puede proporcionar el valor asterisco (*) para el parámetro name con el fin de establecer el acceso en el mismo nivel para todas las acciones de servicio. Se recomienda establecer el acceso a las acciones de servicio para proporcionar el acceso con privilegios mínimos a los recursos del servicio de datos que las aplicaciones cliente necesitan. Para obtener más información, vea Proteger WCF Data Services.

SetServiceOperationAccessRule

Establece los derechos de acceso para las operaciones de servicio definidas en el servicio de datos. Para obtener más información, vea Operaciones de servicio (WCF Data Services). Se puede proporcionar el valor asterisco (*) para el parámetro name con el fin de establecer el acceso en el mismo nivel para todas las operaciones de servicio. Se recomienda establecer el acceso a las operaciones de servicio para proporcionar el acceso con privilegios mínimos a los recursos del servicio de datos requeridos por las aplicaciones cliente. Para obtener más información, vea Proteger WCF Data Services.

UseVerboseErrors

Esta propiedad de configuración le permite solucionar más fácilmente los problemas de un servicio de datos devolviendo más información en el mensaje de respuesta del error. Esta opción no está pensada para su uso en un entorno de producción. Para obtener más información, vea Desarrollar e implementar WCF Data Services.

Requisitos mínimos de acceso a recursos

En la siguiente tabla se detallan los derechos mínimos del conjunto de entidades que se deben conceder para ejecutar una operación concreta. Los ejemplos de ruta de acceso se basan en el servicio de datos de Northwind que se crea al completar el tutorial rápido. Puesto que las enumeraciones EntitySetRights y ServiceOperationRights se definen usando la clase FlagsAttribute, puede usar un operador OR lógico con el fin de especificar varios permisos para una operación o un conjunto de entidades únicos. Para obtener más información, vea Cómo: Habilitar el acceso al servicio de datos (WCF Data Services).

Ruta de acceso de URI y opción de consulta

GET

DELETE

MERGE

POST

PUT

/Customers

ReadMultiple

No admitido

No admitido

WriteAppend

No admitido

/Customers('ALFKI')

ReadSingle

ReadSingle y WriteDelete

ReadSingle y WriteMerge

no disponible

ReadSingle y WriteReplace

/Customers('ALFKI')/Orders

Customers: ReadSingle

-y-

Orders: ReadMultiple

No se admite

No se admite

Customers: ReadSingle y WriteMerge o WriteReplace

-y-

Orders: y WriteAppend

No se admite

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

Customers: ReadSingle

-y-

Orders: ReadSingle

Customers: ReadSingle

-y-

Orders: ReadSingle y WriteDelete

Customers: ReadSingle

-y-

Orders: ReadSingle y WriteMerge

No se admite

Customers: ReadSingle

-y-

Orders: ReadSingle y WriteReplace

/Orders(10643)/Customer

Customers: ReadSingle

-y-

Orders: ReadSingle

Customers: ReadSingle y WriteDelete

-y-

Orders: ReadSingle

Customers: ReadSingle y WriteMerge;

-y-

Orders: ReadSingle

Customers: WriteAppend

-y-

Orders: WriteAppend y ReadSingle

No se admite

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

Customers: ReadSingle

-y-

Orders: ReadMultiple

No se admite

No se admite

Customers: ReadSingle y WriteMerge o WriteReplace

-y-

Orders: ReadSingle

No se admite

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

Customers: ReadSingle

-y-

Orders: ReadSingle

Customers: ReadSingle y WriteMerge o WriteReplace

-y-

Orders: ReadSingle

No se admite

No se admite

No se admite

/Orders(10643)/$links/Customer

Customers: ReadSingle

-y-

Orders: ReadSingle

Orders: ReadSingle y WriteMerge o WriteReplace

Customers: ReadSingle

-y-

Orders: ReadSingle y WriteMerge

No se admite

Customers: ReadSingle;

- y -

Orders: ReadSingle y WriteReplace

/Customers/$count

ReadMultiple

No admitido

No se admite

No admitido

No admitido

/Customers('ALFKI')/ContactName

ReadSingle

No admitido

WriteMerge

No se admite

WriteReplace

/Customers('ALFKI')/Address/StreetAddress/$value1

ReadSingle

WriteDelete

No admitido

No se admite

No admitido

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

ReadSingle

ReadSingle y WriteDelete

WriteMerge

No admitido

WriteReplace

/Customers('ALFKI')/$value2

ReadSingle

No admitido

No se admite

No admitido

WriteReplace

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

Customers: ReadSingle

- y -

Orders: ReadMultiple

No admitido

No se admite

Customers: WriteAppend

No admitido

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

Customers: ReadSingle

- y -

Orders: ReadMultiple

No se admite

No se admite

No se admite

No admitido

1 En este ejemplo, Address representa una propiedad de tipo complejo de la entidad Customers que tiene una propiedad denominada StreetAddress. El modelo utilizado por los servicios de datos de Northwind no define este tipo complejo explícitamente. Cuando el modelo de datos se define con el proveedor de Entity Framework, puede usar las herramientas de Entity Data Model para definir este tipo complejo. Para obtener más información, vea How to: Create and Modify Complex Types (Entity Data Model Tools).

2 Se admite este URI cuando una propiedad que devuelve un objeto binario grande (BLOB) se define como el recurso multimedia que pertenece a una entidad que es una entrada de vínculo multimedia que, en este caso, es Customers. Para obtener más información, vea Proveedores de transmisión por secuencias (WCF Data Services).

Requisitos de control de versiones

Los siguientes comportamientos de configuración del servicio de datos requieren la versión 3 del protocolo OData o versiones posteriores:

  • Compatibilidad para incluir elementos de vínculo de relación en la fuente de respuesta.

  • Compatibilidad con los operadores de consulta any y all.

  • Compatibilidad para definir acciones de servicio y funciones.

  • Compatibilidad con tipos de datos espaciales.

  • Compatibilidad con vocabularios mediante la definición de anotaciones del modelo de datos.

  • Compatibilidad para deshabilitar la validación del modelo de datos para una solicitud de extremo $metadata.

Los siguientes comportamientos de configuración del servicio de datos requieren la versión 2 del protocolo OData o versiones posteriores:

  • La compatibilidad con solicitudes de recuento y proyección de consultas necesita la versión 2.0 del protocolo OData y versiones posteriores.

  • La compatibilidad con la opción de consulta $select para la proyección necesita la versión 2.0 del protocolo OData y versiones posteriores.

Para obtener más información, vea Control de versiones del servicio de datos (Servicios de datos de Microsoft WCF).

Vea también

Conceptos

Hospedar el servicio de datos (WCF Data Services)

Otros recursos

Servicio de datos (WCF Data Services)