Wcf ya es legado. Es momento de pensar en otras opciones.

Wcf es una tecnología robusta de ejecución de código remoto que se ha mantenido activa por más de 10 años que no sera incluida en .Net Core. Es momento de pensar en otras opciones.

.Net Framework ya no está incluido en él .Net Standard 2.1.

La última versión a la fecha del .Net Framework es la 4.8, y ni siquiera esta es compatible con .Net Standard 2.1. Este precedente implica que .Net Core y el Framework clásico ya tomaron caminos separados, al menos temporalmente, quizá Microsoft arregle esto más adelante. Aun cuando él .Net Framework se incorpore al Standard otra vez los días de Wcf están contados.

La W de WCF.

Wcf significa Windows Communication Foundation, ósea, son componentes pensados única y exclusivamente para ser ejecutados en Windows. Si, existe la implementación de Wcf en Mono que a la fecha está incompleta y con bastantes limitaciones. Si has trabajado con Wcf y conoces los Bindings debes de saber que varios de estos son exclusivos para herramientas nativas de Windows. No hay una alternativa viable de migración a otras plataformas fuera del ecosistema Windows. Otras plataformas de ejecución de código remoto dentro del .Net Standard si son multiplataforma y pueden ser ejecutadas en entornos no Windows, Wcf está en desventaja.

WCF y Http2.

No vas a encontrar implementaciones de Bindings en Http2  para tus servicios Wcf, aun cuando IIS sea capaz de entender el protocolo, el servicio puede que no. No he visto documentación o bindings disponibles en internet que te permitan usar http2 como protocolo de comunicación de tus servicios. Si, http2 es nuevo y no sera utilizado por el grueso de los desarrolladores en un tiempo. El problema es que su primo ASP.Net Core ya tiene soporte para este tipo de comunicación. Wcf lleva las de perder a la hora de diseñar nuevas arquitecturas orientadas a servicios en el ecosistema .Net.

WCF no está marcado como obsoleto.

Aun cuando Wcf no vaya a tener actualizaciones en el largo plazo, esto no significa que sea una mala herramienta para dar soporte o mantener legados. Si ya tienes servicios en Wcf productivos y no necesitas producir componentes en .Net Standard 2.1 o superior no hay necesidad de pensar en migrar.

Puedes usar gRPC en lugar de WCF.

gRPC es un Framework de ejecución de código remoto así como lo es Wcf. Este proyecto fue inicialmente desarrollado por Google y se volvió un proyecto de código abierto independiente. Incluso Microsoft aconseja a los desarrolladores de servicios Wcf dar un vistazo a gRPC como alternativa de migración o actualización. gRPC soporta las nuevas tecnologías y protocolos como http2. No es la primera ni la última vez que Microsoft renuncia a actualizar Frameworks propios y decide abrazar proyectos de código abierto.

Conclusiones.

Mi intuición me dice que .Net Framework se va a convertir en el patito feo del .Net Standard. De todos los integrantes del Standard él .Net Framework es el que carga más componentes legados, en algún punto va a haber incompatibilidades irreconciliables o se abandonaran componentes, esto ultimo lo que creo sucederá con Wcf.

 

 

Gustavo Sánchez