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 CORBAo SOAP 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
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.
·
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
¿Para ti qué es Middleware y en que eventos está basado principalmente, podrías mencionarlos?
ResponderEliminares 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
ResponderEliminary 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
¿ Que Características contiene Middleware y muéstrame un ejemplo de Middleware ?
ResponderEliminarMiddleware se caracterizan por implementar la
Eliminarinteracció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
ME PUEDES DAR UN EJEMPLO DE UNA APLICACION DESARROLLADA POR PHOENIX MIDDLEWARE BASADOS EN EVENTOS
ResponderEliminarcomo 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).
Eliminarel 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.
De donde puedo descargar un middleware
ResponderEliminarComo 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
EliminarAhora 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
Que desventajas tiene el Middleware
ResponderEliminarbueno las desventajas del Middleware seria estos siguientes puntos:
ResponderEliminar* 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.
que ventajas y deventajas tendria un middleware de alto nivel y de bajo nivel
ResponderEliminarcual es el autor de este documento?
ResponderEliminar