Programación web © Copyright Víctor ROBLES FORCADA Francisco M. SÁNCHEZ MORENO
22/10/2007Diseño de Aplicaciones Web Índice Páginas estáticas y dinámicas Arquitectura de aplicaciones Web Tecnologías Web
22/10/2007Diseño de Aplicaciones Web Páginas estáticas y dinámicas
22/10/2007Diseño de Aplicaciones Web Páginas estáticas Servidor Web de … … GET “ GET “ Logo.gif Index.html
22/10/2007Diseño de Aplicaciones Web HTTP Hypertext Transfer Protocol (HTTP) Protocolo Petición/Respuesta Entre clientes y servidores Usa puerto 80 por defecto HTTP 1.1 creado en Junio de 1999 por W3C (world wide web consortium) IETF (Internet Engineering Task Force) 8 métodos o verbos para hacer peticiones: HEAD, GET, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT
22/10/2007Diseño de Aplicaciones Web Páginas dinámicas Servidor Web de GET “…&Submit=Go” BD Sdfgdfg dfg Dsf gsdfg sdfg Dsfg dsfg sdfg Dfg Sdfgdfg dfg Dsf gsdfg sdfg Dsfg dsfg sdfg Dfg Sdfgdfg dfg Dsf gsdfg sdfg Dsfg dsfg sdfg Dfg + Plantillas Lógica de negocio Respuesta dinámica
22/10/2007Diseño de Aplicaciones Web CGI Common Gateway Interface Nace en 1993 Rob McCool, John Franks, Ari Luotonen, George Phillips and Tony Sanders Manera de ejecutar programas de forma remota El CGI es un programa compilado o interpretado que se ejecuta en el servidor bajo demanda del cliente Problema de sobrecarga en el servidor A partir del CGI nacen otras tecnologías
22/10/2007Diseño de Aplicaciones Web Algunos problemas... Scripts de cliente (Java script, VB script)Alto trasiego de conexiones SoluciónProblema Applets Java, ActiveX, DHTMLInterfaz insuficientemente atractivo y dinámico Uso exclusivo de Applets Java y Java ScriptEjecución de código “desconocido” en cliente Scripts de servidor (ASP, JSP, PHP, ASP.NET)Necesidad de simplificar los procesos de generación dinámica de respuestas
22/10/2007Diseño de Aplicaciones Web Javascript I Historia Lenguaje interpretado de ejecución en el cliente Inventado diciembre de 1995 por Brendan Eich en la empresa Netscape Communications Apareció por primera vez en Netscape Navigator 2.0 En junio de 1997 fue adoptado como estándar ECMA (European Computer Manufacturers' Association) JScript es la implementación de ECMAScript de Microsoft, muy similar, pero incompatible W3C crea estándar DOM (Documen Object Model)
22/10/2007Diseño de Aplicaciones Web Javascript II Sintáxis Similar a lenguajes Java y C Programación basada en prototipos Programación orientada a objetos Sin clases ni herencia Inclusión en HTML // código JavaScript Archivo externo
22/10/2007Diseño de Aplicaciones Web VBScript Similar al JavaScript Lenguaje de MS. No es ningun estándar Lenguaje interpretado basado en VB Puede ser usado en el cliente o en el servidor Curva de aprendizaje rápida Problemas de seguridad Usado por el famoso gusano “I love you”
22/10/2007Diseño de Aplicaciones Web Arquitectura de aplicaciones Web
22/10/2007Diseño de Aplicaciones Web Aplicaciones por capas Número de capas: cantidad de capas que atraviesa la información desde la capa de datos hasta la de presentación Cada capa suele ejecutar en un sistema diferente o en espacios de proceso diferentes dentro de la misma máquina
22/10/2007Diseño de Aplicaciones Web Modelo de 2 capas Base de datos. Lógica de negocio: rutinas SQL Interfaz de usuario con lógica de negocio
22/10/2007Diseño de Aplicaciones Web Modelo de 3 capas Servicios de usuario Interfaz de usuario Servicios de trabajoServicios de datos Lógica de negocio Datos
22/10/2007Diseño de Aplicaciones Web Modelo de 3 capas (II) Capa de servicios de presentación: Recoger información del usuario Enviar esta información a capa de trabajo Recoger resultados de capa de trabajo Presentar los resultados al usuario Capa de servicios de trabajo Recibir información de capa de información Interactuar con los servicios de datos para realizar la lógica de negocio de la aplicación Enviar resultados a capa de presentación.
22/10/2007Diseño de Aplicaciones Web Modelo de 3 capas (III) Capa de servicios de datos Almacenar datos Recibir datos Mantenimiento de los datos Integridad de los datos
22/10/2007Diseño de Aplicaciones Web Modelo Web de 3 capas
22/10/2007Diseño de Aplicaciones Web Modelo vista controlador Patrón de arquitectura software Trygve Reenskaug (1979) Modelo Representación de la información (BD) Vista Representa el modelo para interactuar con él Control Responde a eventos Ejemplo en
22/10/2007Diseño de Aplicaciones Web MVC II - Flujo de la información: 1. El usuario interactua con la interfaz de usuario (i.e. Pulsa un botón) 2.El controlador gestiona el evento 3.El controlador accede al model (R/W) 4.La vista obtiene sus datos directamente del modelo, repintando la página. El controlador no pasa información a la vista pero puede dar la orden de que se actualice 5.La interfaz de usuario espera nuevas interacciones del usuario
22/10/2007Diseño de Aplicaciones Web
22/10/2007Diseño de Aplicaciones Web Aplicaciones Web hoy Cliente Browser Cliente Browser HTTP Máquina Servidora Cliente No Browser Cliente No Browser Servicios Soportados DBMS Lógica de negocio Servidor Web DBMS Protocolo de objetos Aplicaciones existentes
22/10/2007Diseño de Aplicaciones Web Servidor de Aplicaciones Arquitecturas que proporcionan servicios a las aplicaciones tales como persistencia, transacciones, seguridad, escalabilidad... Beneficios; Centralización disminución complejidad del desarrollo SA privativos J2EE (SUN), WebSphere (IBM), Oracle Aplication Server y Weblogic (BEA) SA libres ( compatibles J2EE) JONAS (INRIA, Bull, France telecom JBOSS
22/10/2007Diseño de Aplicaciones Web Java 2 Enterprise Edition Cliente Browser Cliente Browser HTTP EJB DBMS Aplicaciones EJB Servidor Web DBMS CORBA Páginas JSP JDBC DBMS Herramientas JSP Herra-mientas Java JDBC Java ServletsJDBC Cliente Pesado Cliente Pesado
22/10/2007Diseño de Aplicaciones Web J2EE Es una especificación que proporciona un estándar para los servidores de apliaciones Java. Por tanto: No es una plataforma propietaria Diversas implementaciones Existe test de compatibilidad (CTS)
22/10/2007Diseño de Aplicaciones Web Entorno J2EE Obligación de cuatro componentes de aplicación: Existen clientes pesados Java que acceden al servidor usando RMI Applets Servlets y JSP Enterprise Java Beans (EJB): componentes que ejecutan dentro de un contenedor en el servidor.
22/10/2007Diseño de Aplicaciones Web Entorno J2EE (II) Además: Contenedores: cada componente vive dentro de un contenedor que proporciona servicios en tiempo de ejecución. Bases de datos con JDBC. JTA: Java Transaction API. JavaMail. JNDI: Java Naming and Directory Interface. Interfaz de acceso a servicios de directorio como DNS o LDAP.
22/10/2007Diseño de Aplicaciones Web Servidores J2EE BEA WebLogic Servidor de aplicaciones IBM WebSphere Servidor de aplicaciones Oracle Servidor de aplicaciones SilverStream Servidor de aplicaciones Sun iPlanet Servidor de aplicaciones Inprise Muchos más
22/10/2007Diseño de Aplicaciones Web Servidores en Internet
22/10/2007Diseño de Aplicaciones Web Sistemas Operativos
22/10/2007Diseño de Aplicaciones Web El mundo del browser HTML / DHTML / CSS Lenguajes de script: JavaScript / VBScript Applet Java / Active X
22/10/2007Diseño de Aplicaciones Web El mundo del servidor HTML / DHTML / XML ASP / JSP / PHP CGI ISAPI / NSAPI VBScript / JavaScript Servlets / Scriptlets COM / DCOM / COM+ / EJB ODBC / JDBC / OLE DB / ADO
22/10/2007Diseño de Aplicaciones Web Tecnologías Web
22/10/2007Diseño de Aplicaciones Web DHTML Manipular una página Web después de ser cargada en cliente Elementos y atributos de la página estilos y colores (CSS) posición de los elementos Programabilidad a través de DOM Manipular datos en el cliente DHTML Scriptlet: Crear un componente de un script y reutilizarlo en páginas con. IE 4.0
22/10/2007Diseño de Aplicaciones Web DHTML (II) Ventajas: Creación de interfaces de usuario interactivos Está basado en HTML Soporte directo en el Browser => rapidez Estándar abierto del W3C Inconvenientes: Netscape e Internet Explorer tienen diferentes implementaciones
22/10/2007Diseño de Aplicaciones Web Controles ActiveX Tienen sistema de seguridad para verificación del autor Desarrollados en cualquier lenguaje Puede acceder a los servicios del sistema, al registro, etc. Una vez en el cliente son rápidos Muy bueno para crear elementos visuales
22/10/2007Diseño de Aplicaciones Web Controles ActiveX (II) Ventajas: Gran integración con herramientas y aplicaciones Win32 Estos controles pueden ser utilizados en otro tipo de aplicaciones Se pueden comprar controles Inconvenientes: Sólo disponibles en plataformas Win32 y Macintosh (no Win3.1 o UNIX) No ejecutan en un área protegida ¿En quién puedes confiar?
22/10/2007Diseño de Aplicaciones Web Applets de Java Programas descargados de la Web y que ejecutan en el navegador Para ser ejecutados necesitan JVM Proporcionan componentes para interfaces de usuario Tienen restricciones para ser más seguros. Write once, run everywhere
22/10/2007Diseño de Aplicaciones Web Applets de Java (II) Ventajas: Lenguaje versátil Simple de usar Son seguros Inconvenientes: Mal soporte para Win3.1 y MAC Cuidado con el tamaño Son usados sólo en el 1% de las páginas
22/10/2007Diseño de Aplicaciones Web Lenguajes de script en cliente: JavaScript y VBScript VBScript sólo para Internet Explorer JavaScript ampliamente utilizado Cada navegador tiene sus propias extensiones Muy usados para realización de cálculos y validación de formularios
22/10/2007Diseño de Aplicaciones Web Construyendo aplicaciones Web Servidor Web C GI Aplicación CGI HTTP ISAPI / NSAPI ASP/JSP/PHP Compon entes Servlets de Java
22/10/2007Diseño de Aplicaciones Web CGI Siguen el estándar Common Gateway Interface Se pueden desarrollar con cualquier lenguaje Por aspectos de seguridad se almacenan en directorios específicos del servidor
22/10/2007Diseño de Aplicaciones Web CGI (II) Ventajas Cualquier lenguaje de programación Son muy estables y están altamente extendidos Todas las plataformas Inconvenientes Crean un nuevo proceso por cada petición de cliente Ojo con el uso de ejecutables en servidor En general son lentos y más todavía en IIS
22/10/2007Diseño de Aplicaciones Web Servlets de Java Es código Java que ejecuta en un servidor de aplicación Están diseñados como el sustituto Java de los CGIs Ofrecen independencia de la plataforma Ejecutan dentro de un “contenedor servlet” Requisitos: El servidor debe tener una JVM El servidor debe soportar la API de los servlets Java.
22/10/2007Diseño de Aplicaciones Web Ciclo de vida de un Servlet En primera invoación se carga en memoria. Proceso init() – Hot Servlet Permanece en memoria hasta que se apaga el servidor. Servlets que se cargan inicialmente. Cold Servlets. Se descargan después de responder al cliente.
22/10/2007Diseño de Aplicaciones Web CGIs vs Servlets Portabilidad de los servlets. Rendimiento: El servlet se ejecuta solamente la primera vez que es llamado Permanece en memoria una vez cargado Puede compartir información entre varias llamadas de clientes. Los servlets son multithread. Se crea un nuevo thread para cada petición Los servlets son modulares y pueden comunicarse entre ellos
22/10/2007Diseño de Aplicaciones Web CGIs vs Servlets (II) Abren y cierran la conexión con la base de datos en cada petición. Al activar un servlet puede pedir varias conexiones a la base de datos en el proceso init() y las tiene en un pool de conexiones. Límite de tiempo 8 horas.
22/10/2007Diseño de Aplicaciones Web Conexiones permanentes con BD
22/10/2007Diseño de Aplicaciones Web ASP/JSP/PHP Una petición de acceso a un URL hace que el servidor web ejecute un script del servidor Este script manda información de retorno al servidor web El servidor web manda esta información al cliente Los script de servidor son: Más sencillos que los Java servlets o ISAPI Muy populares JSP se convierte en servlet en la primera petición.
22/10/2007Diseño de Aplicaciones Web Funcionamiento de ASP IIS <HTML><TITLE>Ejemplo</TITLE><BODY> Un ejemplo de ASP Un ejemplo de ASP <% response.write " " response.write " " response.write "Hola!" response.write "Hola!" response.write " ” response.write " ”%></BODY></HTML> ejemplo.asp 4) El Browser muestra el HTML Browser 2) El servidor Web lee HTML y ejecuta script 3) HTML resultante es enviado al browser a través de HTTP <HTML><TITLE>Ejemplo</TITLE><BODY> Un ejemplo de ASP Un ejemplo de ASP <HR>Hola!<HR></BODY></HTML> 1) Petición de URL a través de HTTP
22/10/2007Diseño de Aplicaciones Web ASP vs JSP ODBC, JDBCODBC, OLEDB, ADOPosibilidad de integrar orígenes de datos Java, JavaScriptVBScript, JScript, PerlLenguajes de programación admitidos Seguridad inherente a JavaBasada en seguridad de NTSeguridad contra fallos de sistema Componentes BeanComponentes COMComponentes reusables Solaris,Windows,Linux...WindowsPlataformas Apache, Netscape, IIS...Sólo IISServidores JSPASPCaracterística
22/10/2007Diseño de Aplicaciones Web PHP PHP - Professional Home Page Rasmus Lerdorf Puede ejecutar como módulo de apache o como CGI. Junto con apache y MySQL es una opción muy utilizada. Características: Muy rápido Buena conectividad con bases de datos !OJO! Las peticiones son encaminadas a procesos hijo Conexiones a la BD persistentes y compartidas entre procesos hijo.
22/10/2007Diseño de Aplicaciones Web Lo más utilizado Altavista búsquedas del tipo link:*.xxx ASP: JSP: PHP: