Diferencia entre WCF vs servicios web

WCF es un reemplazo para todas las tecnologías de servicios web anteriores. Está desarrollado por Microsoft. Reemplaza lo que tradicionalmente se considera como "servicios web". El servicio web se basa en SOAP que devuelve datos en formato XML. Solo es compatible con el protocolo HTTP. Tampoco es de código abierto y puede ser consumido por cualquier cliente que entienda XML. Solo se puede alojar en IIS.

¿Qué es WCF?

WCF se basa en SOAP y devuelve datos en formato XML. Es una extensión del servicio web (ASMX) y admite varios protocolos como HTTP, HTTPS, TCP, canalizaciones con nombre, MSMQ, etc. WCF tiene un problema con su configuración tediosa y extensa. No es de código abierto, pero puede ser utilizado por cualquier cliente que entienda XML. Se puede alojar en múltiples plataformas como en la aplicación o en IIS o utilizando el servicio de ventana.

¿En qué escenarios se debe usar WCF?

  • Para realizar transacciones comerciales, WCF nos proporciona un servidor seguro.
  • Dos o más personas pueden comunicarse y también intercambiar datos en tiempo real utilizando un servicio de chat creado sobre WCF.
  • Una aplicación de panel que sondea uno o más servicios para obtener información y la presenta de forma lógica.
  • Exponer un flujo de trabajo que se implementa utilizando Windows Workflow Foundation como un servicio WCF.

¿Qué es un servicio web?

Como se discutió anteriormente, los servicios web funcionan en un entorno sin estado. Solo se puede acceder a través de HTTP. Los servicios WCF se pueden alojar en diferentes tipos de aplicaciones. Por lo tanto, a diferencia de los servicios web, WCF es más flexible.

WCF se puede alojar en varios escenarios. Tales escenarios incluyen servicios como WAS, IIS, autohospedaje, servicio de Windows administrado, etc.

Comparación cara a cara entre WCF y servicios web (infografía)

A continuación se muestra la diferencia de los 9 principales entre WCF y servicios web

Diferencias clave entre WCF y servicios web

Tanto WCF vs Web Services son opciones populares en el mercado; discutamos algunas de las principales diferencias entre WCF y servicios web

  • Al transferir datos de una aplicación a otra, el servicio web usa solo el protocolo HTTP. Por otro lado, para transportar datos, WCF admite más protocolos en comparación con los servicios web ASP.NET. Además de enviar mensajes utilizando HTTP, WCF también admite el Protocolo de control de transmisión (TCP), Microsoft Message Queue Server (MSMQ) y canalizaciones con nombre.
  • WCF es arquitectónicamente más robusto que el servicio web.
  • XmlSerializer se utiliza en servicios web. WCF usa DataContractSerializer, que es mejor en comparación con XmlSerializer en términos de rendimiento.
  • Cuando nos comunicamos entre múltiples aplicaciones desarrolladas en diferentes plataformas, usamos WCF. El uso de WCF es la única posibilidad para transferir datos en caso de que transfiramos datos de la plataforma .NET a cualquier otra aplicación que se ejecute en otros sistemas operativos como Unix o Linux.
  • La seguridad en WCF es muy alta en comparación con el servicio web.

Tabla comparativa de WCF vs servicios web

A continuación se muestra la 9 comparación más importante entre WCF vs Servicios web

La base de comparación entre WCF vs servicios web

WCF

Servicios web

Versión de introducciónEl servicio WCF se introdujo con .NET versión 3.0.El servicio web existe en un marco .net desde la versión 1.0.
Protocolo para recibir y enviar mensajesLos servicios WCF usan SOAP de manera predeterminada, pero los mensajes pueden estar en cualquier formato y transmitirse mediante el uso de cualquier protocolo de transporte como WS-HTTP, TCP, Canalizaciones con nombre, HTTP, HTTPs, MSMQ, P2P (punto a punto), etc.Los servicios web ASP.NET pueden enviar y recibir mensajes utilizando SOAP solo a través de HTTP o HTTPS.
Extensión de archivoLos servicios de Wcf tienen la extensión ".svc".Los servicios web tienen la extensión ".asmx"
DirectivaLa página svc utiliza la directiva "ServiceHost".La página asmx usa la directiva "WebService"
Técnica de serializaciónUtiliza DataContractSerializer en el espacio de nombres System.RunTime.Serialization para la serialización.Para la serialización, los servicios web ASP.NET se basan en XmlSerializer en el espacio de nombres System.XML.Serialization. Algunas de las limitaciones de XmlSerializer son:

  • Una posibilidad de propiedades públicas / serialización de campos.
  • Serializado solo es posible para las clases de colección que implementan Icollection o IEnumerable.
  • La serialización no es posible para las clases que implementan IDictionary, por ejemplo, HashTable.
  • La indicación explícita de los campos o propiedades que se deben serializar en XML y la identificación de los campos que el serializador debe ignorar no es posible.

Mecanismo de alojamientoLos servicios WCF se pueden alojar en múltiples plataformas, como IIS, Servicios de activación de Windows (WAS), servicios administrados de Windows o autohospedaje, etc.El servicio web ASP.net solo se puede alojar en IIS.
manejo de excepciones no manejadoLas excepciones que no se controlan no se devuelven a los clientes como fallas SOAP.Las excepciones que no se controlan se devuelven a los clientes como fallas SOAP en los servicios web ASP.NET.
Soporte multihiloEl subprocesamiento múltiple es compatible con los servicios WCF.No hay soporte para subprocesos múltiples en servicios web.
ActuaciónWCF es más rápido en comparación con los servicios webComo los servicios web usan serializadores, por lo tanto, son más lentos que los servicios WCF en términos de rendimiento.

Ejemplo de WCF vs servicios web

A continuación se muestran los ejemplos de WCF vs Web Services:

Servicios web

El siguiente fragmento de código nos muestra cómo desarrollar un servicio en el Servicio web.

(WebService) public class MyService
(
(WebMethod) public SumClass SumOfNums(string JsonStr)
(
var ObjSerializer = new JavaScriptSerializer();
var ObjSumClass = ObjSerializer.Deserialize(JsonStr);
return new SumClass().GetSumClass(ObjSumClass.First, ObjSumClass.Second);
)
)
public class SumClass
(
public int First, Second, Sum;
public SumClass GetSumClass(int Num1, int Num2)
(
var ObjSum = new SumClass
(
Sum = Num1 + Num2,
);
return ObjSum;
)
)

WCF

El siguiente fragmento de código nos muestra cómo desarrollar un servicio en WCF

ServiceContract) blic class MyService : WebService
(
(OperationContract) public SumClass SumOfNums(string JsonStr)
(
var ObjSerializer = new JavaScriptSerializer();
var ObjSumClass = ObjSerializer.Deserialize(JsonStr);
return new SumClass().GetSumClass(ObjSumClass.First, ObjSumClass.Second);
)
)
(DataContract) public class SumClass
(
(DataMember) public int First;
(DataMember) public int Second;
(DataMember) public int Sum;
public SumClass GetSumClass(int Num1, int Num2)
(
var ObjSum = new SumClass
(
Sum = Num1 + Num2,
);
return ObjSum;
)
)

Conclusión: WCF vs servicios web

De la discusión anterior, el servicio WCF es definitivamente una tecnología avanzada que el servicio web. WCF es más rápido que el servicio web en términos de rendimiento. WCF proporciona una mejor seguridad, admite varios protocolos y formatos de mensajes. La única área agitada de WCF para desarrolladores es su parte de configuración. Sin embargo, este problema también se resolvió con WCF4.0 mediante la introducción de ajustes de configuración predeterminados. Se observa que hasta .NET3.5, el estudio visual proporciona una plantilla directa para el servicio web. Desde .NET4.0, no obtenemos ninguna plantilla directa para el servicio web. Por lo tanto, necesitamos crear una aplicación web y agregarle un servicio web.

Artículos recomendados

Esta ha sido una guía de la principal diferencia entre WCF y los servicios web. Aquí también discutimos las diferencias clave de WCF vs Servicios web con infografías y tabla de comparación. También puede echar un vistazo a los siguientes artículos para obtener más información.

  1. Comparación - Ubuntu vs Windows 10
  2. Aplicación móvil vs sitios web: comparaciones útiles
  3. Modo de suspensión vs Hibernate-Top más diferencias
  4. Microsoft Azure vs Amazon Web Services