Bloque II. Tema 7. Arquitectura cliente-servidor. Tipología. Componentes. Interoperabilidad de componentes. Ventajas e inconvenientes. Arquitectura de servicios web (WS)

Índice de contenido

Bloque II. Tema 7. Arquitectura cliente-servidor. Tipología. Componentes. Interoperabilidad de componentes. Ventajas e inconvenientes. Arquitectura de servicios web (WS)        1

Tipología de Arquitectura Cliente-servidor        1

Software as a service SaaS        2

Platform as a service PaaS        2

Infraestructures as a service IaaS        2

Computación en la nube        2

Arquitectura orientada a servicios        2

Arquitectura dirigida por eventos        2

Arquitectura orientada a servicios        2

BPEL        3

WS-Coordination        3

Business Process Management Notation BPMN        3

WS-BPEL        3

BPEL4People        3

BPELScript        3

SAWDSL        3

Tecnologías concretas        3

SMB        3

Coda        4

AFS        4

NFS        4

VFS        4

WSFS Sistema de Ficheros con Servicios Web        5

DCE        5

Arquitectura de servicios web        5

Orquestación de Servicios web        5

Coreografía de Servicios web        5

Tecnologías relacionadas        5

HTTP        6

SOAP        7

UDDI        8

 

 

Tipología de Arquitectura Cliente-servidor

Referencia SaaS y relacionados: http://www.aunclicdelastic.com/cloud-computing/tres-modelos-de-servicio-cloud-saas-paas-iaas/

Software as a service SaaS

El usuario puede hacer uso de las aplicaciones que contrate al correspondiente proveedor. La aplicación no podrá ser modificada salvo cambios en configuración permitidos. Se encontrará alojada en la infraestructura del proveedor.

Platform as a service PaaS

El usuario estará contratando un servicio que le permite alojar y desarrollar sus propias aplicaciones en una plataforma que dispone de las herramientas de desarrollo.

Infraestructures as a service IaaS

En este modelo el usuario estará contratando únicamente las infraestructuras tecnológicas (capacidad de procesamiento, de almacenamiento y/o de comunicaciones). Sobre dicha IaaS alojará sus aplicaciones y plataformas. Sobre éstas últimas tendrá el control, pero no sobre las infraestructuras.

Computación en la nube

Un paradigma que permite ofrecer servicios de computación a través de Internet. Según el IEEE Computer Society es un paradigma en el que la información se almacena de manera permanente en servidores de Internet y se envía a cachés temporales de cliente, lo que incluye equipos de escritorio, centros de ocio, portátiles, etc. En realidad el concepto de nube está muy relacionado con SaaS, PaaS y IaaS, siendo esto último una especie de clasificación según la manera de desplegar las aplicaciones y el grado de control.

Arquitectura orientada a servicios

Arquitectura dirigida por eventos

Un patrón de arquitectura software que promueve la producción, detección, consumo de y reacción a eventos.

Arquitectura orientada a servicios

SOA o Service Oriented Architecture es un concepto de arquitectura de software que define la utilización de servicios para dar soporte a los requisitos del negocio. Permite la creación de sistemas de información altamente escalables que reflejan el negocio de la organización, a su vez proporciona una forma bien definida de exposición e invocación de servicios (normalmente pero no necesariamente servicios web), lo cual facilita la interacción entre diferentes sistemas propios o de terceros. Define las siguientes capas de software:

BPEL

Business Process Execution Language es un lenguaje de orquestación y no de coreografía. Ver más abajo orquestación y coreografía.

A través de un documento XML BPEL un analista de negocio es capaz de representar la lógica asociada y los elementos con los que se verá relacionado. Estos elementos serán servicios y la lógica el proceso BPEL. Básicamente, consiste en un lenguaje basado en XML diseñado para el control centralizado de la invocación de diferentes servicios web, con cierta lógica de negocio añadida. Antes se llamaba BPEL4WS.

WS-Coordination

Aceptado por OASIS Web Services Transaction TC, describe un framework extensible para proporcionar protocolos que coordinan la acción de aplicaciones distribuidas. También proporciona  una definición de la estructura de contexto y los requisitos para propagar el contexto entre servicios que colaboran.

Business Process Management Notation BPMN

Es una notación estándar para procesos de negocio que incluye además traducción automática a código WS-BPEL ejecutable.

WS-BPEL

Es un lenguaje estandarizado por OASIS para la composición de servicios web. Está desarrollado a partir de WSFL y XLANG, ambos lenguajes orientados a la descripción de servicios web.

BPEL4People

Es una extensión del lenguaje WS-BPEL para incluir interacciones humanas.

BPELScript

Es un lenguaje para especificar procesos WS-BPEL. Usa una sintaxis similar a otros lenguajes de scripting como JavaScript o Ruby y proporciona cobertura íntegra del lenguaje WS-BPEL.

SAWDSL

Semantic Annotations for WSDL and XML Schema es una recomendación de la W3C y gracias a él se pueden añadir notaciones semánticas con términos de una ontología a los componentes de WSDL para permitir la clasificación, descubrimiento, concordancia, composición e invocación de servicios web.

Tecnologías concretas

Ejemplos de implementaciones para cliente-servidor.

SMB

(Fte. Wikipedia)

Server Message Block es un protocolo de red (capa de aplicación OSI) que permite compartir archivos e impresoras.

Microsoft renombró SMB a Common Internet File Systems (CIFS).

Samba es una implementación libre del protocolo SMB.

Coda

Es un sistema de archivos distribuido. El sistema de archivos InterMezzo está a su vez inspirado en Coda. Características:

AFS

El Andrew File System es un sistema de archivos distribuido. Usa Kerberos como sistema de autenticación e implementa listas de control de acceso en directorios para usuarios y grupo. Una característica importante de AFS es el volumen, un árbol de archivos y subdirectorios.

NFS

RFC 4506. Es un protocolo de nivel de aplicación, según el modelo OSI. Es utilizado para sistemas de archivos distribuidos en un entorno de red local. Originalmente fue desarrollado en 1984 por Sun Microsystems. Los protocolos sobre los que está implementado son:

Todas las operaciones sobre ficheros son síncronas. Esto significa que la operación solo termina cuando el servidor ha completado todo el trabajo asociado para esa operación.

Está orientado a comandos actuando sobre ficheros, algunos son CREATE, LOOKUP, READ, WRITE, SETATTR, SYMLINK.

Hay tres versiones en uso:

VFS

Virtual FileSystem es una capa de abstracción encima de un sistema de archivos más concreto. El propósito es permitir que las aplicaciones cliente tengan acceso a diversos tipos de sistemas de archivos concretos de una manera uniforme.

WSFS Sistema de Ficheros con Servicios Web

Puede ejecutarse tanto en el espacio del kernel como en el espacio de usuario. FUSE (filesystem in userspace) proporciona una interfaz fiable para la implementación de sistemas de ficheros para aplicaciones en espacio de usuario y puede sostener a WSFS. Fuse sirve para montarte dentro un directorio un sistema de ficheros completo emulado donde puedes hacer todo lo que harías en un sistema de ficheros normal, y puede ser de cualquier tipo existente, como ext3.

El conector fuse-java Fuse-J implementa una librería que usa JNI (Java Native Interface) para el soporte de acceso de aplicaciones Java al código C de Fuse y a la descripción de la interfaz para un sistema de ficheros Java, para así poder hacer que open(), getattr() o read() funcionen contra Fuse.

DCE

DCE DFS DCE Distributed Filesystem es un protocolo de nivel de aplicación. Posibilita que distintos sistemas conectados a una misma red accedan a ficheros remotos como si se tratara de locales, permite agrupar archivos repartidos en diferentes máquinas, en un espacio de nombres único.

 

Arquitectura de servicios web

En el marco de SOA, una manera de prestar servicios -la más común- es la de montar servicios web en Internet.

http://www.w3.org/TR/2004/NOTE-ws-arch-20040211/

Orquestación de Servicios web

La orquestación define un proceso ejecutable que puede interaccionar con servicios propios o externos. El flujo del proceso está controlado por un coordinador central. Cada servicio solo tiene conocimiento local y puede hacer decisiones solo para procesos dentro de su propio ámbito y alcance. BPEL es un ejemplo de lenguaje de orquestación.

Coreografía de Servicios web

WS-Choreography es una especificación establecida por la W3C que define procesos de modelo de negocio basados en XML, los cuales describen protocolos de colaboración entre participantes de un servicio web, en el cual los servicios actúan como pares -peers- y las interacciones pueden tener un ciclo de vida y estados de larga duración. No hay punto único de control, como suele ocurrir en las redes pares como p2p. En la coreografía, como en la danza, cada elemento tiene un plan pero reacciona al comportamiento de sus compañeros -los peer- que vienen en forma de eventos.

Tecnologías relacionadas

Existen diversos estándares relacionados con los servicios web.

HTTP

El estándar más importante es el RFC 2616 Hypertext Transfer Protocol. Define la sintaxis y semántica que utilizan los elementos de software de la arquitectura web -clientes, servidores, proxies- para comunicarse.

Versiones:

Métodos de petición:

Códigos de estado:

SOAP

Simple Object Access Protocol. https://secure.wikimedia.org/wikipedia/en/wiki/SOAP_%28protocol%29

Usualmente se apoya sobre HTTP o SMTP pero no necesariamente. Consiste en tres partes:

La arquitectura SOAP consiste en varias capas de especificaciones:

La variante SOAP with attachments (SwA) o MIME for Web Services se refiere a usar los servicios web para enviar y recibir archivos usando una combinación de SOAP y MIME, preferiblemente sobre HTTP. La API Java para este tema es SAAJ Soap With Attachments Api for Java.

UDDI

https://secure.wikimedia.org/wikipedia/en/wiki/UDDI

UDDI fue incluido en el estándar Web Services Interoperability WS-I como pilar central de la infraestructura de servicios web. Consiste en:

Los nodos UDDI son servidores que implementan la especificación UDDI y pertenecen a un registro UDDI mientras que los registros UDDI son colecciones de uno o más nodos.

SOAP es un protocolo XML para intercambiar mensajes entre un solicitantes y un proveedor de un servicio web. El proveedor publica el WSDL en UDDI y el solicitante puede unirse mediante SOAP.

La API Java para registros XML se llama JAXR Java Api for XML Registries.