Ahora administro un equipo de unos 15 desarrolladores, y estamos atascados en un punto de elección de la tecnología, donde el equipo se divide en dos equipos completamente opuestos, debatiendo sobre el uso de WCF vs. API web.
El equipo A, que admite el uso de la API web, presenta estos motivos:
- Web API es solo la forma moderna de escribir servicios ( Wikipedia )
- WCF es una sobrecarga para HTTP. Es una solución para TCP, Net Pipes y otros protocolos.
- Los modelos WCF no son POCO, debido a [DataContract] y [DataMember] y esos atributos
- SOAP no es tan legible y práctico como JSON
- SOAP es una sobrecarga para la red en comparación con JSON (transporte a través de HTTP)
- Sin método de sobrecarga
El equipo B que admite el uso de WCF dice:
- WCF admite múltiples protocolos (a través de la configuración)
- WCF admite transacciones distribuidas
- Existen muchos buenos ejemplos e historias de éxito para WCF (mientras que la API web todavía es joven)
- Duplex es excelente para la comunicación bidireccional
Este debate continúa y no sé qué hacer ahora. Personalmente, creo que deberíamos usar una herramienta solo para su lugar de uso correcto . En otras palabras, será mejor que usemos API web, si queremos exponer un servicio a través de HTTP, pero usamos WCF cuando se trata de TCP y Duplex.
Al buscar en Internet, no podemos llegar a un resultado sólido. Existen muchas publicaciones para apoyar WCF, pero por el contrario también encontramos personas que se quejan de ello. Sé que la naturaleza de esta pregunta puede parecer discutible, pero necesitamos algunos buenos consejos para decidir. Estamos atrapados en un punto en el que elegir una tecnología por casualidad podría hacer que nos arrepientamos más tarde. Queremos elegir con los ojos abiertos.
Nuestro uso sería principalmente para la web, y expondríamos nuestros servicios a través de HTTP. Sin embargo, en algunos casos (digamos del 5 al 10 por ciento) podríamos necesitar transacciones distribuidas.
¿Qué debería hacer ahora? ¿Cómo manejo este debate de manera constructiva?