Control de versiones del servicio de datos (Servicios de datos de Microsoft WCF)
Open Data Protocol (OData) le permite crear servicios de datos para que los clientes puedan tener acceso a datos como recursos utilizando URI basados en un modelo de datos. OData también admite la definición de operaciones de servicio. Después de la implementación inicial y de haber transcurrido potencialmente varias horas durante su duración, estos servicios de datos puede que se tengan que cambiar debido a diversas razones, como cambios en las necesidades comerciales, requisitos de tecnología de la información o para resolver otros problemas. Al realizar cambios en un servicio de datos existente, debe considerar si va a definir una nueva versión de su servicio de datos y cómo minimizar mejor el impacto en las aplicaciones cliente existentes. En este tema se proporciona orientación sobre cuándo y cómo crear una nueva versión de un servicio de datos. También describe cómo administra Servicios de datos de Microsoft WCF un intercambio entre clientes y servicios de datos que admite diferentes versiones del protocolo OData.
Control de versiones de WCF Data Services
Una vez implementado un servicio de datos y utilizados los datos, los cambios realizados al servicio de datos tienen el potencial para producir problemas de compatibilidad con las aplicaciones cliente existentes. Sin embargo, como las necesidades del negocio totales del servicio requieren a menudo cambios, debe considerar cuándo y cómo crear una nueva versión de su servicio de datos con el menor impacto para las aplicaciones cliente.
Cambios del modelo de datos que recomiendan una nueva versión del servicio de datos
Al considerar si se va a publicar una nueva versión de un servicio de datos, es importante entender cómo los diferentes tipos de cambios pueden afectar a las aplicaciones cliente. Los cambios de un servicio de datos que podrían requerir crear una nueva versión de un servicio de datos se pueden dividir en las siguientes dos categorías:
Los cambios del contrato de servicio —que incluyen actualizaciones de las operaciones de servicio, cambios de la accesibilidad de conjuntos de entidades (fuentes), cambios de versiones y otros cambios de los comportamientos del servicio.
Los cambios del contrato de datos —que incluyen cambios del modelo de datos, formatos de fuente o personalización de la fuente.
La tabla siguiente detalla para qué clases de cambios debe considerar la posibilidad de publicar una nueva versión del servicio de datos:
Tipo de cambio |
Requiere una nueva versión |
No se necesita una nueva versión |
---|---|---|
Operaciones de servicio |
|
|
Comportamientos del servicio |
|
|
Permisos del conjunto de entidades |
|
|
Propiedades de entidad |
|
|
Conjuntos de entidades |
|
|
Personalización de fuentes |
|
1 esto puede depender de que sea estrictamente necesario que una aplicación cliente se base en recibir un código de error concreto.
2 Puede establecer la propiedad IgnoreMissingProperties en true para hacer que el cliente omita cualquier nueva propiedad enviada por el servicio de datos no definida en el cliente. Sin embargo, cuando se realizan inserciones, las propiedades no incluidas por el cliente en la solicitud POST se establecen en sus valores predeterminados. Para las actualizaciones, cualquier dato existente en una propiedad desconocida para el cliente podría sobrescribirse con los valores predeterminados. En este caso, debería enviar la actualización como una solicitud MERGE, que es el valor predeterminado. Para obtener más información, vea Administrar el contexto del servicio de datos (Servicio de datos de WCF).
Cómo controlar las versiones de un servicio de datos
Cuando se requiere, una nueva versión del servicio de datos se define creando una nueva instancia del servicio con un contrato de servicio o un modelo de datos actualizado. A continuación, este nuevo servicio se expone utilizando un nuevo extremo de URI, que lo diferencia de la versión anterior. Por ejemplo:
La versión anterior: http://services.odata.org/Northwind/v1/Northwind.svc/
Nueva versión: http://services.odata.org/Northwind/v2/Northwind.svc/
Al actualizar un servicio de datos, los clientes necesitarán también estar actualizados según los nuevos metadatos del servicio de datos y utilizar el nuevo URI raíz. Cuando sea posible, debe mantener la versión anterior del servicio de datos para admitir clientes que todavía no se hayan actualizado para utilizar la nueva versión. Se pueden quitar las versiones anteriores de un servicio de datos cuando ya no se necesitan. Debe considerar la posibilidad de mantener el URI del extremo del servicio de datos en un archivo de configuración externo.
Versiones del protocolo OData
A medida que se lanzan nuevas versiones de OData, quizás las aplicaciones cliente no usen la misma versión del protocolo OData que admite el servicio de datos. Una aplicación cliente anterior puede tener acceso a un servicio de datos que admita una versión más reciente de OData. Una aplicación cliente también puede estar utilizando una versión más reciente de la biblioteca cliente de Servicios de datos de Microsoft WCF, que admite una versión más reciente de OData que el servicio de datos al que se tiene acceso.
Servicios de datos de Microsoft WCF aprovecha la compatibilidad que proporciona OData para administrar esos escenarios de control de versiones. También se admite generar y usar metadatos del modelo de datos con el fin de crear las clases de servicio de datos de cliente cuando el cliente usa una versión distinta de OData de la que usa el servicio de datos. Para obtener más información, vea OData: Control de versiones del protocolo.
Negociación de las versiones
El servicio de datos se puede configurar para definir la versión más alta del protocolo OData que usará el servicio, independientemente de la versión solicitada por el cliente. Para ello, especifique un valor de la enumeración DataServiceProtocolVersion para la propiedad MaxProtocolVersion de la clase DataServiceBehavior que usa el servicio de datos. Para obtener más información, vea Configurar el servicio de datos (WCF Data Services).
Cuando una aplicación usa las bibliotecas de cliente de Servicios de datos de Microsoft WCF para tener acceso a un servicio de datos, las bibliotecas establecen automáticamente estos encabezados en los valores correctos, en función de la versión de OData y de las características que se usan en la aplicación. De forma predeterminada, Servicios de datos de Microsoft WCF utiliza la versión de protocolo más baja que admita la operación solicitada.
En la siguiente tabla se detallan las versiones de .NET Framework y Silverlight que incluyen compatibilidad con Servicios de datos de Microsoft WCF para versiones específicas del protocolo OData.
Versión del protocolo OData |
Compatibilidad introducida en… |
---|---|
Versión 1 |
|
Versión 2 |
|
Versión 3 |
|
Versiones de metadatos
De forma predeterminada, Servicios de datos de Microsoft WCF usa la versión 1.1 de CSDL para representar un modelo de datos. Este siempre es el caso para los modelos de datos basados en un proveedor de reflexión o en un proveedor del servicio de datos personalizados. No obstante, cuando se define un modelo de datos mediante Entity Framework, la versión devuelta de CSDL es la misma que la que usa Entity Framework. La versión de CSDL la determina el espacio de nombres del elemento Schema. Para obtener más información, vea la especificación [MC-CSDL]: Formato de archivo de definición del esquemas conceptuales.
El elemento DataServices de los metadatos devueltos también contiene un atributo DataServiceVersion, que tiene el mismo valor que el encabezado DataServiceVersion del mensaje de respuesta. Las aplicaciones cliente, como el cuadro de diálogo Agregar referencia de servicio de Visual Studio, usan esta información para generar las clases del servicio de datos de cliente que funcionen correctamente con la versión de Servicios de datos de Microsoft WCF que hospede el servicio de datos. Para obtener más información, vea OData: Protocol Versioning.
Vea también
Conceptos
Proveedores de servicios de datos (WCF Data Services)