Servicios Web: concepto y arquitectura
Servicio web
Un servicio web es un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes y ejecutadas sobre cualquier plataforma pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet. La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la arquitectura y regulación de los servicios web. Para mejorar la interoperabilidad entre distintas implementaciones de servicios web se ha creado el organismo WS-I, encargado de desarrollar diversos perfiles para definir de manera más exhaustiva estos estándares.
Estándares empleados
- Web Services Protocol Stack: así se denomina al conjunto de servicios y protocolos de los servicios web.
- XML (Extensible Markup Language): es el formato estándar para los datos que se van a intercambiar.
- SOAP (Simple Object Access Protocol) o XML-RPC (XML Remote Procedure Call): protocolos sobre los que se establece el intercambio.
- Otros protocolos: los datos en XML también pueden enviarse de una aplicación a otra mediante protocolos normales como HTTP (Hypertext Transfer Protocol), FTP (File Transfer Protocol) o SMTP (Simple Mail Transfer Protocol).
- WSDL (Web Services Description Language): es el lenguaje de la interfaz pública para los servicios web. Es una descripción basada en XML de los requisitos funcionales necesarios para establecer una comunicación con los servicios web.
- UDDI (Universal Description, Discovery and Integration): protocolo para publicar la información de los servicios web. Permite comprobar qué servicios web están disponibles.
- WS-Security (Web Service Security): protocolo de seguridad aceptado como estándar por OASIS (Organization for the Advancement of Structured Information Standards). Garantiza la autenticación de los actores y la confidencialidad de los mensajes enviados.
Inconvenientes
- Para realizar transacciones no pueden compararse en su grado de desarrollo con los estándares abiertos de computación distribuida como CORBA (Common Object Request Broker Architecture).
- Su rendimiento es bajo si se compara con otros modelos de computación distribuida, tales como RMI (Remote Method Invocation), CORBA o DCOM (Distributed Component Object Model). Es uno de los inconvenientes derivados de adoptar un formato basado en texto. Entre los objetivos de XML no se encuentra la concisión ni la eficacia de procesamiento.
- Al apoyarse en HTTP, pueden esquivar medidas de seguridad basadas en firewall cuyas reglas tratan de bloquear o auditar la comunicación entre programas a ambos lados de la barrera.
Razones para usar servicios web
- La principal razón para usar servicios web es que se basan en HTTP sobre TCP (Transmission Control Protocol) en el puerto 80.
- Antes de que existiera SOAP, no había buenas interfaces para acceder a las funcionalidades de otros ordenadores en red.
- Los servicios web pueden aportar gran independencia entre la aplicación que usa el servicio y el propio servicio.
- Se espera que para los próximos años mejoren la calidad y cantidad de servicios ofrecidos basados en los nuevos estándares.
XML
XML es un Lenguaje de Etiquetado Extensible muy simple pero estricto que juega un papel fundamental en el intercambio de una gran variedad de datos. Es un lenguaje muy similar a HTML, pero su función principal es describir datos y no mostrarlos, como es el caso de HTML. XML es un formato que permite la lectura de datos a través de diferentes aplicaciones.
Tecnologías XML destacadas
- XSL: Lenguaje Extensible de Hojas de Estilo.
- XPath: Lenguaje de rutas XML.
- XLink: Lenguaje de enlace XML.
- XPointer: Lenguaje de direccionamiento XML.
- XQL: Lenguaje de consulta XML.
Tipos de documentos XML
- Bien formados: son todos los que cumplen las especificaciones del lenguaje respecto a las reglas sintácticas.
- Válidos: además de estar bien formados, siguen una estructura y una semántica determinada por un DTD; sus elementos y sobre todo la estructura jerárquica que define el DTD, además de los atributos, deben ajustarse a lo que el DTD dicte.
Parser
El parser o procesador de XML es la herramienta principal de cualquier aplicación XML. Mediante el parser no solamente podemos comprobar si nuestros documentos son bien formados o válidos, sino que también podemos incorporarlos a nuestras aplicaciones, de manera que estas puedan manipular y trabajar con documentos XML.
¿Qué es AJAX?
AJAX es un acrónimo de Asynchronous JavaScript + XML. Se puede traducir como «JavaScript asíncrono + XML». Es una técnica de desarrollo web para crear aplicaciones interactivas.
Tecnologías que forman AJAX
- XHTML y CSS, para crear una presentación basada en estándares.
- DOM, para la interacción y manipulación dinámica de la presentación.
- XML, XSLT y JSON, para el intercambio y la manipulación de información.
- XMLHttpRequest, para el intercambio asíncrono de información.
- JavaScript, para unir todas las demás tecnologías.
- XHTML y CSS, para crear una presentación basada en estándares.
- DOM, para la interacción y manipulación dinámica de la presentación.
- XML, XSLT y JSON, para el intercambio y la manipulación de información.
- XMLHttpRequest, para el intercambio asíncrono de información.
- JavaScript, para unir todas las demás tecnologías.
¿Cómo funciona AJAX?
En las aplicaciones web tradicionales, las acciones del usuario en la página (pinchar en un botón, seleccionar un valor de una lista, etc.) desencadenan llamadas al servidor. Una vez procesada la petición del usuario, el servidor devuelve una nueva página HTML al navegador del usuario.
Las aplicaciones construidas con AJAX eliminan la recarga constante de páginas mediante la creación de un elemento intermedio entre el usuario y el servidor. La nueva capa intermedia de AJAX mejora la respuesta de la aplicación, ya que el usuario nunca se encuentra con una ventana del navegador vacía esperando la respuesta del servidor.
Ventajas
- Interactividad: las aplicaciones AJAX se ejecutan en la máquina cliente, manipulando la página actual dentro de sus navegadores usando métodos del Document Object Model.
- Portabilidad: las aplicaciones de AJAX utilizan características bien documentadas presentes en todos los navegadores importantes y en la mayoría de las plataformas existentes.
Desventajas
- Críticas de usabilidad: una de las mayores críticas contra el uso de AJAX en aplicaciones web es que puede afectar el comportamiento normal del botón «atrás» del navegador.
- JavaScript: aunque AJAX no necesita ningún tipo de plug-in para el navegador, requiere que los usuarios tengan JavaScript activado.
SOAP
SOAP (Simple Object Access Protocol)
Es un protocolo estándar que permite la comunicación y la interoperabilidad entre diversas aplicaciones web desarrolladas bajo tecnologías diferentes.
Qué contiene
- Información adicional incluida en el documento XML (lenguaje de marcado extensible), que describe el contenido y cómo podría ser procesada.
- Definición de la especificación de algunas estructuras en XML, tales como arrays.
- Modelo descentralizado: esto significa que puede ser procesado por varios intermediarios.
- Características específicas para operaciones clásicas de RPC (Llamadas a Procedimientos Remotos) con parámetros in/out, etc.
Objetivo de SOAP
- Establecer un protocolo estándar de invocación de servicios remotos, basado en protocolos estándar de Internet: HTTP para la transmisión y XML para la codificación de datos.
- Independencia de plataforma, lenguaje de desarrollo e implementación (modelo de objetos).
- SOAP utiliza XML para transportar información; el lenguaje XML es liviano, extensible y altamente personalizable, y permite transportar casi cualquier tipo de datos o información.
Breves especificaciones y características del XML
- Las etiquetas XML dan nombre a los objetos; estas ordenan e identifican un objeto en un flujo de datos.
- Los nombres de los elementos son sensibles a minúsculas y mayúsculas. ‘descripcion’, ‘DESCRIPCION’ y ‘Descripción’ pueden hacer referencia a elementos diferentes.
Mensajería y extensiones
- Los mensajes SOAP son transmisiones unidireccionales desde un emisor a un receptor.
- Se suelen combinar mensajes para implementar patrones, como petición/respuesta.
- Las implementaciones SOAP se pueden optimizar para explotar las características específicas de sistemas de red concretos.
- SOAP puede ser extendido mediante módulos de funcionalidad:
- Attachments: incluir un documento no XML, archivo binario o enviar documentos codificados en Base64.
- Routing/Intermediaries: rutear mensajes SOAP a través de intermediarios.
- Security: dar un marco de seguridad a la comunicación (SSL, firma digital, etc.).
- Quality of Service: QoS mide la calidad del servicio.
- Context/Privacy: hace referencia a guardar el contexto y privacidad del entorno de los usuarios.
Proceso que debe seguir una aplicación SOAP
- Identificar las partes del mensaje SOAP dirigidas a dicha aplicación.
- Aceptar las partes obligatorias identificadas en el paso 1 y procesarlas de la forma adecuada; de lo contrario, descartar el mensaje.
- Si la aplicación SOAP no es el destino final del mensaje, quitar todas las partes identificadas en el paso 1 antes de reenviar el mensaje.
JavaScript
JavaScript es un lenguaje de programación interpretado, es decir, que no requiere compilación, utilizado principalmente en páginas web, con una sintaxis semejante a la del lenguaje Java y el lenguaje C.
- Todos los navegadores modernos interpretan el código JavaScript integrado dentro de las páginas web.
- Para interactuar con una página web se provee al lenguaje JavaScript de una implementación del DOM.
DOM
DOM (Document Object Model)
Esencialmente es un modelo computacional a través del cual los programas y scripts pueden acceder y modificar dinámicamente el contenido, la estructura y el estilo de los documentos HTML y XML. Su objetivo es ofrecer un modelo orientado a objetos para el tratamiento y manipulación en tiempo real (o de forma dinámica) y de forma estática de páginas de Internet.
Tradicionalmente se venía utilizando en páginas web HTML para realizar tareas y operaciones en el marco de la aplicación únicamente cliente, sin acceso a funciones del servidor. JavaScript se ejecuta en el agente de usuario al mismo tiempo que las sentencias van descargándose junto con el código HTML.
