servicios web

Los servicios Web son aplicaciones cliente y servidor que se comunican a través (WWW) Protocolo de transferencia de hipertexto de la World Wide Web de (HTTP). Según lo descrito por el World Wide Web Consortium (W3C), servicios web proporcionan un medio estándar de interoperabilidad entre las aplicaciones de software que se ejecutan en una variedad de plataformas y frameworks. Los servicios Web se caracterizan por su gran interoperabilidad y extensibilidad, así como sus descripciones procesable por máquina, gracias a la utilización de XML. Los servicios Web se pueden combinar de una manera imprecisa para lograr operaciones complejas. Programas que prestan servicios simples pueden interactuar entre sí para ofrecer servicios de valor añadido sofisticados.

Tipos de Servicios Web

En el plano conceptual, un servicio es un componente de software que se proporciona a través de un punto final de la red accesible. Los mensajes de los consumidores de servicios y uso proveedor intercambien solicitud de invocación y la información de respuesta en forma de documentos independientes que contiene lo que hace muy pocas suposiciones acerca de las capacidades tecnológicas del receptor.

A nivel técnico, los servicios web se pueden implementar de varias maneras. Los dos tipos de servicios web discutidos en esta sección se pueden distinguir como "big" servicios web y servicios web "RESTful".

Servicios web grandes(SOAP)

En Java EE 6, JAX-WS proporciona la funcionalidad para los "grandes" servicios, la construcción de Servicios Web con JAX-WS. Servicios web grandes utilizan mensajes XML que siguen el protocolo de acceso a objetos (SOAP) como norma simple, un lenguaje XML que define una arquitectura de mensajes y mensajes con formatos. Estos sistemas suelen contener una descripción legible por máquina de las operaciones que ofrece el servicio, escrito en el Web Services Description Language (WSDL), un lenguaje XML para la definición de las interfaces sintácticamente.

El formato del mensaje SOAP y WSDL lenguaje de definición de interfaz han ganado amplia adopción. Muchas de las herramientas de desarrollo, como NetBeans IDE, pueden reducir la complejidad del desarrollo de aplicaciones de servicios web.

Un diseño basado en SOAP debe incluir los siguientes elementos.

  • Un contrato formal debe ser establecido para describir la interfaz que ofrece el servicio web. WSDL se puede utilizar para describir los detalles del contrato, que podrá incluir mensajes, operaciones, fijaciones, y la ubicación del servicio web. También puede procesar los mensajes SOAP de un servicio JAX-WS sin publicar un WSDL.
  • La arquitectura debe abordar los requisitos no funcionales complejas. Muchas especificaciones de servicios web abordan tales requisitos y establecer un vocabulario común para ellos. Los ejemplos incluyen las transacciones, la seguridad, abordando, la confianza, la coordinación, y así sucesivamente.
  • La arquitectura tiene que manejar el procesamiento asincrónico e invocación. En tales casos, la infraestructura proporcionada por las normas, tales como Web Services Reliable Messaging (WSRM), y APIs, como JAX-WS, con su lado del cliente soporte invocación asíncrona, se puede aprovechar de la caja.

Servicios web RESTful

En Java EE 6, JAX-RS proporciona la funcionalidad para Representational State Transfer (REST) servicios web. REST es muy adecuado para la básica, ad hoc escenarios de integración. servicios web RESTful, a menudo se integra mejor con HTTP que los servicios basados en SOAP, no requieren mensajes XML o WSDL las definiciones del API.

El proyecto Jersey es la implementación de referencia preparado para la producción de la especificación JAX-RS. Jersey implementa soporte para las anotaciones definidas en la especificación JAX-RS, lo que facilita a los desarrolladores crear servicios web RESTful con Java y la máquina virtual de Java (JVM).

Dado que los servicios web RESTful utilizan estándares existentes de W3C y de Internet Engineering Task Force (IETF), y estádares (HTTP, XML, URI, MIME) y tienen una infraestructura ligera que permite a los servicios que se construirán con uso mínimo de herramientas, el desarrollo de servicios web RESTful es barato y por lo tanto tiene una barrera muy baja para su aprobación.

Un diseño REST puede ser apropiado cuando se cumplan las siguientes condiciones.
  • Los servicios web son completamente sin estado. Una buena prueba es considerar si la interacción puede sobrevivir a un reinicio del servidor.
  • Una infraestructura de almacenamiento en caché se puede aprovechar para el rendimiento. Si los datos que devuelve el servicio web no se genera dinámicamente y pueden almacenar en caché, la infraestructura de almacenamiento en caché que los servidores web y otros intermediarios proporcionan inherentemente se puede aprovechar para mejorar el rendimiento. Sin embargo, el desarrollador debe tener cuidado ya que estos cachés se limitan al método HTTP GET para la mayoría de los servidores.
  • El productor y el consumidor de servicios tienen una comprensión mutua del contexto y contenido que se pasa a lo largo. Debido a que no existe una manera formal para describir la interfaz de servicios web, ambas partes deben estar de acuerdo fuera de banda en los esquemas que describen los datos que se intercambian y sobre las formas de procesarla de manera significativa. En el mundo real, la mayoría de las aplicaciones comerciales que exponen a los servicios como implementaciones REST también distribuyen los llamados kits de herramientas de valor añadido que describen las interfaces con los desarrolladores de lenguajes de programación.
  • Ancho de banda es particularmente importante y debe ser limitada. REST es particularmente útil para los dispositivos de perfil limitado, tales como PDAs y teléfonos móviles, para lo cual deberá limitarse la sobrecarga de las cabeceras y capas adicionales de elementos SOAP en la carga XML.
  • La prestación de servicios web o agregación en los sitios web existentes se pueden activar fácilmente con un estilo REST. Los desarrolladores pueden utilizar tecnologías como JAX-RS y JavaScript asíncrono con XML (AJAX) y kits de herramientas tales como Web Remoting Direct (DWR) para consumir los servicios en sus aplicaciones web. En lugar de empezar desde cero, los servicios pueden estar expuestos con XML y consumidos por las páginas HTML sin refactorización significativamente la arquitectura del sitio web existente. desarrolladores existentes serán más productivos, ya que se suman a algo que ya están familiarizados con el lugar de tener que empezar de cero con la nueva tecnología.

Ejemplos

  • Construyendo un RESTful webservice con spring.

Referencias