lunes, 11 de enero de 2016

5.1 CARACTERISTICAS DEL LENGUAJE

XML, es el estándar de Extensible Markup Language. XML no es más que un conjunto de reglas para definir etiquetas semánticas que nos organizan un documento en diferentes partes. XML es un metalenguaje que define la sintaxis utilizada para definir otros lenguajes de etiquetas estructurados.

PRINCIPALES CARACTERÍSTICAS


  •   Es una arquitectura más abierta y extensible. No se necesita versiones para que puedan funcionar en futuros navegadores. Los identificadores pueden crearse de manera simple y ser adaptados en el acto en internet/intranet por medio de un validador de documentos (parser).
  •   Mayor consistencia, homogeneidad y amplitud de los identificadores descriptivos del documento con XML (los RDF Resource Description Framework), en comparación a los atributos de la etiqueta del HTML.
  •   Integración de los datos de las fuentes más dispares. Se podrá hacer el intercambio de documentos entre las aplicaciones tanto en el propio PC como en una red local o extensa.
  •   Datos compuestos de múltiples aplicaciones. La extensibilidad y flexibilidad de este lenguaje nos permitirá agrupar una variedad amplia de aplicaciones, desde páginas web hasta bases de datos.
  •  Gestión y manipulación de los datos desde el propio cliente web.
  • Los motores de búsqueda devolverán respuestas más adecuadas y precisas, ya que la codificación del contenido web en XML consigue que la estructura de la información resulte más accesible.
  •  Se desarrollarán de manera extensible las búsquedas personalizables y subjetivas para robots y agentes inteligentes. También conllevará que los clientes web puedan ser más autónomos para desarrollar tareas que actualmente se ejecutan en el servidor.
  • Se permitirá un comportamiento más estable y actualizable de las aplicaciones web, incluyendo enlaces bidireccionales y almacenados de forma externa (El famoso epígrafe "404 file not found" desaparecerá).
  •  El concepto de "hipertexto" se desarrollará ampliamente (permitirá denominación independiente de la ubicación, enlaces bidireccionales, enlaces que pueden especificarse y gestionarse desde fuera del documento, hiperenlaces múltiples, enlaces agrupados, atributos para los enlaces, etc. Creado a través del Lenguaje de enlaces extensible (XLL).
  • Exportabilidad a otros formatos de publicación (papel, web, cd-rom, etc.). El documento maestro de la edición electrónica podría ser un documento XML que se integraría en el formato deseado de manera directa.

5.2 VISION GENERAL DE SERVICIOS WEB XML

Los servicios Web  XML son bloques de código ejecutable expuestos a través de protocolos estándar para su uso en la Web. El bloque de código que compone un servicio Web XML parece más a un programa de consola sin interfaz; se trata de una clase pública que define, principalmente, métodos. Estos son llamados métodos de servicio Web XML, mismos que podrán ser invocados por aquellos programas que consuman el servicio.
Los servicios Web XML permiten el manejo distribuido de componentes, estos permiten tomar ventaja de la infraestructura de Internet para la distribución de funcionalidad y paquetes de datos.
 Las principales características de los servicios Web XML son:

  •  Están basados en protocolos estándar para la Web. Los servicios Web XML realizan las peticiones y proporcionan las respuestas utilizando protocolos estándar de la Web, como los son HTTP (Hyper Text Transfer Protocol), XML (Extensible Markup Language), y SOAP (Simple Object Access Protocol), toda plataforma que maneje dichos protocolos, podrá aprovechar la funcionalidad de los servicios Web XML.
  • Comunicación de aplicación a aplicación basada en Internet. Al utilizar un servicio Web XML no se tienen una interfaz de usuario visible; realmente se trata de un componente que puede ser consumido de manera programática de aplicación a aplicación. Los servicios Web XML proporcionan una interfaz estándar para la recepción de peticiones y envío de respuesta, denominada contrato, dicho contrato pone a disposición de los usuarios la información requerida por el componente, describe los comportamientos del mismo, y relaciona los datos de entrada con la salida del componete.
  • Independencia del lenguaje. Los servicios Web  XML pueden ser consumidos desde programas escritos en cualquier lenguaje .NET, por lo cual no es necesario aprender un lenguaje determinado para poder tener acceso a su funcionalidad.
  • Independencia de la plataforma. Independientemente de la plataforma que dispongan los clientes de una aplicación, el contrato se encarga de hacer la petición en un formato estándar, y de recibir la respuesta correspondiente.
  • Arquitectura libre del manejo de estados (stateless architecture). Los servicios Web XML no manejan estados de objetos; cada respuesta brindada por un servicio Web XML es una nueva instancia de un objeto, con su estado particular. Lo que una petición realiza no impacta lo realizado por otras peticiones.
  • ü    Comunicación síncrona y asíncrona. El requerimiento de ejecución de un método de servicio Web XML, y el requerimiento de la respuesta, son independientes. La aplicación que consume el servicio Web XML, y el servicio Web XML mismo, pueden operar con mayor disponibilidad, ya que liberan recursos mientras se está en tiempo de espera.
  • Los principales usos que tienen los servicios Web XML son los siguientes:
  • Cuando se requiere compartir funcionalidad libre de interfaz de usuario. Los servicios Web son útiles en cuando se desea consumir la funcionalidad de un componente, sin la intermediación de una interfaz de usuario. Ejemplos de esto es el consumo de servicios  que proporcionan información, como tipos de cambio, estado del clima, precios de productos, disponibilidad de lugares en eventos, sin tener que responder a alguna interfaz de usuario.
  • Cuando se quiere comercializar un servicio de uso de software, y no un producto de software. En el futuro, no se venderá software, sino la funcionalidad que el software brinda estará disponible como servicio en la Web, si requerimos de un procesador de palabras, nos enlazaremos a un procesador de palabras en línea, y pagaremos  sólo por el tiempo que utilizamos dicho procesador.
  • Cuando el equipo cliente y servidor requieren compartir funcionalidad en Internet, pero difieren en su plataforma operativa.

5.3 TECNOLOGIAS SUBYACENTES


Las especificaciones que se han desarrollado para implementar los servicios Web se presentan como una pila de tecnologías donde las especificaciones superiores hacen uso de las inferiores, como se muestra.














5.3.1 SOAP (Simple Object Access Protocol).

SOAP define un protocolo que da soporte a la interacción (datos + funcionalidad) entre aplicaciones en entornos distribuidos y heterogéneos, es interoperable es decir neutral a plataforma y lenguajes de programación, independiente del hardware y protocolos. Funciona sobre la infraestructura existente en Internet. SOAP define cómo organizar información usando
XML de forma estructurada para intercambiarla entre distintos sistemas.
SOAP especifica lo siguiente:

  •        Un formato de mensaje para una comunicación unidireccional, describiendo cómo se empaqueta la información en documentos XML.
  •         Un conjunto de convenciones para usar mensajes SOAP para implementar el patrón de interacción RPC (Remote Procedure Call), definiendo cómo los clientes pueden invocar un Procedimiento Remoto enviando un mensaje SOAP y cómo los servicios pueden responder enviando otro mensaje al llamador.
  •     Un conjunto de reglas que una entidad que procesa mensajes SOAP debe seguir, definiendo en particular los elementos XML que una entidad debe leer y entender, así como las acciones que deben toma si no entienden el contenido, estas reglas son llamadas: Reglas de Codificación de los Datos.
  •        Una descripción de cómo se debe transportar un mensaje SOAP sobre HTTP y SMTP.

SOAP intercambia información mediante mensajes. Los mensajes se utilizan como envoltorios que la aplicación utiliza para guardar la información que quiere enviar.
Cada mensaje contiene dos partes:

  •      Una cabecera (opcional). Que contiene información del mensaje, por ejemplo la cabecera puede contener  la fecha en que el mensaje es enviado, o información de autenticación, cuando está presente la cabecera siempre debe estar en la parte de arriba.
  •        Un cuerpo (obligatorio). Contiene los datos del mensaje.

La cabecera y el cuerpo pueden tener múltiples subpartes en forma de bloques de la cabecera y bloques del cuerpo.

Cuando una aplicación cliente hace una solicitud a un método Web, un paquete SOAP es creado. Este paquete contiene el nombre del método Web que es invocado, y los parámetros que son pasados al método Web en un formato XML. Cuando el paquete SOAP llega al servidor Web en el cual reside el servicio Web, el método Web y sus parámetros son extraídos del paquete SOAP y el método es invocado.
Este son unos ejemplos de una solicitud SOAP.

  •      Solicitud a un servicio de clima:
<?xml version='1.0' encoding='UTF8'?>
<SOAPENV:Envelope
xmlns:SOAPENV="http://www.w3.org/2001/09/soapenvelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAPENV:Body>
<ns1:getWeather
xmlns:ns1="urn:examples:weatherservice"
SOAP-ENV:encodingStyle=
"http://www.w3.org/2001/09/soapencoding">
<zipcode xsi:type="xsd:string">10016</zipcode>
</ns1:getWeather>
</SOAPENV:Body>
</SOAPENV:Envelope>
ü  Respuesta de un servicio de clima:
<?xml version='1.0' encoding='UTF8'?>
<SOAPENV:Envelope
xmlns:SOAPENV="http://www.w3.org/2001/09/soapenvelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAPENV:Body>
<ns1:getWeatherResponse
xmlns:ns1="urn:examples:weatherservice"
SOAPENV:encodingStyle="http://www.w3.org/2001/09/soap-encoding">
<return xsi:type="xsd:int">65</return>
</ns1:getWeatherResponse>
</SOAPENV:Body>
</SOAPENV:Envelope>

5.3.2 WSDL (Web Services Description Language). El Lenguaje de Descripción.

Un WSDL es la especificación estándar de funcionamiento y datos de un servicio Web XML. WSDL se maneja a través  de un contrato, conocido también como Service Description, que es un documento XML que contiene información relacionada al servicio Web  XML y los paquetes de datos que el servicio Web  XML maneja, tanto de entrada como de salida.
De cierta forma WSDL específica los datos requeridos por el servicio, su comportamiento, y sus datos de retorno; actúa como un contrato de intercambio de paquetes de datos entre el consumidor de servicios Web XML y el servicio Web XML.
WSDL también contiene las referencias a las direcciones asociadas con el servicio Web XML, mismas que dependerán del protocolo utilizado para consumir el servicio.
El documento WSDL es un documento XML; el elemento raíz es llamado definitions, y contiene cinco nodos hijos que muestran la forma en que está definido el servicio Web XML. Dichos elementos hijo son los siguientes:
  •  Types. Define los tipos de datos utilizados para el intercambio de mensajes entre el consumidor y el servicio.
  • Message. Describe los mensajes que serán comunicados entre el consumidor y el servicio.
  •  portType. Identifica el conjunto de operaciones que realiza el servicio, y los mensajes involucrados en dichas operaciones.
  •  Binding. Específica los detalles de protocolo para el intercambio de mensajes entre las operaciones, describiendo cómo traducir contenido abstracto a un formato estándar.
  •   Service. Agrupa aquellos puertos que estén relacionados, y que implementan un Web service.
  • Para generar un WSDL, se utiliza la utilería wsdl.exe con la siguiente sintaxis:
  •   Wsdl /l:Lenguaje /n:NombreNamespace URL_Servicio


Donde Lenguaje es el lenguaje que se desea utilizar, NombreNamespace es el nombre del espacio de nombres a generarse en el WSDL, y URL_Servicio es el URL del servicio Web XML a partir del cual se generará WSDL.
La ejecución de wsdl.exe sobre el servicio Web XML producirá un programa generado en el lenguaje especificado, que deberá ser compilado como librería para su uso programático. Dicho programa contendrá la misma funcionalidad del servicio Web XML, con todas las especificaciones descriptivas.
Este es un ejemplo de un documento WSDL donde <message> específica el mensaje individual XML que son transformados entre computadoras, en este caso “getWeatherRequest” and “getWeatherResponse”, y  <service> específica que el servicio esta disponible vía SOAP.
<?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>

5.3.3 UDDI (Universal Description, Discovery, and Integration). El Repositorio de Servicios.

Uno de los puntos más importantes de un servicio es su publicidad, pensando en ello, se ha definido un mecanismo para darles publicidad a los servicios Web XML que las empresas desarrollan, denominado UDDI.
Cuando un proveedor de servicios Web quiere poner un servicio Web disponible para clientes de aplicación, el proveedor describe el servicio Web usando un documento WSDL. Entonces el proveedor registra el servicio Web en el directorio UDDI. El directorio UDDI  contiene apuntadores a el servicio Web y el documento WSDL de el servicio Web. De esta manera las aplicaciones Cliente pueden descubrir el servicio Web  usando el directorio UDDI.
La especificación UDDI tiene dos objetivos esenciales: (1) ser un soporte a los desarrolladores para encontrar información sobre servicios web y poder construir clientes, (2) facilitar el Enlace Dinámico de Servicios Web, permitiendo consultar referencias y acceder a servicios de interés.

La información en un registro UDDI se almacena en archivos XML con una estructura jerárquica,  Los elementos de esta estructura son:

  • BusinessEntity: es el elemento “top-level”, describe un negocio o una entidad que ha registrado un servicio en UDDI. Ejemplos: Departamento de Contabilidad, Servidor de Aplicaciones Corporativo. Este elemento soporta información estándar tal como nombre, descripción, e información de contacto, así como información de metadatos (por ejemplo: identificadores y categorías).
  •  BusinessService: describe un Servicio Web que ha sido expuesto por una entidad de negocio, soporta el nombrado de un Servicio Web y lo asocia con una entidad de negocio y con la información de binding. Soporta la asignación de categorías al Servicio Web (industria, productos, códigos geográficos, etc.).
  •  BindingTemplate: describe la información técnica necesaria para enlazar con un Servicio Web en particular. Este elemento soporta el nombrado de un Servicio Web y su asociación con una entidad de negocio e información de binding. La información de binding se describe como un punto de acceso que posee un atributo llamado UrlType utilizado para especificar los siete tipos de puntos de entrada: mailto, http, Https, Ftp, Fax, Phone, Other.
  •  tModel: (Technology Model). Estructura de Metadatos Genérica para representar cualquier concepto o construcción (definiciones de protocolos, ficheros WSDL, XML schemas, Espacios de Nombres, esquemas de categorías, etc.).