Servicio web vs servicio WCF

Respuestas:

67

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"

rbrayb
fuente
2
Para cualquier proyecto nuevo basado en el enfoque SOA, el desarrollador debe seleccionar WCF en lugar de los servicios web. Porque da flexibilidad y escalabilidad para uso futuro. Solo hay una excepción: si el cliente no admite la comunicación con los servicios de wcf, es decir, Flash AS2.
Lalit
WCF 1) Es una arquitectura de múltiples capas 2) Proporciona una única plataforma unificada (interoperable) o marco para construir una Aplicación Orientada a Servicios para comunicarse usando una variedad de protocolos de red. 3) WCF proporciona una mejor seguridad y confiabilidad en comparación con los servicios web o los servicios ASMX 4) Soporte para XML simple, Ajax y REST Web Service 1) Es simple 2) Escriba una función y enganche con el atributo [WebMethod] y es listo para dar servicio
Arun Banik
Como respondió Joe -> El artículo está replicado en codeproject.com/Articles/139787/…
Bernhard
33

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 usa DataContractSerializercuál es mejor en rendimiento en comparación con XmlSerializer.

Joe
fuente
2
Nota aleatoria: una gran diferencia de DataContractSerializer y XmlSerializer es que DCS requiere orden de campo, ¡por eso no uso DCS para contratos o serialización no transitoria! Por lo tanto, es posible interrumpir un servicio utilizado por clientes que no utilizan el orden fijo cuando se cambian a DCS (o se trasladan a DCS pero en un orden diferente al que se usaba anteriormente). Por supuesto, esto debería expresarse en el esquema, pero ...
user2246674
1
Además, cite / enlace fuentes e indique extractos y / o tome la información original y escriba algo nuevo con ella. Es de mala educación robar. He agregado el enlace para usted, ¡pero asegúrese de dar crédito donde se debe! (Yo votaría en contra sobre esta base, si pudiera hacerlo en absoluto.)
user2246674
32

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.

CSK
fuente
WCF también puede recibir / enviar solicitudes / respuestas http en formato JSON, y sin usar SOAP / esquemas (¿hoy en día?).
Efraín
Punto de detalle: SOAP admite HTTPS. La codificación ocurre en la capa de transporte, por lo que el cliente es independiente de ella: el cliente realiza solicitudes XML y obtiene respuestas XML, y no sabe ni le importa si en el camino fue simple-ol-http o cifrado-https.
Jinlye
16

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.

Imran Ghani
fuente
4

¿Cuál es la diferencia entre el servicio web y WCF?

  1. 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).

  2. 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;
      }
    }
  3. 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.

  4. Los servicios web usan XmlSerializer pero WCF usa DataContractSerializer. ¿Cuál es mejor en rendimiento en comparación con XmlSerializer?

  5. 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

Ali Azam
fuente
2

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.

usuario5898334
fuente