2011-03-23 7 views
7

Tengo un contrato wcf que funciona con el cliente v1.Marcar campos en desuso en el contrato de WCF

Ahora estoy trabajando en el servicio v2, y quiero marcar algunos de los campos como obsoletos, por lo que el cliente v1 los verá y los usará, y el cliente v2 los ignorará.

¿Existen mejores prácticas para este problema? ¿Hay algún atributo existente en WCF que deba usar?

gracias.

Respuesta

12

Puede decorar sus propiedades antiguas como [Obsolete], pero el cliente solo las verá si utiliza una referencia de DLL y no un servicio/referencia web (WSDL). [Obsolete] decoración no se pasará al cliente que utiliza WSDL para generar el proxy.

En términos de control de versiones WCF, una vez que haya publicado una interfaz, no puede eliminar ningún método o en términos de contrato no debería realmente eliminar ninguna propiedad. Puede publicar una nueva interfaz y crear una clase de DTO por separado si desea que los clientes nuevos los utilicen.

Ref: Obsolete Attribute.

+0

El [Obsoleto] es una propiedad personalizada que ha creado, ¿verdad? – Adibe7

+0

Lo siento, quise decir '[Obsoltete]'. Corregido. – Aliostad

+0

[obsoleto] no me dejará la opción de admitir v1 – Adibe7

0

De nuestro lado usualmente versionamos la operación a través del espacio de nombres. Cuando una operación está en desuso, simplemente ponemos un comentario de desaprobación en la descripción que el cliente puede ver a través del wsdl. Notificamos a nuestros clientes y les informamos sobre las operaciones en desuso y cuándo será la fecha de vencimiento.

0

Estoy de acuerdo con @Aliostad en que no debe eliminar las operaciones del contrato de servicio en general, ya que introduce un cambio de rotura y, como tal, debe evitarse en la versión única de la API.

Sin embargo, si desea informar al cliente/consumidor acerca de algunos cambios planificados o tiene alguna otra necesidad de agregar cierta información "adicional" al contrato de operación, puede echar un vistazo a la interfaz IWsdlExportExtension, crear un atributo personalizado que implemente y anotar operaciones particulares.

Puede echar un vistazo a this article para referencia de detalle.

Cuestiones relacionadas