Arquitectura SOA

Anuncio
Arquitectura Orientada a Servicios
SOA
Definición
Es un concepto de arquitectura de software que define la utilización de servicios para dar soporte a
ciertos requisitos del negocio. Esta arquitectura permite crear sistemas altamente escalables, que
pueden ayudar a las organizaciones a impulsar el rendimiento y, al mismo tiempo, reducir costos de
TI y mejorar la flexibilidad en los procesos del negocio.
Ventajas
•
•
•
•
•
•
•
•
•
•
•
Reduce el nivel de acoplamiento.
Clara definición de roles de desarrollo.
Definición de seguridad más clara.
Fácil testeo.
Mejora la mantención.
Favorece la reutilización.
Favorece el desarrollo en paralelo.
Permite fácil escalabilidad.
Permite un mapeo directo entre los procesos y los sistemas.
Permite un monitoreo preciso.
Permite la interoperabilidad.
Desventajas
•
•
•
SOA depende de la implementación de estándares. Sin estándares, la comunicación entre
aplicaciones requiere de mucho tiempo y código.
SOA no es para: aplicaciones con alto nivel de transferencia de datos, aplicaciones que no
requieren de implementación del tipo request/response y para aplicaciones que tienen un
corto periodo de vida.
Incrementalmente se hace difícil y costoso el ser capaz de cumplir con los protocolos y
hablar con un servicio.
Principios de diseño
•
•
•
•
•
•
Contratos estandarizados: los servicios dentro del mismo inventario deben estar acordes a
los mismos principios de diseño de contratos.
Bajo acoplamiento: de los servicios respecto a su entorno y, a su vez, imponer bajo
acoplamiento a sus consumidores.
Abstracción: con unos contratos que sólo contienen lo esencial y sin que exista más
información que la publicada en los contratos.
Reutilización: contenedores de lógica agnóstica que pueda ser fácilmente reutilizada en
diferentes contextos.
Autonomía: ejerciendo un alto control sobre el entorno de ejecución subyacente.
Ausencia de estado
•
•
Capacidad de ser descubiertos: complementados con metadatos que hacen que puedan
ser adecuadamente descubiertos e interpretados.
Capacidad de ser combinados: formando lógicas más complejas.
Estándar Web
El estándar que utiliza SOA es WSDL que se vera a continuación.
WSDL
¿Qué es wsdl?
WSDL es una notación XML para describir un servicio web. Una definición WSDL indica a un cliente
cómo componer una solicitud de servicio web y describe la interfaz que proporciona el proveedor
del servicio web.
Funcionamiento
Los pasos que se realizan al consumir el servicio son los siguientes:
Lo primero que realiza el cliente al hacer una solicitud al servicio es tomar la definición del archivo
WSDL.
El servidor entrega el fichero WSDL. Este archivo indica a la petición los métodos y propiedades de
ese servicio que están disponibles.
El cliente hace la petición en el formato que espera el servidor según las especificaciones del
fichero WSDL en el que se dice qué parámetros acepta y de qué tipo.
El servidor entrega el resultado de la consulta.
Estructura de contenido
Elemento WSDL
Descripción
Un documento WSDL es como cualquier documento XML y se basa en
<?xml version=»1.0″>
los esquemas, por lo que debe comenzar con dicha etiqueta.
Comienzo del documento, este tag agrupa a todos los demás
<definitions>
elementos
Se definen los tipos de datos utilizados en los mensajes. Se utilizan los
<types>
tipos definidos en la especificación de esquemas XML.
Se definen los métodos y parámetros para realizar la operación. Cada
message puede consistir en una o más partes (parámetros). Las
<message>
partes pueden ser de cualquiera de los tipos definidos en la sección
anterior.
Esta sección es la más importante, ya que definen las operaciones que
<portType>
pueden ser realizadas, y los mensajes que involucran (por ejemplo, el
mensaje de petición y el de respuesta).
Se definen el formato del mensaje y detalles del protocolo para cada
<binding>
portType.
En la etiqueta <definitions> podemos tener los siguientes atributos:
•
xmlnsc – Namespace al que pertenece el WSDL, http://schemas.xmlsoap.org/wsdl/
•
name – Podemos tener que el Servicio Web introduzca el nombre del propio servicio en el
momento de crear el WSDL.
En realidad, se utiliza la etiqueta <service name=»MiServicioWeb»> para indicar el nombre del
servicio, depende de la antigüedad del servicio y de la tecnología que se haya utilizado para
crearlo.
Por tanto, dentro del árbol <service> podemos tener los siguientes atributos e hijos:
•
•
•
name – Como hemos dicho antes, éste atributo indica el nombre del Servicio Web.
<documentation> – Dentro del arbol del Servicio se puede abrir otra etiqueta para incluir
una descripción del servicio.
<port> – Aquí se indica la dirección y el tipo de acceso de los Servicios Web. Podría ser:
1. SOAP con <soap:address location=»http://localhost:8082/MiServicio/Servicio1.wsdl»
/>
2. HTTP GET con
<http:address location=»http://localhost:8082/MiServicio/wsdl/Servicio.jsp» />
Los métodos y parámetros de recepción y entrega de información se envían en elementos con la
etiqueta <message>.
Los métodos se llaman Mensajes y, normalmente, suele haber al menos, uno de entrada y otro de
salida.
Los parámetros se expresan de la siguiente forma, <part name=»param1″ type=»xsd:int» /> ó
<part name=»param2″ type=»xsd:float» /> y los tipos de datos que podemos utilizar en un WSDL
son los mismos que podemos usar en un XSD (Schema XML). También es posible definir clases en
el servicio y devolver un parámetro del tipo de esa clase, pero siempre hemos de devolver tipos de
datos primarios. Aunque devolvamos clases personalizadas por nosotros, dichas clases devolverán
primitivos en sus métodos y propiedades.
Para poder indicar si los parámetros son input o output, se utiliza la etiqueta <operation>, dónde
se indica el input message y el message de output. La colección de todas las operaciones
(métodos) expuestos por un servicio se llama portType y se definen dentro de WSDL con la
etiqueta <portType>.
Por último, queda el <binding>, que es el enlace que establece la transición desde tipos de datos
abstractos a tipos de datos concretos.
Descargar