Pregunta

Esto debería ser fácil para alguien familiarizado con las mejores prácticas de servicio de versiones/contratos de datos. Quiero asegurarme de usar este versiones de la manera correcta.

Entonces, digamos que tenemos un contrato de servicio:

[ServiceContract(Namespace="http://api.x.com/Svc1")]
public interface IService1
{
   [OperationContract(Name = "AddCustomer")]
   bool AddCustomer(DTOCustomer1 customer);
}

y contrato de datos:

[DataContract(Name="Customer", Namespace="http://api.x.com/Svc1/2011/01/DTO")]
public class DTOCustomer1
{
   [DataMember(Name="Name")]
   public string Name { ... }
}

Si realmente necesito cambiar este último en otra cosa: (lo siguiente es solo ejemplo)

[DataContract(Name="Customer", Namespace="http://api.x.com/Svc1/2012/01/DTO")]
public class DTOCustomer2
{
   [DataMember(Name="Name")]
   public string Name { ... }

   [DataMember(Name="Address")]
   public DTOAddress Address { ... }
}

... Entonces, ¿cómo utilizaré DTOCUSTOMER2 en lugar de DTocustomer1 del Servicio para que los clientes antiguos y nuevos cumplan? ¿Qué se recomienda en este caso? ¿Cambiará mi contrato de servicio? AFAIK No necesitaré cambiar el contrato de servicio. ¿Cómo será el contrato de servicio? ¿Necesito un nuevo punto final? ¿Necesito un nuevo contrato operativo que utilice el nuevo contrato de datos?

Edición1:Simplemente cambiando

bool addcustomer (cliente dtoCustomer1);

dentro

bool addcustomer (cliente dtoCustomer2);

¿servirá?

Edit2:La respuesta a Edit1 es No, dado que Dtocustomer2 tiene un espacio de nombres diferente, pero podría funcionar si tiene el mismo espacio de nombres. Aún así, no sé qué es lo mejor aquí y espero que alguien tenga una buena respuesta.

¡Gracias de antemano!

¿Fue útil?

Solución

Terminé respondiendo a esta pregunta con la ayuda de otra pregunta aquí: WCF - Manejo de versiones

Otros consejos

Encuentre algunos enlaces útiles que describan las mejores prácticas para la versión de versiones del contrato de datos.

  1. Mejores prácticas: Versiones de contrato de datos
  2. Versión del contrato de datos

El segundo enlace describe cómo maneja cuando desea agregar o eliminar los atributos de su contrato de datos y algunos otros escenarios.

Espero que ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top