Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 1 – Introducción
DITEC
Facultad de Informática
I Heterogeneidad
I Redes
I Hardware
I Sistemas Operativos
I Middleware
I Extensibilidad
I Seguridad
I Escalabilidad
I Tratamiento de Fallos
I Concurrencia
I Transparencia
I Herramientas:
I Protocolos de comunicación
I APIs estándar (Middleware)
I Sistemas Abiertos (i.e. CORBA, Internet, Globus etc.)
I Especificaciones públicas
I Mecanismos de comunicación estandarizados
I Utilizando hardware y software COTS
I No escalables
I ¿Cómo añadir más recursos?
Servidor
HTTP
Páginas
SGBD
HTML
HTTP Internet HTTP
Browser
TCP/IP
Prog. Servidor
CGI SMTP
I Sockets
I API de bajo nivel
I ¿Gestión de errores?
I No hay tipos... ¿comprobación?
I Protocolo CGI ad-hoc
I Stateless (salvo con otros hacks como los cookies)
I No soporte del servidor
I etc.
Cliente Servidor
Presentación Servidores BD
Lógica del negocio Sistemas Legacy
Acceso a datos etc.
Nivel 1 Nivel 2
Servidor
Cliente Lógica del negocio Servidores BD
Presentación Acceso a datos Sistemas Legacy
etc.
I Síncrono/asíncrono
I Normalmente Suscripción/Respuesta
I Documentos XML ⇒ Mensajes
I Loose Coupling
I Modelo contenedor
I Entidades redistribuibles binarias
I Unidades independientes de construcción de programas
I Unidades binarias de desarrollo, prueba y ensamblado
I Soporte run-time que permite instalar componentes
I Ofrece todos los servicios a los componentes instalados
I Aspect-Oriented Programming (AOP)
I Generación automática de código para cada aspecto
Patrones
I Solución dada reiteradamente a un problema común
I «Best practices»
I Suben el nivel de abstracción, tratan problemas en abstracto
I En programación distribuida ⇒ poca experiencia
I Los utilizaremos para aprender sobre cómo construir mejores
aplicaciones distribuidas
I Elementos:
I Nombre, Contexto, Problema, Cuestiones relevantes, Solución
I Lenguaje de Patrones: Conjunto de patrones relacionados que
sirven para un fin común (POSA2)
Idioms
I Patrones, pero de más bajo nivel
I Asociados a un lenguaje, normalmente C++
I No por ello menos importantes
I Importantísimos por ejemplo en el mapping de C++ a CORBA
I Ejemplo: «Scoped Locking»
I C++ Idioms: James O. Coplien
http://www1.bell-
labs.com/user/cope/Patterns/C %2b %2bIdioms/EuroPLoP98.html
int función(...)
{
pthread_mutex_lock(&mutex);
if (condición)
{
// lo que sea
pthread_mutex_unlock(&mutex);
return 1;
}
pthread_mutex_unlock(&mutex);
return 0;
}
Diego Sevilla Ruiz DITEC Facultad de Informática
Sistemas Distribuidos
Introducción a los Patrones y Herramientas (iv)
~SyncLock()
{
pthread_mutex_unlock( mutex_ );
}
private:
pthread_mutex_t* mutex_;
}
if (condición)
{
// lo que sea
return 1;
}
return 0;
}
SyncLock