Algoritmos y Estructuras de Datos Compiladores e Intérpretes Herramientas Lenguaje de programación
!Prog C/C++
Linux Matemáticas
Mates Discretas
Programación Orientada a Objetos Redes y Computación Distribuida Sistemas Operativos

Arquitecturas Orientadas a Servicios

[date: 20-01-2025] [last modification: 20-01-2025]
[words: 1229] [reading time: 6min] [size: 11467 bytes]

Las arquitecturas orientadas a servicios (SOA) intentan mejorar la interoperabilidad de los servicios para que sean independientes del lenguaje de programación y se puedan usar para modelos de datos diferentes.

Descripción del problema

Un método invoca la ejecución de otros métodos para obtener algo que no puede alcanzar por sí mismo.

Sin embargo, esto plantea varios problemas:

Algunas soluciones basadas en llamadas a procedimientos remotos:

También hay algunas soluciones basadas en la Web como una capa de software adicional:

RPC

RPC esconde los detalles de comunicación e interacción a la hora de invocar la ejecución de un método que se encuentra en una máquina diferente.

En Java RMI, la descripción del servicio depende del lenguaje: todo es Java. Sin embargo, se pueden describir los métodos con un lenguaje IDL que hace al mecanismo RPC independiente del lenguaje de programación.

A través de un compilador se genera automáticamente el código del cliente y el servidor.

DOCMCORBAJava RMI
Protocolo RPCRPCIIOPIIOP o JRMP
Formato del mensajeNDRCDRSerialización de objetos Java
DescripciónIDLOMG IDLJava
DescubrimientoRegistro de WindowsRegistro de nombresRegistro RMI o JNDI

Servlets

Es uno de los servicios web más sencillos que hay.

Consiste en añadir una capa de web a las soluciones basadas en RPC:

Como consecuencia, el resultado se construye en una página de respuesta que contiene la información solicitada.

El principal problema de esta estrategia es que no hay tipos de datos, sino que todo se encapsula en cadenas de texto en las que se codifican los parámetros de entrada y la respuesta se elabora en HTML.

Otros problemas:

Arquitectura SOA

Los servlets tienen bastantes limitaciones y son un método bastante ineficiente de realizar lo mismo que ya hacíamos con Java RMI. Por este motivo, vamos a tender a soluciones basadas en arquitecturas SOA.

Las arquitecturas orientadas a servicios (SOA) no están ligadas a una tecnología concreta:

Elementos de una SOA
Servicios
  • Componentes software bajamente acoplados
  • Esto permite que se reutilicen desde otros componentes de la misma arquitectura. Son independientes.
  • Se combinan entre sí para proporcionar las funcionalidades requeridas por los clientes (orquestración).
Proveedor
  • Componente que ofrece un conjunto de servicios con una funcionalidad dada.
  • Los servicios son directamente accesibles desde internet: están expuestos a través de URLs.
  • Se utiliza un lenguaje de descripción estándar de servicios.
Consumidor
  • Componente que invoca o consume la funcionalidad de los servicios ofrecidos por el proveedor.
  • Utiliza un protocolo de invocación.
RegistroComponente que contiene los servicios ofrecidos por el proveedor.
Servicios Web

Los Servicios Web son interfaces que describen las características de una colección de operaciones o métodos.

  • Invocación: son accesibles a través de la red usando protocolos estándar (basados en XML). Es necesario encapsular argumentos, los resultados, etc.
  • Descripción: los métodos, atributos, propiedades, etc están representadas usando un lenguaje estándar basado en XML.

Los formatos XML definen la estructura de los protocolos de invocación y de la descripción de los servicios.

La institución encargada de estandarizar los lenguajes y protocolos de la Web es el Consorcio W3C. En la tecnología de servicios Web se hace uso de los siguientes estándares que están representados en XML.

La arquitectura SOA recuerda a las soluciones basadas en RPC, pero hay grandes diferencias en el uso de protocolos estándar y en el énfasis en la composición de servicios.

  1. El proveedor despliega el conjunto de operaciones que desea hacer accesibles a través de internet.
    • Son accesibles como direcciones URL que apuntan a archivos descritos en lenguaje WSDL.
    • Estas operaciones serán accesibles solo si conoce las URLs.
WSDL

[Equivalente a la interfaz remota de Java RMI.]
Define interfaces en los que se indica:

  • el nombre,
  • las entradas y
  • las salidas de las operaciones.

También indica de qué modo se invocarán las operaciones.

  1. El proveedor puede publicar a través del protocolo UDDI las características de los servicios en un registro. Los clientes pueden consultar dicho registro.
UDDI

El registro UDDI es a los servicios Web lo que son los DNS a las direcciones Web.

  • En el registro UDDI se indican las características no funcionales de los servicios, tales como la descripción de la empresa, categoría, etc.
  • También se indica la URL correspondiente al archivo WSDL que contiene las características funcionales del servicio.
  • Para acceder a dicho registro, se usa un conjunto de APIs para dar de alta/baja los servicios.

No es muy habitual el uso de UDDI (y por esto no forma parte del Consorcio), dado que el cliente normalmente ya conoce la URL de los diferentes servicios. Es uno de los componentes con menor implantación en el mercado.

  1. El consumidor buscar los servicios en el registro UDDI que tienen las características deseadas.

    • La búsqueda se realiza usando palabras clave que referencian a sus características.
    • Se pueden indicar entradas y salidas que deben tener.
    • Como resultado, se devuelve la URL del archivo WSDL.
  2. El consumidor obtiene el WSDL y genera automáticamente el código necesario para realizar la invocación de las operaciones descritas.

    • Se generan clases que representan los tipos de datos de los parámetros.
    • Se generan las clases que codifican y decodifican los parámetros de las operaciones.
  3. El consumidor usa el protocolo SOAP para invocar la ejecución de una de las operaciones definidas.

Conclusión

El uso de XML para describir e invocar operaciones, permite la integración de aplicaciones que:

El uso de servicios como componentes bajamente acoplados permite a los consumidores:

Anterior: Llamadas a métodos remotos y Objetos Distribuidos Volver a Redes y Computación Distribuida Siguiente: Sistemas de Mensajes: RabbitMQ