wcf web-services rest soap wcf-binding

RESTO en WCF para clientes no dot.NET



soap wcf service c# (4)

He leído bastantes artículos sobre las diferencias entre REST y SOAP. Voy a resumir en pocas líneas, por favor avíseme si está mal.

  1. SOAP es un protocolo que usa HTTP, TCP, etc. para transferir los mensajes, pero REST usa solo HTTP para transferir mensajes.

  2. SOAP transfiere los mensajes solo en formato XML pero REST usa JSON o XML.

  3. REST no implica la misma sobrecarga de tráfico que SOAP (ya que SOAP involucra la generación compleja de XML WSDL).

He leído que WCF fue desarrollado para proporcionar interoperabilidad. Desarrollé servicios REST en .net y el cliente era un dispositivo móvil (no un cliente .net). Este lo he probado y también he salido a la luz.

Habiendo dicho eso, mi pregunta es ...

¿Alguien ha desarrollado un servicio WCF bashttpbinding y lo ha proporcionado a un cliente que no sea .NET como Java, dispositivos móviles, etc. para hacerlo interoperable? ¿Es posible que los clientes que no sean .NET consuman WCF que no sea REST ?


Sí, es posible usar servicios de WCF que no sean Rest para clientes que no sean .net. WCF básicamente te permite crear un servicio web. El propósito del servicio web es que proporciona funcionalidad multiplataforma.

Rest and Soap son servicios web pero con diferentes propósitos. Depende de tu requerimiento cuál quieres usar. El descanso solo funciona en el protocolo http y se puede llamar fácilmente a través del URI y también puede realizar operaciones CRUD a través de la URL. También se puede llamar desde navegadores web.

Sin embargo, el jabón también es compatible con la comunicación multiplataforma, pero el cliente que desea usar jabón debe contar con el soporte de la herramienta de jabón. No se puede llamar desde el navegador. Casi todos los idiomas actuales admiten SOAP api.

El servicio que expone con basichttpbinding es un servicio basado en jabón y sí, también se puede llamar desde clientes que no sean .NET.


Sí, puede consumir un servicio WCF con cualquier tipo de cliente SOAP o REST.

SOAP es un protocolo que usa HTTP, TCP, etc. para transferir los mensajes, pero REST usa solo HTTP para transferir mensajes.

Esto es demasiado amplio para responder con Sí o No. Estrictamente relacionado con su pregunta, tenemos estas características para SOAP:

  • SOAP es un protocolo;
  • Los mensajes SOAP se pueden enviar a través de HTTP, TCP, SMTP, etc. (cualquier protocolo en realidad). SOAP es un protocolo de mensajería utilizado encima de otro protocolo de transporte;
  • la mayoría de los protocolos utilizados para SOAP son HTTP y HTTPS;

Ahora las características para REST:

  • REST es un estilo arquitectónico de aplicaciones de construcción;
  • REST no está realmente vinculado al protocolo HTTP, puede usar cualquier protocolo de transporte;
  • Todos hacen REST con HTTP y HTTPS;

SOAP transfiere los mensajes solo en formato XML pero REST usa JSON o XML.

SOAP solo puede enviar mensajes XML, es parte del protocolo. De hecho, necesita utilizar un formato específico para el XML con etiquetas Envelope, Header y Body.

REST es sobre representaciones de recursos. La representación puede tener cualquier estructura y puede tener cualquier formato, no solo XML o JSON (aunque XML y JSON son los más utilizados);

REST no implica la misma sobrecarga de tráfico que SOAP (ya que SOAP involucra la generación compleja de XML WSDL).

WSDL no está involucrado en la llamada real de las operaciones, es algo separado para describir el servicio web SOAP. REST tiene algo similar (aunque no muy usado) llamado WADL . Necesita ordenar / deshacer sus datos con SOAP y REST, por lo que la sobrecarga no es un problema (el sobre de SOAP no es tan grande).

¿Alguien ha desarrollado un servicio WCF bashttpbinding y lo ha proporcionado a un cliente que no sea .NET como Java, dispositivos móviles, etc. para hacerlo interoperable? ¿Es posible que los clientes que no sean .NET consuman WCF que no sea REST?

Esa es la idea de los servicios web (SOAP o RESTful), para ser llamados desde cualquier tipo de cliente. Es un método de comunicación entre dos máquinas. La implementación de las máquinas no tiene importancia (Java, C #, PHP, Python, etc.).

WCF es un marco de servicios web que puede exponer el servicio como API SOAP o REST. Se puede llamar desde cualquier tipo de cliente.


Creo que malinterpretaste algunos puntos básicos.

  1. Tanto REST como SOAP son protocolos de servicios web que se reproducen a través de HTTP. Creo que no deberías preocuparte por HTTP, TCP o UDP, porque son protocolos de nivel inferior ...

  2. SOAP envuelve todo dentro de un sobre XML que impone cierta sobrecarga de tráfico. Esta es la razón por la que SOAP se considera peor en rendimiento pero más formal y, por lo tanto, más adecuado para ciertos usos.

  3. Tanto SOAP como REST son independientes de la plataforma en la que se implementan

Por lo tanto, sí, podría consumir un REST o un servicio SOAP implementado en .NET, con cualquier tipo de cliente REST o SOAP . También debe saber que puede implementar su funcionalidad de servicio web utilizando WCF y cambiar el punto final entre SOAP y REST simplemente cambiando algunas opciones de configuración .

Espero que haya ayudado!


Vaya con aplicaciones web en lugar de wcf para el enfoque de descanso.