Compartir a través de


Configurar el servicio de datos (WCF Data Services)

Con WCF Data Services , puede crear servicios de datos que expongan fuentes de Open Data Protocol (OData) . Los datos de estas fuentes pueden provenir de distintos orígenes de datos. WCF Data Services usa proveedores de datos para exponer estos datos como 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 WCF Data Services , un servicio de datos es una clase que hereda de la clase DataService, 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, 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 que implementa el servicio de datos, como en la siguiente implementación de un servicio de datos de 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;
}

Configuración del servicio de datos

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

Miembro Comportamiento

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

EnableTypeAccess

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

EnableTypeConversion

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

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 OData: convenciones URI y Cargar contenido aplazado (WCF Data Services).

MaxExpandDepth

Permite limitar el tamaño de una respuesta limitando la profundidad del gráfico de entidades relacionadas que pueden incluirse en una sola solicitud utilizando el operador de consulta $expand. Para obtener más información, vea OData: convenciones 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 la enumeración DataServiceProtocolVersion, la funcionalidad más reciente de WCF Data Services no está disponible para los clientes que tengan acceso al servicio de datos. Para obtener más información, vea Trabajar con varias versiones de WCF Data Services.

MaxResultsPerCollection

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

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 de nombre con objeto 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. Dado que la enumeración EntitySetRights y la enumeración 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/acción GET DELETE MERGE POST PUT

/Customers

ReadMultiple

No compatible

No compatible

WriteAppend

No compatible

/Customers('ALFKI')

ReadSingle

ReadSingle y WriteDelete

ReadSingle y WriteMerge

no disponible

ReadSingle y WriteReplace

/Customers('ALFKI')/Orders

Customers: ReadSingle

- y -

Orders: ReadMultiple

No compatible

No compatible

Customers: ReadSingle y WriteMerge o WriteReplace

- y -

Orders : y WriteAppend

No compatible

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

Customers: ReadSingle

- y -

Orders: ReadSingle

Customers: ReadSingle

- y -

Orders: ReadSingle y WriteDelete

Customers: ReadSingle

- y -

Orders: ReadSingle y WriteMerge

No compatible

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 compatible

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

Customers: ReadSingle

- y -

Orders: ReadMultiple

No compatible

No compatible

Customers: ReadSingle y WriteMerge o WriteReplace

- y -

Orders: ReadSingle

No compatible

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

Customers: ReadSingle

- y -

Orders: ReadSingle

Customers: ReadSingle y WriteMerge o WriteReplace

- y -

Orders: ReadSingle

No compatible

No compatible

No compatible

/Orders(10643)/$links/Customer

Customers: ReadSingle

- y -

Orders: ReadSingle

Orders: ReadSingle y WriteMerge o WriteReplace

Customers: ReadSingle

- y -

Orders: ReadSingle y WriteMerge

No compatible

Customers: ReadSingle;

- y -

Orders: ReadSingle y WriteReplace

/Customers/$count

ReadMultiple

No compatible

No compatible

No compatible

No compatible

/Customers('ALFKI')/ContactName

ReadSingle

No compatible

WriteMerge

No compatible

WriteReplace

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

ReadSingle

WriteDelete

No compatible

No compatible

No compatible

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

ReadSingle

ReadSingle y WriteDelete

WriteMerge

No compatible

WriteReplace

/Customers('ALFKI')/$value 2

ReadSingle

No compatible

No compatible

No compatible

WriteReplace

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

Customers: ReadSingle

- y -

Orders: ReadMultiple

No compatible

No compatible

Customers: WriteAppend

No compatible

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

Customers: ReadSingle

- y -

Orders: ReadMultiple

No compatible

No compatible

No compatible

No compatible

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 2 del protocolo OData o versiones posteriores:

  • Compatibilidad para las solicitudes de recuento.

  • Compatibilidad para la opción de consulta $select de proyección.

Para obtener más información, vea Trabajar con varias versiones de WCF Data Services.

Vea también

Conceptos

Hospedar el servicio de datos (WCF Data Services)

Otros recursos

Definir WCF Data Services