Actualizado el 21 de Marzo del 2018 (Publicado el 11 de Marzo del 2018)
1.034 visualizaciones desde el 11 de Marzo del 2018
5,6 MB
85 paginas
Creado hace 13a (10/02/2011)
Arquitectura de Software
Juan Bernardo Quintero
Middleware
Término usado para referirse a los componentes de software que
actúan como intermediarios entre otros componentes de software,
generalmente, en el marco de la interacción cliente/servidor.
Ejemplos típicos son los programas desarrollados para ejecutar las
consultas que diferentes usuarios de la red hacen a una base de
datos central que está ubicada en el servidor.
Middleware
Cliente/Servidor a dos capas
Cliente (Front-end)
Proceso Cliente
Servicios del Sistema
Hardware
Petición
Respuesta
Usuario
Proceso Servidor
Servicios del Sistema
Hardware
Servidor (Back-end)
Middleware
Cliente/Servidor a 3 o N capas
Cliente (Front-end)
Proceso Cliente
Servicios del Sistema
Hardware
Petición
Middleware
Usuario
Respuesta
Proceso Servidor
Servicios del Sistema
Hardware
Servidor (Back-end)
Middleware
Clasificación de servidores:
A distintos sistemas con diferentes arquitecturas les ha
denominado Cliente/Servidor. Sin embargo se clasifican
basándose en su funcionalidad:
Servidores de Ficheros
Servidores de Bases de Datos
Servidores de Transacciones
Servidores de Objetos
Servidores de Web
...
Extraído de: R. Orfali, D.Harkey, J. Edwards. Cliente/Servidor y objetos: Guía de Supervivencia 3ra Edición
McGraw-Hill Interamericana México, D.F. 2002.
Clasificación de Middleware
Propuesta de Clasificación de Middleware
Se distinguen 2 niveles:
Middleware de Bajo Nivel (Servicios Tecnológico)
Se encargan del
cliente.
transito de servicios básicos hacia el
Middleware de Alto Nivel (Servicios de Aplicación)
Se encargan del manejo de servicios de infraestructura y de
aplicación.
Clasificación de Middleware
Clasificación de Middleware
Middleware de Bajo Nivel
Middleware de Base
Middleware de Comunicación
Middleware de Base de Datos
Middleware de Aplicación
Clasificación de Middleware
Middleware de Bajo Nivel
Middleware de base:
Estándares y servicios asociados, que sirven de soporte
para la construcción del resto del middleware.
CORBA
COM/COM+/DCOM
EJB/J2EE
.NET
…
Clasificación de Middleware
Middleware de Bajo Nivel
Middleware de comunicaciones:
Proporciona el medio de comunicación para que las
aplicaciones puedan conversar entre sí.
HTTP
RMI-IIOP
SOAP
RPC
…
Clasificación de Middleware
Middleware de Bajo Nivel
Middleware de base de datos:
Enmascara las complejidades de acceso a la base de datos,
escondiendo los detalles de implementación de cada uno.
ODBC
JDBC
OCI
…
Clasificación de Middleware
Middleware de Bajo Nivel
Middleware de aplicación:
Permite el arranque, extensión, e integración de otras
aplicaciones.
CGI
Servlets/JSP
PHP
ASP
ISAPI/NSAPI
…
Clasificación de Middleware
Middleware de Alto Nivel
Servidor Web
Servidor de Componentes
Servidor de Transacciones
Servidor de Aplicaciones
Clasificación de Middleware
Middleware de Alto Nivel
Servidores Web:
Servicios de publicación de contenidos
Apache
Netscape Server
IIS
OmmiHTTPD
Sun Server
Sambar Server
Xitami
iPlanet Server
…
Clasificación de Middleware
Middleware de Alto Nivel
Servidores de transacciones:
Garantiza transacciones ACID (Atomicidad, Consistencia,
Aislamiento y Durabilidad) en el procesamiento distribuido.
BEA’s Tuxedo
IBM – CICS
Transarc’s Encima
MTS
…
Clasificación de Middleware
Middleware de Alto Nivel
Servidores de componentes:
Contenedores de objetos que prestas servicios a través de
una interface definida.
Tomcat
Microsoft
Servidor de
componentes COM
.NET Remoting
…
Clasificación de Middleware
Middleware de Alto Nivel
Servidores de aplicaciones:
Servicios de infraestructura y aplicación. Responden a una
arquitectura lógica definida, por lo general J2EE.
OAS (IAS)
Websphere
Jboss
BEA-Weblogic
Jonas
Iplanet…
¿Cuáles son los servicios de infraestructura?
Los servicios de infraestructura típicos incluyen:
Messaging (Mensajería y Notificaciones).
Pooling.
Caching.
Clustering.
Naming.
Logging.
etc.
Servicios de un servidor de aplicaciones
Servicios que debe permiten:
Gestión de transacciones.
Modelo de interoperabilidad para componentes.
Intercambio de datos.
Colas de mensajes.
Servidor HTTP para clientes Web y clientes móviles.
Almacenamiento temporal de base de datos y web.
Herramientas de administración.
¿Qué es un servidor de aplicaciones?
Conjunto de programas y tecnologías que permiten:
Creación de páginas Web dinámicas
(ASP en Microsoft o JSP en Java)
Componentes que pueden encapsular la lógica del negocio
(COM en Microsoft o EJB en Java)
Soporte de transacciones
Acceso a la aplicación desde clientes HTTP
Soporte para invocar métodos remotos
Manejo de seguridad
Uso de SSL y conexión con Bases de Datos
(ODBC en Microsoft o JDBC en Java)
¿Qué es un servidor de aplicaciones?
Todos estos servicios simplificarían el desarrollo de software
que, en configuraciones distribuidas, se sitúa en la capa
intermedia, entre los clientes o usuarios finales y el servidor
de datos. Es lo que se conoce corrientemente como
Middleware.
Características
La mayoría de servidores de aplicaciones te permiten hacer
algunas de las siguientes tareas.
Presentar Contenido Dinámico
Administrar Tu Sitio Web
Construir un Sistema de Manejo de Contenidos
Seguridad y Manejo Correcto
Brindar Servicios de Red
Integración de diversos sistemas
Proveen Escalabilidad
Matriz de Servidores de Aplicación
http://www.theserverside.com/matrix
Perspectivas de la Arquitectura de Referencia
A continuación se analizan las más representativas de esas
perspectivas:
Aplicación Web (Web Application)
Aplicaciones con Clientes Ricos (Rich Client Application)
Aplicaciones Enriquecidas en Internet (Rich Internet Application)
Aplicaciones de Servicios (Service Application)
Aplicaciones Móviles (Mobile Application)
Web Application
Definición:
Su núcleo reside en lógica del lado del servidor, que se suele estructurar en varias
capas; por ejemplo la arquitectura a tres capas: presentación, negocio y datos.
Generalmente accede una base de datos remota y consume servicios expuestos
por otras aplicaciones.
Beneficios:
• Amplio alcance UI basada en estándares para múltiples plataformas.
• Facilidad de despliegue y gestión de cambios.
Consideraciones:
• Dependencia de conectividad continua en la red.
• Dificultad para proveer una UI enriquecida.
Basado en: http://msdn.microsoft.com/en-us/library/ee658104.aspx
Web Application
Extraído de: http://msdn.microsoft.com/en-us/library/ee658104.aspx
Rich Client Application
Definición:
Puede proporcionar una experiencia de usuario altamente sensible, interactiva, y
rica para las aplicaciones que deben funcionar en escenarios stand-alone,
conectados, a veces conectado y desconectado. Una aplicación de cliente
enriquecido normalmente se estructurará como una aplicación de varias capas:
experiencia del usuario (la presentación), negocios y de datos.
Beneficios:
• Potencian los recursos de los clientes.
• Provee mejor tiempo de respuesta y experiencia de usuario mejorada.
• Altamente dinámica.
Consideraciones:
• Complejidad de despliegue.
• Desarrollos especifico de para la plataforma.
• El control de versiones puede ser complejo.
Basado en: http://msdn.microsoft.com/en-us/library/ee658104.aspx
Rich Client Application
Extraído de: http://msdn.microsoft.com/en-us/library/ee658104.aspx
Rich Internet Application
Definición:
Las aplicaciones de este tipo se pueden desarrollar para múltiples plataformas y
múltiples navegadores, multimedia o mostrar contenido gráfico. Las aplicaciones
dinámicas de Internet se ejecutan en un navegador lo que restringe el acceso a
algunas de las características del cliente.
Beneficios:
• Proveen las mismas características en la IU que los clientes enriquecidos.
• Soporte para la visualización de contenidos enriquecidos, streaming y gráfica.
• Actualización y control de versiones simple.
• Soporte multi-plataforma y multi-navegador.
Consideraciones:
• Tiempo de carga mas lago comparado con las aplicaciones web.
• Mayor uso de recursos del cliente comparado con las aplicaciones web.
• Requiere compatibilidad de los motores de script en los clientes.
Basado en: http://msdn.microsoft.com/en-us/library/ee658104.aspx
Rich Internet Application
Extraído de: http://msdn.microsoft.com/en-us/library/ee658104.aspx
Service Application
Definición:
Expone en servicios compartidos, las funcionalidades del negocio y permiten a los
clientes acceder a ellas desde un sistema local o remoto. Las operaciones de
servicio se invocan usando mensajes, basados en esquemas XML, pasa sobre un
canal de transporte. El objetivo de este tipo de aplicación es lograr acoplamiento
flexible entre el cliente y el servidor.
Beneficios:
• Provee bajo acoplamiento.
• Independencia de los consumidores.
• Soporta interoperabilidad.
Consideraciones:
• No hay soporte de UI.
• Los clientes dependen de la conectividad de la red.
Basado en: http://msdn.microsoft.com/en-us/library/ee658104.aspx
Service Application
Extraído de: http://msdn.microsoft.com/en-us/library/ee658104.aspx
Mobile Application
Definición:
Pueden ser desarrolladas como cliente ligero o aplicaciones de cliente
enriquecido. Las aplicaciones de cliente móvil enriquecido pueden apoyar
escenarios desconectados o que se conectan ocasionalmente. Las aplicaciones de
cliente ligero o web soportan solo escenarios conectados. Los recursos de los
dispositivos puede llegar a ser una restricción al diseñar aplicaciones móviles.
Beneficios:
• Soporta dispositivos portátiles (hand-held).
• Provee disponibilidad y facilidad de uso para usuarios por fuera de la oficina.
• Soporta escenarios desconectados y semiconectados.
Consideraciones:
• Limitantes de entrada y navegación.
• Área de Pantalla
Comentarios de: Arquitectura de Software - Desarrollo de una Arquitectura (1)