La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Indice Programacion cliente servidor Arquitectura Cliente-servidor

Presentaciones similares


Presentación del tema: "Indice Programacion cliente servidor Arquitectura Cliente-servidor"— Transcripción de la presentación:

1 Indice Programacion cliente servidor Arquitectura Cliente-servidor
Definicion de socket Ejemplo C/S Servlets Ejemplo Servlets Arquitectura C/S de 3 capas Comunicaciones - Java

2 Java Programación Cliente-Servidor
Internet es un sistema Cliente-Servidor gigante La idea primaria es que debe haber un sitio donde descargar la información bajo demanda de los clientes Aquí surge el problema de Internet, cuando hay un solo servidor que atiende a muchos clientes, si se produce un cambio que deba distribuir, El rendimiento general del sistema decrece exponencial al aumento del número de clientes Comunicaciones - Java

3 Programación Cliente-Servidor(II)
El funcionamiento del Web sigue este mismo principio El navegador fue el primer paso adelante en la expansión de Internet, permite visualizar un mismo fichero en plataformas diferentes Por contra la interactividad con el usuario, y la posibilidad de ejecutar programas en la parte del usuario, esta muy limitada Se proporcionó al lenguaje HTML de botones de entrada de datos, cajas de selección, etc, pero cuando habían muchos clientes colgando, el colapso del servidor era casi seguro Surgen otras alternativas como los CGI, para descargar al servidor y que el cliente tambien hiciese algo Comunicaciones - Java

4 El Modelo Cliente - Servidor
Arquitectura de sistema distribuido - Clientes: que dan acceso a usuarios a los servicios - Servidores: contienen información, servicios, ... Cliente y Servidor son roles en una aplicación - Una máquina puede ser cliente en un servicio y servidor en otro Muy extendido en programación distribuida - Utilizando el interfaz de sockets Comunicaciones - Java

5 Arquitectura Cliente-Servidor
Aplicaciones modulares, distribuidas y personalizadas. Java permite la extensión más potente de servidores de aplicaciones ¿Cómo?. Cuando se accede a un applet de otro ordenador, el navegador carga la clase principal y va cargando dinámicamente el resto de clases a medida que son necesarias Si alguna clase ya reside en la memoria local, no debera cargarla, incrementa el rendimiento Comunicaciones - Java

6 Arquitectura Cliente-Servidor(II)
Gracias a su rigurosa concepción de orientación a objetos, es muy fácil programar aplicaciones modulares Las funciones que deben ser accedidas por un usuario pueden programarse con applets Basta instalar los distintos “módulos” de la aplicación, en un único servidor Los usuarios acceden a las aplicaciones a través de su navegador, personalizarlos y tener interfaces familiares El uso del web en los últimos años perite reducir en forma considerable el proceso de aprendizaje y formación en la aplicación Comunicaciones - Java

7 Arquitectura Cliente-Servidor Ventajas
Una aplicación de biblioteca se liberaría de la preocupación de instalar las aplicaciones localmente y de actualizar sucesivas versiones Los applets se distribuyen fácilmente por la www, las dificultades de trafico en una red no afectan la funcionalidad de estos, pues ocupan un tamaño no más de 10 o 20 Kb según aplicación. Como se dijo antes no es necesario cargar los applets enteros, y La facilidad de distribución tiene otra ventaja, como es el coste de la aplicación en cuanto a actualizaciones y la de asegurar que todos los clientes tienen la misma versión software Comunicaciones - Java

8 Arquitectura Cliente-Servidor Ventajas (II)
La independencia de Java con respecto a la plataforma permite que las aplicaciones, funcionen igual en todos los ordenadores El usuario sólo cargará la utilidad específica de la aplicación que necesite Toda la arquitectura que acabamos de explicar hace pensar que tan solo se necesita en el ordenador un navegador sin tener que usar ningún S.O. o configuración hardware preferente Comunicaciones - Java

9 Thin clients (Clientes delgados)
A esta arquitectura se le conoce como “thin clients” en contra de los fat clients (“Clientes gruesos”) que utilizan la mayor parte de aplicaciones de gestión Los fat clients necesitan trabajar con un S.O determinado, cantidad de Ram, capacidad de disco, etc.. En esta nueva arquitectura, es más fácil optimizar las presentaciones, ya que los thin clients requieren estaciones menos potentes Comunicaciones - Java

10 ¿Qué es un socket? Un socket es un punto final en un enlace de comunicación de dos vías entre dos programas que se ejecutan en la red. Las clases Socket son utilizadas para representar conexiones entre un programa cliente y otro programa servidor. El paquete java.net proporciona dos clases -- Socket y ServerSocket -- que implementan los lados del cliente y del servidor de una conexión, respectivamente Comunicaciones - Java

11 Ejemplo de cliente en Java
El programa EchoTest, conecta con el Echo del servidor(en el port7)mediante un socket. El cliente lee y escribe a través del socket Echotest envía todo el texto tecleado en su entrada estandar al Echo del servidor, El servidor repite todos los caracteres recibidos en su entrada desde el cliente de vuelta a través del socket al cliente Comunicaciones - Java

12 Ejemplo de cliente en Java (II)
Se esteblece la conexión del socket entre el cliente y el servidor y abre un canal de entrada y un canal de salida sobre el socket (Se crea el objeto socket) echoSocket = new Socket(“slabii", 7); os = new DataOutputStream(echoSocket.getOutputStream()); “Abre un canal de entrada el el socket” is = new DataInputStream(echoSocket.getInputStream()); “Abre un canal de salida el el socket” Comunicaciones - Java

13 Ejemplo de cliente en Java (III)
El codigo que sigue lee desde el stream de entrada estandar de EchoTest(donde el usuario teclea). Escribe inmediatamente la entada seguida por un carácter de nueva línea en el stream de salida conectado al socket. String userInput; while ((userInput = stdIn.readLine()) != null) { os.writeBytes(userInput); os.writeByte('\n'); System.out.println("echo: " + is.readLine());} La última línea del bucle while lee una línea de información desde el stream de entrada conectado al socket. El método readLine() se bloquea hasta que el servidor haya devuelto la información a EchoTest. Cuando readline() retorna, EchoTest imprime la información en la salida estandard. Comunicaciones - Java

14 Ejemplo de cliente en Java (IV)
Cuando el usuario teclea un carácter de fin de entrada, el bucle while termina y el programa continúa ejecutando las siguientes líneas de código: os.close(); is.close(); echoSocket.close(); Estas tres líneas de código cierran las streams de entrada y salida conectados al socket, y cierra la conexión del socket con el servidor. El orden es importante -- debe cerrar los streams conectados a un socket antes de cerrar éste. Comunicaciones - Java

15 Ejemplo de cliente en Java (V)
Cuando los clientes hablen con servidores más complicados como un servidor http, el cliente también será más complicado. Si embargo, las cosas básicas son las que has visto en este programa: 1. Abrir un socket. 2. Abrir un stream de entrada y otro de salida hacia el socket. 3. Leer y escribir a través del socket de acuerdo al protocolo del servidor. 4.  Cerrar los Streams. 5.  Cerrar el socket. Sólo el paso 3 será diferente de un cliente a otro, dependiendo del servidor.Los otros pasos permanecen inalterables. Comunicaciones - Java

16 Servlets Servidor Web Equipo cliente
Programa en JAVA que se ejecuta en el marco de un servicio de red, como por ejemplo un servidor web, y que recibe y responde a las peticiones de un cliente. Los clientes pueden invocarlo utilizando el protocolo HTTP Servidor Web Equipo cliente Peticion HTTP Explorador Servlet Respuesta HTTP Comunicaciones - Java

17 Servlets (II) Caracteristicas
Puede comunicarse con otro sevlet para ayudarle en su trabajo, o bien facilitar el acceso a bases de datos Son seguros y portables debido a que se ejecutan bajo la máquina virtual de Java, al mecanismo de excepciones y al uso del administrador de seguridad de java. Java proporciona el soporte necesario para escribir servlets a través del paquete javax.servlet Son independientes de la plataforma Son más rápidos que los programas CGI y que los scrips Comunicaciones - Java

18 Servlets. Ejemplo Un ejemplo sencillo consisté en una página HTML que contiene un campo de entrada con los correspondientes botones de Submit y Reset A pulsar sobre el botón Submit se producirá la ejecución del Servlet en el servidor, procesará la información recibida, y mostrará como resultado una página HTML con el texto introducido con anterioridad Comunicaciones - Java

19 Servlets. Ejemplo (II) El codigo html sería muy sencillo sólo destacar que en el action del form, indica la acción a desencadenar en el servidor al pulsar el botón Submit <html> <head> <title>Ejemplo "Mi Primer Servlet"</title> </head> <body> <form action=http://servidor:8080/servlet/MiPrimerServlet method=POST> <BR> <BR>Introduzca un texto en el cuadro y pulse "Submit"<BR> <input type=text name=TEXTO> <BR><input type=submit><input type=reset></form> </body> </html> Comunicaciones - Java

20 Servlets. Ejemplo (III)
Código Servlet. Destacar principalmente la utilización de los paquetes javax.servlet.* y javax.servlet.http.*, y la cláusula extends que define el programa como una extension de HttpServlet. El fichero que contiene el Servlet lo llamaremos MiPrimerServlet.java. // MiPrimerServlet.java import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class MiPrimerServlet extends HttpServlet { public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException PrintStream out = new PrintStream(res.getOutputStream()); res.setContentType("text/html"); String TEXTO = req.getParameter("TEXTO"); out.println("<p>Usted ha escrito : "+TEXTO+"</p>"); } Comunicaciones - Java

21 El ciclo de vida 1) Cuando el servidor carga el Servlet (solo lo carga ante la primera petición, después ya no hace falta), invoca el método init. Todas las peticiones que lleguen antes de que este método finalice su ejecución, habrán de esperar para ser atendidas. 2) Una vez finalizada la ejecución del método init, todas las peticiones son atendidas por el método service. Normalmente el servidor puede manejar varias peticiones simultáneamente y asigna un hilo propio a cada petición. 3) Cuando el servidor quiere descargar el Servlet invoca el método destroy. Comunicaciones - Java

22 El API de los Servlets El API utilizado para la programación de Servlets incluye dos paquetes El paquete javax.servlet, define la interfaz Servlet y su implementación GenericServlet. Es esta la interfaz que define los métodos del Ciclo de Vida. También destacan las interfaces ServletRequest y ServletResponse, que definen la mecánica de las peticiones y las respuestas. El paquete javax.servlet.http, que es una especialización del paquete anterior para su utilización con el protocolo http. Este paquete define la clase HttpServlet que es una extensión de GenericServlet. Asimismo incluye las interfaces HttpServletRequest y HttpServletResponse, que son extensiones de ServletRequest y ServletResponse respectivamente. Comunicaciones - Java

23 Servlets & JDBC La clave del éxito de las mejores páginas Web, reside en la presentación de la información, de forma interactiva, práctica y atractiva. La interactividad en la presentación de la información, se basa en la consulta de bases de datos por parte de un software, que hace de intermediario entre el cliente y el sistema que almacena la información. A las aplicaciones cliente-servidor que utilizan este tipo de arquitectura, se las denomina aplicaciones de tres capas. Comunicaciones - Java

24 Arquitectura Cliente-Servidor de tres capas
En una aplicación cliente-servidor de tres capas, el software intermediario hace de puente entre la parte cliente y el servidor de base de datos que posee la información Por un lado tendríamos una maquina en la que un browser ejecuta un Applet ó muestra un formulario HTML. Por el otro tendríamos una máquina servidora, en la que un software servidor de Web, recibe las peticiones de los clientes, y desencadena la ejecución del Servlet. Este Servlet trabajaría con una base de datos alojada en otro servidor dedicado en exclusiva a esta función. Comunicaciones - Java

25 JDBC JDBC son las siglas de Java Database Connection, y se trata de una API JAVA que proporciona una interfaz similar a ODBC para trabajar con bases de datos SQL. JDBC se basa en el X/Open SQL CLI, al igual que el ODBC de Microsoft JDBC no es un lenguaje de interrogación, sino que simplemente es una interfaz basada en JAVA para trabajar con SQL. Las aplicaciones pueden utilizar JDBC, por ejemplo, para someter sentencias SQL a un sistema gestor de bases de datos. JDBC se encarga de gestionar aspectos tales como conexiones a bases de datos, recuperación de resultados de las interrogaciones, transacciones, conversiones de tipos SQL a tipos JAVA y viceversa Comunicaciones - Java


Descargar ppt "Indice Programacion cliente servidor Arquitectura Cliente-servidor"

Presentaciones similares


Anuncios Google