CLIENTE-SERVIDOR

__//**CLIENTE-SERVIDOR**//__

__//** CONCEPTO: **//__
El cliente servidor es un modelo que intenta proveer usabilidad, flexibilidad, interoperabilidad y escalabilidad en las comunicaciones. este modelo puede ser tanto un computador q haga de cliente y servidor a la vez, como dos computadores q uno haga el rol de cliente y el otro de servidor

El __//**Cliente**//__ normalmente maneja todas las funciones relacionadas con la manipulación y despliegue de datos, por lo que están desarrollados sobre plataformas que permiten construir interfaces gráficas de usuario

alguna de sus funciones.
• Administrar la interfaz de usuario.

• Interactuar con el usuario.

• Procesar la lógica de la aplicación y hacer validaciones locales.

• Generar requerimientos de bases de datos.

• Recibir resultados del servidor.

• Formatear resultados.

__//**Servidor:**//__ Es el proceso encargado de atender a múltiples clientes que hacen peticiones de algún recurso administrado por él.

__//**funciones**//__ • Aceptar los requerimientos de bases de datos que hacen los clientes.

• Procesar requerimientos de bases de datos.

• Formatear datos para trasmitirlos a los clientes.

• Procesar la lógica de la aplicación y realizar validaciones a nivel de bases de datos.

__//** CARACTERISITCAS **//__
>
 * 1) diferentes requerimientos en cuanto a recursos de cómputo como velocidad del procesador, memoria, velocidad y capacidades del disco y input-output devices.
 * 2) La relación establecida puede ser de muchos a uno, en la que un servidor puede dar servicio a muchos clientes, regulando su acceso a recursos compartidos
 * 3) 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.
 * 4) 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 mensaje es el mecanismo para la petición y entrega de solicitudes de servicio.

__//** VENTAJA **//__

 * 1) ====El hadware mas economico====
 * 2) Pueden utilizar sistemas operativos diferentes tanto en el cliente como en el serviddor
 * 3) Es mas facil el mantenimiento de esta estructura

__//** DESVENTAJAS **//__

 * 1) hay que tener estrategias para el manejo de errores y para mantener la consistencia de los datos.
 * 2) la inseguridad por parte del cliente y el servidor

__//** ELEMENTOS **//__

 * 1) Presentación / Captación de Información
 * 2) Procesos
 * 3) Almacenamiento de la Información

__//** INFRAESTRUCTURA **//__
Una infraestructura Cliente/Servidor consta de tres componentes esenciales, todos ellos de igual importancia y estrechamente ligados:


 * 1) ** Plataforma Operativa. ** La plataforma deberá soportar todos los modelos de distribución Cliente/Servidor, todos los servicios de comunicación, y deberá utilizar, preferentemente, componentes estándar de la industria para los servicios de distribución. Los desarrollos propios deben coexistir con las aplicaciones estándar y su integración deberá ser imperceptible para el usuario. Igualmente, podrán acomodarse programas escritos utilizando diferentes tecnologías y herramientas.
 * 2) ** Entorno de Desarrollo de Aplicaciones. ** Debe elegirse después de la plataforma operativa. Aunque es conveniente evitar la proliferación de herramientas de desarrollo, se garantizará que el enlace entre éstas y el middleware no sea excesivamente rígido. Será posible utilizar diferentes herramientas para desarrollar partes de una aplicación. Un entorno de aplicación incrementa, debe posibilitar la coexistencia de procesos cliente y servidor desarrollados con distintos lenguajes de programación y/o herramientas, así como utilizar distintas tecnologías (por ejemplo, lenguaje procedural, lenguaje orientado a objetos, multimedia), y que han sido puestas en explotación en distintos momentos del tiempo.
 * 3) ** Gestión de Sistemas. ** Estas funciones aumentan considerablemente el costo de una solución, pero no se pueden evitar. Siempre deben adaptarse a las necesidades de la organización, y al decidir la plataforma operativa y el entorno de desarrollo, es decir, en las primeras fases de la definición de la solución.

__//** TIPOS DE SERVIDORES **//__

 * Plataformas de Servidor (// Server Platforms //): ** Un término usado a menudo como sinónimo de sistema operativo, la plataforma es el hardware o software subyacentes para un sistema, es decir, el motor que dirige el servidor.

** Servidores de Aplicaciones (// Application Servers //): ** Designados a veces como un tipo de // middleware // (software que conecta dos aplicaciones), los servidores de aplicaciones ocupan una gran parte del territorio entre los servidores de bases de datos y el usuario, y a menudo los conectan.

** Servidores de Audio/Video (// Audio/Video Servers //): ** Los servidores de Audio/Video añaden capacidades multimedia a los sitios web permitiéndoles mostrar contenido multimedia en forma de flujo continuo (// streaming //) desde el servidor.

** Servidores de Chat (// Chat Servers //): ** Los servidores de chat permiten intercambiar información a una gran cantidad de usuarios ofreciendo la posibilidad de llevar a cabo discusiones en tiempo real.

** Servidores de Fax (// Fax Servers //): ** Un servidor de fax es una solución ideal para organizaciones que tratan de reducir el uso del teléfono pero necesitan enviar documentos por fax.

** Servidores FTP (// FTP Servers //): ** Uno de los servicios más antiguos de internet,File Transfer Protocolo permite mover uno o más archivos con seguridad entre distintos ordenadores proporcionando seguridad y organización de los archivos así como control de la transferencia.

** Servidores Groupware (// Groupware Servers //): ** Un servidor gr oupware es un software diseñado para permitir colaborar a los usuarios, sin importar la localización, vía internet o vía Intranet corporativo y trabajar juntos en una atmósfera virtual.

** Servidores IRC (// IRC Servers //): ** Otra opción para usuarios que buscan la discusión en tiempo real, Internet Relay Chat consiste en varias redes de servidores separadas que permiten que los usuarios conecten el uno al otro vía una red IRC.

** Servidores de Listas (// List Servers //): ** Los servidores de listas ofrecen una manera mejor de manejar listas de correo electrónico, bien sean discusiones interactivas abiertas al público o listas unidireccionales de anuncios, boletines de noticias o publicidad.

** Servidores de Correo (// Mail Servers //): ** Casi tan ubicuos y cruciales como los servidores web, los servidores de correo mueven y almacenan el correo electrónico a través de las redes corporativas (vía LANs y WANs) y a través de internet

** Servidores de Noticias (// News Servers //): ** Los servidores de noticias actúan como fuente de distribución y entrega para los millares de grupos de noticias públicos actualmente accesibles a través de la red de noticias USENET.

** Servidores Proxy (// Proxy Servers //): ** Los servidores proxy se sitúan entre un programa del cliente (típicamente un navegador) y un servidor externo (típicamente otro servidor web) para filtrar peticiones, mejorar el funcionamiento y compartir conexiones.

** Servidores Telnet (// Telnet Servers //): ** Un servidor telnet permite a los usuarios entrar en un ordenador huésped y realizar tareas como si estuviera trabajando directamente en ese ordenador.

__//** COPIAS DE RESPALDO **//__
Hacer ** copia de respaldo ** de un sistema es la única manera de poder repararlo si sufre un daño severo, si borra por accidente algunos archivos importantes del sistema, o si alguien irrumpe en su sistema y borra intencionalmente algunos archivos. También debería hacer copia de respaldo de sus datos personales (audio comprimido, imágenes, documentos de oficina, correo-e, libreta de direcciones, etc.) para estar seguro.

__//** SEGURIDAD **//__
Una **copia de seguridad** o **backup** en tecnología de la información o informática es una copia de seguridad - o el proceso de copia de seguridad - cuya finalidad de estas copias adicionales pueden utilizarse para restaurar el original después de una eventual pérdida de datos. El verbo es copia de seguridad en dos palabras, mientras que el sustantivo es respaldo (a menudo utilizado como un adjetivo en nombres compuestos). También se emplea el término a veces como un eufemismo para denominar a cualquier archivo copiado sin autorización. Fundamentalmente son útiles para dos cosas. Primero, recuperarse de una catástrofe informática. en segundo lugar recuperar una pequeña cantidad de archivos que pueden haberse eliminado accidentalmente o corrompido. La pérdida de datos es muy común: El 66% de los usuarios de internet han sufrido una seria perdida de datos.

__ **CONCEPTO DE ARQUITECTURA CLIENTE SERVIDOR ** __ La tecnología Cliente/Servidor es el procesamiento cooperativo de la información por medio de un conjunto de procesadores, en el cual múltiples clientes, distribuidos geográficamente, solicitan requerimientos a uno o más servidores centrales. Desde el punto de vista funcional, se puede definir la computación Cliente/Servidor como una arquitectura distribuida que permite a los usuarios finales obtener acceso a la información de forma transparente aún en entornos multiplataforma. Se trata pues, de la arquitectura más extendida en la realización de Sistemas Distribuidos.

VENTAJAS INCONVENIENTES
 * se basa en la existencia de dos tipos de aplicaciones ejecutándose de forma independiente.
 * una de las aplicaciones actúan como servidora y otra como cliente
 * fácil de escalar
 * reparto de cargas
 * nuevas aplicaciones
 * importancia de las comunicaciones



ARQUITECTURA DE DOS CAPAS
Consiste en una capa de presentación y logica de la aplicación, gestiona el almacenamiento y puede almacenar parte de la loogica (procedimientos almacenados, triggers).



ARQUITECTURA DE TRES CAPAS
agrega una capa intermedia (middle tier) que permite priorizacion y gestiona de periciones, gestion de balance, entre otros. buen manejo de concurrencia con miles de usuarios simultaneos. protocolos estandarizados permiten gran flexibilidad, portadora y escalabilidad.



**MIDDLEWARE **

Capa de software intermedio entre el cliente y el servidor. Es la capa de software que nos permiten gestionar los mecanismos de comunicaciones. Ejemplo si se hace la petición de una página web desde un browser en el cliente, el middleware determina la ubicación y envía una petición para dicha página. El servidor Web, interpreta la petición y envía la página al software intermedio, quien la dirige al navegador de la máquina cliente que la solicitó.

**ESCALABILIDAD HORIZONTAL Y VERTICAL **

El concepto de escalabilidad tanto horizontal como vertical es aplicable a cualquier sistema Cliente/Servidor.  Escalar en horizontal aprovecha el ahorro que supone utilizar el hardware de PC activo para distribuir la carga de procesamiento en más de un servidor. Aunque el escalado en horizontal se logra utilizando muchos equipos, la colección funciona esencialmente como un único equipo. Al dedicar varios equipos a una tarea común, mejora la tolerancia de errores de la aplicación. Por supuesto, desde el punto de vista del administrador, escalar en horizontal presenta un desafío mayor de administración debido al mayor número de equipos. **La escalabilidad vertical ** permite mejorar las características del servidor o agregar múltiples servidores ====**El escalado en vertical ** es el término que más se utiliza para lograr escalabilidad utilizando software mejor, más rápido y más caro. El escalado incluye agregar más memoria, más procesadores o procesadores más rápidos o, simplemente, migrar la aplicación a un único equipo más potente. Normalmente, este método permite un aumento en la capacidad sin requerir cambios en el código fuente. Desde el punto de vista administrativo, las cosas permanecen igual puesto que sigue habiendo un único equipo que administrar. ====
 * La escalabilidad horizontal permite agregar más estaciones de trabajo activas sin afectar significativamente el rendimiento.

**Front-end y back-end **
==== En el diseño de __software __, front-end es la parte de un sistema de __<span style="color: black; font-family: Arial,sans-serif;">software __ <span style="color: black; font-family: Arial,sans-serif;"> que interactúa directamente con el usuario; mientras que back-end comprende los componentes que procesan la __<span style="color: black; font-family: Arial,sans-serif;">salida __ <span style="color: black; font-family: Arial,sans-serif;"> del front-end. La separación de los sistemas de __<span style="color: black; font-family: Arial,sans-serif;">software __ <span style="font-family: Arial,sans-serif;"> en "front-end" y "back-end", es una abstracción que sirve para mantener separadas las diferentes partes de un sistema ====

==== <span style="font-family: Arial,sans-serif;">En compiladores, el front-end traduce el código fuente en una representación intermedia, y el back-end trabaja con la representación interna para producir código en un lenguaje maquina <span style="font-family: Arial,sans-serif;"> El back-end generalmente optimiza para producir código que se ejecute rápido. ====