{"id":644,"date":"2012-07-14T20:33:22","date_gmt":"2012-07-14T20:33:22","guid":{"rendered":"http:\/\/www.palentino.es\/blog\/?p=644"},"modified":"2012-07-14T20:40:47","modified_gmt":"2012-07-14T20:40:47","slug":"servicios-web-utilidades-estandares-y-beneficios","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/servicios-web-utilidades-estandares-y-beneficios\/","title":{"rendered":"Servicios web, utilidades, est\u00e1ndares y beneficios"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"color: #000000;\">Existen <strong>m\u00faltiples definiciones<\/strong> sobre lo que son los Servicios Web, lo que muestra su complejidad a la hora de dar una adecuada definici\u00f3n que englobe todo lo que son e implican. <\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"color: #000000;\">Una posible ser\u00eda hablar de ellos como un <strong>conjunto de aplicaciones o de tecnolog\u00edas<\/strong> con capacidad para <strong>Interoperar en la Web. Estas aplicaciones o tecnolog\u00edas intercambian datos e informaci\u00f3n entre s\u00ed con el objetivo de ofrecer unos servicios<\/strong>. Los proveedores ofrecen sus servicios como procedimientos remotos y los usuarios solicitan un servicio llamando a estos procedimientos a trav\u00e9s de la Web.<\/span><\/p>\n<p>\u00a0<!--more--><\/p>\n<p><strong>\u00bfPara qu\u00e9 sirven?<\/strong><\/p>\n<p style=\"text-align: justify;\">Estos servicios proporcionan <strong>mecanismos de comunicaci\u00f3n est\u00e1ndares<\/strong> entre diferentes aplicaciones, que interact\u00faan entre s\u00ed para presentar informaci\u00f3n din\u00e1mica al usuario. Para proporcionar interoperabilidad y extensibilidad entre estas aplicaciones, y que al mismo tiempo sea posible su combinaci\u00f3n para realizar operaciones complejas, es necesaria una arquitectura de referencia est\u00e1ndar.<\/p>\n<p style=\"text-align: justify;\">Un servicio web o <strong>web Service<\/strong>, propone una alternativa para facilitar la <strong>intercomunicaci\u00f3n <\/strong>entre diferentes <strong>plataformas y arquitecturas<\/strong> de componentes distribuidos, ofreciendo un uso compartido de dichos servicios.<\/p>\n<p style=\"text-align: justify;\">Funciona como una aplicaci\u00f3n que realiza una actividad de negocio, donde existe una interfaz para poder llamar al programa que implementa el servicio. Para ello los servicios web emplean protocolos abiertos y est\u00e1ndares de Internet (<strong>HTTP, XML, UDDI, SOAP, WSDL<\/strong>) proporcionando el mecanismo de comunicaci\u00f3n e operatividad.<\/p>\n<p>Como podemos apreciar se emplean diferentes tecnolog\u00edas.<\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/servicio-web.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-646\" title=\"servicio-web\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/servicio-web.jpg\" alt=\"\" width=\"680\" height=\"324\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/servicio-web.jpg 680w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/servicio-web-300x142.jpg 300w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Seg\u00fan el ejemplo del gr\u00e1fico, un <strong>usuario (que juega el papel de cliente dentro de los Servicios Web)<\/strong>, a trav\u00e9s de una aplicaci\u00f3n, solicita informaci\u00f3n sobre un viaje que desea realizar haciendo una petici\u00f3n a una agencia de viajes que ofrece sus servicios a trav\u00e9s de Internet.<\/p>\n<p style=\"text-align: justify;\">La agencia de viajes ofrecer\u00e1 a su cliente (usuario) la informaci\u00f3n requerida. Para proporcionar al cliente la informaci\u00f3n que necesita, esta agencia de viajes solicita a su vez informaci\u00f3n a otros recursos (otros Servicios Web) en relaci\u00f3n con el hotel y la compa\u00f1\u00eda a\u00e9rea. La agencia de viajes obtendr\u00e1 informaci\u00f3n de estos recursos, lo que la convierte a su vez en cliente de esos otros Servicios Web que le van a proporcionar la informaci\u00f3n solicitada sobre el hotel y la l\u00ednea a\u00e9rea. Por \u00faltimo, el usuario realizar\u00e1 el pago del viaje a trav\u00e9s de la agencia de viajes que servir\u00e1 de intermediario entre el usuario y el servicio Web que gestionar\u00e1 el pago.<\/p>\n<p style=\"text-align: justify;\">En todo este proceso intervienen una serie de tecnolog\u00edas que hacen posible esta circulaci\u00f3n de informaci\u00f3n. Por un lado, estar\u00eda <strong>SOAP<\/strong> (Protocolo Simple de <strong>Acceso a Objetos<\/strong>). Se trata de un protocolo basado en <strong>XML<\/strong>, que permite la interacci\u00f3n entre varios dispositivos y que tiene la capacidad de transmitir informaci\u00f3n compleja. Los datos pueden ser transmitidos a trav\u00e9s <strong>de HTTP , SMTP , etc<\/strong>. SOAP especifica el <strong>formato de los mensajes<\/strong>. El mensaje SOAP est\u00e1 compuesto por un envelope (sobre), cuya estructura est\u00e1 formada por los siguientes elementos: header (cabecera) y body (cuerpo).<\/p>\n<p style=\"text-align: justify;\"><span style=\"text-align: justify;\">Por otro lado, <\/span><strong style=\"text-align: justify;\">WSDL<\/strong><span style=\"text-align: justify;\"> (Lenguaje de Descripci\u00f3n de Servicios Web), permite que un servicio y un cliente establezcan un <\/span><strong style=\"text-align: justify;\">acuerdo<\/strong><span style=\"text-align: justify;\"> en lo que se refiere a los detalles de <\/span><strong style=\"text-align: justify;\">transporte de mensajes y su contenido<\/strong><span style=\"text-align: justify;\">, a trav\u00e9s de un documento procesable por dispositivos. WSDL representa una especie de <\/span><strong style=\"text-align: justify;\">contrato entre el proveedor y el que solicita<\/strong><span style=\"text-align: justify;\">. <\/span><strong style=\"text-align: justify;\">WSDL especifica la sintaxis y los mecanismos de intercambio de mensajes<\/strong><span style=\"text-align: justify;\">.<\/span><\/p>\n<p style=\"text-align: justify;\">Durante la evoluci\u00f3n de las necesidades de las aplicaciones basadas en Servicios Web de las grandes organizaciones, se han desarrollado mecanismos que permiten enriquecer las descripciones de las operaciones que realizan sus servicios mediante anotaciones sem\u00e1nticas y con directivas que definen el comportamiento. Esto permitir\u00eda <strong>encontrar los Servicios Web que mejor se adapten a los objetivos deseados<\/strong>. Adem\u00e1s, ante la complejidad de los procesos de las grandes aplicaciones empresariales, existe una tecnolog\u00eda que permite una definici\u00f3n de estos procesos mediante la composici\u00f3n de varios Servicios Web individuales, lo que se conoce como coreograf\u00eda.<\/p>\n<p style=\"text-align: justify;\">La aparici\u00f3n de los servicios Web, y de las Arquitecturas Orientadas a Servicios (SOA), supone el establecimiento de nuevos mecanismos de comunicaci\u00f3n <strong>B2B, B2C, B2E.<\/strong> El organismo encargado de definir estos est\u00e1ndares, y asegurar este comportamiento, es el <strong>WS-I<\/strong> (Web Services Interoperability Organization). Gracias a este organismo, va a ser posible que sistemas desarrollados en diferentes plataformas y diferentes lenguajes de programaci\u00f3n, puedan <strong>interactuar<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Un servicio Web, va a poner a nuestra disposici\u00f3n una serie de operaciones, invocables mediante <strong>HTTP\/XML<\/strong>. Esta arquitectura, se basa en una serie de perfiles que realizan las tareas de:<\/p>\n<p style=\"text-align: justify;\">&#8211;\u00a0<strong>Proveedor de servicios<\/strong>: Componente que se encarga de poner un servicio a disposici\u00f3n de los clientes, y de publicar el interface del mismo.<\/p>\n<p style=\"text-align: justify;\">&#8211;\u00a0<strong>Agente de servicio<\/strong>: Encargado de registrar servicios publicados por un proveedor, as\u00ed como de informar a posibles consumidores, de qu\u00e9 forma pueden acceder a un servicio Web.<\/p>\n<p style=\"text-align: justify;\">&#8211;\u00a0<strong>Consumidor de servicios<\/strong>: Elemento que se encarga de invocar a un servicio, y que, tambi\u00e9n realizar\u00e1 consultas al agente, para obtener informaci\u00f3n relativa a servicios.<\/p>\n<p style=\"text-align: justify;\">La existencia de estos tres perfiles, implica la aparici\u00f3n de tres caracter\u00edsticas funcionales b\u00e1sicas en el sistema:<\/p>\n<p style=\"text-align: justify;\">&#8211; <strong>Transporte<\/strong>: Componente encargado de definir el formato y protocolos empleados a la hora de intercambiar la informaci\u00f3n, entre un cliente y un servicio Web. SOAP.<\/p>\n<p style=\"text-align: justify;\">&#8211; <strong>Descripci\u00f3n<\/strong>: Componente encargado de describir el interface de un servicio Web, de forma que un cliente, pueda consultar dicha informaci\u00f3n. WSDL<\/p>\n<p style=\"text-align: justify;\">&#8211; <strong>Descubrimiento<\/strong>: Encargado de realizar la publicaci\u00f3n de un nuevo servicio Web, y de responder a b\u00fasquedas de servicios publicados. UDDI<\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/servicio-web-2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-648\" title=\"servicio-web-2\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/servicio-web-2.jpg\" alt=\"\" width=\"554\" height=\"360\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/servicio-web-2.jpg 554w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/servicio-web-2-300x194.jpg 300w\" sizes=\"auto, (max-width: 554px) 100vw, 554px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Por lo que corresponde a los est\u00e1ndares que forman parte de los servicios web, aunque hemos mencionado de manera somera alguno de ellos,\u00a0 vamos a describir los siguientes:<\/p>\n<p style=\"text-align: justify;\">&#8211; <strong>XML<\/strong>: Deriva principalmente de <strong>SGML y de HTML<\/strong>. Ser\u00e1 utilizado por tanto, como elemento para representar toda la informaci\u00f3n que se <strong>trasmita<\/strong> utilizando esta arquitectura, ya que permite la <strong>descripci\u00f3n y el formateo de datos<\/strong>, separando claramente el <strong>contenido de su presentaci\u00f3n, y la extensibilidad del lenguaje, mediante la cual, se conseguir\u00e1 crear lenguajes espec\u00edficos al \u00e1rea de negocios<\/strong>.<\/p>\n<p style=\"text-align: justify;\">&#8211; <strong>UDDI<\/strong>: Es un protocolo que <strong>permite describir los componentes disponibles de servicios Web<\/strong>. Este est\u00e1ndar permite a las empresas registrarse, y les ayuda a anunciar sus servicios. Es un Framework abierto, independiente de la plataforma. Fue una iniciativa de <strong>Microsoft e IBM<\/strong>. UDDI es el protocolo que permitir\u00e1 <strong>buscar y registrar servicios Web<\/strong>.<\/p>\n<p style=\"text-align: justify;\">&#8211; <strong>WSDL<\/strong>:\u00a0 <strong>Lenguaje<\/strong> de Descripci\u00f3n de Servicios Web, Este est\u00e1ndar va a <strong>permitir<\/strong> por tanto, <strong>describir los servicios Web, indic\u00e1ndole a los usuarios la forma de acceder a ellos, y de realizar sus llamadas remotas<\/strong>.<\/p>\n<p style=\"text-align: justify;\">&#8211; <strong>SOAP<\/strong>:\u00a0 Simple Object Access Protocol. Es un <strong>protocolo<\/strong> que permite iniciar las <strong>conversaciones con un servicio UDDI<\/strong>. El protocolo SOAP simplifica el acceso a los objetos, permitiendo a las aplicaciones invocar m\u00e9todos que residen en sistemas remotos. Es un est\u00e1ndar de comunicaci\u00f3n basado en esquemas XML, mediante el cual, podemos intercambiar informaci\u00f3n estructurada y fuertemente tipada, en entornos descentralizados y distribuidos. Es sencillo, extensible y f\u00e1cil de desplegar en Internet, ya que est\u00e1 basado en est\u00e1ndares (codificaci\u00f3n XML, tipado XSD y transporte HTTP), facilitando la interoperabilidad entre m\u00faltiples entornos.<\/p>\n<p style=\"text-align: justify;\">\u00a0En este diagrama vemos como <strong>entran en juego las diferentes tecnolog\u00edas<\/strong>:<\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/diagrama-servicios-web.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-647\" title=\"diagrama-servicios-web\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/diagrama-servicios-web.jpg\" alt=\"\" width=\"375\" height=\"246\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/diagrama-servicios-web.jpg 375w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/diagrama-servicios-web-300x196.jpg 300w\" sizes=\"auto, (max-width: 375px) 100vw, 375px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Para finalizar el POST , respecto a los servicios web, su <strong>principal utilidad radica en los beneficios que aportan<\/strong>:<\/p>\n<p style=\"text-align: justify;\">1. <strong>Promueven la interoperabilidad<\/strong>: La interacci\u00f3n entre un proveedor y un solicitante de servicio est\u00e1 dise\u00f1ada para que sea completamente independiente de la plataforma y el lenguaje. Esta interacci\u00f3n requiere un documento WSDL para definir la interfaz y describir el servicio, junto con un protocolo de red (generalmente HTTP).<\/p>\n<p style=\"text-align: justify;\">2. <strong>Permiten la integraci\u00f3n \u201cjusto-a-tiempo\u201d (JIT):<\/strong> El proceso de descubrimiento se ejecuta din\u00e1micamente, a medida que los solicitantes de servicio utilizan a los agentes para encontrar proveedores de servicio. Una vez el solicitante y el proveedor de servicio se han ubicado, se utiliza el documento WSDL del proveedor para enlazar al solicitante con el servicio. Esto significa que los solicitantes, los proveedores y los agentes act\u00faan en conjunto para crear sistemas que son auto-configurables, adaptativos y robustos.<\/p>\n<p style=\"text-align: justify;\">3. <strong>Reducen la complejidad por medio del encapsulamiento<\/strong>: Los solicitantes y los proveedores del servicio se preocupan por las interfaces necesarias para interactuar. Como resultado, un solicitante de servicio no sabe c\u00f3mo fue implementado el servicio por parte del proveedor, y \u00e9ste a su vez, no sabe c\u00f3mo utiliza el cliente el servicio. Estos detalles se encapsulan en los solicitantes y proveedores. El encapsulamiento es crucial para reducir la complejidad.<\/p>\n<p style=\"text-align: justify;\">4. <strong>Dan una \u201cnueva vida\u201d a las aplicaciones de legado<\/strong>: Es relativamente correcto tomar una aplicaci\u00f3n, generar un wrapper SOAP, luego generar un documento WSDL para moldear la aplicaci\u00f3n como un servicio web.<\/p>\n<p style=\"text-align: justify;\">5. <strong>Abren la puerta a nuevas oportunidades de negocio<\/strong>: Los servicios web facilitan la interacci\u00f3n con socios de negocios, al poder compartir servicios internos con un alto grado de integraci\u00f3n.<\/p>\n<p style=\"text-align: justify;\">6. <strong>Disminuyen el tiempo de desarrollo de las aplicaciones<\/strong>: Pues gracias a la filosof\u00eda de orientaci\u00f3n a objetos utilizada, el desarrollo se convierte m\u00e1s bien en una labor de composici\u00f3n.<\/p>\n<p style=\"text-align: justify;\">Espero que este sea un resumen que aclare la utilidad y aplicaciones de los servicios web.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Existen m\u00faltiples definiciones sobre lo que son los Servicios Web, lo que muestra su complejidad a la hora de dar una adecuada definici\u00f3n que englobe todo lo que son e implican. Una posible ser\u00eda hablar de ellos como un conjunto de aplicaciones o de tecnolog\u00edas con capacidad para Interoperar en la Web. Estas aplicaciones o tecnolog\u00edas intercambian datos e informaci\u00f3n entre s\u00ed con el objetivo de ofrecer unos servicios. Los proveedores ofrecen sus servicios como procedimientos remotos y los usuarios solicitan un servicio llamando a estos procedimientos a trav\u00e9s de la Web. \u00a0<\/p>\n","protected":false},"author":1,"featured_media":650,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[41,14,24],"tags":[78,74,79,77,75,80,76],"class_list":["post-644","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ingenieria-del-software","category-varios","category-web","tag-http","tag-servicios-web","tag-soap","tag-uddi","tag-web-services","tag-wsdl","tag-xml"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/644","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=644"}],"version-history":[{"count":9,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/644\/revisions"}],"predecessor-version":[{"id":654,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/644\/revisions\/654"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/650"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=644"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=644"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=644"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}