jueves, 30 de octubre de 2014

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. Dependiendo del problema a resolver y de las funciones necesarias, serán útiles diferentes tipos de servicios de middleware. Por lo general el middleware del lado cliente está implementado por el Sistema Operativo, el cual posee las bibliotecas que ejecutan todas las funcionalidades para la comunicación a través de la red.

El middleware es un módulo intermedio que actúa como conductor entre sistemas, permitiendo a cualquier usuario de un sistema de información comunicarse con varias fuentes de datos que se encuentren asociadas en una red.

El middleware abstrae la complejidad y heterogeneidad de las redes de comunicaciones subyacentes, así como de los sistemas operativos y lenguajes de programación, proporcionando una API (interfaz de programación de aplicaciones). Para la fácil programación y manejo de aplicaciones distribuidas. Dependiendo del problema a resolver y de las funciones necesarias, serán útiles diferentes tipo de servicios de middleware. Por lo general el middleware del lado cliente está implementado por el Sistema Operativo subyacente, el cual posee las bibliotecas que implementan todas las funcionalidades para la comunicación a través de la red.


Desde un punto de vista amplio una solución basada en productos middleware permite conectar entre sí una variedad de productos procedentes de diferentes proveedores. De esta forma se puede separar la estrategia de sistemas de información y de soluciones propietarias de un sólo proveedor.

El Middleware es fundamental para:
Migrar las aplicaciones monolíticas basadas en mainframes a aplicaciones Cliente/Servidor.
Soportar la comunicación entre procesos a través de plataformas heterogéneas.

Funciones Middleware

Las aplicaciones middleware realizan las siguientes funciones:
Ocultar la distribución: middleware maneja el hecho de que una aplicación esté compuesta de muchas partes interconectadas ejecutándose en ubicaciones distribuidas.

Ocultar la heterogeneidad: middleware oculta o hace transparente al usuario diversas plataformas de sistemas operativos, protocolos de comunicación y dispositivos hardware.

Proveer interfaces uniformes y estándares de alto nivel: tanto a los desarrolladores como a los integradores de aplicaciones, de tal manera que las aplicaciones sean fácilmente desarrolladas, reusadas, transportadas y puedan interoperar correctamente.


Suministrar un conjunto de servicios comunes: para realizar varias actividades de propósito general con el fín de evitar duplicar esfuerzos y facilitar la colaboración entre aplicaciones.

La taxonomía o clasificación del software middleware puede ser descrita en dos grandes categorías: una de integración y otra de aplicación. Éstas poseen a su vez diferentes clases.

Conectividad entre diferentes sistemas utilizando Middleware.
El software permite enlace de comunicación entre los dispositivos que producen una buena funcionalidad.

El middleware se divide en las siguientes categorías:

Monitores de proceso de transacciones distribuidos (DTPM's Distributed Transaction Processing Monitors) . Herederos de la tecnología mainframe, son ampliamente demandados para intercomunicar diferentes sistemas en distintos entornos.

Llamadas a procedimientos remotos (RPC's Remote procedure Call) Diseñado como servicios para eventos de tiempo fijo que permiten la gestión remota de las redes.

Middleware orientado a mensajes (MOM Messaging Oriented Middleware) Diseñado para servicios de mensajes con tecnología asíncrona.

(ORB Objects Request Broker) Middleware para tecnologías orientadas a objetos. Objetos piden servicios de objetos que se encuentran en la red. El estándar más conocido de esta tecnología es CORBA Common Object Request Broker Arquitecture.

Middleware de acceso a Bases de Datos (Data Base Access Middleware). Para acceso estándar a bases de datos. Permite desarrollar sistemas independizándolo de la base de datos que lo soporte. En la actualidad representa el 50% del mercado del middleware.


Paquetes de Software

Es un grupo de uno o más archivos que son necesarios tanto para la ejecución de un programa de computadora, o como para agregar características a un programa ya instalado en la computadora o en una red de computadoras. Los paquetes de software, pueden estar en un formato estandarizado, que le permite ser instalado por un programa que está integrado en el sistema operativo, o puede ser un instalador autosuficiente (no necesita otros programas), generalmente conocido como "instalador". Esto último suele ser típicamente utilizado en la distribución de software comercial, propietario y de código cerrado, especialmente en Microsoft Windows, y menos a menudo en Mac OS X. En cambio, es más usual en sistemas operativos libres basados en Unix el uso de formatos estandarizados que son extensiones de formatos de archivador de ficheros.
El término paquete de software también es utilizado en la programación orientada a objetos, para nombrar a un grupo de clases relacionadas de un programa. En este significado, los paquetes son especialmente útiles para medir y controlar el acoplamiento inherente de un programa. En un programa modular, incluso fuera del paradigma orientado a objetos, el término "paquete de software", puede hacer referencia a cualquier componente que puede ser integrado en el programa principal (a través de interfaces bien definidas), generalmente por el usuario final. En otros contextos, la integración podría ocurrir también a nivel código fuente, pero se requeriría del conocimiento de un lenguaje de programación determinado.
Función
Los sistemas de gestión de paquetes tienen la tarea de organizar todos los paquetes instalados en el sistema y se encargan de mantener su usabilidad. Esto se consigue combinando las siguientes técnicas:

  • Comprobación de la suma de verificación para evitar que haya diferencias entre la versión local de un paquete y la versión oficial
  • Comprobación de la firma digital
  • Instalación, actualización y eliminación simple de paquetes
  • Resolución de dependencias para garantizar que el software funcione correctamente
  • Búsqueda de actualizaciones para proveer la última versión de un paquete, ya que normalmente solucionan bugs y proporcionan actualizaciones de seguridad.
  • Agrupamiento de paquetes según su función para evitar la confusión al instalarlos o mantenerlos
Muchos de los sistemas de gestión de paquetes ampliamente utilizados utilizan backends simples para instalar los paquetes. Por ejemplo, YUM utiliza RPM como backend y APT utiliza dpkg.

¿Qué contiene un Paquete de software?
Un paquete contiene:

  • Datos: conjunto de archivos que serán instalados y/o manipulados. Son los archivos del programa, bibliotecas, etc.
  • Cabecera: instrucciones para el proceso de instalación y configuración además de información como: datos técnicos del mismo paquete, dependencias, incompatibilidades, descripción, datos del responsable del paquete; y archivos con instrucciones para comprobar dependencias, preparación del sistema, etc.
Por ejemplo, podemos examinar el contenido de un paquete RPM:





¿Qué es un Repositorio de paquetes?
Son directorios en servidores especiales los cuales únicamente mantienen paquetes e información de estos, en una estructura similar a una base de datos. Podemos utilizar estos repositorios para actualizar los programas instalados en nuestro sistema, o para instalar programas que no se encuentren en nuestra distribución.
Tipos de paquetes
Podemos diferenciar los siguientes tipos de paquetes:

  • Paquetes de Fuentes (comprimidos pero no empaquetados): se reconocen por la extensión: .tgz, .tar.gz, .tar.bz2
  • Paquetes binarios (software precompilado): se reconocen por la extensión: .deb, .rpm, .mdk, etc.
  • Paquetes de fuentes empaquetadas: Tipicamente .ebuild

La instalación de paquetes depende de la distribución Linux sobre la que se vayan a instalar. Esta regla no es estricta, siendo posible instalar un determinado tipo de paquetes de una distribución en otra distribución.

  • dpkg, usado originalmente por Debian y ahora también por otros sistemas, usa el formato .deb y fue el primero en poseer una herramienta de resolución de dependencias ampliamente conocida, APT.
  • El sistema RPM, creado por Red Hat y usado por un gran número de distribuciones de Linux, es el formato de paquetes del Linux Standard Base. Para trabajar con este sistema de paquetes existen muy diversas herramientas como apt4rpm, up2date (de Red Hat), urpmi (de Mandriva), YaST (de SuSE) y YUM (usado por Fedora y Yellow Dog Linux).
  • El sistema tgz, usado por Slackware, empaqueta el software usando tar y gzip. Pero, además, hay algunas herramientas de más nivel para tratar con este formato: slapt-get, slackpkg and swaret.
  • Pacman, para Arch Linux usa binarios precompilados distribuidos en un fichero tgz.