Inv. Unidad 1 Contexto de La Programación Cliente-Servidor
Inv. Unidad 1 Contexto de La Programación Cliente-Servidor
TITULO
“INVESTIGACION DE LA UNIDAD 1.- CONTEXTO DE LA PROGRAMACIÓN
CLIENTE/SERVIDOR”
PROFESOR
LIC. ISIDRO LOPEZ RUIZ
1
Contenido
INTRODUCCIÓN .............................................................................................................................. 3
UNIDAD 1.- Contexto de la programación cliente/servidor ....................................................... 4
1.1 Arquitectura del modelo Cliente/Servidor .......................................................................... 4
1.2 Modelos de dos capas y tres capas.................................................................................... 8
1.3 Usos y aplicaciones ............................................................................................................. 12
1.4 Comunicación entre programas ........................................................................................ 15
1.5 Modelos de computación distribución .............................................................................. 17
1.5.1 RMI ................................................................................................................................. 18
1.5.2 COM/DCOM .................................................................................................................. 22
1.5.3 Servicios Web ............................................................................................................... 25
1.5.4 Otros ............................................................................................................................... 26
CONCLUSIÓN ................................................................................................................................ 31
BIBLIOGRAFÍA .................................................................................................................................... 32
2
INTRODUCCIÓN
3
UNIDAD 1.- Contexto de la programación cliente/servidor
1.1 Arquitectura del modelo Cliente/Servidor
La arquitectura cliente-servidor es un
modelo de diseño de software en el
que tareas se reparten entre los
proveedores de recursos o servicios,
llamados servidores, y los
demandantes, llamados clientes. Un
cliente realiza peticiones a otro
programa, el servidor, quien le da
respuesta.
https://es.wikipedia.org/wiki/Cliente-servidor
4
Las funciones que lleva a cabo el proceso cliente se resumen en los
siguientes puntos:
Servidor:
El Middleware
Es la parte del software del sistema que se encarga del transporte de los
mensajes entre el cliente y el servidor, por lo que se ejecuta en ambos lados de la
estructura.
5
Las tareas del cliente y del servidor tienen diferentes requerimientos en
cuanto a recursos de cómputo como velocidad del procesador, memoria,
velocidad y capacidades del disco e input-output devices.
Se establece una relación entre procesos distintos, los cuales pueden ser
ejecutados en la misma máquina o en máquinas diferentes distribuidas a lo
largo de la red.
Existe una clara distinción de funciones basada en el concepto de
"servicio", que se establece entre clientes y servidores.
La relación establecida puede ser de muchos a uno
No existe otra relación entre clientes y servidores que no sea la que se
establece a través del intercambio de mensajes entre ambos.
El ambiente es heterogéneo.
6
Figura 1. Arquitectura cliente-servidor con un único servidor
https://riunet.upv.es/bitstream/handle/10251/13943/Documentacion.pdf?sequence
=1
4.- Una ventaja adicional del uso del esquema Cliente/Servidor es que es más
rápido el mantenimiento y el desarrollo de aplicaciones, pues se pueden emplear
las 7 herramientas existentes.
7
5.- La estructura inherentemente modular facilita además la integración de nuevas
tecnologías y el crecimiento de la infraestructura computacional, favoreciendo así
la escalabilidad de las soluciones.
2.- Se cuenta con muy escasas herramientas para la administración y ajuste del
desempeño de los sistemas.
3.- Es importante que los clientes y los servidores utilicen el mismo mecanismo
(por ejemplo sockets o RPC), lo cual implica que se deben tener mecanismos
generales que existan en diferentes plataformas.
4.- Además, hay que tener estrategias para el manejo de errores y para mantener
la consistencia de los datos.
http://todosobreprogramacionclienteservidor.blogspot.mx/
Inconvenientes:
9
Por estas razones existe una fuerte y bien avanzada tendencia a adoptar
una arquitectura de 3 capas, la cual incluye lo siguiente:
Inconveniente:
Esta solución es algo menos eficiente que la del modelo de dos capas, ya
que hemos añadido una capa intermedia más de software. (Mulato, 2013)
http://todosobreprogramacionclienteservidor.blogspot.mx/
ARQUITECTURA DE N CAPAS:
Aplicación n capas.
11
(Munguìa, 2011)
http://odelgado330.blogspot.mx/2011/02/113-aplicaciones-de-2-3-y-n-capas.html
12
Comunicación cliente/servidor
http://culturacion.com/cual-es-la-utilidad-de-las-aplicaciones-clienteservidor/
13
Separación datos-programas.
Programas flexibles.
4. Nuevas tecnologías de alta productividad.
APLICACIONES SIMPLES
APLICACIONES COMPLEJAS
Exigen dos capas, una para la aplicación del usuario (Cliente) y otra para la base
de datos (Servidor).
14
(Mendoza, 2010)
https://es.slideshare.net/NoeGonzalezMendoza/arquitectura-cliente-servidor
https://prezi.com/omx6lt7najqu/unidad-1-contexto-de-la-programacion-cliente-
servidor/
15
Cada uno de estos programas realiza tareas adecuadas a su nivel de
abstracción en un protocolo de comunicaciones determinado. Cada uno de ellos
puede realizar tareas de bajo nivel de configuración del entorno físico de
comunicación, (ven los que darán todas las funcionalidades de la comunicación al
usuario, como navegadores web, programas de IRC, etc.) (Wikipedia, 2017)
https://es.wikipedia.org/wiki/Programa_de_comunicaciones
Tipos de comunicación
• Síncrona
Quien envía permanece bloqueado esperando a que llegue una respuesta del
receptor antes de realizar cualquier otro ejercicio.
• Asíncrona
• Persistente
16
• Momentánea (transient)
• Directa
Los primitivos enviar y recibir explicitan el nombre del proceso con el que se
comunican. Ejemplo: enviar (mensaje, A) envía un mensaje al proceso A .Es decir
se debe especificar cuál va a ser el proceso fuente y cuál va a ser el proceso
Destino.
• Indirecta
• Simétrica
Todos los procesos pueden enviar o recibir. También llamada bidireccional para el
caso de dos procesos. Es una comunicación equilibrada donde tanto emisor como
receptor reciben la misma información.
• Asimétrica
Un proceso puede enviar, los demás procesos solo reciben. También llamada
unidireccional. Suele usarse para hospedar servidores en Internet.
17
manejar la programación distribuida, teniendo en cuenta que hace falta una gran
cantidad de tiempo y código.
1.5.1 RMI
Es un mecanismo que permite realizar llamadas a métodos de objetos
remotos situados en distintas (o la misma) máquinas virtuales de Java,
compartiendo así recursos y carga de procesamiento a través de varios sistemas.
OBJETIVOS:
Proporcionar invocación remota de objetos que se encuentran en
MVs diferentes.
Soportar llamadas a los servidores desde las aplicaciones.
Integrar el modelo de objetos distribuidos en el lenguaje Java de una
manera natural, conservando en medida de lo posible la semántica
de los objetos Java.
Hacer tan simple como sea posible la escritura de aplicaciones
distribuidas.
Preservar la seguridad proporcionada por el ambiente Java.
Proporcionar varias semánticas para las referencias de los objetos
remotos (persistentes, no persistentes y de "activación retardada")
CARACTERÍSTICAS:
• Concurrencia
• Nombrado de objetos: Utiliza la notación URL. Por Ejemplo:
rmi://localhost:8080/miObjeto.
• Paso de parámetros: Primitivos, Serializados y Objetos remotos.
• Recolector de basura
• Facilidad de uso en la programación por estar específicamente diseñado
para JAVA
• Proporciona paso de objeto por referencia
• Paso de tipos arbitrarios
VENTAJAS:
• Permite distribuir una aplicación de forma muy transparente, es decir, sin
que el programador tenga que modificar apenas el código.
• Las invocaciones remotas son más eficientes que las peticiones vía http
que se usan con los CGIs o los Servlets.
DESVENTAJAS:
18
• El paso de parámetros por valor implica tiempo para hacer la Serialización,
enviar los objetos serializados a través de la red y luego volver a
recomponer los objetos en el destino.
ESTRUCTURA DE RMI
Arquitectura RMI
19
Capas del RMI
1. Capa de Aplicación
• Implementación real de las aplicaciones cliente y servidor.
• Llamadas a alto nivel para acceder y exportar objetos remotos.
• Se declaran métodos en una interfaz que herede de java.rmi.Remote.
• Una vez que los métodos han sido implementados, el objeto debe ser
exportado.
• De forma implícita: si el objeto hereda de la clase UnicastRemoteObject
(paquete java.rmi.server)
• De forma explícita: con una llamada al método exportObject () del mismo
paquete.
2. Capa proxy, o capa Stub – Skeleton
• Esta capa es la que interactúa directamente con la capa de aplicación.
Todas las llamadas a objetos remotos y acciones junto con sus parámetros
y retorno de objetos tienen lugar en esta capa.
3. Capa de referencia remota
• Responsable del manejo de la parte semántica de las invocaciones
remotas.
• También es responsable de la gestión de la replicación de objetos y
realización de tareas específicas de la implementación con los objetos
remotos, como el establecimiento de las persistencias semánticas y
estrategias adecuadas para la recuperación de conexiones perdidas.
4. Capa de Transporte
Es la responsable de realizar las conexiones necesarias y manejo del
transporte de los datos de una máquina a otra. El protocolo de transporte
subyacente para RMI es JRMP (Java Remote Method Protocol), que
solamente es “comprendido” por programas Java.
20
Puede estar localizado en un lugar distinto al servidor, se encarga de registrar
un determinado objeto y asignarle un servidor que se encargara de procesar dicho
objeto.
Funcionamiento General
Se ejecuta el RMI Registry en algún lugar de la red.
El servidor que desea manejar un objeto se registra en dicho servidor
El RMI Registry registra el par: OBJETO/SERVIDOR
El cliente que necesita utilizar un determinado objeto, hace una consulta RMI
Registry, quien devuelve el STUB listo para la comunicación. (Slideshare, 2016)
• Los objetos remotos son los objetos publicados por el server a los que el
cliente podrá acceder remotamente.
21
• El server publica objetos remotos en la registry para que el cliente, luego de
ubicarlos, invoque sus métodos.
https://es.slideshare.net/geovannymendozag/rmi-58255967
1.5.2 COM/DCOM
Servidores COM.- Los objetos “servidores” son aquellas instancias de las clases
que contienen los métodos que resuelven el problema del que se ocupa el
sistema.
Cliente COM.- Los objetos “clientes” son aquellas instancias de las clases que
contengan la interfaz del sistema con el usuario, que implementan los textos de
ayuda del sistema, los cuadros de dialogo para introducir información al sistema o
bien para mostrar resultados.
COM está diseñado para permitir que los clientes se comuniquen con otros
objetos en forma transparente independientemente del lugar donde se están
ejecutando, ya sea en el mismo proceso, la misma computadora o una
computadora diferente.
http://cliente-servidor-anayeli.blogspot.mx/2014/11/comdcom-component-
object-model.html
22
servidor de aplicaciones COM+ de Microsoft. Ha sido abandonada en favor del
framework .NET.
23
Es un conjunto de clases de C++ basadas en plantillas que permiten crear
objetos pequeños, rápidos (COM) del modelo de objetos componentes. El apoyo
COM en Microsoft Visual C ++ permite a los desarrolladores crear una variedad de
objetos COM, OLE Automation servidores y ActiveX controles. ATL incluye un
asistente de objeto que establece la estructura primaria de los objetos muy
rápidamente con un mínimo de codificación manual.
En el lado del cliente COM ATL proporciona punteros inteligentes que tienen
que ver con el recuento de referencias COM.
24
Independencia del protocolo
https://es.slideshare.net/VERONICAPONCE5/com-41837493
Si una aplicación puede ser accedida a través de una red usando una
combinación de protocolos como HTTP, XML, SMTP, JABBER (protocolo de
mensajería instantánea). Los web services no son cosa nueva. Representan la
evolución de los principios que han guiado a la internet por años.
25
estándar mediante Sistemas de Información Geográfica y otras aplicaciones a
través de Internet. Debido a que este tipo de servicios sirven como protocolo entre
las aplicaciones cliente y nuestro servidor de mapas, no pueden ser utilizados
directamente en un navegador como Microsoft Internet Explorer, Mozilla Firefox o
Google Chrome. Además de HTML, el desarrollo de
nuevos lenguajes como XML ha hecho posible la utilización de estándares que
permiten que las aplicaciones descritas en distintos lenguajes de programación y
ejecutadas en distintas plataformas puedan interoperar entre ellas, es decir,
puedan intercambiar los datos. De esta forma, los distintos servicios que se
ofrecen en la Word Wide Web pueden combinarse para ejecutar operaciones
complejas.
1.5.4 Otros
XML.
Los servicios Web basados en XML, ofrecen una forma de acceder a diversos
servicios en un entorno distribuido. Recientemente, el mundo de la informática en
grid y los servicios Web caminan juntos para ofrecer el grid como un servicio Web.
La arquitectura está definida por la Open Grid Services Architecture (OGSA). La
versión 3.0 de Globus Toolkit, será una implementación de referencia acorde con
el estándar OGSA.
Características
26
XML es un subconjunto de SGML que incorpora las tres características
más importantes de este:
o Extensibilidad
o Estructura
o Validación
Basado en texto.
Orientado a los contenidos no presentación.
Las etiquetas se definen para crear los documentos, no tienen un
significado preestablecido.
No es sustituto de HTML.
No existe un visor genérico de XML.
Aplicaciones de XML
Clustering.
1. Unión de Hardware
2. Clusters de Software
27
3. Alto rendimiento de bases de datos
1. Alto rendimiento
2. Alta disponibilidad
3. Equilibrio de carga
4. Escalabilidad
Para que un sistema cluster funcione no es necesario que todas las máquinas
dispongan del mismo Hardware y sistema operativo (cluster heterogéneo). Este
tipo de sistemas debe de disponer de un interfaz de manejo de clusters, la cual se
encargue de interactuar con el usuario y los procesos, repartiendo la carga entre
las diferentes máquinas del grupo.
¿Qué componentes necesita un cluster para funcionar?
Por norma general un cluster hace uso de diferentes componentes para funcionar,
entre estos están:
Nodos:
Los nodos pueden ser ordenadores de escritorio o servidores, de hecho se puede
establecer un cluster con cualquier tipo de máquina.
Sistema operativo: Este debe de tener un entorno multiusuario, cuanto más fácil
sea el manejo del sistema menores problemas tendremos. Comúnmente Solingest
instala sus cluster con sistemas Microsoft Cluster Services (MSCS), pero es
totalmente factible la instalación de un Cluster con un sistema Linux o Unix como
podrían ser Rocks (Linux) o Solaris (Unix).
Conexiones de Red: Las conexiones utilizadas en este tipo de sistema pueden
ser muy variadas, se pueden utilizar desde simples conexiones Ethernet con
28
placas de red comunes o sistemas de alta velocidad como Fast Ethernet, Gigabit
Ethernet, Myrinet, Infiniband, SCI, etc.
Middleware:
El middleware es el software que actúa entre el sistema operativo y las
aplicaciones y que brinda al usuario la experiencia de estar utilizando una única
súper máquina. Este software provee una única interfaz de acceso al sistema,
denominada SSI (Single System Image). Optimiza el sistema y provee
herramientas de mantenimiento para procesos pesados como podrían ser
migraciones, balanceo de carga, tolerancia de fallos, etc.
Este sistema también se encarga de la escalabilidad del cluster, detectando
nuevas máquinas y añadiéndolas al grupo.
Por lo tanto, si un cliente quisiera disponer de un cluster para su servidor Web,
este podría optar entre diferentes opciones. No habría ningún problema en instalar
un cluster que tuviese un sistema MySQL y PHP repartido entre diferentes
máquinas. (Solingest, 2015)
http://www.solingest.com/blog/cluster-de-servidores-que-es-y-como-funciona
Peer-to-peer.
29
o aplicación. Típicamente, estas redes se conectan en gran parte con otros nodos
vía “ad hoc”.
Características
Escalabilidad: Las redes P2P tienen un alcance mundial con cientos de millones
de usuarios potenciales. En general, lo deseable es que cuantos más nodos estén
conectados a una red P2P mejor será su funcionamiento. Así, cuando los nodos
llegan y comparten sus propios recursos, los recursos totales del sistema
aumentan.
Robustez: La naturaleza distribuida de las redes peer-Too-peer también
incrementa la robustez en caso de haber fallos en la réplica excesiva de los datos
hacia múltiples destinos.
Descentralización: Estas redes por definición son descentralizadas y todos los
nodos son iguales. No existen nodos con funciones especiales, y por tanto ningún
nodo es imprescindible para el funcionamiento de la red.
Anonimato: Es deseable que en estas redes quede anónimo el autor de un
contenido, el editor, el lector, el servidor que lo alberga y la petición para
encontrarlo siempre que así lo necesiten los usuarios. Muchas veces el derecho al
anonimato y los derechos de autor son incompatibles entre sí.
Seguridad: Es una de las características deseables de las redes P2P menos
implementada. Los objetivos de un P2P seguro serían identificar y evitar los nodos
maliciosos, evitar el contenido infectado, evitar el espionaje de las comunicaciones
entre nodos, creación de grupos seguros de nodos dentro de la red, protección de
los recursos de la red (Quinodóz, 2013)
http://profecarolinaquinodoz.com/principal/?p=392
Grid
http://bibing.us.es/proyectos/abreproy/11374/fichero/MEMORIA%252F02-
COMPUTACION_DISTRIBUIDA.pdf
30
CONCLUSIÓN
31
BIBLIOGRAFÍA
Anayeli. (Noviembre de 2014). Programacion en ambiente cliente servidor. Obtenido de http://cliente-
servidor-anayeli.blogspot.mx/2014/11/comdcom-component-object-model.html
Munguìa, O. D. (11 de Febrero de 2011). ###- -> T H E P A P O´S BLOG <- -###. Obtenido de
http://odelgado330.blogspot.mx/2011/02/113-aplicaciones-de-2-3-y-n-capas.html
Quinodóz, P. C. (01 de Octubre de 2013). Blog de Informática, Educación Tecnológica y TIC. Obtenido de
http://profecarolinaquinodoz.com/principal/?p=392
32