¿Cuál es la diferencia entre un método web asp.net y un servicio wcf?

Soy nuevo en .Net y no entiendo la diferencia. ¿Alguien me puede apuntar en la dirección correcta?

Los servicios web de ASP.NET se desarrollaron para crear aplicaciones que envían y reciben mensajes utilizando el protocolo de acceso a objetos simples (SOAP) a través de HTTP.

WCF es para permitir que las aplicaciones .NET Framework intercambien mensajes con otras entidades de software. SOAP se utiliza de forma predeterminada, pero los mensajes pueden tener cualquier formato y transmitirse utilizando cualquier protocolo de transporte.

Puede ver los servicios web ASP.NET como un subconjunto de servicios WCF.

Aquí hay un enlace que compara los dos marcos.

es bastante fácil conocer las diferencias.

El método web ASP.NET se llama ASMX [debido a la extensión del archivo] (ver 4GuysFromRolla sobre esto, tienen un buen tutorial )

Esa tecnología lo hace exponer funciones como un servicio web para que pueda conectarse desde cualquier lugar y usarlo. Pero … no puede proteger los datos entre el servidor y el cliente, puede enviar grandes archivos claros y saber qué sucedió, etc.

[Nota] puede proteger el acceso al servicio web mediante certificados, pero es complicado, pero normalmente, en ASMX usamos nombre de usuario / contraseña.

en WCF, se encuentra en el mundo diferente sobre los servicios web, y esta es la mejor tecnología en .NET para exponer servicios (¿ puede ver la diferencia … Servicios , no servicios web ), WCF no necesita IIS para ejecutarse, puede ejecutarse como un Servicio del sistema en el servidor, utilizando una consola ambiente (como la línea de comandos), etc., por lo que decimos que WCF es un servicio, no un servicio web. Recuerde que ASMX necesita IIS para ejecutarse.

con WCF puede usar SSL para encriptar la comunicación (para hacer eso en ASMX necesita usar WSE – Mejoras de servicios web), puede enviar archivos grandes y de manera segura (para hacer eso en ASMX necesita usar MTOM – Mecanismo de optimización de transmisión de mensajes) )

puede configurar las preferencias de transmisión simplemente cambiando una línea de código, la seguridad es mucho más alta, etc., etc. 🙂

Espero que tenga una mejor visión general con esto, pero hay mucho más.

línea inferior: para exponer los servicios web que no necesita proteger, puede usar ASMX, no hay problema en absoluto, pero si necesita proteger la comunicación de alguna manera, ¡hágalo en WCF!

link : aquí puede leer algunos comparativos de rendimiento entre los 2 servicios

Son dos marcos diferentes para los servicios de escritura. WCF generalmente es más flexible y ofrece opciones configurables para los protocolos que se usan, la forma en que se aloja el servicio y una variedad de opciones de seguridad. ASMX ofrece servicios basados ​​en SOAP. En general, WCF también es más eficiente . En general, ASMX es más fácil de usar y generalmente tiene menos curva de aprendizaje.

Aquí hay una discusión del foro de MSDN sobre el tema. Estas son las páginas de inicio para ASMX y WCF .

Además de las respuestas anteriores, WCF se creó para reemplazar .NET Remoting en .NET 3.0 y versiones posteriores. Además de los servicios web SOAP, REST, POX, etc. en varios formatos (por ejemplo, XML y JSON), WCF también ofrece MSMQ y Named Pipes. ASMX, como se mencionó anteriormente, proporciona solo servicios web XML basados ​​en SOAP.

Debería profundizar en .NET Remoting para otros tipos de protocolos de comunicación. Para obtener información adicional, debe consultar Pro C # 2008 y .NET 3.5 Framework . Es un gran recurso, y puede obtener los capítulos de los libros anteriores que cubren .NET Remoting y otras características reemplazadas.

Aquí hay una diferencia nueva y grande: Microsoft ahora considera que los servicios web ASMX son tecnología “heredada”. Consulte ” Servicios web XML creados utilizando clientes del servicio web ASP.NET y XML “.

Servicios web

  1. Solo se puede acceder a través de HTTP
  2. Funciona en un entorno sin estado

WCF

WCF es flexible porque sus servicios se pueden alojar en diferentes tipos de aplicaciones. A continuación se enumeran varios escenarios comunes para alojar servicios de WCF:

  • IIS
  • ESTABA
  • Autohospedaje
  • Servicio administrado de Windows

Son dos cosas diferentes todas juntas. WCF es un marco más genérico a través del cual puede escribir un componente de tipo de servicio y desplegarlo de muchas maneras (incluso como un servicio web de Asp.Net).

Aquí hay un breve hilo sobre esto http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/2d6a7ff2-f15c-4599-a389-a81cfffcc852/

Yo tuve el mismo problema.

Encontré el libro Microsoft Windows Communication Foundation Step by Step para ser realmente bueno.

Si solo desea hacer el servicio web tradicional usando WCF, el Capítulo 1 de ese libro le mostrará exactamente cómo hacerlo (servicio de escritura, prueba, implementación, uso del servicio).

Está escrito para VS2005, pero estoy usando vs2008 y lo encontré aún más fácil.

Hay mucho más para WCF, pero ese libro es un buen comienzo.

Las principales diferencias entre el servicio web y WCF se enumeran a continuación.

Web Service : Web Service es una aplicación que está diseñada para interactuar directamente con otras aplicaciones a través de Internet.

1) Los atributos [WebService] y [WebMethod] definen un servicio web y métodos.
2) Solo se puede acceder a través de HTTP.
3) Alojado en IIS.
4) Apoyar los servicios de seguridad.
5) No puede ser multiproceso.
6) Solo soap usado o XML.
7) El espacio de nombre System.Xml.serialization se usa para la serialización

WCF : Windows Communication Foundation (código denominado Indigo) es una plataforma de progtwigción y un sistema de tiempo de ejecución para crear, configurar e implementar servicios distribuidos por red.

1) Los atributos [ServiceContract] y [OperationContract] definen un servicio web y métodos.
2) Acceso a través de HTTP, TCP, MSMQ, P2P, tuberías con nombre
3) Alojado en IIS, autosuficiente, WAS y servicio de Windows.
4) Puede ser multiproceso a través de la clase de comportamiento del servicio.
5) El espacio de nombres System.Runtime.Serialization se usa para la serialización
6) Admite diferentes tipos de enlaces como BasicHttpBinding, WSHttpBinding, WSDualHttpBinding, etc.
7) Soporte de servicios de seguridad, mensajería confiable, transacciones, soporte AJAX y REST