Introducción
Sistemas Distribuidos: Se define como un conjunto de procesadores autónomos conectados por una red, para obtener mejor desempeño, fiabilidad y disponibilidad.
- Concurrencia: Recursos de la red utilizados simultáneamente.
- Carencia de reloj global: Para la transferencia de mensajes.
- Fallos independientes de componentes: Los componentes fallan independientemente sin afectar a otros.
Capas de los Sistemas Distribuidos
- Presentación: Presenta objetos visuales y procesa datos.
- Lógica de Negocio: Cumple las reglas y ejecuta los procesos de negocio. Puede ser dividida en más capas e incluir un servidor de aplicaciones.
- Datos: Gestión de recursos, organización, almacenamiento, indexación y recuperación de datos.
Tecnologías Orientadas a Sistemas Distribuidos
- RMI: Permite a un objeto llamar un método de otro en otra JVM.
- DCOM: Tecnología de Microsoft, donde un cliente solicita un servicio a un servidor en red.
- CORBA: Creado por OMG, para la gestión de objetos remotos independiente de la plataforma.
Protocolo
Conjunto de reglas y formatos para la comunicación de procesos en tareas. Se necesita especificar la secuencia de mensajes y el formato de los datos en los mensajes. Permite la comunicación transparente.
- IP: Capa de red, unidad básica de transferencia y direccionamiento.
- TCP: Capa de Transporte. Divide y ordena los datos en paquetes de menor tamaño.
- HTTP: Capa de Aplicación. Transfiere hipertexto entre cliente y servidor WEB.
- SMTP: Capa de Aplicación. Permite el envío de correo por internet.
- POP3: Capa de Aplicación. Gestión de correos de internet.
Arquitectura Funcional de los Servicios Web
- Servicio de Catalogación
- Servicio de Localización
- Servicio de Utilización
Estándares de los Servicios Web
- XML: Formato universal para representar los datos.
- WSDL: Describe lo que hace e implementa el servicio web.
- SOAP: Permite mover datos entre aplicaciones y sistemas.
- UDDI: Permite encontrar y usar servicios web basados en XML.
- WS-Security: Garantiza la autenticación de mensajes enviados.
Servicios Web
“El concepto de servicio web es un paradigma de la computación distribuida que consiste en un conjunto de protocolos de comunicación que permiten el intercambio de datos entre aplicaciones remotas”.
Objetivo
Proporciona interoperatividad sobre una plataforma de forma transparente que acoja los estándares propuestos.
- Los servicios web no proveen de una interfaz gráfica.
- Comparte Lógica de Negocio, Procesos y datos a través de una Interfaz programática.
Arquitectura Orientada a Servicios – SOA
Trata de definir «buses de comunicación estándar» entre diferentes aplicaciones/servicios de una empresa e incluso entre diferentes empresas.
Servicio
Programa de interacción mediante mensajes. Un conjunto de servicios sería un sistema construido con disponibilidad y estabilidad.
Arquitectura de Servicios Web
- SOAP (WS-I, WS-*): Se basa en mensajes SOAP en formato XML y HTTP.
- REST (RESTFul): Está orientado a la URI, direccionamiento a través de URL.
Pilares de SOA (Service Orientation Tenets) – Por Don Box
Las fronteras de los Servicios deben ser explícitas
- La orientación a servicios se basa en un modelo de intercambio de mensajes explícito y NO en una invocación implícita de métodos.
- Soporta la comunicación asíncrona de mensajes.
- Una aplicación SOA tiene servicios distribuidos en puntos lejanos.
Los Servicios deben ser Autónomos
- Recomienda la ubicuidad reduciendo la complejidad de interacción.
- SOA se protege a sí mismo estableciendo pruebas en los envíos.
Los Servicios deben compartir Esquema y Contrato, no Clase y Tipo
- Los servicios interactúan basándose en esquema y contrato.
- El servicio muestra un contrato que describe la estructura de los mensajes.
- SOA requiere que el contrato y el esquema se mantengan estables.
La Compatibilidad se debe basar en Políticas
- La compatibilidad estructural basada en contrato y esquema.
- La compatibilidad semántica basada en sentencias explícitas de capacidades y requerimientos en forma de políticas.
Arquitectura Interna de los Servicios SOA
SOA define un conjunto de proveedores de servicios que exponen su funcionalidad mediante interfaces públicas.
Capas de los Servicios
- Interfaz del servicio
- Capas de Aplicación y Dominio
- Acceso a datos como infraestructura
Tipos de Objetos de Datos a Comunicar
Son: Valores escalares, DTOs (Data Transfer Object), Entidades serializadas y conjuntos de registros que son artefactos desconectados.
- Valores Escalares: Pocos datos como llamadas al servidor.
- Entidades de Dominio Serializadas: Deben ser de tipo POCO, que son clases serializadas propias, adecuado en control directo.
- DTOs: Patrón de diseño que empaqueta estructuras de datos.
- Conjunto de registros: Implementaciones de datos compuestos desconectados, como pueda ser en .NET los DataSets.
Agente de Servicio
Componente situado en la capa de presentación, y actúa como front-end de comunicación hacia el Servicio Web. El Agente debe ayudar a preparar peticiones al servicio así como interpretar respuestas del servicio.
Ventajas
- Fácil integración
- Gestión de errores
- Ruteo inteligente
- Gestión de datos offline y caché
- Validación de peticiones
Interoperabilidad
Disponibilidad de canales de comunicación estándar, formato y protocolo para entender participantes de diferentes tecnologías.
Síncrona
Ideal para escenarios de orden, garantiza resultados.
Asíncrona
Inmediatez de respuesta o garantizar disponibilidad.
REST (Representational State Transfer) y SOAP (Simple Object Access Protocol) son arquitecturas de sistemas distribuidos.
SOAP
Protocolo de mensajes basado en XML que usa HTTP y otros protocolos.
Ventajas
- Bueno en manejo de datos.
- Dispone de proxies.
- Usa varios protocolos.
Desventajas
- Los mensajes no son cacheados.
- No usa JavaScript.
REST
Construido con verbos simples usando HTTP.
Ventajas
- Se basa en especificaciones HTTP.
- Puede consumir JavaScript.
- Los mensajes son ligeros.
- Puede utilizar JSON o XML.
Desventajas
- No trabaja con objetos fuertemente tipados en el servidor.
- Solo funciona sobre HTTP.
- Las llamadas están restringidas a verbos HTTP (GET, POST, PUT, DELETE).