¿Cuál es la diferencia entre ellos?
¿Cuándo optaría por uno sobre el otro?
wcf
web-services
Desarrollador
fuente
fuente
Respuestas:
Esta respuesta se basa en un artículo que ya no existe:
Resumen del artículo:
"Básicamente, WCF es una capa de servicio que le permite crear aplicaciones que pueden comunicarse usando una variedad de mecanismos de comunicación. Con él, puede comunicarse usando Peer to Peer, Named Pipes, Web Services, etc.
No puede compararlos porque WCF es un marco para crear aplicaciones interoperables. Si lo desea, puede considerarlo como un habilitador de SOA. ¿Qué significa esto?
Bueno, WCF cumple con algo conocido como ABC, donde A es la dirección del servicio con el que desea comunicarse, B representa el enlace y C representa el contrato. Esto es importante porque es posible cambiar el enlace sin cambiar necesariamente el código. El contrato es mucho más poderoso porque fuerza la separación del contrato de la implementación. Esto significa que el contrato se define en una interfaz, y hay una implementación concreta a la que está obligado el consumidor utilizando la misma idea del contrato. El modelo de datos se abstrae ".
... luego ...
"Debe usar WCF cuando necesitemos comunicarnos con otras tecnologías de comunicación (por ejemplo, Peer to Peer, Named Pipes) en lugar del servicio web"
fuente
De ¿Cuál es la diferencia entre WCF y servicios web?
fuente
El servicio web se basa en SOAP y devuelve datos en formato XML. Solo admite el protocolo HTTP. No es de código abierto, pero puede ser consumido por cualquier cliente que entienda XML. Solo se puede alojar en IIS.
WCF también se basa en SOAP y devuelve datos en formato XML. Es la evolución del servicio web (ASMX) y soporta varios protocolos como TCP, HTTP, HTTPS, Named Pipes, MSMQ. El principal problema con WCF es su configuración tediosa y extensa. No es de código abierto, pero puede ser consumido por cualquier cliente que entienda XML. Se puede alojar en la aplicación o en IIS o mediante el servicio de ventana.
fuente
La diferencia básica y principal es que el servicio web ASP.NET está diseñado para intercambiar mensajes SOAP a través de HTTP solo, mientras que el servicio WCF puede intercambiar mensajes utilizando cualquier formato (SOAP es el predeterminado) sobre cualquier protocolo de transporte, es decir, HTTP, TCP, MSMQ o NamedPipes, etc.
fuente
El servicio web utiliza solo el protocolo HTTP al transferir datos de una aplicación a otra.
Pero WCF admite más protocolos para transportar mensajes que los servicios web ASP.NET. WCF admite el envío de mensajes mediante HTTP, así como el Protocolo de control de transmisión (TCP), canalizaciones con nombre y Microsoft Message Queue Server (MSMQ).
Para desarrollar un servicio en Web Service, escribiremos el siguiente código
Para desarrollar un servicio en WCF, escribiremos el siguiente código
El servicio web no es arquitectónicamente más sólido. Pero WCF es arquitectónicamente más sólido y promueve las mejores prácticas.
Los servicios web usan XmlSerializer pero WCF usa DataContractSerializer. ¿Cuál es mejor en rendimiento en comparación con XmlSerializer?
Para las llamadas de servicio a servicio internas (detrás del firewall) usamos el enlace net: tcp, que es mucho más rápido que SOAP.
WCF es entre un 25% y un 50% más rápido que ASP.NET Web Services, y aproximadamente un 25% más rápido que .NET Remoting.
WCF se utiliza para comunicarse entre otras aplicaciones que se han desarrollado en otras plataformas y que utilizan otra tecnología.
Por ejemplo, si tengo que transferir datos de la plataforma .net a otra aplicación que se ejecuta en otro sistema operativo (como Unix o Linux) y están usando otro protocolo de transferencia (como WAS o TCP), entonces solo es posible transferir datos usando WCF.
Aquí no hay restricción de plataforma, protocolo de transferencia de aplicación mientras se transfieren los datos entre una aplicación a otra aplicación.
La seguridad es muy alta en comparación con el servicio web
fuente
La principal diferencia es el tiempo de espera, WCF Service ha agotado el tiempo de espera cuando no hay respuesta, pero el servicio web no tiene esta propiedad.
fuente