19
[INSTITUTO TECNOLÓGICO DE COMITANCILLO] PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR. INSTITUTO TECNOLÓGICO DE COMITANCILLO MATERIA: PROGRAMACION EN AMBIENTE CLIENTE-SERVIDOR PROFESOR: LIC. ISIDRO LOPEZ RUIZ PRESENTA: MICHEL CABRERA JIMENEZ INVESTIGACION 1° UNIDAD: “CONTEXTO DE LA PROGRAMACION CLIENTE/SERVIDOR CARRERA: ING. EN INFOMATICA Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION CLIENTE/SERVIDOR!

1 Unidad Contexto de La Programacion Clienteservidor

Embed Size (px)

Citation preview

[]

PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR.

INSTITUTO TECNOLÓGICO DE COMITANCILLO

MATERIA:

PROGRAMACION EN AMBIENTE CLIENTE-SERVIDOR

PROFESOR:

LIC. ISIDRO LOPEZ RUIZ

PRESENTA:

MICHEL CABRERA JIMENEZ

INVESTIGACION 1° UNIDAD:

“CONTEXTO DE LA PROGRAMACION CLIENTE/SERVIDOR”

CARRERA:

ING. EN INFOMATICA

7: SEMESTRE GRUPO: “B”

Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION

CLIENTE/SERVIDOR!

[]

PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR.

SAN PEDRO COMITANCILLO, OAX. SEPTIEMBRE DEL 2013.

1.1 Arquitectura del modelo cliente/servidor

Entre las principales definiciones se tiene:

Desde un punto de vista conceptual:Es un modelo para construir sistemas de información, que se sustenta en la idea de repartir el tratamiento de la información y los datos por todo el sistema informático, permitiendo mejorar el rendimiento del sistema global de información.

En términos de arquitectura:Los distintos aspectos que caracterizan a una aplicación (proceso, almacenamiento, control y operaciones de entrada y salida de datos) en el sentido más amplio, están situados en más de un computador, los cuales se encuentran interconectados mediante una red de comunicaciones.

Cliente/ServidorEs la tecnología que proporciona al usuario final el acceso transparente a las aplicaciones, datos, servicios de cómputo o cualquier otro recurso del grupo de trabajo y/o, a través de la organización, en múltiples plataformas. El modelo soporta un medio ambiente distribuido en el cual los requerimientos de servicio hechos por estaciones de trabajo inteligentes o "clientes'', resultan en un trabajo realizado por otros computadores llamados servidores".

¿Qué es una Arquitectura?

 Una arquitectura es un entramado de componentes funcionales que aprovechando diferentes estándares, convenciones, reglas y procesos, permite integrar una amplia gama de productos y servicios informáticos, de manera que pueden ser utilizados eficazmente dentro de la organización.

Debemos señalar que para seleccionar el modelo de una arquitectura, hay que partir del contexto tecnológico y organizativo del momento y, que la

Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION

CLIENTE/SERVIDOR!

[]

PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR.

arquitectura Cliente/Servidor requiere una determinada especialización de cada uno de los diferentes componentes que la integran. http://docente.ucol.mx/sadanary/public_html/bd/cs.htm

La arquitectura cliente-servidor define una relación entre el usuario de una

estación de trabajo (el cliente frontal) y un servidor posterior de archivos,

impresión, comunicaciones o fax, u otro tipo de sistema proveedor de servicios.

El cliente debe ser un sistema inteligente con su propia capacidad de

procesamiento para descargar en parte al sistema posterior (ésta es la base del

modelo cliente-servidor). Esta relación consiste en una secuencia de llamadas

seguidas de respuestas. Situar servicios de archivos (u otro tipo de servicios) en

sistemas posteriores dedicados tiene muchas ventajas. Es más sencillo realizar el

mantenimiento y la seguridad de unos servidores situados en un mismo lugar, y

más simple el proceso de realización

de copias de seguridad, siempre que

los datos se encuentren en una única

ubicación y una misma autoridad los

gestione.

Existen numerosas configuraciones

cliente-servidor posibles. En la Figura 3.1, varios clientes acceden a un único

servidor. Esta es la configuración usual de una pequeña red de área local (LAN,

Local Area Network). La Figura 3.2 muestra un modelo de base de datos

distribuida en el que los clientes acceden a los

datos ubicados en varios servidores.

http://www.angelfire.com/my/jimena/so2/com_guia2.htm

El Esquema de funcionamiento de un Sistema Cliente/Servidor sería:

1. El cliente solicita una información al servidor.

2. El servidor recibe la petición del cliente.

Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION

CLIENTE/SERVIDOR!

[]

PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR.

3. El servidor procesa dicha solicitud.

4. El servidor envía el resultado obtenido al cliente.

5. El cliente recibe el resultado y lo procesa.

Componentes de la arquitectura cliente/servidor

El proceso cliente que es quien inicia el diálogo, el proceso servidor que pasivamente espera a que lleguen peticiones de servicio y el middleware que corresponde a la interfaz que provee la conectividad entre el cliente y el servidor para poder intercambiar mensajes.

Para entender en forma más ordenada y clara los conceptos y elementos involucrados en esta tecnología se puede aplicar una descomposición o arquitectura de niveles.

Nivel de Presentación: Agrupa a todos los elementos asociados al componente Cliente.

Nivel de Aplicación: Agrupa a todos los elementos asociados al componente Servidor.

Nivel de comunicación: Agrupa a todos los elementos que hacen posible la comunicación entre los componentes Cliente y servidor.Nivel de base de datos: Agrupa a todas las actividades asociadas al acceso de los datos. http://oposicionestic.blogspot.mx/2011/06/arquitectura-cliente-servidor.html

1.2 Modelos de dos y tres capas

Arquitectura en 2 niveles

La arquitectura en 2 niveles se utiliza para describir los sistemas cliente/servidor en donde el cliente solicita recursos y el servidor responde directamente a la solicitud, con sus propios recursos. Esto significa que el servidor no requiere otra aplicación para proporcionar parte del servicio.

Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION

CLIENTE/SERVIDOR!

[]

PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR.

Arquitectura en 3 niveles

En la arquitectura en 3 niveles, existe un nivel intermediario. Esto significa que la arquitectura generalmente está compartida por:

1. Un cliente, es decir, el equipo que solicita los recursos, equipado con una interfaz de usuario (generalmente un navegador Web) para la presentación

2. El servidor de aplicaciones (también denominado software intermedio), cuya tarea es proporcionar los recursos solicitados, pero que requiere de otro servidor para hacerlo

3. El servidor de datos, que proporciona al servidor de aplicaciones los datos que requiere

Comparación entre ambos tipos de arquitecturas

La arquitectura en 2 niveles es, por lo tanto, una arquitectura cliente/servidor en la

que el servidor es polivalente, es decir, puede responder directamente a todas las

solicitudes de recursos del cliente.

Sin embargo, en la arquitectura en 3 niveles, las aplicaciones al nivel del servidor

son descentralizadas de uno a otro, es decir, cada servidor se especializa en una

determinada tarea, (por ejemplo: servidor web/servidor de bases de datos). La

arquitectura en 3 niveles permite:

Un mayor grado de flexibilidad

Mayor seguridad, ya que la seguridad se puede definir independientemente

para cada servicio y en cada nivel

Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION

CLIENTE/SERVIDOR!

[]

PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR.

Mejor rendimiento, ya que las tareas se comparten entre servidores

http://es.kioskea.net/contents/147-redes-arquitectura-cliente-servidor-en-3-niveles

1.3 Usos y Aplicaciones

Cuando la operación entre clientes y servidores se realiza a través de una red

(como es el caso de Internet), la información viaja codificada a lo largo de redes

que pueden ser del tamaño de un edificio o de tamaño planetario. En caso de

redes grandes, aparte de servidores y clientes, se necesita un tercer tipo de

máquinas para gestionar las transmisiones. 

Se denominan enrutadores ("Routers"), y funcionan como elementos de

recepción y transmisión de tráfico Internet. 

El paradigma cliente-servidor no solo se utiliza en referencia a las máquinas

físicas, también a los programas que las hacen funcionar según su utilidad.  Por

ejemplo, son frecuentes expresiones tales como "cliente de correo" o "servidor de

noticias" en referencia a programas.  La primera se refiere al que utilizamos

normalmente para interrogar nuestro buzón e-mail, "bajar" el correo y manipularlo

(verlo, imprimirlo, borrarlo, etc.).  El segundo se refiere a un programa o sistema

de ellos, que en un servidor (máquina) realiza el trabajo de alojar los mensajes de

noticias, atender las peticiones de los "clientes", etc.

Observe que en realidad, el concepto cliente/servidor es muy genérico, y que

puede ser entendido incluso en el ámbito de una sola máquina, donde unas

aplicaciones pueden prestar servicio a otras.  Sin embargo, su significado desde el

punto de vista informático suele presuponer la existencia de varias máquinas (al

menos dos) unidas en una red:

Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION

CLIENTE/SERVIDOR!

[]

PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR.

Un servidor es cualquier máquina que dispone un recurso para ser compartido.

Un cliente es cualquier máquina que necesita un recurso externo. Un servidor de determinado recurso puede ser cliente de otros y a la

inversa. Un cliente puede ser a su vez servidor de otro recurso.

http://www.zator.com/Internet/A4_4.htm

1.4 Comunicación entre programas

El proceso para la creación de un servicio siempre comienza con la creación del Socker. Así como el cliente necesita llamadas específicas en determinados momentos, el servidor trabajo de modo similar pero añade unas pocas llamadas extras al sistema. El servidor utiliza la llamada del sistema Socket, pero debe hacer un trabajo extra que era opcional para el cliente,  el cliente siempre realiza una conexión activa porque la persigue enérgicamente los servidores por otro lado necesitan proporcionar un numero de puesto especifico y consiste a los programas clientes si les va a prestar servicio.

El programa servidor que escriba deberá utilizar las llamadas de sistema socker (), bind (), listen (), accept (). Y mientras el programa cliente es una conexión activa, el servidor es una conexión pasiva. Las llamadas del sistemas () y accept () crean una conexión solo cuando el cliente pide una conexión (similar a la acción de responder al timbre de un teléfono.

 El ejemplo de servidor escucha en un socket (puerto 8000) esperando peticiones entrantes. Cualquier programa, como el cliente de ejemplo, puede conectar con este servidor y pasarle hasta 16.384 bytes de datos. 

El servidor trata los datos como datos ASCII y los convierte en mayúsculas antes de pasárselos a! programa cliente. Estos dos sencillos programas se pueden volver a utilizar fácilmente cuando se escriban programas cliente-servidor basados en socket.

Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION

CLIENTE/SERVIDOR!

[]

PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR.

Los servidores que pueden recibir muchas peticiones simultáneas lo usan para crear un proceso separado para la administración de peticiones de servicio constitucionalmente caras. El servidor crea un socket permanente para la escucha de peticiones de servicio; cuando un cliente conecta con el servidor, se crea un socket temporal. Cada vez que un cliente conecta con un servidor, se abre un nuevo socket temporal entre el cliente y el servidor.

http://www.buenastareas.com/ensayos/2-1-1-Comunicación-Con-Cliente-Servidor-Sockets/1613125.html

1.5. Modelos de computación distribuida

La computación distribuida (o grid computing / network computing) es un modelo de computación basado en el uso de recursos de una red de maquinas independientes para el procesado de unidades discretas de datos a través de un protocolo común cuyo objetivo es crear una potente red de procesado de datos que puede incluso superar a los grandes superordenadores.

Estas redes de computación distribuida son mayoritariamente utilizadas para investigaciones científicas que necesitan largos tiempos de procesado mediante ordenadores

Un sistema distribuido está compuesto de nodos, posiblemente heterogéneos, conectados mediante una red. Un sistema de esta clase puede utilizarse efectivamente solo si el software es capaz de presentar al usuario el concepto de single system image (SSI) sobre el sistema físicamente distribuido. De esta forma todos los recursos de un nodo deberían poder accederse transparentemente desde cualquier otro nodo.

http://campusvirtual.unex.es/cala/epistemowikia/index.php?title=Computacion_Distribuida_/_Computación_Grid

1.5.1. RMI

RMI (Java Remote Method Invocation) es un mecanismo ofrecido por Java para invocar un método de manera remota. Forma parte del entorno estándar de ejecución de Java y proporciona un mecanismo simple para la comunicación de servidores en aplicaciones distribuidas basadas exclusivamente en Java. Si se requiere comunicación entre otras tecnologías debe utilizarse CORBA o SOAP en lugar de RMI.

Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION

CLIENTE/SERVIDOR!

[]

PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR.

RMI se caracteriza por la facilidad de su uso en la programación por estar específicamente diseñado para Java; proporciona paso de objetos por referencia (no permitido por SOAP), recolección de basura distribuida y paso de tipos arbitrarios (funcionalidad no provista por CORBA).

A través de RMI, un programa Java puede exportar un objeto, con lo que dicho objeto estará accesible a través de la red y el programa permanece a la espera de peticiones en un puerto TCP. A partir de ese momento, un cliente puede conectarse e invocar los métodos proporcionados por el objeto.

La invocación se compone de los siguientes pasos:

Encapsulado (marshalling) de los parámetros (utilizando la funcionalidad de serialización de Java).

Invocación del método (del cliente sobre el servidor). El invocador se queda esperando una respuesta.

Al terminar la ejecución, el servidor serializa el valor de retorno (si lo hay) y lo envía al cliente.

El código cliente recibe la respuesta y continúa como si la invocación hubiera sido local.

La arquitectura RMI puede verse como un modelo de cuatro capas.

Primera capa

La primera capa es la de aplicación y se corresponde con la implementación real de las aplicaciones cliente y servidor. Aquí tienen lugar las llamadas a alto nivel para acceder y exportar objetos remotos. Cualquier aplicación que quiera que sus métodos estén disponibles para su acceso por clientes remotos debe declarar dichos métodos en una interfaz que extienda java.rmi.Remote.

Segunda capa

La capa 2 es la 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.

Tercera capa

La capa 3 es la de referencia remota, y es 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

Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION

CLIENTE/SERVIDOR!

[]

PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR.

persistencias semánticas y estrategias adecuadas para la recuperación de conexiones perdidas. En esta capa se espera una conexión de tipo stream desde la capa de transporte.

Cuarta Capa

La capa 4 es la 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.

http://es.wikipedia.org/wiki/Java_Remote_Method_Invocation

1.5.2. COM/DCOM.

Microsoft Distributed COM (DCOM) extiende COM (Component Object Model) para soportar comunicación entre objetos en ordenadores distintos, en una LAN, WAN, o incluso en Internet. Con DCOM una aplicación puede ser distribuida en lugares que dan más sentido al cliente y  a la aplicación.

Como DCOM es una evolución lógica de COM, se pueden utilizar los componentes creados en aplicaciones basadas en COM, y trasladarlas a entornos distribuidos. DCOM maneja detalles muy bajos de protocolos de red, por lo que uno se puede centrar en la realidad de los negocios: proporcionar soluciones a clientes.

La arquitectura DCOM

DCOM es una extensión de COM, y éste define como los componentes y sus clientes interactúan entre sí. Esta interacción es definida de tal manera que el cliente y el componente pueden conectar sin la necesidad de un sistema intermedio. El cliente llama a los métodos del componente sin tener que preocuparse de niveles más complejos.

La Figura 1 ilustra esto en la notación de COM

En los actuales sistemas operativos, los procesos están separados unos de otros. Un cliente que necesita comunicarse con un componente en otro proceso no puede llamarlo directamente, y tendrá que utilizar alguna forma de comunicación

Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION

CLIENTE/SERVIDOR!

[]

PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR.

entre procesos que proporcione el sistema operativo. COM proporciona este tipo de comunicación de una forma transparente: intercepta las llamadas del cliente y las reenvía al componente que está en otro proceso.

La Figura 2 ilustra como las librerías de COM/DCOM proporcionan la forma de comunicar el cliente y el componente:

Cuando el cliente y el componente residen en distintas máquinas, DCOM simplemente reemplaza la comunicación entre procesos locales por un protocolo de red. Ni el cliente ni el componente se enteran de que la unión que los conecta es ahora un poco más grande.

La Figura 3 representa la arquitectura DCOM en su conjunto: Las librería de COM proporcionan servicios orientados a objetos a los clientes y componentes, y utilizan RPC y un proveedor de seguridad para generar paquetes de red estándar que entienda el protocolo estándar de DCOM.

http://www.elai.upm.es/webantigua/spain/Investiga/GCII/areas/administracion/DCOM.htm#Introducción

1.5.3. Servicios Web.

Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION

CLIENTE/SERVIDOR!

[]

PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR.

Los servicios web son esenciales en las Infraestructuras de Datos Espaciales (IDE) porque permiten a los usuarios el acceder a datos de manera 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. http://sitel.jalisco.gob.mx/portal2/index.php/top-servicios

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.

La interoperabilidad puede ser  de 3 tipos:

 Técnica: capacidad para que los sistemas de información intercambien señales y se realiza tanto a través de una conexión física (cable, ondas, etc.), como por medio de una serie de protocolos de comunicaciones (TCP/IP, etc).

 Sintáctica: capacidad para que un sistema pueda leer e interpretar los datos de otros sistemas. Para ello se utilizan una serie de aplicaciones como las  Interfaz de programación de aplicaciones  que permiten intercambiar y analizar los datos.

 Semántica: capacidad de intercambiar el contenido de la información basándose en el significado.

Estos servicios proporcionan mecanismos de comunicación estándares entre diferentes aplicaciones, que interactúan entre sí para presentar información dinámica al usuario. Para proporcionar interoperabilidad y extensibilidad entre estas aplicaciones, y que al mismo tiempo sea posible su combinación para realizar operaciones complejas, es necesaria una arquitectura de referencia estándar.

La estructura interna de un servicio web se basa en los siguientes protocolos y normas:

Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION

CLIENTE/SERVIDOR!

[]

PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR.

 SOAP (Simple Object Access Protocol): establece la forma en que dos objetos

en diferentes procesos pueden comunicarse mediante el intercambio de datos en

lenguaje XML.

 UDDI (Universal Description, Discovery and Integration): lista los servicios

web y los pone a disposición de los usuarios.

 WDSL (Web Services Description Language): permite que los servicios web

describan cómo deben ser tratados por otras aplicaciones.

http://www.hipertexto.info/documentos/web_tecnolog.htm

1.5.4. Otros.

Modelo cliente-servidor: Es el modelo más utilizado para realizar aplicaciones distribuidas. Existe un proceso servidor y uno o varios procesos clientes. Este modelo se utiliza en muchos servicios de Internet como HTTP, FTP, DNS... Este concepto también puede aplicarse a los ordenadores servidor o cliente, cuyo nombre se debe a que la ejecución de la mayoría de sus procesos son de tipo servidor o de tipo cliente.

Peer-to-peer: En el modelo cliente-servidor hay una clara diferenciación. El servidor ofrece a los clientes servicios y los clientes utilizan estos servicios. En sistemas P2P los procesos que participan en la comunicación realizan los mimos papeles: de cliente y de servidor. Este sistema está más asociado a lo que es la informática distribuida, ya que se olvida de la centralización y tiene un sistema más dinámico y descentralizado.

Cluster: es un conjunto de ordenadores conectados por una red de alta velocidad (Gigabit Ethernet, Myrineto InfiniBand). Los computadores individuales pueden ser PC convencionales que se instalan en un rack. Todos los ordenadores trabajan como un único recurso de computación, mostrándose como un único sistema. En

Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION

CLIENTE/SERVIDOR!

[]

PROGRAMACION EN AMBIENTE CLIENTE/SERVIDOR.

un cluster todos los ordenadores comparten los discos y los distintos ordenadores que lo forman están continuamente monitorizando para detectar posibles fallos de hardware. Si se detecta un fallo, se planifica el trabajo del nodo erróneo en otro ordenador, de forma que el usuario no percibe la parada del servicio. Los cluster se realizan mediante un middleware que gestiona todo. Un cluster puede ser homogéneo (misma arquitectura, SO...) o heterogéneo (distintos entornos, middlewares más complejos).

Grid: El concepto de grid, es similar al concepto de cluster. La principal diferencia con un entorno cluster, es que en un entorno grid, los diferentes computadores del grid no pertenecen a un mismo dominio de administración y por tanto están sujetos a diferentes políticos de uso y de administración. La primera mención, y su definición viene dada por Ian Foster: "Un sistema que coordina recursos, que no están sujetos a un control centralizado usando interfaces y protocolos estándares, abiertos y de propósito general para proveer de servicios relevantes".

ftp://www.cc.uah.es/pub/Alumnos/I.T.I.Gestion/Sist.Operativos/TECWeb/T1/web/node/27.html

Ingeniería Informatica UNIDAD 1: | ¡CONTEXTO DE LA PROGRACION

CLIENTE/SERVIDOR!