Servicios Web

 Servicio Web (Que es, para que sirven).

El World Wide Web Consortium (W3C) define un servicio web como un sistema de software designado para dar soporte a la interacción de máquina a máquina interoperativa a través de una red.
Un servicio web realiza una tarea específica o un conjunto de tareas, y se describe mediante una descripción de servicio en una notación XML estándar llamada WSDL (Web Services Description Language). La descripción de servicio proporciona todos los detalles necesarios para interactuar con el servicio, incluidos los formatos de mensaje (que detallan las operaciones), los protocolos de transporte y la ubicación.
Otros sistemas utilizan mensajes SOAP para interactuar con el servicio web, normalmente utilizando HTTP con una serialización XML conjuntamente con otros estándares relacionados con la web.
La interfaz WSDL oculta los detalles de cómo se implementa el servicio, y el servicio se puede utilizar independientemente de la plataforma de hardware o software en la que se implementa e independientemente del lenguaje de programación en el que está escrito.
Las aplicaciones basadas en servicios web son implementaciones en todas las tecnologías, con acoplamientos flexibles y orientadas a componentes. Los servicios web se pueden utilizar individualmente o junto con otros servicios web, para llevar a cabo una agregación completa o una transacción empresarial.





* Caracteristicas de los servicios web 

Es una tecnología que utiliza 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

La interoperabilidad se consigue mediante la adopción de estándares abiertos.

Puedan ser combinados fácilmente para proveer servicios integrados.

Está orientado a la web

Permiten el fácil acceso a su contenido y funcionamiento

Caracteristicas

Pueden ser consumidas desde cualquier tipo de aplicación sin importar el lenguaje

Pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet.

Las organizaciones OASIS y W3C son los comités responsables de la arquitectura y reglamentació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..






* Ventajas e inconvenientes de los servicios Web.


Ventajas de los servicios web : 

· Aportan interoperabilidad entre aplicaciones de software independientemente de sus propiedades o de las plataformas sobre las que se instalen. 

· Los servicios Web fomentan los estándares y protocolos basados en texto, que hacen más fácil acceder a su contenido y entender su funcionamiento. 

· Permiten que servicios y software de diferentes compañías ubicadas en diferentes lugares geográficos puedan sercombinados fácilmente para proveer servicios integrados. 

· Basado en estándares 

Desventajas de los servicios web : 

· Al apoyarse en HTTP, pueden esquivar medidas de seguridad basadas en firewall cuyas reglas tratan de bloquear 

· La comunicación entre programas. 

· Existe poca información de servicios web para algunos lenguajes de programación 

· No es la solución a todos los problemas 

· Relativamente nuevo, algunos estándares no definidos 

· Dependencia de la disponibilidad de servidores y comunicaciones 



Estandares:
* XML
XML, siglas en inglés de eXtensible Markup Language, traducido como "Lenguaje de Marcado Extensible" o "Lenguaje de Marcas Extensible", es un meta-lenguaje que permite definir lenguajes de marcas desarrollado por el World Wide Web Consortium (W3C) utilizado para almacenar datos en forma legible. Proviene del lenguaje SGML y permite definir la gramática de lenguajes específicos (de la misma manera que HTML es a su vez un lenguaje definido por SGML) para estructurar documentos grandes. A diferencia de otros lenguajes, XML da soporte a bases de datos, siendo útil cuando varias aplicaciones deben comunicarse entre sí o integrar información.1
XML no ha nacido únicamente para su aplicación en Internet, sino que se propone como un estándar para el intercambio de información estructurada entre diferentes plataformas. Se puede usar en bases de datos, editores de texto, hojas de cálculo y casi cualquier cosa imaginable.
XML es una tecnología sencilla que tiene a su alrededor otras que la complementan y la hacen mucho más grande, con unas posibilidades mucho mayores. Tiene un papel muy importante en la actualidad ya que permite la compatibilidad entre sistemas para compartir la información de una manera segura, fiable y fácil.


* SOAP
SOAP (originalmente las siglas de Simple Object Access Protocol) es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML. Este protocolo deriva de un protocolo creado por Dave Winer en 1998, llamado XML-RPC. SOAP fue creado por Microsoft, IBM y otros. Está actualmente bajo el auspicio de la W3C. Es uno de los protocolos utilizados en los servicios Web.

SOAP es un paradigma de mensajería de una dirección sin estado, que puede ser utilizado para formar protocolos más complejos y completos según las necesidades de las aplicaciones que lo implementan. Puede formar y construir la capa base de una "pila de protocolos de web service", ofreciendo un framework de mensajería básica en el cual los web services se pueden construir. Este protocolo está basado en XML y se conforma de tres partes:
  • Sobre (envelope): el cual define qué hay en el mensaje y cómo procesarlo.
  • Conjunto de reglas de codificación para expresar instancias de tipos de datos.
  • La Convención para representar llamadas a procedimientos y respuestas.
El protocolo SOAP tiene tres características principales:
  • Extensibilidad (seguridad y WS-routing son extensiones aplicadas en el desarrollo).
  • Neutralidad (bajo protocolo de transporte TCP puede ser utilizado sobre cualquier protocolo de aplicación como HTTP, SMTP o JMS).
  • Independencia (permite cualquier modelo de programación).



* WSDL

WSDL, las siglas de Web Services Description Language, es un formato del Extensible Markup Language (XML) que se utiliza para describir servicios web (WS). La versión 1.0 fue la primera recomendación por parte del W3C y la versión 1.1 no alcanzó nunca tal estatus. La versión 2.0 se convirtió en la recomendación actual por parte de dicha entidad.
WSDL describe la interfaz pública a los servicios Web. Está basado en XML y describe la forma de comunicación, es decir, los requisitos del protocolo y los formatos de los mensajes necesarios para interactuar con los servicios listados en su catálogo. Las operaciones y mensajes que soporta se describen en abstracto y se ligan después al protocolo concreto de red y al formato del mensaje.
Así, WSDL se usa a menudo en combinación con SOAP y XML Schema. Un programa cliente que se conecta a un servicio web puede leer el WSDL para determinar qué funciones están disponibles en el servidor. Los tipos de datos especiales se incluyen en el archivo WSDL en forma de XML Schema. El cliente puede usar SOAP para hacer la llamada a una de las funciones listadas en el WSDL.
El WSDL nos permite tener una descripción de un servicio web. Especifica la interfaz abstracta a través de la cual un cliente puede acceder al servicio y los detalles de cómo se debe utilizar.




* UDDI
UDDI son las siglas del catálogo de negocios de Internet denominado Universal Description, Discovery and Integration. El registro en el catálogo se hace en XML. UDDI es una iniciativa industrial abierta (sufragada por la OASIS) entroncada en el contexto de los servicios Web. El registro de un negocio en UDDI tiene tres partes:
  • Páginas blancas - dirección, contacto y otros identificadores conocidos.
  • Páginas amarillas - categorización industrial basada en taxonomías.
  • Páginas verdes - información técnica sobre los servicios que aportan las propias empresas.
UDDI es uno de los estándares básicos de los servicios Web cuyo objetivo es ser accedido por los mensajes SOAP y dar paso a documentos WSDL, en los que se describen los requisitos del protocolo y los formatos del mensaje solicitado para interactuar con los servicios Web del catálogo de registros.


* WS-Security

WS-Security (Seguridad en Servicios Web) es un protocolo de comunicaciones que suministra un medio para aplicar seguridad a los Servicios Web. En abril de 2004 el estándar WS-Security 1.0 fue publicado por Oasis-Open. En 2006 fue publicada la versión 1.1.
Originalmente desarrollado por IBM, Microsoft, y VeriSign, el protocolo es ahora llamado oficialmente WSS y está desarrollado por un comité en Oasis-Open.
El protocolo contiene especificaciones sobre cómo debe garantizarse la integridad y seguridad en mensajería de Servicios Web. El protocolo WSS incluye detalles en el uso de SAML y Kerberos, y formatos de certificado tales como X.509.
La Integridad de datos y confidencialidad podrían también garantizarse sobre Servicios Web a través del uso de la Transport Layer Security (TLS), por ejemplo enviando mensajes sobre HTTPS. Esto puede reducir significativamente la sobrecarga, por ejemplo eliminando la necesidad de codificar claves y firmas de mensaje en ASCII antes de enviar. La parte negativa de usar TLS sería si los mensajes necesitaran pasar a través de un servidor proxy, como si fuera necesario ver la petición para enrutado. En tal caso, el servidor vería la petición que llega del proxy, no del cliente; esto podría ser solventado si el proxy tiene una copia de la clave y certificado del cliente, o teniendo un certificado de firmado de confianza para el servidor, con el cual podría generar un par clave/certificado que coincida con aquellos del cliente. Sin embargo, el hecho de que el proxy está operando el mensaje significa que no asegura la seguridad extremo a extremo, sino que solo asegura la seguridad punto a punto.
WS-Security incorpora características de seguridad en el encabezado de un mensaje SOAP, trabajando en la capa aplicación. Así asegura seguridad extremo a extremo.





* REST

REST deriva de "REpresentational State Transfer", que traducido vendría a ser “transferencia de representación de estado”, lo que tampoco aclara mucho, pero contiene la clave de lo que significa. Porque la clave de REST es que un servicio REST no tiene estado (es stateless), lo que quiere decir que, entre dos llamadas cualesquiera, el servicio pierde todos sus datos. Esto es, que no se puede llamar a un servicio REST y pasarle unos datos (p. ej. un usuario y una contraseña) y esperar que “nos recuerde” en la siguiente petición. De ahí el nombre: el estado lo mantiene el cliente y por lo tanto es el cliente quien debe pasar el estado en cada llamada. Si quiero que un servicio REST me recuerde, debo pasarle quien soy en cada llamada. Eso puede ser un usuario y una contraseña, un token o cualquier otro tipo de credenciales, pero debo pasarlas en cada llamada. Y lo mismo aplica para el resto de información.


* JSON

JSON (JavaScript Object Notation - Notación de Objetos de JavaScript) es un formato ligero de intercambio de datos. Leerlo y escribirlo es simple para humanos, mientras que para las máquinas es simple interpretarlo y generarlo. Está basado en un subconjunto del Lenguaje de Programación JavaScript, Standard ECMA-262 3rd Edition - Diciembre 1999. JSON es un formato de texto que es completamente independiente del lenguaje pero utiliza convenciones que son ampliamente conocidos por los programadores de la familia de lenguajes C, incluyendo C, C++, C#, Java, JavaScript, Perl, Python, y muchos otros. Estas propiedades hacen que JSON sea un lenguaje ideal para el intercambio de datos.

JSON está constituído por dos estructuras:

Una colección de pares de nombre/valor. En varios lenguajes esto es conocido como un objeto, registro, estructura, diccionario, tabla hash, lista de claves o un arreglo asociativo.
Una lista ordenada de valores. En la mayoría de los lenguajes, esto se implementa como arreglos, vectores, listas o secuencias.
Estas son estructuras universales; virtualmente todos los lenguajes de programación las soportan de una forma u otra. Es razonable que un formato de intercambio de datos que es independiente del lenguaje de programación se base en estas estructuras.

En JSON, se presentan de estas formas:

Un objeto es un conjunto desordenado de pares nombre/valor. Un objeto comienza con {llave de apertura y termine con }llave de cierre. Cada nombre es seguido por :dos puntos y los pares nombre/valor están separados por ,coma.


Comentarios

Entradas populares