Aplicaciones Web Orientadas a Servicios


 

 Arquitectura SOA

Una de las arquitecturas mas utilizadas es sin duda la orientada a servicios, esta nos permite crear aplicaciones que sean muy eficientes para negocios, ya que su principal objetivo es el permitir el cambio rápido en las aplicaciones ya que en un negocio es necesario adaptar de manera rápida el software a sus necesidades, en esencia eso son las aplicaciones web orientadas a servicios, así que explicare unos conceptos que serán de utilidad para iniciarte en esto.

SOA, Arquitectura orientada a servicios - Evaluando Software

Conceptos Clave

1. Servicio web: Es un programa el cual es diseñado con la intención de poder distribuir                   comunicación entre sistemas, en ejemplo de ellos pueden ser REST, SOAP, etc. Estos se distribuyen a   través de Internet.
API REST ¿API qué?. Una API que no resta. Lo que tenemos… | by Fernando  Valdes | Medium

2. Servicio web XML: Un servicio web de este tipo tiene la particularidad que los datos que envía a ser consumidos son en un formato XML, este es un lenguaje de etiquetas parecido a HTML que nos permite el modelado de datos para poder ser enviado y recibidos.

3. Servicio web SOAP: este es un servicio web muy popular para la construir API's consumidas por empresas por su bajo consumo de recursos en múltiples operaciones, tiene la particularidad que utiliza XML como formato de transmisión de datos, es el mas popular para ser usado en sistemas empresariales por ser robusto pero eso a su vez lo hace complejo de implementar. Utiliza el protocolo TCP lo cual lo hace un poco mas lento pero le da la capacidad de utilizar protocolos de aplicación como HTTP, SMTP o JMS.
The History of REST APIs
Ejemplo Básico

4. Servicio web WSDL: es un metalenguaje basado en XML, su principal función es poderle indicar al cliente como interactuar con el servicio web. Lo principal que debe tener el documento wsdl seria lo siguiente.
  •  types: tipos de datos
  •  message: descripción de los datos a transferir
  •  interface: operaciones abstractas que describen la comunicación entre el servidor y el cliente (aún se     llamaba portType en una versión anterior del estándar)
  • binding: información sobre el protocolo de transporte utilizado
  • endpoint: información sobre la interfaz de comunicación, generalmente en forma de un URI (aún se        denominaba port en una versión anterior del estándar)
  • service: puntos de acceso del servicio web.
codificado se vería así:
<?xml version="1.0"?>
<definitions name="HelloWorld" targetNamespace="http://example.com/helloworld.wsdl"
  xmlns:tns="http://example.com/helloworld.wsdl"
  xmlns:xsd1="http://example.com/helloworld.xsd"
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  xmlns="http://schemas.xmlsoap.org/wsdl/">

  <types>
    <schema targetNamespace="http://example.com/helloworld.xsd"
      xmlns="http://www.w3.org/2000/10/XMLSchema">
      <element name="HelloWordElement">
        <complexType>
          <all>
            <element name="worldRequest" type="string"/>
          </all>
        </complexType>
      </element>
    </schema>
  </types>

  <message name = "HelloWorldRequest">
    <part name = "name" type = "xsd:string"/>
  </message>

  <message name = "HelloWorldResponse">
    <part name = "greeting" type = "xsd:string"/>
  </message>

  <interface name = "HelloWorld_Interface">
    <operation name = "sayHelloWorld">
      <input message = "tns:HelloWorldRequest"/>
      <output message = "tns:HelloWorldResponse"/>
    </operation>
  </interface>

  <binding name = "HelloWorld_Binding" type = "tns:HelloWorld_Interface">
    <soap:binding style = "rpc"
transport = "http://schemas.xmlsoap.org/soap/http"/>
    <operation name = "sayHelloWorld">
      <soap:operation soapAction = "sayHelloWorld"/>
      <input>
        <soap:body
encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"
namespace = "urn:examples:helloworld"
use = "encoded"/>
      </input>
      <output>
        <soap:body
encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"
namespace = "urn:examples:helloworld"
use = "encoded"/>
      </output>
    </operation>
  </binding>

  <service name = "Hello_World">
    <documentation>WSDL File for HelloWorld</documentation>
    <endpoint binding = "tns:HelloWorld_Binding" name = "HelloWorld_Endpoint">
      <soap:address
location = "http://www.example.com/HelloWorld/" />
    </endpoint>
  </service>
</definitions>

Servicio web REST: Son los servicios basados en la arquitectura REST, este servicio tiene la particularidad de contar con 4 métodos para poder solicitar información del lado del cliente a el servidor, estos son verbos por lo que son fáciles de recordar:
  • get: este método http permite solicitar algún recurso.
  • post: este método nos permite agregar un nuevo recurso.
  • delete: este método nos permite eliminar algún recurso.
  • put: este método nos permite actualizar algún recurso.
Todos ellos tienen que ir acompañados de la ruta a donde se desea realizar esa petición. Así que la ventaja es que es fácil de implementar y sobre todo no importa de que lenguaje venga esa petición, puede usarse en donde se necesite.

Consumo de una API REST: para consumir una API Rest tenemos muchas opciones, todo depende en que lenguaje o proyecto vamos a consumir dicha API. Tenemos que buscar una librería o revisar si nuestro lenguaje puede hacer llamadas  http, por ejemplo para consumir estas API's seria el modulo axios en nodejs, para utilizarlo es necesario instalarlo mediante el comando npm i --save axios, después es necesario crear un archivo de configuración en el cual vamos a definir la url a la cual le vamos a hacer peticiones, después solo importamos en donde sea necesario solicitar datos a un servidor.
Solicitando un recurso 

Archivo de configuración de axios

API's REST disponibles para su consumo: Muchas empresas han hecho el esfuerzo de compartir el acceso a API's para implementarlas en proyectos, acceder a sus servicios en nuestros proyectos o simplemente para poder experimentar con ellas, a continuación explicare algunas.
  • Google API's: esta empresa nos ofrece bastantes opciones para consumir, en este caso las opciones que nos ofrece las podemos agregar nuestros proyectos para añadir funcionalidades de google a nuestro proyectos, por ejemplo la api de localización con la cual podemos trazar un mapa o utilizar los servicios de google maps, también tenemos de todos los servicios de google, solo hay que hechas un vistazo a su pagina web donde tienen toda la información de las apis disponibles.
  • Flickr API: esta empresa que se ha hecho famosa por permitirnos hacer muchas cosas con imágenes. Nos pone a disposición muchas apis las cuales nos permiten desde visualizar fotos en flickr hasta buscar una fotografía en base a colores, podemos visitar su sitio para buscar la documentación y consumirla en nuestros proyectos.
  • Microsoft API's: esta empresa también ofrece una seria de apis para ser utilizadas por terceros, en este caso al igual que las de google nos permiten integrar sus servicios en nuestras aplicaciones, por lo que si visitamos su sitio encontraremos la adecuada para nuestro proyecto.

Referencias Bibliográficas

Castro, A. (2018). Servicios Web: RESTful. BI Geek Blog. recuperado de https://blog.bi-geek.com/servicios-web-restful/ el 12 de septiembre de 2020.

García, J. (2019). ¿Qué son los web services y qué tecnología usar en su desarrollo? Blog de arsys.es. recuperado de https://www.arsys.es/blog/programacion/diseno-web/web-services-desarrollo/ el 12 de septiembre de 2020.
 
¿Qué diferencias hay entre REST y SOAP? (2020). Chakray. recuperado de https://www.chakray.com/es/que-diferencias-hay-entre-rest-y-soap/ el 12 de septiembre de 2020

Comentarios