Índice Páginas estáticas y dinámicas Arquitectura de aplicaciones Web Tecnologías Web Programación web © Copyright 2001-2003 Víctor ROBLES FORCADA vrobles@fi.upm.es http://laurel.datsi.fi.upm.es/~ssoo/DSW/ 15/10/2001 Diseño de Servicios Web Páginas estáticas Páginas estáticas y dinámicas http://www.fi.upm.es <HTML> … <IMG src=“logo.gif”> … </HTML> GET “www.fi.upm.es” Index.html GET “www.fi.upm.es/logo.gif” Logo.gif Servidor Web de www.fi.upm.es 15/10/2001 Diseño de Servicios Web 15/10/2001 Páginas dinámicas http://search.unisys .com/search/default .asp?section=allse ctions&q1=http&Su bmit=Go Diseño de Servicios Web Algunos problemas... GET “…&Submit=Go” Problema Lógica de negocio Sdfgdfg dfg Dsf gsdfg sdfg Dsfg dsfg sdfg Sdfgdfg dfg Dfg Dsf gsdfg sdfg Dsfg dsfg sdfg Sdfgdfg dfg Dfg Dsf gsdfg sdfg Dsfg dsfg sdfg Dfg BD Plantillas Respuesta dinámica + Alto trasiego de conexiones Solución Scripts de cliente (Java script, VB script) Interfaz insuficientemente atractivo y Applets Java, ActiveX, DHTML dinámico Ejecución de código “desconocido” en Uso exclusivo de Applets Java y Java cliente Script Necesidad de simplificar los procesos de Scripts de servidor (ASP, JSP, PHP, generación dinámica de respuestas ASP.NET) Servidor Web de www.fi.upm.es 15/10/2001 Diseño de Servicios Web 15/10/2001 Diseño de Servicios Web 1 Aplicaciones por capas Arquitectura de aplicaciones Web 15/10/2001 Diseño de Servicios Web 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 15/10/2001 Modelo de 2 capas Diseño de Servicios Web Modelo de 3 capas Interfaz de usuario Lógica de negocio Datos Interfaz de usuario con lógica de negocio 15/10/2001 Servicios de usuario Servicios de trabajo Servicios de datos Base de datos. Lógica de negocio: rutinas SQL Diseño de Servicios Web 15/10/2001 Diseño de Servicios Web Modelo de 3 capas (II) Modelo de 3 capas (III) Capa de servicios de presentación: Capa de servicios de datos 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 Almacenar datos Recibir datos Mantenimiento de los datos Integridad de los datos 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. 15/10/2001 Diseño de Servicios Web 15/10/2001 Diseño de Servicios Web 2 Modelo Web de 3 capas Presentación Lógica de negocio Aplicaciones Web hoy Cliente Browser HTTP DBMS Navegador Servidor Web Lógica de negocio DBMS Servicios Soportados Servidor Web Máquina Servidora Cliente Protocolo de No objetos Browser Acceso a datos Aplicaciones existentes 15/10/2001 Diseño de Servicios Web 15/10/2001 Servidor de Aplicaciones Diseño de Servicios Web Windows DNA Cliente Browser Visual InterDev HTTP DBMS IIS Los servidores que proporcionan servicios a las aplicaciones tales como persistencia, transacciones, seguridad, escalabilidad... se denominan Servidores de Aplicaciones. Aplicaciones ASP ADO VB, VC++, VJ++ DBMS Aplicaciones COM+ ADO COM+ Cliente Pesado 15/10/2001 Diseño de Servicios Web 15/10/2001 Java 2 Enterprise Edition Cliente Browser Servidor Web Herramientas Java DBMS Páginas JSP Java Servlets JDBC DBMS Aplicaciones EJB EJB Cliente Pesado JDBC Windows 2000 Diseño de Servicios Web J2EE Herramientas JSP HTTP DBMS DCOM 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) JDBC DBMS CORBA 15/10/2001 Diseño de Servicios Web 15/10/2001 Diseño de Servicios Web 3 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. Entorno J2EE (II) Además: 15/10/2001 Diseño de Servicios Web Servidores J2EE 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. 15/10/2001 Diseño de Servicios Web Servidores en Internet 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 15/10/2001 Diseño de Servicios Web 15/10/2001 Diseño de Servicios Web Sistemas Operativos El mundo del browser HTML / DHTML / CSS Lenguajes de script: JavaScript / VBScript Applet Java / Active X 15/10/2001 Diseño de Servicios Web 15/10/2001 Diseño de Servicios Web 4 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 15/10/2001 Diseño de Servicios Web Tecnologías Web 15/10/2001 Diseño de Servicios Web DHTML (II) DHTML Ventajas: 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 <OBJECT>. IE 4.0 15/10/2001 Diseño de Servicios Web Controles ActiveX 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 15/10/2001 Diseño de Servicios Web Controles ActiveX (II) Ventajas: 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 15/10/2001 Diseño de Servicios Web 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? 15/10/2001 Diseño de Servicios Web 5 Applets de Java Applets de Java (II) 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 15/10/2001 Diseño de Servicios 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 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 15/10/2001 Diseño de Servicios Web Construyendo aplicaciones Web Servidor Web CGI Aplicación CGI HTTP ISAPI / NSAPI Componentes Servlets de Java ASP/JSP/PHP 15/10/2001 Diseño de Servicios Web 15/10/2001 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 CGI (II) Ventajas Diseño de Servicios Web Cualquier lenguaje de programación Son muy estables y están altamente extendidos Todas las plataformas Inconvenientes 15/10/2001 Diseño de Servicios Web 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 15/10/2001 Diseño de Servicios Web 6 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. 15/10/2001 Diseño de Servicios 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. 15/10/2001 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 15/10/2001 Diseño de Servicios Web Diseño de Servicios 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. 15/10/2001 Diseño de Servicios Web Conexiones permanentes con BD 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. 15/10/2001 Diseño de Servicios Web 15/10/2001 Diseño de Servicios Web 7 Funcionamiento de ASP ASP vs JSP 1) Petición de URL a través de HTTP IIS Browser 2) El servidor Web lee HTML y ejecuta script 4) El Browser muestra el HTML <HTML> <TITLE>Ejemplo</TITLE> <BODY> <H1>Un ejemplo de ASP</H1> <HR> Hola! <HR> </BODY> </HTML> 15/10/2001 <HTML> <TITLE>Ejemplo</TITLE> <BODY> <H1>Un ejemplo de ASP</H1> <% response.write "<HR>" response.write "Hola!" response.write "<HR>” %> </BODY> </HTML> ejemplo.asp 3) HTML resultante es enviado al browser a través de HTTP Diseño de Servicios Web Característica ASP JSP Servidores Sólo IIS Apache, Netscape, IIS ... Plataformas Windows Solaris,Windows,Linux... Componentes reusables Componentes COM Basada en seguridad de Seguridad inherente a NT Java Lenguajes de programación admitidos VBScript, JScript, Perl Java, JavaScript Posibilidad de integrar orígenes de datos ODBC, OLEDB, ADO ODBC, JDBC 15/10/2001 PHP PHP - Professional Home Page. 1994 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: Componentes Bean Seguridad contra fallos de sistema Diseño de Servicios Web Lo más utilizado Altavista búsquedas del tipo link:*.xxx ASP: 37.271.877 JSP: 3.922.317 PHP: 7.221.479 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. 15/10/2001 Diseño de Servicios Web 15/10/2001 Diseño de Servicios Web 8