miércoles, 26 de octubre de 2016

Servicios Web

Servicios  Web

Un Servicio Web es un componente al que podemos acceder mediante protocolos Web estándar, utilizando XML para el intercambio de información.
Normalmente nos referimos con Servicio Web a una colección de procedimientos (métodos) a los que podemos llamar desde cualquier lugar de Internet o de nuestra intranet, siendo este mecanismo de invocación totalmente independiente de la plataforma que utilicemos y del lenguaje de programación en el que se haya implementado internamente el servicio.

Que Son

En forma general, un servicio web es cualquier servicio ofrecido a través de la web, como ser el servicio de correo electrónico (Gmail de Google, por ejemplo), almacenamiento en la nube (Dropbox, iCloud, Google Drive, etc.), etc.

Características

  • Un servicio debe poder ser accesible a través de la Web. Para ello debe utilizar protocolos de transporte estándares como HTTP, y codificar los mensajes en un lenguaje estándar que pueda conocer cualquier cliente que quiera utilizar el servicio.
  • Un servicio debe contener una descripción de sí mismo. De esta forma, una aplicación podrá saber cuál es la función de un determinado Servicio Web, y cuál es su interfaz, de manera que pueda ser utilizado de forma automática por cualquier aplicación, sin la intervención del usuario.
  • Debe poder ser localizado. Deberemos tener algún mecanismo que nos permita encontrar un Servicio Web que realice una determinada función. De esta forma tendremos la posibilidad de que una aplicación localice el servicio que necesite de forma automática, sin tener que conocerlo previamente el usuario.

Tipos 

A nivel técnico, los servicios pueden implementarse de varias formas. En este sentido, podemos distinguir dos tipos de servicios Web: los denominados servicios Web "grandes" ("big" Web Services), los llamaremos servicios Web SOAP, y servicios Web RESTful.
Servicios Web SOAP
Los servicios Web SOAP, o servicios Web "big", utilizan mensajes XML para intercomunicarse que siguen el estándar SOAP (Simple Object Access Protocol), un lenguaje XML que define la arquitectura y formato de los mensajes. Dichos sistemas normalmente contienen una descripción legible por la máquina de la descripción de las operaciones ofrecidas por el servicio, escrita en WSDL (Web Services Description Language), que es un lenguaje basado en XML para definir las interfaces sintácticamente.

Servicios Web RESTful
Los servicios Web RESTful (Representational State Transfer Web Services) son adecuados para escenarios de integración básicos ad-hoc. Dichos servicios Web se suelen integrar mejor con HTTP que los servicios basado en SOAP, ya que no requieren mensajes XML o definciones del servicio en forma de fichero WSDL

Arquitectura 

Los servicios Web presentan una arquitectura orientada a servicios que permite crear una definición abstracta de un servicio, proporcionar una implementación concreta de dicho servicio, publicar y localizar un servicio, seleccionar un instancia de un servicio, y utilizar dicho servicio con una elevada interoperabilidad



Ejemplos
  • ASP
  • PHP
  • ASP.NET
  • JAVA
    • Público: Datos de una asignatura.
    • Privado: Alumnos de un plan de estudios.
    • Para poder llamar a un Web Service desde su servidor, si trabaja con java, tendremos que añadir un "Servicio Web Cliente" desde una dirección WSDL.

      A continuación, puede ver el código fuente del ejemplo para observar cómo se invocan las funciones y cómo se reciben los datos resultantes o los errores.
      • Datos de una asignatura. En este java puede ver cómo se invoca la función pudiendo elegir qué es lo que queremos que muestre.
      PASOS:
      1) Añado un "Servicio Web Cliente" desde una dirección WSDL.
      2) Añado el siguiente código:
           <%
              uasi.ws_gestdocente.PubGestdocente serv = new PubGestdocente();
              uasi.ws_gestdocente.PubGestdocenteSoap port = serv.getPubGestdocenteSoap();
                
              java.lang.String lengua = "C";
              java.lang.String curso = "2010-11";
              java.lang.String codasi = "9244";
                
              List<uasi.ws_gestdocente.ClaseDatosAsig> datos = port.wsdatosasig(lengua, curso, codasi).getClaseDatosAsig();
                
              for(int i=0; i<datos.size(); i++){
                  out.println(datos.get(i).getNomasi());
                  out.println(datos.get(i).getNomasicorto());
                  out.println(datos.get(i).getCrdtsteo());
                  out.println(datos.get(i).getCrdtspra());
                  out.println(datos.get(i).getCrdtects());
                  out.println(datos.get(i).getDuracionasi());
              }
          %> 

No hay comentarios:

Publicar un comentario