¿Cuáles son las diferencias entre WCF y ASMX web services?


Estoy totalmente confundido entre WCF y ASMX web services. He utilizado muchos servicios web en mi etapa anterior, y ahora hay esta nueva cosa introducida llamada WCF. Todavía puedo crear WCF que funcionan como un servicio web. Creo que habrá más cosas en WCF.

¿Cuáles son las diferencias entre WCF y servicios web? ¿Cuándo se debe utilizar cada uno?

Author: hichris123, 2010-03-15

5 answers

Keith Elder compara muy bien ASMX con WCF aquí. Compruébelo.

Otra comparación de ASMX y WCF puede ser encontrado aquí - No estoy 100% de acuerdo con todos los puntos allí, pero podría darle una idea.

WCF es básicamente "ASMX en estereoides" - puede ser todo lo que ASMX podría-además de mucho más!.

ASMX es:

  • fácil y sencillo de escribir y configurar
  • solo disponible en IIS
  • solo se puede llamar desde HTTP

WCF puede ser:

  • alojado en IIS, un servicio de Windows, una aplicación Winforms, una aplicación de consola: tiene total libertad
  • utilizado con HTTP (REST y SOAP), TCP/IP, MSMQ y muchos más protocolos

En resumen: WCF está aquí para reemplazar ASMX completamente.

Echa un vistazo al Centro de Desarrolladores de WCF en MSDN.

Actualización: el enlace parece estar muerto-prueba esto: ¿Qué es Windows Communication Foundation?

 372
Author: marc_s,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-12 20:23:16

Los servicios web ASMX solo pueden ser invocados por HTTP (servicio web tradicional con.asmx). Mientras que el servicio WCF o un componente WCF puede ser invocado por cualquier protocolo (como http, tcp, etc.) y cualquier tipo de transporte.

En segundo lugar, los servicios web ASMX no son flexibles. Sin embargo, los servicios de WCF son flexibles. Si usted hace una nueva versión del servicio, entonces usted necesita simplemente exponer un nuevo extremo. Por lo tanto, los servicios son ágiles y que es un enfoque muy práctico mirando las tendencias de negocio actuales.

Nosotros desarrollar WCF como contratos, interfaz, operaciones y contratos de datos. Como desarrollador, estamos más enfocados en los servicios de lógica empresarial y no tenemos que preocuparnos por la pila de canales. WCF es una API de programación unificada para cualquier tipo de servicios, por lo que creamos el servicio y usamos la información de configuración para configurar el mecanismo de comunicación como HTTP/TCP/MSMQ, etc

 37
Author: NET Experts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-22 15:16:25

Esta es una pregunta muy antigua, pero no creo que los beneficios de ASMX hayan sido bastante retratados. Aunque no es muy flexible, los servicios web de ASMX son muy fáciles de usar y entender. Mientras WCF es más flexible, también es más complejo de pie y configurar.

Los servicios web ASMX están listos para ponerse en pie y agregarlos como referencia del servicio web tan pronto como agregue el archivo. (suponiendo que su proyecto se construye)

Para el flujo de trabajo de desarrollo simple de create webservice -> run webservice -> add webservice reference, an ASMX webservice tiene muy poco que pueda salir mal, no mucho que pueda configurar mal, y esa es su fortaleza.

En respuesta a aquellos que afirman que WCF reemplaza ASMX, yo respondería que WCF necesitaría agregar un modo de configuración K. I. S. S. simplificado para reemplazar completamente ASMX.

Web de ejemplo.configuración para un servicio web ASMX:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings />
  <system.web>
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
</configuration>
 22
Author: Andrew Hoffman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-06 22:10:36

WCF reemplaza completamente los servicios web ASMX. ASMX es la antigua forma de hacer servicios web y WCF es la forma actual de hacer servicios web. Todo el desarrollo del nuevo servicio web SOAP, en el cliente o en el servidor, debe hacerse utilizando WCF.

 11
Author: John Saunders,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-22 15:15:40

Hay muchas conversaciones sobre la simplicidad de los servicios web asmx a través de WCF. Permítaseme aclarar algunos puntos.

  • Es cierto que los desarrolladores de servicios web novatos comenzarán fácilmente en asmx web services. Visual Studio hace todo el trabajo por ellos y crea fácilmente un proyecto de Hello World.
  • Pero si puedes aprender WCF (que por supuesto no tomará mucho tiempo), entonces puedes llegar a ver que WCF también es bastante simple, y puedes seguir adelante fácilmente.
  • Es es importante recordar que estas complejidades en WCF en realidad se atribuyen a las hermosas características que trae consigo. Hay direcciones, enlaces, contratos y endpoints, servicios y clientes, todos mencionados en el archivo de configuración. La belleza es que su lógica de negocio está segregada y mantenida de forma segura. Mañana si necesita cambiar el enlace de basicHttpBinding a netTcpBinding usted puede crear fácilmente un enlace en el archivo de configuración y uso. Así que todos los cambios relacionados con los clientes, canales de comunicación, enlaces, etc se deben hacer en la configuración dejando la lógica de negocio segura e intacta, lo que tiene mucho sentido.
  • 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 las cosas en WCF que a través de ASMX tradicional porque WCF está diseñado, desde cero, para resumir todas las diferentes programaciones distribuidas infraestructuras ofrecidas por Microsoft. Un endpoint en WCF se puede comunicar con la misma facilidad a través de SOAP / XML que a través de 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 necesario al portar o cambiar las necesidades del negocio, los objetivos, etc.
  • 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 pueden hospedarse en diferentes tipos de aplicaciones. Usted puede alojar sus servicios WCF en Consola, Servicios de Windows, IIS y WAS, que también son diferentes formas de crear nuevos proyectos en Visual Studio.
  • ASMX es más antiguo que WCF, y cualquier cosa que ASMX pueda hacer lo puede hacer WCF (y más). Básicamente se puede ver WCF como tratando de agrupar lógicamente todas las diferentes formas de conseguir dos aplicaciones para comunicarse en el mundo de Microsoft; ASMX fue solo una de estas muchas maneras y por lo que ahora se agrupa bajo el paraguas de WCF de capacidades.
  • Usted siempre le gusta usar Visual Studio para NET 4.0 o 4.5, ya que facilita la vida al crear servicios WCF.
  • La principal diferencia es que los Servicios Web utilizan XmlSerializer. Pero WCF Utiliza DataContractSerializer que es mejor en rendimiento en comparación con XmlSerializer. Es por eso que WCF funciona mucho mejor que otras contrapartes de tecnología de comunicación de. NET como asmx,. NET remoting, etc.

No hay que olvidar que yo era uno de esos tipos a los que les gustaban los servicios asmx más que WCF, pero que tiempo Yo no era muy consciente de los servicios de WCF y sus capacidades. Tenía miedo de las configuraciones del WCF. Pero me atreví y traté de escribir algunos servicios de WCF por mi cuenta, y cuando aprendí más de WCF, ahora no tengo inhibiciones sobre WCF y los recomiendo a cualquiera y a todos. ¡Feliz programación!!!

 4
Author: Sagnik Majumder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-01 13:48:05