¿Cuál es la diferencia entre ellos?
¿Cuándo optaría por uno sobre el otro?
¿Cuál es la diferencia entre ellos?
¿Cuándo optaría por uno sobre el otro?
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"
De ¿Cuál es la diferencia entre WCF y servicios web?
WCF es un reemplazo para todas las tecnologías de servicios web anteriores de Microsoft. También hace mucho más de lo que tradicionalmente se considera "servicios web".
Los "servicios web" de WCF son parte de un espectro mucho más amplio de comunicación remota habilitada a través de WCF. Obtendrá un grado mucho mayor de flexibilidad y portabilidad haciendo cosas en WCF que a través de ASMX tradicional porque WCF está diseñado, desde cero, para resumir todas las diferentes infraestructuras de programación distribuida que ofrece Microsoft. Un punto final en WCF se puede comunicar con la misma facilidad a través de SOAP / XML que a través de TCP / binario y cambiar este medio es simplemente un mod de archivo de configuración. En teoría, esto reduce la cantidad de código nuevo necesario al transferir o cambiar las necesidades comerciales, los objetivos, etc.
ASMX es más antiguo que WCF, y cualquier cosa que pueda hacer ASMX puede hacerlo WCF (y más). Básicamente, puede ver que WCF trata de agrupar lógicamente todas las diferentes formas de hacer que dos aplicaciones se comuniquen en el mundo de Microsoft; ASMX fue solo una de estas muchas formas y, por lo tanto, ahora se agrupa bajo el paraguas de capacidades de WCF.
Solo se puede acceder a los servicios web a través de HTTP y funciona en un entorno sin estado, donde WCF es flexible porque sus servicios se pueden alojar en diferentes tipos de aplicaciones. Los escenarios comunes para hospedar servicios WCF son IIS, WAS, autohospedaje, servicio administrado de Windows.
La principal diferencia es que el uso de servicios web
XmlSerializer
. Pero WCF usaDataContractSerializer
cuál es mejor en rendimiento en comparación conXmlSerializer
.
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.
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.
¿Cuál es la diferencia entre el servicio web y WCF?
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
[WebService]
public class Service : System.Web.Services.WebService
{
[WebMethod]
public string Test(string strMsg)
{
return strMsg;
}
}
Para desarrollar un servicio en WCF, escribiremos el siguiente código
[ServiceContract]
public interface ITest
{
[OperationContract]
string ShowMessage(string strMsg);
}
public class Service : ITest
{
public string ShowMessage(string strMsg)
{
return strMsg;
}
}
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.
¿Cuándo optaría por uno sobre el otro?
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
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.