studio - wcf vs web api
Servicio web vs Servicio WCF (6)
¿Cuál es la diferencia entre ellos?
¿Cuándo elegiría uno sobre el otro?
¿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 el transporte de mensajes que los servicios web ASP.NET. WCF admite el envío de mensajes utilizando HTTP, así como el Protocolo de control de transmisión (TCP), conductos con nombre y Microsoft Message Queuing (MSMQ).
Para desarrollar un servicio en el servicio web, 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 robusto. Pero WCF es arquitectónicamente más robusto 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 cortafuegos) utilizamos el enlace net: tcp, que es mucho más rápido que SOAP.
WCF es un 25% -50% más rápido que ASP.NET Web Services, y aproximadamente un 25% más rápido que .NET Remoting.
¿Cuándo elegiría uno sobre el otro?
WCF se utiliza para comunicarse entre otras aplicaciones que se ha desarrollado en otras plataformas y utilizando otras tecnologías.
Por ejemplo, si tengo que transferir datos desde 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 restricciones de plataforma, transferencia de protocolo de aplicación mientras se transfieren los datos entre una aplicación y otra.
La seguridad es muy alta en comparación con el servicio web
Esta respuesta se basa en un artículo que ya no existe:
Resumen del artículo:
"Básicamente, WCF es una capa de servicios que le permite crear aplicaciones que se pueden comunicar utilizando una variedad de mecanismos de comunicación. Con ella, puede comunicarse utilizando Peer to Peer, named pipes, web services, etc.
No puede compararlos porque WCF es un marco para crear aplicaciones interoperables. Si lo desea, puede pensarlo como un habilitador de SOA. ¿Qué significa esto?
Bueno, WCF cumple con lo que se conoce 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 obliga a 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 el consumidor tiene la misma idea del contrato. El modelo de datos se abstrae ".
... luego ...
"debería usar WCF cuando necesitamos comunicarnos con otras tecnologías de comunicación (p. ej., Peer to Peer, Named Pipes) en lugar de Web Service"
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, mientras que WCF Service puede intercambiar mensajes utilizando cualquier formato (SOAP es el predeterminado) sobre cualquier protocolo de transporte, es decir, HTTP, TCP, MSMQ o NamedPipes, etc.
La principal diferencia es el tiempo de espera, el servicio WCF ha agotado el tiempo de espera cuando no hay respuesta, pero el servicio web no tiene esta propiedad.
codeproject.com/Articles/139787/…
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 como "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 más alto de flexibilidad y portabilidad haciendo cosas en WCF que a través de ASMX tradicional, ya que WCF está diseñado desde cero para resumir todas las diferentes infraestructuras de programación distribuidas que ofrece Microsoft. Un punto final en WCF se puede comunicar con la misma facilidad a través de SOAP / XML que con TCP / binary y cambiar este medio es simplemente un mod de archivo de configuración. En teoría, esto reduce la cantidad de código nuevo que se necesita para portar o cambiar necesidades comerciales, objetivos, etc.
ASMX es anterior a WCF, y cualquier cosa que ASMX pueda hacer puede hacerlo WCF (y más). Básicamente, puede ver que WCF intenta agrupar lógicamente todas las formas diferentes de conseguir que dos aplicaciones se comuniquen en el mundo de Microsoft; ASMX fue solo una de estas muchas formas, por lo que ahora se encuentra agrupada bajo el paraguas de capacidades de WCF.
Se puede acceder a los servicios web solo 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 los servicios de WCF son IIS, WAS, Self-hosting, Managed Windows Service.
La principal diferencia es que los servicios web utilizan
XmlSerializer
. Pero WCF usaDataContractSerializer
que es mejor en rendimiento en comparación conXmlSerializer
.
El servicio web se basa en SOAP y devuelve datos en formato XML. Solo es compatible con el protocolo HTTP. No es de código abierto, pero puede ser consumido por cualquier cliente que entienda xml. Se puede hospedar solo en IIS.
WCF también se basa en SOAP y devuelve datos en formato XML. Es la evolución del servicio web (ASMX) y admite varios protocolos como TCP, HTTP, HTTPS, Canalizaciones con nombre, 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.