Por qué estoy respondiendo:
Me tomó mucho tiempo entender la diferencia entre estas dos tecnologías. Pondré todos esos puntos aquí que pienso "Si tenía estos puntos en el momento en que me preguntaba en busca de esta respuesta, entonces he decidido muy temprano al seleccionar mi tecnología requerida".
Fuente de información:
Microsoft® Visual Studio® 2015 desatado
ISBN-13: 978-0-672-33736-9 ISBN-10: 0-672-33736-3
Por qué ASP.NET Web API y WCF:
Antes de comparar las tecnologías de ASP.NET Web API y WCF, es importante comprender que en realidad hay dos estilos / estándares para crear servicios web: REST (Representational State Transfer) y SOAP / WSDL. SOAP / WSDL fue el estándar original en el que se construyeron los servicios web. Sin embargo, era difícil de usar y tenía formatos de mensajes voluminosos (como XML) que degradaban el rendimiento. Los servicios basados en REST se convirtieron rápidamente en la alternativa. Son más fáciles de escribir porque aprovechan las construcciones básicas de HTTP (GET, POST, PUT, DELETE) y generalmente usan formatos de mensaje más pequeños (como JSON). Como resultado, los servicios HTTP basados en REST son ahora el estándar para escribir servicios que se dirigen estrictamente a la Web.
Definamos el propósito de la API web ASP.NET
ASP.NET Web API es la tecnología de Microsoft para desarrollar servicios web HTTP basados en REST. (Hace mucho tiempo reemplazó el ASMX de Microsoft, que estaba basado en SOAP / WSDL). La API web facilita la escritura de servicios robustos basados en protocolos HTTP que todos los navegadores y dispositivos nativos entienden. Esto le permite crear servicios para admitir su aplicación y llamarlos desde otras aplicaciones web, tabletas, teléfonos móviles, PC y consolas de juegos. La mayoría de las aplicaciones escritas hoy para aprovechar la conexión web siempre presente utilizan los servicios HTTP de alguna manera.
Ahora definamos el propósito de WCF:
La comunicación a través de Internet no siempre es el medio más eficiente. Por ejemplo, si tanto el cliente como el servicio existen en la misma tecnología (o incluso en la misma máquina), a menudo pueden negociar un medio más eficiente para comunicarse (como TCP / IP). Los desarrolladores de servicios se encontraron tomando las mismas decisiones que intentaban evitar. Ahora tendrían que elegir entre crear servicios internos eficientes y poder tener un amplio acceso a través de Internet. Y, si tuvieran que soportar ambos, podrían tener que crear múltiples versiones de su servicio o al menos servidores proxy separados para acceder a su servicio. Este es el problema que Microsoft resolvió con WCF .
Con WCF, puede crear su servicio sin preocuparse por los límites. Luego puede dejar que WCF se preocupe por ejecutar su servicio de la manera más eficiente, dependiendo del cliente que llama. Para gestionar esta tarea, WCF utiliza el concepto de puntos finales. Su servicio puede tener múltiples puntos finales (configurados en tiempo de diseño o después de la implementación). Cada punto final indica cómo el servicio podría admitir un cliente que realiza la llamada: a través de la Web, a través de comunicación remota, a través de Microsoft Message Queue Server (MSMQ) y más. WCF le permite concentrarse en crear la funcionalidad de su servicio. Le preocupa cómo hablar de manera más eficiente con los clientes que llaman. De esta manera, un único servicio WCF puede soportar de manera eficiente muchos tipos de clientes diferentes.
Ejemplo de WCF:
Considere el ejemplo:
Los datos del cliente se comparten entre las aplicaciones. Cada aplicación puede escribirse en una plataforma diferente y puede existir en una ubicación diferente. Puede extraer la interfaz del cliente en un servicio WCF que proporciona acceso común a los datos compartidos del cliente. Esto centraliza los datos, reduce la duplicación, elimina la sincronización y simplifica la administración. Además, al usar WCF, puede configurar los puntos finales de servicio para que funcionen de la manera que tenga sentido para el cliente que realiza la llamada. La Figura muestra el ejemplo anterior con acceso centralizado a los datos del cliente en un servicio WCF.
Conclusión:
i) Cuándo elegir la API web:
No se puede negar que los servicios HTTP basados en REST como los creados con la API web ASP.NET se han convertido en el estándar para crear servicios web. Estos servicios ofrecen un enfoque sencillo y directo para los desarrolladores web que crean servicios. Los desarrolladores web entienden HTTP GET y POST y, por lo tanto, se adaptan bien a este tipo de servicios. Por lo tanto, si está escribiendo servicios estrictamente dirigidos a HTTP , la API web ASP.NET es la opción lógica.
ii) Cuándo elegir WCF:
La tecnología WCF es útil cuando necesita admitir múltiples puntos finales de servicio basados en diferentes protocolos y formatos de mensajes. Productos como Microsoft BizTalk aprovechan WCF para crear servicios robustos que se pueden usar en la Web también a través de diferentes configuraciones de máquina a máquina. Sin embargo, si necesita escribir una aplicación que se comunique a través de TCP / IP cuando se conecta al local red y funciona a través de HTTP cuando está fuera de la red, WCF es su respuesta .
Ten cuidado:
Los desarrolladores web a menudo ven a WCF como más difícil y complejo de desarrollar. Por lo tanto, si no prevé la necesidad de servicios multiprotocolo, es probable que se quede con la API web ASP.NET.