Pregunta

Actualmente tengo algo como esto para mi mesa de ruta. ¿Hay una mejor manera de manejar el versiones en WCF Web API o convencional WCF?

RouteTable.Routes.MapServiceRoute<Service1>("1.0/Route1", Config1);
RouteTable.Routes.MapServiceRoute<Service2>("1.0/Route2", Config2);
RouteTable.Routes.MapServiceRoute<Service3>("1.0/Route3", Config3);
RouteTable.Routes.MapServiceRoute<Service4>("1.0/Route4", Config4);
¿Fue útil?

Solución

Podrías hacer eso, pero es muy de protocolo, en este caso Http. Me pregunto si hay una manera de hacerlo sin preocuparse tanto por los protocolos. Idealmente, solo queremos hacerlo una vez y no para cada transporte. Afortunadamente hay una manera, déjame explicarte.

Al final del día, sus internales WCF deberían ser protocolo agnóstico. Con eso, quiero decir, por el momento en que se invoca un método en su servicio, no deberíamos importarnos si vino REST, TCP, HTTP o tuberías con nombre.

En WCF esto es bastante fácil y también lo es el versículo. Con versiones de versiones, podemos aprender mucho sobre la interfaz de .NET versiones, particularmente cuando no tiene nada que ver con WCF. La idea es que su servicio debe darse cuenta:

interface ISomething1 { ... }

Más adelante, cuando se requiere un nuevo método o cambios, debe:

interface ISomething2 : ISomething1 { void SomethingNew (...) }

Entonces es una cuestión simple publicar su servicio con 2 puntos finales en la configuración, uno apuntando a Isomething1 y el otro a Isomio2.

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