Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Arquitectura Cliente Servidor PDF
Arquitectura Cliente Servidor PDF
Programación Avanzada
Arquitectura C/S
Infraestructura Informática
Dentro de las Organizaciones, se ha dividido
históricamente en dos tipos de arquitecturas, en
extremos opuestos:
Arquitectura centralizada
en la que existen un servidor central, en el que residen todos los
datos y tratamientos de los mismos.
Arquitectura distribuida
en la que la inteligencia está distribuida en diferentes máquinas y
los datos pueden estar centralizados en diferentes servidores.
1
Programación Avanzada
Arquitectura Centralizada
Nace en torno a una concepción tradicional de la
Organización, con estructura centralizada y jerárquica,
dividida en departamentos
La Computadora Central es la única de la Organización.
Ella contiene todos los datos y es la responsable de la
consolidación de la información. Gran base de datos.
Desde la computadora central se controla el acceso a
múltiples terminales conectadas a través de productos
integrados en la arquitectura de red del proveedor.
Las terminales funcionan como "esclavos" de la
computadora central.
Cada usuario tiene una identificación asignada, y unos
derechos y prioridades de ejecución en la máquina de
sus programas o peticiones.
Ing. César Omar Aranda - Lic. Enrique Ruiz 3
Mainframes
2
Programación Avanzada
Ventajas
Alto rendimiento transaccional.
Inconvenientes
Alto precio del ordenador, al requerirse mucha potencia
de tratamiento para dar servicio a todos los usuarios que
estén conectados y gran espacio en disco para albergar
todos los datos del organismo.
Arquitecturas propietarias.
3
Programación Avanzada
Arquitectura Distribuida
Surge con los nuevos modelos organizativos, en los que
la empresa se divide en unidades más o menos
autónomas que establecen relaciones más definidas y
directas entre sí.
Aparecen ambientes informáticos por departamento
adecuados a las necesidades de cada uno en concreto.
Cada usuario trabaja con su terminal local “inteligente”,
con lo que obtiene mejores tiempo de respuesta.
Los recursos necesarios que no estén disponibles sobre
el terminal local (computadora personal o estación de
trabajo) pueden tomarse de la computadora central a
través de la red de telecomunicaciones.
Ing. César Omar Aranda - Lic. Enrique Ruiz 7
Ventajas
Funcionamiento autónomo de los sistemas locales, lo
que origina un buen tiempo de respuesta.
4
Programación Avanzada
Inconvenientes
Requiere un intenso flujo de información (muchas veces
no útiles, como pantallas y datos incorrectos) dentro de
la red, lo que puede elevar los costes de comunicación.
5
Programación Avanzada
Evolución
6
Programación Avanzada
Arquitectura C/S
??
7
Programación Avanzada
8
Programación Avanzada
Ventajas
El servidor presenta a todos sus clientes una interfaz
única y bien definida.
El cliente no necesita conocer la lógica del servidor, sólo
su interfaz externa.
El cliente no depende de la ubicación física del servidor,
ni del tipo de equipo físico en el que se encuentra, ni de
su sistema operativo.
Cada plataforma puede ser escalable
independientemente.
El Cliente y el Servidor pueden actuar como una sola
entidad o como entidades separadas, realizando
actividades o tareas independientes.
¿Qué ocurre
cuando se tienen
Objetos
Distribuidos?
9
Programación Avanzada
Cliente Obeso
También llamado cliente pesado (fat, thick or rich)
Se refiere a una aplicación gráfica de cliente que se
ejecuta en el sistema operativo del usuario,
generalmente con una interfaz gráfica sofisticada.
Suele aparecer como una mezcla de lógica de
presentación con lógica de la aplicación y, en muchos
casos, gestión de datos.
Generalmente instalada en la estación de trabajo y
sobre el sistema operativo del usuario.
Ventajas: trabajo offline (según diseño), mayor potencia,
mejor velocidad de respuesta, mejor rendimiento
multimedio
Desventajas: exige un esfuerzo de desarrollo adicional y
tener que reinstalar en cada nueva versión
Cliente Delgado
También llamado cliente liviano (thin, light)
Se refiere a una aplicación accedida mediante una
interfaz Web (en HTML) sobre un navegador Web donde
toda la lógica de negocio se hace del lado del servidor.
El navegador, a veces, se denomina cliente universal.
El origen del término se debe a las prestaciones del
lenguaje usado. Con interfaces de relativamente poca
interactividad. Mejorado mediante lenguaje javascript.
El procesamiento fundamental ocurre del lado servidor.
El producto obtenido es muy flexible al momento de
realizar actualizaciones.
Algunas desventajas: la aplicación debe observar las
diferencias entre navegadores a la hora de interpretar el
código HTML generado. La ergonomía es limitada.
10
Programación Avanzada
Cliente Enriquecido
Término medio entre cliente liviano y cliente pesado.
Objetivo básico: proporcionar una interfaz gráfica
basada en un estándar, que brinde funcionalidades
similares a las del cliente pesado (arrastrar y soltar,
pestañas, ventanas múltiples, menús desplegables).
Objetivo ampliado: hace uso de procesamiento del lado
servidor. Recibe e interpreta los datos enviados en un
formato de intercambio estándar.
Estándares que definen una aplicación rica:
XAML (Lenguaje Extensible de Marcado para Aplicaciones):
estándar XML de Microsoft, Utilizado en aplicaciones de
framework .NET
XUL: estándar XML de Mozilla. Usado en el cliente Thunderbird
o en el navegador Firefox.
Flex: estándar XML de Macromedia.
Ing. César Omar Aranda - Lic. Enrique Ruiz 21
Cliente Ultra-Delgado
También llamado Cliente zero
No ejecuta un sistema operativo completo
Un kernel inicializa el sistema, inicializa la red, realiza las
comunicaciones mediante protocolos de red y gestiona las
presentaciones enviadas desde el servidor.
11
Programación Avanzada
Tecnologías Disponibles
…… 23
Ing. César Omar Aranda - Lic. Enrique Ruiz
Tendencia
Moverse desde:
las arquitecturas mixtas (centralizada/distribuida)
existentes
Hacia:
Arquitecturas distribuidas e integradas
12
Programación Avanzada
Red de interconexión
SO Pila de transporte
DSM
NetBIOS TCP/IP SNA
SO
Cliente
Middleware
DSM=Distributed System Management
Servidor
Ing. César Omar Aranda - Lic. Enrique Ruiz 26
13
Programación Avanzada
14
Programación Avanzada
15
Programación Avanzada
16
Programación Avanzada
17
Programación Avanzada
18
Programación Avanzada
Modelo base:
3 Niveles (tiers)
n capas (layers)
Basado en Objetos
Clientes: Aplicaciones propias
Lógica de Negocio y de Datos: Objetos distribuidos
Basado en la WEB
Clientes: Navegadores (browsers)
Lógica de Negocio y de Datos: Generación dinámica de
contenidos en lenguaje HTML, XML, xHTML.
19
Programación Avanzada
Plataformas Desarrollo
Requerimientos:
Heterogénea: Admitir múltiples plataformas, sistemas operativos y
lenguajes de desarrollo.
Fiable: Dar la confianza de que cumplir su cometido.
Segura: Controlar el acceso, la autorización y el transporte.
Robusta: Debe ser tolerante a fallos.
Escalable: Facilitar la ampliación y modificación.
Alta disponibilidad: Debe ser fácil su adquisición, formación y
actualización.
Fácil mantenimiento: Debe ser fácil mantener el sistema mediante
la actualización de sus componentes.
Alternativas:
CORBA (Common Object Request Broker Architecture )
.NET (dot NET)
Java Platform Enterprise Edition (Java EE)
Ing. César Omar Aranda - Lic. Enrique Ruiz 39
CORBA
20
Programación Avanzada
.NET
J2EE o JEE
21
Programación Avanzada
¿ Qué es Java EE ?
Java Platform, Enterprise Edition (antes J2EE, ahora Java
EE) es un estándar para el desarrollo de aplicaciones
empresariales (portables, robustas, escalables y seguras)
usando tecnologÌa Java.
Java EE es una especificación, no un producto.
Los productos que cumplen con la especificación son
realizados por terceras empresas u organizaciones.
Plataformas Java
22
Programación Avanzada
Plataforma J2SE
Tecnologías/Estándares Java
Aplicaciones de escritorio
Applet
Servlets
Midlets
JSP (Java Server Pages)
JDBC (Java DataBase Connectivity), JDO (Java Data Object)
JPA (Java Persistence API)
JTA (Java Transaction API)
JMS (Java Message Service)
JSF (Java Server Faces)
JNDI (Java Naming and Directory Interface)
Web Services (XML, UDDI, WSDL, …)
Servidores/Contenedores
…
23
Programación Avanzada
24
Programación Avanzada
25
Programación Avanzada
26
Programación Avanzada
Modelo Cliente/Servidor-Proxy
27
Programación Avanzada
28
Programación Avanzada
Procesos Distribuidos
Planificación de Procesos
Modelo de Estaciones de Trabajo
Pila de Procesadores
Híbrido
Sincronización de Procesos
Ordenamiento de Eventos mediante Relojes Lógicos
Exclusión Mutua: Centralizado / Paso de testigo / Distribuido
Comunicación entre Procesos
Modos (o patrones)
C/S
Radiado: por Multicast o Broadcast
Mecanismos
Colas de mensajes (POSIX) / mailslots (WIN32)
RPC / RMI
Sockets
Ing. César Aranda 57
Paso de Mensajes
29
Programación Avanzada
Ejemplo de RPC
Ejemplo de RPC
30
Programación Avanzada
Ejemplo de Sockets
Puertos
Un ordenador puede tener una o varias conexiones físicas a la red.
Mediante esas conexiones recibe los datos dirigidos a la máquina.
¿Cómo determina a que aplicación enviar los datos? → Puertos.
TCP y UDP utilizan los puertos para dirigir los datos a la aplicación
correcta de entre todas las que se estén ejecutando en la máquina.
Los datos transmitidos a través de Internet contienen información de
direccionamiento que identifica a la máquina y puerto a los que van
dirigidos.
La máquina se identifica a través de una dirección IP de 32 bits.
Los puertos se identifican por un número de 16 bits.
Puertos:
Independientes para TCP y UDP.
16 bits, es decir con Rango: 0 a 65535
Reservados: 0 a 1023, para servicios conocidos: HTTP.FTP, ...
31
Programación Avanzada
Sockets en Java
Basado en clases disponibles en el package java.net
ServerSocket
Socket
Pasos
El servidor asigna un número de puerto. Cuando el cliente solicita una
conexión, el servidor abre un socket a través del método accept(),
El cliente establece una conexión con el host en el puerto especificado,
Tanto el cliente como el servidor se comunican a través de InputStream
y de OutputStream.
Ing. César Omar Aranda - Lic. Enrique Ruiz 63
Un Servidor Java
32