martes, 10 de septiembre de 2019

Programación orientada a servicos



Investigación Servicios y estándares que se ofrecen en la nube


Funcionamiento de un servidor web
  • Que es servicio web
Por lo que investigue un servicio web en inglés es web service o web services bueno se  dice que es una tecnología que utiliza un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones.Estos quiere decir que un servicio web es un sistema software que esta diseñado para soportar la interacción maquina a maquina, a través de una red. También hay  distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet.

Algunos de sus estándares 
UDDI (Universal Description, Discovery and Integration): protocolo para publicar la información de los servicios web. Permite comprobar qué servicios web están disponibles.
WSDL Web Services Description Language: es el lenguaje de la interfaz pública para los servicios web. Es una descripción basada en XML de los requisitos funcionales necesarios para establecer una comunicación con los servicios web.
REST Representational State Transfer: arquitectura que, haciendo uso del protocolo HTTP, proporciona una API que utiliza cada uno de sus métodos (GET, POST, PUT, DELETE, etcétera) para poder realizar diferentes operaciones entre la aplicación que ofrece el servicio web y el cliente.
GraphQL, arquitectura alternativa a REST.


  • Que es servicio web XML

 Bueno un servicios web  XML son bloques de código ejecutable expuestos a través de protocolos estándar para su uso en la web.Por lo tanto un bloque es el  código que compone un servicio web XML  que parece más a un programa de consola sin interfaz esto se trata de una clase pública que define, principalmente en  métodos. Estos son llamados métodos de servicio web XML, mismos que podrán ser invocados por aquellos programas que consuman el servicio. También se dice que los servicios web XML que permite el manejo de componentes.

Estructura de servicio web XML 
Ejemplo:
De  un documento WSDL donde <message> específica el mensaje individual XML 


<?xml version="1.0" encoding="UTF8"?>
<definitions name="WeatherService"
targetNamespace="http://www.ecerami.com/wsdl/WeatherService.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.ecerami.com/wsdl/WeatherService.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<message name="getWeatherRequest">
<part name="zipcode" type="xsd:string"/>
</message>
<message name="getWeatherResponse">
<part name="temperature" type="xsd:int"/>
</message>
<portType name="Weather_PortType">
<operation name="getWeather">
<input message="tns:getWeatherRequest"/>
<output message="tns:getWeatherResponse"/>
</operation>
</portType>
<binding name="Weather_Binding" type="tns:Weather_PortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getWeather">
<soap:operation soapAction=""/>
<input>
     <soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:weatherservice" use="encoded"/>
</input>
<output>
    <soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:weatherservice" use="encoded"/>
</output>
</operation>
</binding>
<service name="Weather_Service">
<documentation>WSDL File for Weather Service</documentation>
<port binding="tns:Weather_Binding" name="Weather_Port">
<soap:address
location="http://localhost:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>





  • Que es servicio web SOAP
Un servicios Web SOAP  es un protocolo estándar  que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML, tienen la propiedad de importar  en la plataforma o el lenguaje que se esté usando, siempre y cuando estos sean capaces de generar un Cliente Consumidor con el mismo estándar del protocolo SOAP, es por eso que la construcción del cliente varía dependiendo de la plataforma y el lenguaje de programación. 


  Estructura 


Características 



  • 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).




  • Que es servicio web WSDL
 Un servicio web WSDL  se describe como  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. También  WSDL nos permite tener una descripción de un servicio web y  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.
El diagrama se describe en el texto anterior.

Estructura 

Tipos de datos

<types>: Esta sección define los tipos de datos usados en los mensajes. Se utilizan los tipos definidos en la especificación de esquemas XML.

Mensajes
<message>: Aquí definimos los elementos de mensaje. Cada mensaje puede consistir en una serie de partes lógicas. Las partes pueden ser de cualquiera de los tipos definidos en la sección anterior.
Tipos de puerto
<portType>: Con este apartado definimos las operaciones permitidas y los mensajes intercambiados en el Servicio.
Bindings
<binding>: Especificamos los protocolos de comunicación usados.
Servicios
<service>: Conjunto de puertos y dirección de los mismos. Esta parte final hace referencia a lo aportado por las secciones anteriores.

  • Que es servicio web REST
La transferencia de estado representacional que en ingles es  representational state transfer REST es un estilo de arquitectura software para sistemas que esta  distribuido como la world wide web. También un servidor wwb REST es  para manipular estos recursos, los componentes de la red (clientes y servidores) se comunican a través de una interfaz estándar (HTTP).



Servicio Web REST

Diseños fundamentales de REST 

  • Un protocolo cliente/servidor sin estado: cada mensaje HTTP contiene toda la información necesaria para comprender la petición. Como resultado, ni el cliente ni el servidor necesitan recordar ningún estado de las comunicaciones entre mensajes. Sin embargo, en la práctica, muchas aplicaciones basadas en HTTP utilizan cookies y otros mecanismos para mantener el estado de la sesión (algunas de estas prácticas, como la reescritura de URLs, no son permitidas por REST)
  • Un conjunto de operaciones bien definidas que se aplican a todos los recursos de información: HTTP en sí define un conjunto pequeño de operaciones, las más importantes son POST, GET, PUT y DELETE. Con frecuencia estas operaciones se equiparan a las operaciones CRUD en bases de datos (CLAB en castellano: crear,leer,actualizar,borrar) que se requieren para la persistencia de datos, aunque POST no encaja exactamente en este esquema.

  •  El Consumo de un API REST
Hoy en día la mayoría de las empresas utilizan API REST para crear servicios. Esto se debe a que es un estándar lógico y eficiente para la creación de servicios web.




Image title
Características 
  1. Las operaciones más importantes que nos permitirán manipular los recursos son cuatro: GET para consultar y leer, POST para crear, PUT para editar y DELETE para eliminar.
  2. El uso de hipermedios (término que en el ámbito de las páginas web define el conjunto de procedimientos para crear contenidos que contengan texto, imagen, vídeo, audio y otros métodos de información) para permitir al usuario navegar por los distintos recursos de una API REST a través de enlaces HTML.




  • Ejemplo de servicios API REST que se pueden consumir -Redes sociales, base de datos, etc.
  La API REST siempre es independiente del tipo de plataformas o lenguajes: la API REST siempre se adapta al tipo de sintaxis o plataformas con las que se estén trabajando, lo que ofrece una gran libertad a la hora de cambiar o probar nuevos entornos dentro del desarrollo. Con una API REST se pueden tener servidores PHP, Java, Python o Node.js.
  
EJEMPLO 
{
    "id": 78,
    "nombre": "Juan",
    "apellido": "García",
    "coches": [
           {
                       "coche": "http://miservidor/concesionario/api/v1/clientes/78/coches/1033"
           },
           {
                       "coche": "http://miservidor/concesionario/api/v1/clientes/78/coches/3889"
           }
    ]
}



  • Frameworks que se pueden emplear para desarrollar aplicaciones web basadas en servicios

Los frameworks de lado servidor (es decir, "los frameworks de aplicaciones web") son frameworks software que hacen más fácil escribir, mantener y escalar aplicaciones web. Proporcionan herramientas y bibliotecas que simplifican tareas comunes de desarrollo web, incluyendo enrutado de URLs a los manejadores apropiados, interactuación con bases de datos, soporte de sesiones y autorizaciones de usuario, formateado de la salida (ej, HTML, JSON, XML), y mejora de la seguridad contra los ataques web.


SOA: Una arquitectura SOA está formada por tres partes: un proveedor, un intermediario y un cliente que no representa ningún acoplamiento entre ellos.
El proveedor ofrece un servicio determinado y que el cliente no tiene porque conocer directamente.
El cliente aprende como utilizar el servicio a partir de la información que ofrece el intermediario que normalmente simplifica el uso de dicho servicio.



CONCLUSIÓN 


Bueno lo que yo entendí en estos temas fue la importancia de saber todo sobre esto ya que es lo fundamental para mi aprendizaje y que si los diferentes tipos de servicios web me lleva a entender mas a fondo de como se lleva a cabo todos los procesos que se tienen que hacer  para poder realizar todos mis ejercicios en esta materia como por ejemplo yo no sabia que era un XML ya que con esta investigación me doy cuenta que no es mas que   bloques de código que están  expuestos a través de protocolos estándar, también los servicios Web SOAP ,WSDL ,REST donde entiendo que son fundamentales  para determinar qué funciones están disponibles en el servidor.