¿Qué son los servicios web? Arquitectura, tipos, ejemplo

Tabla de contenido:

Anonim

¿Qué es el servicio web?

El servicio web es un medio estandarizado para propagar la comunicación entre las aplicaciones cliente y servidor en la World Wide Web. Un servicio web es un módulo de software diseñado para realizar un determinado conjunto de tareas.

  • Los servicios web en la computación en nube se pueden buscar en la red y también se pueden invocar en consecuencia.
  • Cuando se invoca, el servicio web podría proporcionar la funcionalidad al cliente, que invoca ese servicio web.

En este tutorial de servicios web, aprenderá los conceptos básicos de los servicios web:

  • ¿Cómo funcionan los servicios web?
  • ¿Por qué necesita un servicio web?
  • Tipo de servicio web
  • Ventajas de los servicios web
  • Arquitectura de servicios web
  • Características del servicio web
  • ¿Cómo funcionan los servicios web?

    ¿Cómo funcionan los servicios web?

    El diagrama anterior muestra una vista muy simplista de cómo funcionaría realmente un servicio web. El cliente invocaría una serie de llamadas de servicio web a través de solicitudes a un servidor que albergaría el servicio web real.

    Estas solicitudes se realizan a través de lo que se conoce como llamadas a procedimientos remotos. Las llamadas a procedimiento remoto (RPC) son llamadas realizadas a métodos alojados por el servicio web correspondiente.

    Por ejemplo, Amazon ofrece un servicio web que proporciona precios para los productos que se venden en línea a través de amazon.com. La capa frontal o de presentación puede estar en .Net o Java, pero cualquiera de los lenguajes de programación tendría la capacidad de comunicarse con el servicio web.

    El componente principal del diseño de un servicio web son los datos que se transfieren entre el cliente y el servidor, y eso es XML. XML (Lenguaje de marcado extensible) es una contraparte de HTML y es fácil de entender el lenguaje intermedio que entienden muchos lenguajes de programación.

    Entonces, cuando las aplicaciones se comunican entre sí, en realidad lo hacen en XML. Esto proporciona una plataforma común para que las aplicaciones desarrolladas en varios lenguajes de programación se comuniquen entre sí.

    Los servicios web utilizan algo conocido como SOAP (Protocolo simple de acceso a objetos) para enviar datos XML entre aplicaciones. Los datos se envían a través de HTTP normal. Los datos que se envían desde el servicio web a la aplicación se denominan mensaje SOAP. El mensaje SOAP no es más que un documento XML. Dado que el documento está escrito en XML, la aplicación cliente que llama al servicio web se puede escribir en cualquier lenguaje de programación.

    ¿Por qué necesita un servicio web?

    Las aplicaciones comerciales de hoy en día utilizan una variedad de plataformas de programación para desarrollar aplicaciones basadas en la web. Algunas aplicaciones pueden estar desarrolladas en Java, otras en .Net, mientras que otras en Angular JS, Node.js, etc.

    La mayoría de las veces, estas aplicaciones heterogéneas necesitan algún tipo de comunicación entre ellas. Dado que se crean utilizando diferentes lenguajes de desarrollo, resulta realmente difícil garantizar una comunicación precisa entre aplicaciones.

    Aquí es donde entran en juego los servicios web. Los servicios web proporcionan una plataforma común que permite que múltiples aplicaciones creadas en varios lenguajes de programación tengan la capacidad de comunicarse entre sí.

    Tipo de servicio web

    Existen principalmente dos tipos de servicios web.

    1. Servicios web SOAP.
    2. Servicios web RESTful.

    Para que un servicio web sea completamente funcional, hay ciertos componentes que deben estar en su lugar. Estos componentes deben estar presentes independientemente del lenguaje de desarrollo que se utilice para programar el servicio web.

    Veamos estos componentes con más detalle.

    SOAP (Protocolo simple de acceso a objetos)

    SOAP se conoce como protocolo de mensajería independiente del transporte. SOAP se basa en la transferencia de datos XML como mensajes SOAP. Cada mensaje tiene algo que se conoce como documento XML. Solo la estructura del documento XML sigue un patrón específico, pero no el contenido. La mejor parte de los servicios web y SOAP es que todo se envía a través de HTTP, que es el protocolo web estándar.

    Esto es en lo que consiste un mensaje SOAP

    • Cada documento SOAP debe tener un elemento raíz conocido como elemento . El elemento raíz es el primer elemento de un documento XML.
    • El "sobre" se divide a su vez en 2 partes. El primero es el encabezado y el siguiente es el cuerpo.
    • El encabezado contiene los datos de enrutamiento, que son básicamente la información que le dice al documento XML a qué cliente debe enviarse.
    • El cuerpo contendrá el mensaje real.

    El siguiente diagrama muestra un ejemplo sencillo de la comunicación a través de SOAP.

    Protocolo SOAP

    Discutiremos SOAP en detalle en este tutorial.

    WSDL (lenguaje de descripción de servicios web)

    No se puede utilizar un servicio web si no se puede encontrar . El cliente que invoca el servicio web debe saber dónde reside realmente el servicio web.

    En segundo lugar, la aplicación cliente necesita saber qué hace realmente el servicio web para poder invocar el servicio web correcto. Esto se hace con la ayuda del WSDL, conocido como lenguaje de descripción de servicios web. El archivo WSDL es nuevamente un archivo basado en XML que básicamente le dice a la aplicación cliente lo que hace el servicio web. Al utilizar el documento WSDL, la aplicación cliente podría comprender dónde se encuentra el servicio web y cómo se puede utilizar.

    Ejemplo de servicio web

    A continuación se proporciona un ejemplo de servicios web de un archivo WSDL.

    
    
    
    

    Los aspectos importantes a tener en cuenta sobre los ejemplos de declaración WSDL anteriores de servicios web son los siguientes:

    1. : el parámetro de mensaje en la definición WSDL se usa para definir los diferentes elementos de datos para cada operación realizada por el servicio web. Entonces, en los ejemplos de servicios web anteriores, tenemos 2 mensajes que se pueden intercambiar entre el servicio web y la aplicación cliente, uno es el "TutorialRequest" y el otro es la operación "TutorialResponse". TutorialRequest contiene un elemento llamado "TutorialID" que es del tipo cadena. De manera similar, la operación TutorialResponse contiene un elemento llamado "TutorialName" que también es un tipo de cadena.
    2. : en realidad, describe la operación que puede realizar el servicio web, que en nuestro caso se llama Tutorial. Esta operación puede tomar 2 mensajes; uno es un mensaje de entrada y el otro es el mensaje de salida.
    3. : este elemento contiene el protocolo que se utiliza. Entonces, en nuestro caso, lo estamos definiendo para usar http ( http://schemas.xmlsoap.org/soap/http ). También especificamos otros detalles para el cuerpo de la operación, como el espacio de nombres y si el mensaje debe estar codificado.

    Discutiremos "WDSL" en detalle en este tutorial.

    Descripción, descubrimiento e integración universales (UDDI)

    UDDI es un estándar para describir, publicar y descubrir los servicios web que proporciona un proveedor de servicios en particular. Proporciona una especificación que ayuda a alojar la información sobre los servicios web.

    Ahora discutimos en el tema anterior sobre WSDL y cómo contiene información sobre lo que realmente hace el servicio web. Pero, ¿cómo puede una aplicación cliente localizar un archivo WSDL para comprender las diversas operaciones que ofrece un servicio web? Entonces, UDDI es la respuesta a esto y proporciona un repositorio en el que se pueden alojar archivos WSDL. Entonces, la aplicación cliente tendrá acceso completo al UDDI, que actúa como una base de datos que contiene todos los archivos WSDL.

    Así como un directorio telefónico tiene el nombre, dirección y número de teléfono de una persona en particular, de la misma manera el registro UDDI tendrá la información relevante para el servicio web . Para que una aplicación cliente sepa dónde se puede encontrar.

    Ventajas de los servicios web

    Ya entendemos por qué surgieron los servicios web en primer lugar, que era proporcionar una plataforma que permitiera que diferentes aplicaciones se comunicaran entre sí.

    Pero echemos un vistazo a la lista de ventajas de los servicios web para explicar por qué es importante utilizar los servicios web.

    1. Exposición de la funcionalidad empresarial en la red : un servicio web es una unidad de código administrado que proporciona algún tipo de funcionalidad a las aplicaciones cliente o los usuarios finales. Esta funcionalidad se puede invocar a través del protocolo HTTP, lo que significa que también se puede invocar a través de Internet. Hoy en día, todas las aplicaciones están en Internet, lo que hace que el propósito de los servicios web sea más útil. Eso significa que el servicio web puede estar en cualquier lugar de Internet y proporcionar la funcionalidad necesaria según sea necesario.

    2. Interoperabilidad entre aplicaciones : los servicios web permiten que varias aplicaciones se comuniquen entre sí y compartan datos y servicios entre sí. Todos los tipos de aplicaciones pueden comunicarse entre sí. Entonces, en lugar de escribir código específico que solo puede ser entendido por aplicaciones específicas, ahora puede escribir código genérico que pueda ser entendido por todas las aplicaciones.

    3. Un protocolo estandarizado que todos comprenden : los servicios web utilizan un protocolo industrial estandarizado para la comunicación. Las cuatro capas (transporte de servicios, mensajería XML, descripción de servicios y descubrimiento de servicios) utilizan protocolos bien definidos en la pila de protocolos de servicios web.

    4. Reducción del costo de comunicación : los servicios web utilizan SOAP sobre el protocolo HTTP, por lo que puede usar su Internet de bajo costo existente para implementar servicios web.

    Arquitectura de servicios web

    Cada marco necesita algún tipo de arquitectura para asegurarse de que todo el marco funcione como se desea, de manera similar, en los servicios web. La arquitectura de servicios web consta de tres roles distintos, como se indica a continuación:

    1. Proveedor : el proveedor crea el servicio web y lo pone a disposición de la aplicación cliente que desee utilizarlo.
    2. Solicitante : un solicitante no es más que la aplicación cliente que necesita ponerse en contacto con un servicio web. La aplicación cliente puede ser .Net, Java o cualquier otra aplicación basada en lenguaje que busque algún tipo de funcionalidad a través de un servicio web.
    3. Broker : el corredor no es más que la aplicación que proporciona acceso a la UDDI. El UDDI, como se discutió en el tema anterior, permite que la aplicación cliente localice el servicio web.

    El siguiente diagrama muestra cómo el proveedor de servicios, el solicitante del servicio y el registro del servicio interactúan entre sí.

    Arquitectura de servicios web
    1. Publicar : un proveedor informa al corredor (registro de servicios) sobre la existencia del servicio web mediante el uso de la interfaz de publicación del corredor para que el servicio sea accesible para los clientes.
    2. Buscar : el solicitante consulta al corredor para localizar un servicio web publicado.
    3. Vincular : con la información que obtuvo del corredor (registro de servicios) sobre el servicio web, el solicitante puede vincular o invocar el servicio web.

    Características del servicio web

    Los servicios web tienen las siguientes características especiales de comportamiento:

    1. Están basados ​​en XML : los servicios web utilizan XML para representar los datos en las capas de representación y transporte de datos. El uso de XML elimina cualquier tipo de dependencia de red, sistema operativo o plataforma, ya que XML es el lenguaje común que todos entienden.

    2. Acoplado débilmente: acoplado débilmente significa que el cliente y el servicio web no están vinculados entre sí, lo que significa que incluso si el servicio web cambia con el tiempo, no debería cambiar la forma en que el cliente llama al servicio web. La adopción de una arquitectura poco acoplada tiende a hacer que los sistemas de software sean más manejables y permite una integración más simple entre diferentes sistemas.

    3. Funcionalidad sincrónica o asincrónica : la sincronicidad se refiere a la vinculación del cliente a la ejecución del servicio. En las operaciones síncronas, el cliente realmente esperará a que el servicio web complete una operación. Un ejemplo de esto es probablemente un escenario en el que se está realizando una operación de lectura y escritura de la base de datos. Si los datos se leen de una base de datos y luego se escriben en otra, las operaciones deben realizarse de manera secuencial. Las operaciones asincrónicas permiten que un cliente invoque un servicio y luego ejecute otras funciones en paralelo. Ésta es una de las técnicas comunes y probablemente la más preferida para garantizar que otros servicios no se detengan cuando se lleva a cabo una operación en particular.

    4. Capacidad para admitir llamadas a procedimientos remotos (RPC) : los servicios web permiten a los clientes invocar procedimientos, funciones y métodos en objetos remotos mediante un protocolo basado en XML. Los procedimientos remotos exponen parámetros de entrada y salida que un servicio web debe admitir.

    5. Admite el intercambio de documentos : uno de los beneficios clave de XML es su forma genérica de representar no solo datos sino también documentos complejos. Estos documentos pueden ser tan simples como representar una dirección actual o pueden ser tan complejos como representar un libro completo.