¿SOAP o REST?

Cuando hablamos de servicios web utilizados por un PAC (Proveedor Autorizado de Certificación), nos encontramos con dos tipos principales: los que ofrecen servicios REST y los que usan SOAP. Entender sus diferencias es crucial para elegir la opción que mejor se adapte a tus necesidades.

¿Qué es REST o RESTful como WebService?

REST

Definición y Características

REST (Transferencia de Estado Representacional) se caracteriza por su facilidad de implementación y modificación, brindando visibilidad y portabilidad entre plataformas. Las API que siguen el estilo arquitectónico de REST se denominan API REST, y los servicios web que implementan esta arquitectura son llamados servicios web RESTful.

Ventajas de REST

  • Flexibilidad: Permite diferentes formatos de datos (JSON, XML, texto plano).
  • Rendimiento: Mejor escalabilidad y almacenamiento en caché.
  • Facilidad de Uso: No requiere herramientas costosas ni lenguajes de programación específicos.

¿Qué es SOAP como WebService?

SOAP

Definición y Características

SOAP (Protocolo de Acceso a Objetos Simples, por sus siglas en inglés: Simple Object Access Protocol) es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML.

Ventajas de SOAP

  • Estandarización y Complejidad: SOAP impone reglas estrictas y estándares integrados que garantizan la fiabilidad de las operaciones, aunque esto también aumenta la complejidad y la sobrecarga.
  • Operaciones con Nombre: SOAP se enfoca en acceder a operaciones específicas, cada una implementando una lógica de negocios particular.
  • Confiabilidad: Los estándares de cumplimiento integrados forman un conjunto de propiedades que garantizan operaciones confiables, especialmente en la interacción con bases de datos.

Uso de WSDL

El uso de SOAP en un servicio web específico se describe mediante la definición de WSDL (Web Services Description Language), que especifica la interfaz que el servicio web expone a los clientes.

Diferencias

SOAP

  • WSDL define el esquema entre el cliente y el servicio y es estático por su naturaleza.
  • SOAP construye un protocolo basado en XML sobre HTTP o, a veces, TCP / IP.
  • SOAP es un sucesor de XML-RPC y es muy similar, pero describe una forma estándar de comunicación.
  • Varios lenguajes de programación tienen soporte nativo para SOAP, normalmente necesita de una URL de servicio web y puede llamar a sus funciones de web service sin la necesidad de un código específico.

REST

  • REST permite muchos formatos de datos diferentes, mientras que SOAP solo permite XML. Uno de los formatos más utilizados y recomendado es el formato JSON. JSON es más ligero y transmite menos bytes en el intercambio de datos. REST permite un mejor soporte para los clientes del navegador debido a su soporte para JSON.
  • REST tiene mejor rendimiento y escalabilidad. Las lecturas REST se pueden almacenar en caché; las lecturas basadas en SOAP no se pueden almacenar en caché.
  • No se requiere de ninguna herramienta costosa para interactuar con el servicio web. Incluso en lenguajes de programación antiguos se puede hacer la comunicación a través de un HTTP.
  • Eficiente (SOAP usa XML para todos los mensajes, REST puede usar formatos de mensajes más pequeños como son texto plano, HTML, XML, JSON etc.).
  • Rápido (no requiere procesamiento extenso).

Ejemplo de Request-Response

Tomando como ejemplo un consumo de WebService para la obtención del token, tenemos los siguientes casos.

SOAP

Request

POST http://pruebascfdi.smartweb.com.mx/Autenticacion/wsAutenticacion.asmx HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://sufacturacion.com/AutenticarBasico"
Content-Length: 402
Host: pruebascfdi.smartweb.com.mx
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:suf="http://sufacturacion.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <suf:AutenticarBasico>
         <!--Optional:-->
         <suf:usuario>demo</suf:usuario>
         <!--Optional:-->
         <suf:password>123456789</suf:password>
      </suf:AutenticarBasico>
   </soapenv:Body>
</soapenv:Envelope>

Response

HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 23 Feb 2023 16:28:40 GMT
Content-Length: 1313

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<soap:Body>
		<AutenticarBasicoResponse xmlns="http://sufacturacion.com/">
			<AutenticarBasicoResult>T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbXB3YVZxTHdOdHAwVXY2NTdJb1hkREtXTzE3dk9pMmdMdkFDR2xFWFVPUTQyWFhnTUxGYjdKdG8xQTZWVjFrUDNiOTVrRkhiOGk3RHladHdMaEM0cS8rcklzaUhJOGozWjN0K2h6R3gwQzF0c0g5aGNBYUt6N2srR3VoMUw3amtvPQ.T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbFlVcU92YUJTZWlHU3pER1kySnlXRTF4alNUS0ZWcUlVS0NhelhqaXdnWTRncklVSWVvZlFZMWNyUjVxYUFxMWFxcStUL1IzdGpHRTJqdS9Zakw2UGRiMTFPRlV3a2kyOWI5WUZHWk85ODJtU0M2UlJEUkFTVXhYTDNKZVdhOXIySE1tUVlFdm1jN3kvRStBQlpLRi9NeWJrd0R3clhpYWJrVUMwV0Mwd3FhUXdpUFF5NW5PN3J5cklMb0FETHlxVFRtRW16UW5ZVjAwUjdCa2g0Yk1iTExCeXJkVDRhMGMxOUZ1YWlIUWRRVC8yalFTNUczZXdvWlF0cSt2UW0waFZKY2gyaW5jeElydXN3clNPUDNvU1J2dm9weHBTSlZYNU9aaGsvalpQMUxtMVdoaHdsM2JrVE9uTXJuZmpIYkVablgvK2lrRDlPYy9XanViRjNhb3h6Z0hBbDF1eDM4dXFiKzhsRG5saXdpaXpieVFtdjJEWUp5YjB6b3Zwc05kTnM4bVl5anhCQ21UNSt2N29YU1B2QVAwaXJXeU55YjRoVzE3OC83NVJlWWFVdmFzcGFaSjMvZTBiT3dSeTBzazg9.ux9Wx968vjlsY7HXR0j-JtZjvDRwm8na9Yn5A0AumI4</AutenticarBasicoResult>
		</AutenticarBasicoResponse>
	</soap:Body>
</soap:Envelope>

REST

Request

POST http://services.test.sw.com.mx/security/authenticate HTTP/1.1
Content-Type: application/json
user: demo
password: 123456789
Content-Length: 0
cache-control: no-cache
User-Agent: PostmanRuntime/7.4.0
Accept: */*
Host: services.test.sw.com.mx
accept-encoding: gzip, deflate
Connection: keep-alive

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Vary: Accept-Encoding
Server: Kestrel
X-Powered-By: ASP.NET
Date: Fri, 23 Feb 2023 16:30:08 GMT
Content-Length: 1018

{
  "data": {
    "token": "T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbXB3YVZxTHdOdHAwVXY2NTdJb1hkREtXTzE3dk9pMmdMdkFDR2xFWFVPUTQyWFhnTUxGYjdKdG8xQTZWVjFrUDNiOTVrRkhiOGk3RHladHdMaEM0cS8rcklzaUhJOGozWjN0K2h6R3gwQzF0c0g5aGNBYUt6N2srR3VoMUw3amtvPQ.T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbFlVcU92YUJTZWlHU3pER1kySnlXRTF4alNUS0ZWcUlVS0NhelhqaXdnWTRncklVSWVvZlFZMWNyUjVxYUFxMWFxcStUL1IzdGpHRTJqdS9Zakw2UGRiMTFPRlV3a2kyOWI5WUZHWk85ODJtU0M2UlJEUkFTVXhYTDNKZVdhOXIySE1tUVlFdm1jN3kvRStBQlpLRi9NeWJrd0R3clhpYWJrVUMwV0Mwd3FhUXdpUFF5NW5PN3J5cklMb0FETHlxVFRtRW16UW5ZVjAwUjdCa2g0Yk1iTExCeXJkVDRhMGMxOUZ1YWlIUWRRVC8yalFTNUczZXdvWlF0cSt2UW0waFZKY2gyaW5jeElydXN3clNPUDNvU1J2dm9weHBTSlZYNU9aaGsvalpQMUxpZHRBczZIVFRnRUhhaFR5WW1KUndIZmNYWWRIamg5SnVIWFFJSmFUTDNsVFNKQVJUZUQyTUFNWnhUeVJaMUhhQUQ1aHZvZ2I5M0pBRUNlQ0pCL2VsVlVKM1VZUHQwcThYWlE2Tm9kbjlpT0xVR05IdXFpeTNDdGh2cktBdFB1YjhuUGZtMFRmUHVSdUpDNGYrNHhzRVk9.42C9cyxIrlkMMPvrZAwRMRyp84t8ag-kC2N2EJ_Ft_w",
    "expires_in": 1542997809,
    "tokeny_type": "Bearer"
  },
  "status": "success"
}

En SOAP tenemos 402 bytes como request y 1313 como response, lo que nos dejaría con un total de 1715 bytes transmitidos en un tiempo de 193 ms.

En REST tenemos 0 bytes como request y 1018 bytes como response, lo que nos deja con un total de 1018 bytes, transmitidos en un tiempo de 87 ms.

Señalar, que en este ejemplo el SOAP solo recibe el token y a través del servicio REST se envían datos adicionales, como un timestamp, y el tipo de token.

Conclusiones

SOAP

  • Tiempo de Procesamiento: 2-15 segundos para emisión de una factura.
  • Carga del Servicio: Mayor saturación con aumento de usuarios.

REST

  • Tiempo de Procesamiento: 100ms – 1 segundo para emisión de una factura.
  • Escalabilidad: Fácilmente escalable con más instancias en la nube.

Para la emisión de facturas electrónicas, REST se destaca por su rapidez y escalabilidad. SOAP, aunque más robusto en términos de estándares, puede volverse lento con el aumento de la carga del servicio.


En SW® somos mejores para TI, es por ello que tu opinión es muy importante, por favor ayúdanos calificando este articulo y dejando tus comentarios.

How useful was this post?

Click on a star to rate it!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Updated on mayo 23, 2024

Related Articles