Download Diapositiva 1

Document related concepts
no text concepts found
Transcript
Tecnologías para el desarrollo de
aplicaciones Web
Bárbara Espinoza
Luis Useche
Edwin Guilbert
Ezequiel Zamora
Jean Carlos Meninno
Contenido







Arquitecturas Cliente/Servidor
Protocolo HTTP
CGI
Applets
Servlets
JSP
Otros lenguajes
El Modelo Cliente/Servidor
 Dividido en 3 capas fundamentales
 Interfaz de usuario: recibe las peticiones
del usuario y generalmente está ubicada
del lado del cliente
 Procesamiento: cómputo y
procesamiento lógico de la petición del
cliente
 Datos: engloba todos los datos,
generalmente consta de una base de
datos
El Modelo Cliente/Servidor
Arquitecturas Cliente/Servidor
Verticales
Mucha responsabilidad
del cliente.
Servidor muy
cargado.
Arquitecturas Cliente/Servidor
Horizontales
HTTP




Hypertext Transfer Protocol
Opera al nivel de aplicación OSI sobre TCP
Usado en Internet desde 1990
Funcionamiento:
 Luego de resolver el nombre del servidor, el
cliente inicia una conexión TCP a la dirección del
servidor (usualmente puerto 80)
 Al establecerse la conexión el cliente envía la
petición HTTP y espera por la respuesta
 El servidor recibe la petición, genera la
respuesta, la envía al cliente y cierra la conexión
Características HTTP
 La versión actualmente utilizada es la 1.1:
 Protocolo sin estado
 Utiliza tipos de archivo al estilo MIME
(Multipurpose Internet Mail Extensions)
 Permite Virtual Hosts: Varios servidores
operando en un mismo host. Ejm:
 http://forums.example.com
 http://webmail.example.com
 Las peticiones más comunes de HTTP son
las GET y POST
CGI – Common Gateway Interface






Estándar para correr programas externos a un servidor
HTTP
Fue la primera tecnología de generación de contenido Web
dinámico
Los programas se escriben en cualquier lenguaje que
acepte argumentos de línea de comandos (preferiblemente
interpretado)
Por cada petición se crea un nuevo proceso en el sistema:
se consume tiempo y espacio en memoria
Las respuestas se envían por la salida estándar (incluyendo
HTML, encabezados HTTP, etc.)
Algunos servidores como Apache incluyen módulos para
optimizar los CGI:


FastCGI: crea una piscina de procesos para atender peticiones
Mod Perl: el interpretador de Perl se incluye como parte del
servidor
CGI
CGI
Ventajas
 Flexibilidad en el uso
de lenguajes
 Fácil acceso a
aplicaciones existentes
(gnuplot, nmap, ping,
etc)
 No hay problemas de
sincronización ni
exclusión mutua entre
peticiones de un
mismo programa CGI
Desventajas
 La responsabilidad del
diseño gráfico recae en
el programador
 Poco escalable, a
menos que se utilice
alguna optimización.
 Overhead por la
continua creación de
nuevos procesos
Applet
 Aplicación que corre a nivel del cliente, en
el contexto del navegador del usuario
 Permite crear interacción sin necesidad de
realizar comunicación con el servidor y en
consecuencia disminuir la carga del
servidor
 Es necesario trasladar al cliente el código
ejecutable, ocasionando retardos
 Requiere soporte por parte del navegador
HTTP Servlets
 A diferencia de los applets, que corren en los
navegadores, los HTTP Servlets corren en los
servidores
 Son la respuesta de la tecnología Java a la
programación con CGI
 Permiten a los clientes http interactuar con
aplicaciones y bases de datos
 A diferencia de los CGI, cada petición es manejada
por un nuevo hilo java, en vez de un proceso del
sistema operativo
 Lucen como programas en Java, de hecho son clases
de Java
 Proveen librerías y funcionalidades para el cómodo
manejo del protocolo HTTP
Funciones de un HTTP Servlet
 Leer los datos enviados por el cliente
 Leer los datos implícitos del HTTP
request enviado por el browser (HTTP
Info)
 Generar los resultados
 Enviar los datos al cliente
 Enviar los datos implícitos del HTTP
response
Funcionamiento de un HTTP Servlet
Atención de peticiones con HTTP
Servlets y Ciclo de Vida
¿Problemas para sincronizar hilos?
 Primitivas de sincronización de Java
 Implementando el SingleThreadModel
Servlets
Ventajas
 Eficientes en
comparación con los
CGI (hilo vs. proceso)
 Conveniente en el
manejo del protocolo
HTTP
 Muy portables
 Seguro al correr en el
contexto de una
máquina virtual Java
Desventajas
 Requiere compilación
luego de cada
modificación
 Requiere un servidor
Web con soporte para
servlets
 Al igual que los CGI no
separa la interfaz de la
lógica de aplicación
 Se debe ser cuidadoso
con la sincronización
de los hilos
JSP: JavaServer Pages
 Tecnología que permite incluir código java y
directivas predefinidas junto con en el
contenido estático (HTML/XML)
 Implementada sobre servlets: lo que se
puede hacer con JSP se puede hacer con
servlets
 Incluye directivas para el manejo de
errores/excepciones
 Permite indicar si el código desarrollado no
es a prueba de hilos y en consecuencia
utilizar el SingleThreadModel.
JSP: JavaServer Pages
 Permite incluir
encabezados HTTP en
cualquier parte del
código gracias a un
preprocesador
 Permite crear etiquetas
personalizadas (estilo
HTML) y manipular
ciertas clases (java
beans) mediante
etiquetas particulares.
<jsp:setProperty name=“clase”
property=“atributo” value=“valor"/>
Ciclo de Vida de las páginas JSP
 Se recibe un request de una página JSP.
 Un servlet especial chequea si el JSP ha
sido modificado luego de su última
traducción a servlet.
 En caso de modificación traduce la página
JSP a un servlet y la compila.
 Luego se sigue el ciclo de vida de los
servlets.
 Cabe destacar que una ventaja de las
páginas JSP sobre los servlets es que son
compiladas automáticamente.
JSP
Ventajas
 Permite la separación
de la capa de
presentación con la
lógica de aplicación.
 Separación de roles en
el equipo
desarrollador.
 Buen Desempeño.
 Ventajas de Java.
Desventajas
 En ocasiones es
preferible utilizar
directamente servlets
para optimizar código
 Se requiere un
servidor con soporte
para JSP/Servlets
Otros lenguajes
 ASP
 Utililiza VBScript o JScript entre otros.
 Dependiente de plataforma (Microsoft IIS)
 Server Side JavaScript
 Corre sobre servidor Netscape
 PHP
 Código Abierto
 Corre sobre los principales sistemas de operación
 Sintaxis estilo C
 Interpretado y dinámicamente tipado
 Realiza menos verificaciones que Java
 Buen soporte para acceso a bases de datos
 Muy popular su uso junto con Apache y MySQL
 Criticado por ser poco elegante.
Conclusiones
 Para cada caso puede resultar conveniente el uso de
una tecnología distinta, dependiendo de las
necesidades de desempeño, escalabilidad, facilidad de
desarrollo y seguridad
 Existen actualmente optimizaciones para el uso de
CGI y estos pueden resultar muy adecuados. (Ejm:
llamadas a aplicaciones existentes)
 Por lo general resulta ventajosa la separación de la
interfaz de la lógica de aplicación, por lo que se
prefieren lenguajes como JSP y PHP.
 En el caso de JSP es importante conocer Servlets para
comprender mejor su funcionamiento.
 En ocasiones se mezcla JSP y Servlets para mejorar
desempeño.
 Los applets pueden ser útiles para proveer una
interfaz interactiva, no viable con HTML puro.
¡Muchas Gracias!
Sesión de Preguntas
Referencias Bibliográficas
 Core Servlets and JavaServer Pages. Sun
Microsystems, 2001.
 More Servlets and JavaServer Pages. Sun
Microsystems, 2002.
 Java Servlet Programming. O’Reilly, 1998
 Web Development with JavaServer Pages, Manning,
2000.
 CGI Programming. O’Reilly, 1996.
 Teach Yourself Java in 21 days. Sams.net, 1996.
 www.thefreedictionary.com
 Internet Protocols Handbook. The Coriolis Group,
1996.