domingo, 12 de junio de 2016

XML Schema

Es un lenguaje de esquema que especifica cómo describir formalmente los elementos en un documento de lenguaje de marcado extensible (XML) que es utilizado para describir la estructura y las restricciones de los contenidos de los documentos XML de una forma muy precisa consiguiendo así una percepción del tipo de documento con un nivel alto de abstracción. Fue desarrollado por el World Wide Web Consortium (W3C) y alcanzó el nivel de recomendación en mayo de 2001


XML Schema se usa en WSDL que es la especificación del WS-SOAP para poder definir la estructura de los datos y también es usado en WS-Security.En el caso de WSDL Based Validation es usado para evitar que lleguen peticiones  SOAP no validas y/o corruptas y limitar a los WSDL definidos notificando los sobre los mensaje SOAP que no se ajusten a la definición WSDL

Puede ser usado en un sistema que recibe datos para ser procesados y deban cumplir ciertas estructuras como un servicio de la RENIEC que necesita tener información bajo cierta estructura. Otro ejemplo podría ser el que actualmente se usa para las facturas electrónicas actuales en las cuales está definido una estructura con los datos que deben ser recibidos por parte de la SUNAT para poder cruzar información.


Bibliografia
https://en.wikipedia.org/wiki/XML_Schema_(W3C)
https://es.wikipedia.org/wiki/XML_Schema
https://www.w3.org/2005/05/25-schema/guthula.html

CORBA

Estándar definido por OMG (Grupo de Administración de Objetos). Es un middleware que permite a los componentes de software inter operar en un mismo ambiente sin importar el lenguaje de desarrollo, tipo de red o plataforma.

Características:

- Independencia en el lenguaje de programación y sistema operativo: CORBA fue diseñado para liberar a los ingenieros de las limitaciones en cuanto al diseño del software.
Posibilidad de interacción entre diferentes tecnologías: uno de los principales beneficios de la utilización de CORBA es la posibilidad de normalizar las interfaces entre las diversas tecnologías y poder así combinarlas.
Activación de objetos: los objetos remotos no tienen por qué estar en memoria permanentemente, y se hace de manera invisible para el cliente
Integración de software existente: se amortiza la inversión previa reutilizando el software con el que se trabaja, incluso con sistemas heredados.
Transparencia de localización: el cliente no necesita saber donde ejecuta el servicio y el servicio no necesita saber donde ejecuta el cliente.
Transparencia de distribución: ni cliente ni servidor necesitan saber si la aplicación está distribuida o centralizada, pues el sistema se ocupa de todo eso.

Elementos:


ORB: provee un mecanismo de interfaz y de comunicaciones transparente entre la referencia de un objeto y su implementación. Ofrece servicios de localización, establecimiento de la conexión y la transmisión de llamadas de métodos y valores de retorno.
- IIOP: Protocolo para la comunicación entre ORBs a través de TCP/IP.
- IDL: Se utiliza para definir la interfaz para un objeto Corba, independiente del lenguaje en el que se está desarrollando.
- Object Adapters: Proveen la implementación de tiempo de ejecución de la seguridad de la aplicación, generación e interpretación de referencias de objetos, entre otras.
- DII: Permite al cliente aprender en tiempo de ejecución las operaciones soportadas por el servidor y crear solicitudes, sin stub (pseudocódigo), que son enviadas directamente del ORB.
DSI: Permite al servidor implementar una interface no conocida en tiempo de ejecución.

Ventajas:

- Se adapta facilmente a los lenguajes de programación como  JAVA y C++.
- Los componentes de CORBA son objetos que pueden programados en distintos lenguajes y ejecutarse sobre cualquier sistema operativo.

Desventajas:

- La interoperabilidad entre varios lenguajes no es muy buena.
- usa coneiones TCP/IP y HTTP solo por el puerto 80. Lo que complica su uso en el caso este activo el firewall.








WCF y REST

Windows Communication Foundation (WCF) es un marco de trabajo para la creación de aplicaciones orientadas a servicios. Con WCF, es posible enviar datos como mensajes asincrónicos de un extremo de servicio a otro. Un extremo puede ser un cliente de un servicio que solicita datos de un extremo de servicio. Los mensajes pueden ser tan simples como un caracter o una palabra enviados como XML, o tan complejos como un flujo de datos binarios. 

Fundamentos de WCF

WCF es un motor de ejecución y un conjunto de APIs para la creación de sistemas que envíen mensajes entre servicios y clientes. Se utilizan la misma infraestructura y API tanto para crear aplicaciones que se comuniquen entre sí en el mismo sistema, como para aplicaciones en equipos separados en distintas compañías que se comuniquen a través de Internet.

Mensajería y extremos

WCF se basa en la noción de comunicación basada en mensajes

Protocolos de comunicaciones
Un elemento requerido de la pila de la comunicación es el protocolo de transporte. Los mensajes se pueden enviar a través de intranets e Internet utilizando transportes comunes, como HTTP y TCP

Patrones de mensajes
WCF admite varios patrones de mensajería, incluida la comunicación de solicitud-respuesta unidireccional y dúplex.Los transportes diferentes admiten patrones de mensajería diferentes y, por consiguiente, afectan a los tipos de interacciones que admiten. El tiempo de ejecución y las API de WCF también le ayudan a enviar mensajes de manera segura y fiable.

Ventajas

- WCF esta oriendato a servicios.
- Interoperable.
- Admite varios tipos de mensajes Admite Metadatos de servicios .
- Es seguro ya que permite cifrar los mensajes.
- Mensajes confiables y en cola.
- Extensible Compatible con AJAX y REST

Desventajas

- Es una tecnologia que pertenece a Microsoft y que mejora su rendimiento si se comunica con las tecnologías de la misma empresa.
- La seguridad a nivel de mensaje afecta la interoperabilidad y el redimiento.


REST

Utiliza es un estilo de arquitectura software únicamente XML y HTTP. Cada URL representa un objeto sobre el que puedes realizar POST, GET, PUT y DELETE .  
Rest es mas escalable que WCF. 
Mejor rendimiento que WCF.
Portabilidad de los componentes moviendo código de programa con la información

Fuentes
https://msdn.microsoft.com/es-es/vstudio/aa663324.aspx
https://msdn.microsoft.com/es-es/library/bb332338.aspx
https://msdn.microsoft.com/es-es/library/ms731082(v=vs.110).aspx
https://en.wikipedia.org/wiki/Representational_state_transfer