example - cuál es la diferencia entre wcf y asmx web services
¿Cuáles son las diferencias entre los servicios web WCF y ASMX? (5)
Estoy totalmente confundido entre WCF y los servicios web de ASMX. He usado una gran cantidad de servicios web en mi etapa anterior, y ahora se ha introducido esta nueva cosa llamada WCF. Todavía puedo crear WCF que funciona como un servicio web. Creo que habrá más cosas en WCF.
¿Cuáles son las diferencias entre WCF y los servicios web? ¿Cuándo se debe usar cada uno?
Esta es una pregunta muy antigua, pero no creo que los beneficios de ASMX hayan sido representados de manera justa. Si bien no son terriblemente flexibles, los servicios web de ASMX son muy fáciles de usar y comprender. Si bien WCF es más flexible, también es más complejo pararse y configurarse.
Los servicios web de ASMX están listos para levantarse y agregarse como referencia de servicio web tan pronto como agregue el archivo. (asumiendo que tu proyecto se construye)
Para el flujo de trabajo de desarrollo simple de create webservice
-> run webservice
-> add webservice reference
, un servicio web ASMX tiene muy poco que puede ir mal, no mucho que pueda configurar mal, y esa es su fortaleza.
En respuesta a aquellos que afirman que WCF reemplaza a ASMX, respondería que WCF necesitaría agregar un modo de configuración KISS optimizado para reemplazar completamente a ASMX.
Ejemplo web.config 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>
Keith Elder compara muy bien ASMX con WCF aquí. Echale un vistazo.
Puede encontrar otra comparación de ASMX y WCF 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, ¡y mucho más! .
ASMX es:
- Fácil y simple 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 completamente a ASMX.
Echa un vistazo a WCF Developer Center en MSDN .
Actualización: el enlace parece estar muerto. Pruebe esto: ¿Qué es Windows Communication Foundation?
Los servicios web de ASMX solo pueden ser invocados por HTTP (servicio web tradicional con .asmx). Mientras que el servicio WCF o un componente WCF pueden ser invocados por cualquier protocolo (como http, tcp, etc.) y cualquier tipo de transporte.
En segundo lugar, los servicios web de ASMX no son flexibles. Sin embargo, los servicios WCF son flexibles. Si crea una nueva versión del servicio, solo necesita exponer un nuevo final. Por lo tanto, los servicios son ágiles y es un enfoque muy práctico para observar las tendencias comerciales actuales.
Desarrollamos WCF como contratos, interfaz, operaciones y contratos de datos. Como desarrolladores, estamos más centrados en los servicios de lógica de negocios 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 utilizamos la información de configuración para configurar el mecanismo de comunicación como HTTP / TCP / MSMQ, etc.
Se están realizando muchas conversaciones sobre la simplicidad de los servicios web de asmx a través de WCF. Permítanme aclarar algunos puntos aquí.
- Es cierto que los desarrolladores de servicios web principiantes se iniciarán fácilmente en los servicios web de asmx. Visual Studio hace todo el trabajo por ellos y crea fácilmente un proyecto Hello World.
- Pero si puedes aprender WCF (que, por supuesto, no lleva mucho tiempo), entonces puedes ver que WCF también es bastante simple, y puedes seguir adelante fácilmente.
- 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 puntos finales, servicios y clientes, todos mencionados en el archivo de configuración. Lo bello es que su lógica empresarial está segregada y mantenida de forma segura. Mañana, si necesita cambiar el enlace de basicHttpBinding a netTcpBinding , puede crear fácilmente un enlace en el archivo de configuración y utilizarlo. Por lo tanto, todos los cambios relacionados con los clientes, los canales de comunicación, los enlaces, etc., deben realizarse en la configuración, dejando la lógica de negocios segura e intacta, lo que tiene mucho sentido.
- Los "servicios web" de WCF forman 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 ofrecidas por Microsoft. Un punto final en WCF se puede comunicar con SOAP / XML con la misma facilidad que con TCP / binary y para 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 al migrar o cambiar las necesidades, los objetivos, etc. de la empresa.
- 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. Puede alojar sus servicios WCF en la Consola, los Servicios de Windows, IIS y WAS, que nuevamente son formas diferentes de crear nuevos proyectos en Visual Studio.
- ASMX es más antiguo que WCF, y cualquier cosa que ASMX pueda hacer puede WCF (y más). Básicamente, puede ver que WCF trata de agrupar lógicamente todas las diferentes formas de lograr que dos aplicaciones se comuniquen en el mundo de Microsoft; ASMX fue solo una de estas muchas formas y ahora está agrupado bajo el paraguas de capacidades de WCF.
- Siempre te gustará usar Visual Studio for 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 se desempeña mucho mejor que otras contrapartes de la tecnología de comunicación de .NET como asmx, .NET remoting, etc.
No hay que olvidar que yo era uno de esos tipos a quienes les gustaban más los servicios asmx que WCF, pero esa vez no estaba muy al tanto de los servicios WCF y sus capacidades. Tenía miedo de las configuraciones de WCF. Pero me atreví y traté de escribir algunos servicios propios de WCF, y cuando aprendí más de WCF, ahora no tengo inhibiciones acerca de WCF y los recomiendo a todos. Feliz codificacion !!!
WCF reemplaza completamente los servicios web de ASMX. ASMX es la forma antigua de hacer servicios web y WCF es la forma actual de hacer servicios web. Todo el nuevo desarrollo de servicios web SOAP, en el cliente o en el servidor, debe realizarse utilizando WCF.