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

  • Agregar el nuevo parámetro

  • Cambiar el tipo de valor devuelto

  • Quite la operación de servicio

  • Suprimir el parámetro existente

  • Agregar la nueva operación del servicio

Comportamientos del servicio

  • Deshabilitar las solicitudes del recuento

  • Deshabilitar la compatibilidad de la proyección

  • Aumentar la versión del servicio de datos necesaria

  • Habilitar las solicitudes del recuento

  • Habilitar la compatibilidad de la proyección

  • Disminuir la versión del servicio de datos necesaria

Permisos del conjunto de entidades

  • Restrinja los permisos del conjunto de entidades

  • Cambiar el código de respuesta (nuevo primer valor de dígito) 1

  • Relaje los permisos del conjunto de entidades

  • Cambiar el código de respuesta (mismo primer valor de dígito)

Propiedades de entidad

  • Quite la propiedad o relación existente

  • Agregar la propiedad que no acepta valores NULL

  • Cambiar la propiedad existente

  • Agregar la propiedad que acepta valores NULL2

Conjuntos de entidades

  • Quite el conjunto de entidades

  • Agregar el tipo derivado

  • Cambiar el tipo base

  • Agregar el conjunto de entidades

Personalización de fuentes

  • Cambiar la asignación de la propiedad de entidad

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:

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

  • .NET Framework versión 3.5 Service Pack 1 (SP1)

  • Versión 3 de Silverlight.

Versión 2

  • .NET Framework versión 4

  • Actualización a .NET Framework versión 3.5 SP1. Puede descargar e instalar la actualización desde el Centro de descarga de Microsoft.

  • Versión 4 de Silverlight

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)

Otros recursos

Servicio de datos (WCF Data Services)