Bienvenidos sean a este post, hoy hablaremos sobre dos de los conceptos del post anterior como son SOAP y REST, hablaremos un poco mas sobre ellos y algunos detalles de los mismos.

SOAP

Este es el protocolo mas utilizado en la actualidad para implementar servicios web, fue creado por IBM y Microsoft aunque hoy esta bajo el auspicio de la W3C. Este utiliza como transporte HTTP, aunque tambien puede utilizar otros protocolos de transporte, los mensajes se definen usando un estricto formato XML, que ha de ser consensuado por ambas partes, el siguiente codigo podria ser un ejemplo de mensaje SOAP:

<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
	<soapenv:header>
		<wsa:MessageID>
			uuid:920C5190-0B8F-11D9-8CED-F22EDEEBF7E5
		</wsa:MessageID>
		<wsa:To>
			http://localhost:8081/axis/services/BankPort
		</wsa:To>
	</soapenv:header>
	<soapenv:Body>
		<axis2:echo xmlns:axis2="http://ws.apache.org/axis2">
			Hola Mundo
		</axis2:echo>
	</soapenv:Body>
</soapenv:Envelope>

Este mensaje tiene tres partes:

  • Envelope
  • header
  • Body

Envelope sera el encargado de setear el entorno y encapsular las otros dos etiquetas, header es opcional y encapsula aspectos relativos a la calidad del servicio y la seguridad, en cambio body es obligatorio y es donde se va a encapsular la informacion que se va a intercambiar, tambien nos puede proporcionar una descripcion completa de las operaciones que realiza un nodo mediante una descripcion WDSL (Lenguaje de descripcion de servicios web por sus siglas en ingles), codificada en XML. Aunque este protocolo esta muy difundido para usarse en servicios web no es el mas indicado para Android debido a la complejidad introducida y esto supone una sobrecarga que implica un menor rendimiento y Android no proporciona las librerias necesarias para trabajar con SOAP. Aunque puede suceder que tengas un servidor basado en SOAP y necesites implementar un cliente en Android y para ello puedes utilizar la libreria kSOAP2 ( https://code.google.com/archive/p/ksoap2-android/)

REST

Este concepto no es un protocolo en realidad sino se refiere a una arquitectura, como fue el caso de SOAP y a diferencia de este no vamos a adicionar una capa adicional a la pila de protocolos sino que utilizaremos directamente al protocolo HTTP, desde un punto de vista mas estricto esta arquitectura no impone el uso de HTTP pero desde la practica que un servicio web basado en REST es aquel que se implementa en la web directamente.

Con lo anteriormente dicho podemos suponer que debemos seguir los principios de la WWW pero en lugar de solicitar paginas solicitaremos servicios, sus principios basicos son:

  • Transporte de datos mediante HTTP, con las operaciones de este protocolo
  • Los diferentes servicios son invocados mediante el espacio URI unificado, te recomiendo este post para ver mas sobre el mismo
  • La codificacion de los datos se puede hacer mediante MIME para las multimedias y XML para los textos.

Una de sus mayores ventajas es su simplicidad, entre otros son los tiempos de respuesta entre cliente y servidor, una mayor estabilidad en futuros cambios, y nos simplifica la tarea de desarrollo de clientes que necesitan interacciones HTTP y codificacion en XML, su principal desventaja es al igual que el protocolo HTTP no mantiene el estado, lo que significa que el servidor lo trata de forma independiente sin recordar solicitudes anteriores.

En resumen, hoy hemos visto a dos de los protocolos que podemos usar, cuales son sus caracteristicas, sus principales diferencias, el ejemplo de una estructura de SOAP, como trabaja, como trabaja REST, los pros y contras de REST, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios