viernes, 12 de julio de 2013

MIDDLEWARE

Middleware

Middleware es un software que asiste a una aplicación para interactuar o comunicarse con otras aplicaciones, software, redes, hardware y/o sistemas operativos. Éste simplifica el trabajo de los programadores en la compleja tarea de generar las conexiones que son necesarias en los sistemas distribuidos. De esta forma se provee una solución que mejora la calidad de servicio, seguridad, envío de mensajes, directorio de servicio, etc.
Funciona como una capa de abstracción de software distribuida, que se sitúa entre las capas de aplicaciones y las capas inferiores (sistema operativo y red). El middleware abstrae de la complejidad y heterogeneidad de las redes de comunicaciones subyacentes, así como de los sistemas operativos y lenguajes de programación, proporcionando una API para la fácil programación y manejo de aplicaciones distribuidas.


Java Remote Method Invocation
RMI es un mecanismo ofrecido por Java para invocar un método de manera remota. Forma parte del entorno estándar de ejecución de Java y proporciona un mecanismo simple para la comunicación de servidores en aplicaciones distribuidas basadas exclusivamente en Java. Si se requiere comunicación entre otras tecnologías debe utilizarse CORBASOAP en lugar de RMI.
RMI se caracteriza por la facilidad de su uso en la programación por estar específicamente diseñado para Java; proporciona paso de objetos por referencia (no permitido por SOAP. A través de RMI, un programa Java puede exportar un objeto, con lo que dicho objeto estará accesible a través de la red y el programa permanece a la espera de peticiones en un puerto TCP. La invocación se compone de los siguientes pasos:
·         Encapsulado (marshalling) de los parámetros (utilizando la funcionalidad de serialización de Java).
·         Invocación del método (del cliente sobre el servidor). El invocador se queda esperando una respuesta.
·         Al terminar la ejecución, el servidor serializa el valor de retorno (si lo hay) y lo envía al cliente.
·         El código cliente recibe la respuesta y continúa como si la invocación hubiera sido local.

 

Primera capa

La primera capa es la de aplicación y se corresponde con la implementación real de las aplicaciones cliente y servidor. Aquí tienen lugar las llamadas a alto nivel para acceder y exportar objetos remotos
Segunda capa
La capa 2 es la capa proxy, o capa stub-skeleton. Esta capa es la que interactúa directamente con la capa de aplicación.

Tercera capa

La capa 3 es la de referencia remota, y es responsable del manejo de la parte semántica de las invocaciones remotas.

Cuarta Capa

La capa 4 es la de transporte. Es la responsable de realizar las conexiones necesarias y manejo del transporte de los datos de una máquina a otra.


CORBA
Common Object Request Broker Architecture (CORBA) es un estándar definido por Object Management Group (OMG) que permite que diversos componentes de software escritos en múltiples lenguajes de programación y que corren en diferentes computadoras u objetivo es ayudar a reducir la complejidad, disminuir los costes y acelerar la introducción de nuevas aplicaciones informáticas, promoviendo la teoría y la práctica de la tecnología de objetos en los sistemas distribuidos.
Es una tecnología que oculta la programación a bajo nivel de aplicaciones distribuidas. No obstante también brinda al programador una tecnología orientada objetos; las funciones y los datos se agrupan en objetos y estos objetos pueden estar en diferentes máquinas, pero el programador accederá a ellos a través de funciones normales dentro de su programa.CORBA es más que una especificación multiplataforma, también define servicios habitualmente necesarios como seguridad y transacciones.

Object Request Broker (ORB)

·         La localización de los objetos: El cliente no tiene porque saber donde se encuentra el objeto destino, puede estar en su propia máquina o en un proceso en una máquina remota.
·         La implementación de los objetos: El cliente ignora el lenguaje de programación con el que se ha escrito el objeto remoto, su implementación o el sistema operativo en el que se encuentra.
·         Estado de ejecución del objeto: Al enviar una petición sobre un objeto remoto, el ORB se encarga de inicializar el objeto en caso de ser necesario, antes de enviarle la petición.

 

Interface Definition Language (IDL)

El lenguaje de definición de interfaz o IDL (Interface Definition Language), es un lenguaje que se utiliza para definir las interfaces entre los componentes de una aplicación y es el elemento que soporta la interoperabilidad de la tecnología. El IDL sólo puede definir interfaces, no implementaciones. Al especificar las interfaces entre objetos en CORBA, IDL es el encargado de asegurar la independencia del lenguaje de programación utilizado.

Objetos por referencia

una búsqueda NameServer (similar a la del Sistema de Nombres de Dominio(DNS))

Datos por valor

El IDL proporciona el lenguaje de definición de intercomunicación entre objetos o sistemas operativos

Objects by value (OBV)

El código de los métodos de objetos Valuetype es ejecutado localmente por defecto. Si el OBV ha sido recibido por el lado remoto, el código necesario debe ser conocido a priori por ambas partes o descargado dinámicamente por el emisor.

CORBA Component Model (CCM)

proporciona la abstracción de entidades que pueden proveer y aceptar servicios a través de unas interfaces propias bien definidas llamadas ports (puertos).

General InterORB Protocol (GIOP)

·         Internet InterORB Protocol (IIOP): implementación de GIOP para su uso por internet, proporcionando una interfaz entre los mensajes GIOP y la capa TCP/IP.
·         SSL InterORB Protocol (SSLIOP): protocolo IIOP sobre SSL, proporcionando encriptación y autenticación.

 

Localizaciones de CORBA (CorbaLoc)

Las localizaciones de CORBA (CorbaLoc) hacen referencia a un objeto referenciado CORBA que tiene una estructura similar a la de una URL.Todos los productos CORBA deben soportar dos URLs definidas: CorbaLoc y CorbaName.
  

JAVA MESSAGE SERVICE
La API Java Message Service (en español servicio de mensajes Java), también conocida por sus siglas JMS, es la solución creada por Sun Microsystems para el uso de colas de mensajes. Este es un estándar de mensajería que permite a los componentes de aplicaciones basados en la plataforma Java2 crear, enviar, recibir y leer mensajes. También hace posible la comunicación confiable de manera síncrona y asíncrona.El servicio de mensajería instantánea también es conocido como Middleware Orientado a Mensajes (MOM por sus siglas en inglés) y es una herramienta universalmente reconocida para la construcción de aplicaciones empresariales.
Modelo Punto a Punto (point to point): Este modelo cuenta con solo dos clientes, uno que envía el mensaje y otro que lo recibe. Este modelo asegura la llegada del mensaje ya que si el receptor no esta disponible para aceptar el mensaje o atenderlo, de cualquier forma se le envía el mensaje y este se agrega en una cola del tipo FIFO para luego ser recibido según haya entrado.
Modelo Publicador/Suscriptor (Publish/subscribe): Este modelo cuenta con varios clientes, unos que publican temas o eventos, y los que ven estos temas, a diferencia del modelo punto a punto este modelo tiende a tener más de un consumidor.
SINCRONA
Invocación de métodos (Java RMI)
Quien invoca y quien es invocado deben estar presentes para que la comunicación se realice.
El emisor debe esperar respuesta del receptor, para realizar otra petición.
Ejemplo: llamada telefónica
ASINCRONA
No se necesita la presencia del emisor y el receptor para realizar la comunicación
El receptor responde en el momento que pueda
Se requiere de un Sistema de mensajería
(Message-oriented middleware - MOM)
Ejemplo: Buzón de voz, en este se almacenan los mensajes y el receptor puede recibir los mensajes y revisarlos en otro momento.
Estos son la base de los JMS, se componen de tres elementos.
1.Header: Es la cabecera del mensaje, le sirve a los clientes y a los proveedores para poder identificarlos.
2.Properties: Son propiedades en general para personalizar y/o hacer más específico un mensaje.

Clientes JMS
Son clientes todos aquellos que envíen mensajes, como aquellos que los reciban, en algunos textos a los que envían mensajes son llamados proveedores y los que reciben consumidores o clientes. Para enviar o recibir mensajes tienen que tener una serie de pasos:
1. Conseguir un destino, mediante el objeto Destination a través de JNDI.
2. Usar ConnectionFactory para conseguir un objeto Connection.
3. Usar Destination para crear un objeto Session.
                                                         

WEB SERVICE
Un servicio web (en inglés, Web Service o Web services) es una tecnología que utiliza un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. 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. La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la arquitectura y reglamentación de los servicios Web. Para mejorar la interoperabilidad entre distintas implementaciones de servicios Web se ha creado el organismo WS-I, encargado de desarrollar diversos perfiles para definir de manera más exhaustiva estos estándares. Es una máquina que atiende las peticiones de los clientes web y les envía los recursos solicitados.
Estándares
·         Web Services Protocol Stack: Así se denomina al conjunto de servicios y protocolos de los servicios Web.
·         XML : Es el formato estándar para los datos que se vayan a intercambiar.
·         SOAP o XML-RPC : Protocolos sobre los que se establece el intercambio.
·         Otros protocolos: los datos en XML también pueden enviarse de una aplicación a otra mediante protocolos normales como HTTP (Hypertext Transfer Protocol), FTP (File Transfer Protocol), oSMTP (Simple Mail Transfer Protocol).
·         WSDL : 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.
·         UDDI : Protocolo para publicar la información de los servicios Web. Permite comprobar qué servicios web están disponibles.
WS-Security : Protocolo de seguridad aceptado como estándar por OASIS (Organization for the Advancement of Structured Information Standards). Garantiza la autenticación de los actores y la confidencialidad de los mensajes enviados



Ventajas
·         Aportan interoperabilidad entre aplicaciones de software independientemente de sus propiedades o de las plataformas sobre las que se instalen.
·         Los servicios Web fomentan los estándares y protocolos basados en texto, que hacen más fácil acceder a su contenido y entender su funcionamiento.
·         Permiten que servicios y software de diferentes compañías ubicadas en diferentes lugares geográficos puedan ser combinados fácilmente para proveer servicios integrados.



MIDDLEWARE BASADO EN EVENTOS
Middleware es un software que asiste a una aplicación para interactuar o comunicarse con otras aplicaciones, software, redes, hardware y/o sistemas operativos. Éste simplifica el trabajo de los programadores en la compleja tarea de generar las conexiones que son necesarias en los sistemas distribuidos
Taxonomía del software middleware


PHOENIX  MIDDLEWARE  PARA  EL  DESARROLLO  DE  SISTEMAS  BASADOS  EN  EVENTOS
Phoenix es una plataforma middleware para el desarrollo de sistemas basados en eventos. se basa en el patrón de comunicaciones publish/suscribe y permite construir sistemas distribuidos con múltiples fuentes productoras de información y múltiples nodos consumidores de información.
                                     

Orientados a procedimiento o proceso
  Los middleware que son orientados a procesos, utilizan una comunicación sincronizada (como por ejemplo el teléfono)
                                                      Orientados a objeto
  Soportan pedidos de objetos distribuidos. La comunicación entre los objetos puede ser sincronizada, sincronizada diferida o no sincronizad
  a. orden la información y la transmite a través del agente (un ORB PROXY).
  El proxy remoto , desordena la información que le llega del agente y se la pasa al objeto servidor
Orientados a mensajes (MOM, Message-oriented middleware)
Se pueden dividir en dos tipos, espera y publicación/suscripción. El paso de espera se puede dividir  en mensaje y espera. El paso de mensaje inicia con que la aplicación envía un mensaje a uno o más clientes, con el MOM del cliente.
Orientados a componentes
Un componente es «programa que realiza una función específica, diseñada para operar e interactuar fácilmente con otros componentes y aplicaciones».Un componente es «programa que realiza una función específica, diseñada para operar e interactuar fácilmente con otros componentes y aplicaciones».

Categoría de aplicación
Middleware para acceso a información (DAM, Data Access middleware)
  Los middleware para acceso a información tienen la característica de poder interactuar con diversas fuentes de datos
Middleware de escritorio
  Los middleware de escritorio pueden hacer variaciones en la presentación de la información pedida por el usuario por aplicaciones de rastreo y asistencia, controlar cualquier servicio de transporte y proveer una copia de seguridad y otras operaciones de fondo
Middleware basados en la web
  Este tipo de middleware asiste al usuario con la navegación web, el uso de interfaces que le permiten encontrar páginas de su interés y detectar cambios de interés del usuario basado en su historial de búsquedas
                                                                Middleware a tiempo real
  La información en tiempo real es caracterizada por que la información correcta en un instante puede no serlo en otro. Los middleware en tiempo real soportan las peticiones sensibles al tiempo y políticas de planificación









12 comentarios:

  1. ¿Para ti qué es Middleware y en que eventos está basado principalmente, podrías mencionarlos?

    ResponderEliminar
  2. es un software que asiste a una aplicación para interactuar o comunicarse con otras aplicaciones, software, redes, hardware y/o sistemas operativos. Éste simplifica el trabajo de los programadores en la compleja tarea de generar las conexiones que son necesarias en los sistemas distribuidos. De esta forma se provee una solución que mejora la calidad de servicio, seguridad, envío de mensajes, directorio de servicio, etc

    y podemos decir que funciona como apa de abstracción de software distribuida, que se sitúa entre las capas de aplicaciones y las capas inferiores

    esta basado en los eventos siguientes:

    1. Orientados a procedimiento o procesos
    2. Orientados a objetos
    3. Orientados a mensajes (MOM, Message-oriented middleware)
    4. Orientados a componentes
    5. Middleware de escritorio
    6. Middleware basados en la web
    7. Middleware a tiempo real
    8. Middleware especialistas

    ResponderEliminar
  3. ¿ Que Características contiene Middleware y muéstrame un ejemplo de Middleware ?

    ResponderEliminar
    Respuestas
    1. Middleware se caracterizan por implementar la
      interacción entre las aplicaciones de diferentes
      formas:
      1. Interacción sincrónica:
      Cuando una aplicación es “invocada” por otra, se ejecuta
      inmediatamente.
      2. Interacción (sincrónica) bloque ante:
      Cuando una aplicación invoca a otra, la primera queda esperando
      la respuesta de la segunda.
      3.Asegurando consistencia en los datos:
      - Transaccional .
      - Consistencia en ambiente débilmente acoplado.
      - Mensajes persistentes.
      - Permite la convivencia de distintos servicios de un mismo sistema

      Ejemplo de Middleware:

      http://files.maira-1118.webnode.mx/200000058-
      ab0a4ac060/middleware.jpg

      http://www.isgtw.org/images/middleware_L.jpg

      http://1.bp.blogspot.com/-j4D6fcTT18A/Twiu4ClGFyI/AAAAAAAAARw/e4gG0eHu3-A/s1600/Imagen1.png

      Eliminar
  4. ME PUEDES DAR UN EJEMPLO DE UNA APLICACION DESARROLLADA POR PHOENIX MIDDLEWARE BASADOS EN EVENTOS

    ResponderEliminar
    Respuestas
    1. como por ejemplo, se presenta una aplicaciones desarrollada por Phoenix: un prototipo de sistema de tracking de visitantes en tiempo real. (real - time visitor tracking system).
      el prototipo permite:
      analizar la posición de los visitantes de una ciudad en tiempo real
      filtrar la información mostrada por el sistema en función de perfiles (origen,edad,genero).
      filtrar la información mostrada en función de la localización de los individuos.

      Eliminar
  5. De donde puedo descargar un middleware

    ResponderEliminar
    Respuestas
    1. Como una pequeña broma te recomiendo este link para amenizar la previa a los parciales: http://lmgtfy.com/?q=de+donde+se+pueden+descargar+middlewares

      Ahora si empezemos algunos middlewares son propietarios(necesitan licencias y te brindan muy pocas veces demos), pero buscando en la red me he topado con estos:
      - De Oracle: http://www.oracle.com/es/products/middleware/overview/index.html
      - De IBM: http://www-01.ibm.com/software/pe/demos/db2.shtml?lnk=mhsd

      Bueno y si lo quieres es aprender a implementar uno te recomiendo el siguiente link:
      http://www.ceautomatica.es/old/actividades/jornadas/XXIX/pdf/262.pdf

      Eliminar
  6. Que desventajas tiene el Middleware

    ResponderEliminar
  7. bueno las desventajas del Middleware seria estos siguientes puntos:
    * No siempre es aplicable.
    * Alto consumo de recursos (CPU y RAM).
    * Debe desarrollarse en forma específica.
    * Costo de desarrollo, implementación, etc.
    * No es solución válida para el largo plazo, es de corto plazo.
    * Complejidad logística (instalar en cada equipo).
    * Es de capacidad limitada.
    No entrega todas las soluciones.

    ResponderEliminar
  8. que ventajas y deventajas tendria un middleware de alto nivel y de bajo nivel

    ResponderEliminar
  9. cual es el autor de este documento?

    ResponderEliminar