Tecnologías y Arquitecturas Web Marcos López Sanz
Índice • Introducción • Tecnologías Cliente – – – –
Navegadores Web Lenguaje HTML Lenguajes de Script Aplicaciones cliente
• Tecnologías Servidor – – – –
Servidores Web Lenguajes interpretados Tecnologías Java en el servidor Tecnologías Microsof
• Futuro de la Web – – – –
Web 2.0 AJAX RSS / Atom Servicios Web
• Referencias y bibliografía
Introducción • Arquitecturas Web:
– Objetivo: Comunicación Interacción Integración Colaboración – 2 capas: • Cliente • Servidor
– 3 capas:
• Cliente • Servidor Web/HTTP (lógica de negocio) • Servidor de Bases de Datos
– N-Capas:
• Seguridad, balanceo de carga, lógica de presentación, etc.
Introducciรณn โ ข
Arquitectura Web de 2 capas
Internet HTTP TCP IP
Protocolo HTTP • Protocolo HTTP INTERNET http://www.kybele.es/index.html
HTTP/1.1 200 OK GET /index.htm HTTP/1.1 Puerto: 80 Server IIS/5.1 User-Agent: Mozilla/5.0 IP: 193.147.71.251 Content-type: text/html Host: www.kybele.es Página: /index.html Accept: image/gif, image/jpeg, */* <HTML><HEAD>…
CLIENTE
HTTP/1.1 200 OK Server IIS/5.1 Content-type: text/html <HTML><HEAD>…
SERVIDOR
Tecnologías Cliente •
Navegador Web
– Aplicación sofware que permite al usuario recuperar y visualizar documentos de hipertexto, comúnmente descritos en HTML, desde servidores Web de todo el mundo a través de Internet – Componentes:m,lñkl – K`ñlkjh – Jhyh – Ijklok – Jkl – Iuol – Ipñ • • • • • •
Interfaz de usuario: barras de herramientas y de progreso, preferencias, impresión, gestión de descargas Motor del buscador: controla la navegación y carga URLs Motor de renderizado: encargado de la representación visual (HTML+imágenes) Persistencia de datos: cookies, cache, certificados, favoritos, posición de elementos del navegador (barras e iconos) Componente de visualización: comunicación con el sistema operativo (visualización) Comunicaciones: implementa los protocolos de comunicaciones (HTTP, FTP, GOPHER…) y tipos MIME
Tecnologías Cliente •
Navegador Web: Arquitectura genérica*
Interfaz de usuario Persistencia de datos Motor del Buscador Motor de Renderizado
Intérprete Javascript Comunicaciones
*: A. Grosskurth, A. Echihabi: A reference architecture for Web Browsers
Parser XML
Componente de visualización
Labrador
Isa
Navegador Web • Funcionalidad asociada – – – –
Administración de marcadores (‘favoritos’) Gestor de descargas Administrador de contraseñas y formularios Motor de búsqueda de contenidos en páginas Web
• Características de accesibilidad – – – – –
Navegación por pestañas Bloqueo de pop-up y publicidad Búsqueda incremental Zoom de página Edición/Visualización de código HTML
Navegador Web •
Tecnologías y estándares Web soportados – – – – –
•
Protocolos – – – – –
•
CSS /CSS2 Javascript XHTML / XSLT Java RSS / Atom
HTTP FTP SSL / SSH / TSL IRC Gopher
Soporte para tipos de archivos (tipos MIME) – JPG / GIF / PNG – PDF / DOC – Contenido multimedia embebido
Tecnologías Cliente • Lenguaje HTML (HyperText Markup Language)
– Es un lenguaje de descripción de documentos más que de programación – Lenguaje de marcas basado en etiquetas (tags) y atributos – Base del éxito de la WWW:
• Fácil de transmitir: basado en texto • Versátil: múltiples posibilidades a partir de un conjunto cerrado de etiquetas • Sencillo: creación de documentos = manejo de etiquetas • Interpretado: visualización en el lado del cliente
– Su estructura viene definida por una DTD:
• Transitional: define la estructura más flexible de HTML • Strict: prohíbe etiquetas de estilo se usan hojas de estilo (CSS) • Frameset: permite la existencia de ‘frames’ o marcos en páginas Web
Tecnologías Cliente • Lenguaje HTML (HyperText Markup Language) – Elementos • Etiquetas: – Estructurales: <p>texto afectado</p> – De presentación: <b>texto en negrita</b> – De hipertexto o de enlace: <a href=“www.kybele.es”>KYBELE</a>
• Atributos: propiedades de las etiquetas <td </td>
– Limitaciones • Tratamiento de información dinámica • Grupo de etiquetas cerrado • Escaso control sintáctico de los navegadores
width=“100”>…
Tecnologías Cliente • XHTML
– Se considera la evolución de HTML: aplicación de XML a HTML – Aparece por la necesidad de adaptar HTML a nuevos dispositivos que necesitan reglas más estrictas para ahorrar recursos de visualización – Ventajas: Ventajas • • • •
Compatibilidad con navegadores que entienden HTML Formato abierto para incluir nuevos estándares W3C Al estar basado en XML puede extenderse Mejora del rendimiento
– Inconvenientes: Inconvenientes
• Sintaxis más restrictiva que HTML • Obliga a conocer las normas de creación de documentos XML
Tecnologías Cliente •
XHTML vs. HTML
1. Los nombres de las etiquetas de elementos y de los atributos tienen que estar en minúscula. 2. Los valores de los atributos tienen que estar entre comillas dobles (") o simples ('). 3. Todos los elementos tienen que estar cerrados, ya tengan contenido (<p>...</p> ) o no (<br/> ). 4. Los elementos deben de estar correctamente anidados. 5. Los valores de pares atributo=valor iguales no pueden ser simplificados, • <dl compact='compact'> no se puede expresar como <dl compact>. 6. Algunos elementos son obligatorios (html, body, head, etc.) 7. Siempre debe incluirse una declaración de tipo de documento. • transitional: transitional descripción a base de etiquetas. Facilita el acceso a usuarios con navegadores sin posibilidades de tratamiento de CSS. • strict: strict se utiliza cuando se da formato a los textos a través de CSS ( • frameset: frameset se usa en documentos que incorporan frames. 8. Además existen ciertas incompatibilidades en el anidamiento de elementos, por ejemplo, <a> no puede contener otros elementos <a> .
Tecnologías Cliente • XML
– Deriva, junto con HTML de SGML (Standard General Markup Language), lenguaje de descripción de documentos – Características:
• Permite la representación de datos semi-estructurados (como HTML) • Se pueden especificar etiquetas personalizadas metalenguaje extensible • Favorece el intercambio de datos: – Etiquetas autodocumentadas – Formato no rígido – No contiene elementos para la visualización de los contenidos
• Soporta Unicode • Es ‘human-readable’ y ‘machine-readable’ simultáneamente
Tecnologías Cliente • XML
– Los documentos XML deben ser válidos y estar bien formados: • Bien formado: – – – –
Tener una única raíz Todos los elementos llevan etiquetas de apertura y cierre El anidamiento de elementos debe ser correcto Todos los valores de los atributos van entre comillas simples o dobles
• Válidos: Todo documento XML debe seguir un esquema determinado
• XML vs. HTML
– HTML fue ideado para mostrar visualmente la información – XML para el intercambio de datos
Tecnologías Cliente •
Procesamiento de XML – Métodos: • DOM (Document Object Model): – Interfaz de acceso (API) estándar a los elementos de un documento XML – Genera en memoria una representación jerárquica del documento XML – Los objetos del árbol representan elementos, atributos, contenido, etc.
• SAX (Simple API for XML): – Interfaz de acceso (API) secuencial a elementos XML – Acceso por medio de eventos (inicio/fin de etiqueta/atributo/contenido) – No genera árbol en memoria menos recursos = más rápido ejemplo <?xml version = "1.0" encoding = "UTF-8"?> <ejemplo número="1"> <profesor> <nombre>Marcos</nombre> <apellidos>López Sanz</apellidos> <universidad>URJC</universidad> </profesor> </ejemplo>
profesor
número 1
nombre
apellidos
universidad
Marcos
López Sanz
URJC
Tecnologías Cliente •
Procesamiento de XML: XSL (eXtensible Stylesheet Language):
– XSLT • Lenguaje para transformar documentos XML en XML/HTML • En Web se utiliza para dar formato visual a documentos XML/XHTML • Implementaciones en navegadores: – MSXML en Internet Explorer – TransforMiix en Firefox, Mozilla y Netscape
– XSL-FO: XSL-FO XSL- Formatting Objects • Permite obtener a partir de documentos XML, transformaciones XSLT y un “procesador FO” documentos en PDF, PostScript, SVG, etc. • No está ampliamente extendido (FOP de apache, PassiveTex) – XPath • Lenguaje no-XML para acceso a elementos a través de una “expresión que indica un camino” (path expression) • Camino: Secuencia de pasos para ir de un nodo XML (del árbol DOM) a otro • Componentes: – Axis: indica la dirección de navegación (//, @, .., etc.) “//a/@href” – Comprobación de nodo: text(), comment(), node(), *, etc – Predicados: funciones aplicables al nodo referenciado, entre [ y ] //a[@href='help.php']
Tecnologías Cliente • DHTML – Dynamic HTML
– No es una tecnología en sí misma – Conocido a partir de las versiones 4 de Netscape e Internet Explorer – Es una forma de denominar la creación de sitios Web dinámicos combinando: • Un lenguaje de marcado (HTML, XML) • La definición de estilos visuales mediante CSS • Un lenguaje de script del lado del cliente (Javascript) para manejo de objetos y eventos • El modelo de objetos de documentos (DOM) para páginas Web
– El desarrollo basado en DHTML es complejo debido a ciertas incompatibilidades entre Netscape y Microsof (principalmente)
Tecnologías Cliente • Hojas de estilo en cascada (CSS – Cascading Stylesheets) – – – –
Lenguaje utilizado para definir la presentación de un documento HTML o XML Define las propiedades de formato de los elementos HTML Se definieron con la idea de separar contenido de presentación Ventajas: • Control centralizado de los estilos de un sitio Web completo • Se puede definir una hoja de estilos diferente en función del dispositivo donde se muestre la página • Se reduce el tamaño del documento HTML manejabilidad, facilidad de actualización, etc.
– CSS 1: 1
•Propiedades de fuentes
•Propiedades de clasificación
–Propiedades de color y fondo
–Margen
–Visualización
–Propiedades de texto
–Borde
–Listas
–espaciado de palabras
–Relleno
–alineación
.
•Propiedades de tabla
Tecnologías Cliente • Lenguajes de script (Scripting languages) – Permiten: • Definir acciones para determinados eventos • Interactuar con el cliente a través del modelo de objetos de HTML (teclado, ratón, audio, etc.) • Usar temporizadores • Acceder a las cookies almacenadas en el cliente • Comprobar la integridad de los datos a enviar
– Los más extendidos implementan el estándar ECMA-262 – Ejemplos: • Javascript / Jscript / VBScript • Tcl/Tk
Tecnologías Cliente • JavaScript
– Desarrollado por Sun y Netscape en 1995 para interactuar con el modelo de objetos de una página Web – Usos: Usos • Agregar código HTML a una página de forma dinámica • Reaccionar ante eventos del usuario • Modificar el contenido o las propiedades de elementos HTML • Validar datos • Almacenar y recuperar información del cliente (cookies) • Realizar operaciones en función del navegador del cliente – Variantes • ECMAScript: ECMA-262, ISO/IEC 16262 Estándar • JScript: implementación de Microsof • VBscript: lenguaje de script con sintaxis de Visual Basic • JS OSA: lenguaje de script de Macintosh
Tecnologías Cliente • JavaScript
– Principios:
<html> <head> <script type="text/javascript">...</script> <html> </head> <head> <body> <script <script src="xxx.js"></script> type="text/javascript"> </head> <!<body> ... </body> //--> </html> </script> </body> </html>
• Inclusión en una página Web: – Embebido en la página – Como archivo externo
• Variables:
– “Case-sensitive” – Ámbito: locales / globales
• Lenguaje orientado a objetos
– Clases: String, Date, Array, Boolean, Math – HTML DOM Modelo de objetos Web
• Funciones:
– De alto nivel: eval(), insNaN(), parseInt(), String(), etc. – Personales: Se suelen lanzar asociadas a eventos de los elementos HTML
Tecnologías Cliente • Modelo de objetos para documentos Web
– Document Object Model (DOM): Estándar del W3C • Core DOM • XML DOM • HTML DOM
– HTML DOM: define un conjunto de objetos estándar para documentos HTML – Permite el acceso y la manipulación del contenido, estructura y estilo de un documento HTML – Considera la estructura de un documento HTML como un árbol en el que los nodos son los elementos, atributos y texto que forman un documento HTML – Es independiente de la plataforma y el lenguaje utilizado (JavaScript, VBScript). No es del todo independiente del navegador
TecnologĂas Cliente â&#x20AC;˘ Modelo de objetos para documentos Web
Tecnologías Cliente • Desventajas de los lenguajes de script – – – – –
No tienen una funcionalidad completa No pueden interactuar con el sistema operativo de forma completa No contempla aspectos como la programación multi-thread o Dificultad para depurar el código Presentan dificultados a la hora de trabajar con grandes conjuntos de datos
• Aplicaciones cliente – Incluidas en el código HTML como elementos <object> – El servidor envía al cliente el código que debe ejecutar – Admiten parámetros: • <param name="quality" value="high"> – Ejemplos: • Java en el lado del cliente: Applets • Componentes COM: Controles ActiveX • Tecnologías Adobe: Flash y ShockWave
Tecnologías Cliente •
Tecnología Java en el cliente – Applet: Applet aplicación Java que se ejecuta en la JVM instalada en el usuario – Sofware asociado (Sun): • JVM: Java Virtual Machine Entorno de ejecución de los programas Java • JRE: Java Runtime Edition – Componente que contiene la JVM y un conjunto de clases estándar para ejecutar código Java. – Al instalarlo se añade como plug-in al explorador Web
• Java Web Start tecnología de Sun que permite la ejecución de Java en el lado del cliente (no sólo en un navegador) – Características • La clase principal del applet extiende java.applet.Applet o javax.swing.JApplet
• Debe reescribir los métodos de la clase Applet
Tecnologías Cliente •
Tecnología Java en el cliente – Ventajas: • No dependen del navegador (como javascript) • Es más potente que los lenguajes de script (más completo) • Es independiente de la plataforma y de la JVM del plugin (puede usar cualquiera instalada en el cliente) • Se ejecuta en un “sandbox”: contenedor que crea el navegador cuando ejecuta código Java y que puede configurarse con diferentes políticas de seguridad: – Verificador de código – Cargador de la clase Applet – Gestor de seguridad
• Los applets pueden acceder al disco duro, pero para ello hay que otorgarles permisos (certificarlos) – Inconvenientes • Son más lentos que los lenguajes de script • No funciona hasta que la JVM esté cargada (afecta al rendimiento) • Es más complejo diseñar interfaces con Java que con HTML • Si no se controlan bien los aspectos de seguridad puede que el applet no funcione correctamente
Tecnologías Cliente • Tecnología ActiveX (1996): – Aplicación de la tecnología OLE (Object Linking and Embedding) de Microsof a entornos distribuidos: • Object: Cualquier cosa en un sistema • Linking: Unión entre dos objetos de un sistema que les permite compartir información e interactuar • Embedding: La unión se basa en que uno de los objetos mantiene una referencia al otro objeto – Versiones OLE: • OLE 1.0 Tecnología usada en entornos Windows para incluir elementos en diferentes aplicaciones (objeto maestro/referencia) • OLE 2.0 = ActiveX Evolución de OLE construido sobre DCOM – En los navegadores Web actuales necesitan ser activados antes de ser utilizados Sentencia Microsof vs. Eolas
Tecnologías Cliente •
Controles ActiveX
– Componentes OLE usados en páginas Web para incluir contenido multimedia y que ofrece un interfaz programable y personalizable – Componente OLE + características ActiveX: • Seguridad, licencias de ejecución, certificados digitales, etc. • Cajas de texto, botones, reproductores de audio y vídeo, etc. – Herramientas de Microsof para crear controles ActiveX: • MFC (Microsof Foundation Classes): conjunto de clases C++ para el desarrollo de objetos COM, OLE y ActiveX • Microsof ActiveX Template Library: Library conjunto reducido de clases para crear objetos COM pequeños y rápidos – Al ser un control OLE necesita implementar, al menos los interfaces IUnknown (OLE) y IClassFactory (COM) – Para usar un control ActiveX en una página Web: • Empaquetar el control para su descarga • Firmar digitalmente el sofware a distribuir • Asegurarse que el componente es seguro, tanto en su inicialización (PARAM) como en el acceso desde código script (código malicioso) • Incluir aquellos controles externos que vaya a necesitar el control
Tecnologías Cliente • Flash / ShockWave (Adobe) – Características: • Tecnologías diseñadas especialmente para la reproducción de contenido multimedia en páginas Web • Son más complejos de utilizar que la combinación HTML/Javascript • La creación de Flash/ShockWave requiere de herramientas de pago • Desde ambas tecnologías se puede acceder al contenido de la página cliente – Desventajas: • Los tiempos de descarga y navegación de un sitio se pueden ver adversamente afectados debido al tamaño de estas aplicaciones • Para algunos entornos no existen plug-in (shockwave en unix/linux) • El diseño de aplicaciones multimedia generalmente requiere de amplia experiencia en la plataforma/lenguaje • HTML y JavaScript que poseen una sintaxis más intuitiva.
Tecnologías Cliente •
Flash:
– Contenido creado con Macromedia Flash – Usos: • Interfaces de aplicación Web • Interfaces de usuario (animaciones interactivas) • Publicidad interactiva online – ActionScript: ActionScript lenguaje utilizado en la generación de animaciones Flash – El plugin de flash lleva incoporada su propia máquina virtual (AVM) – Se generan ejecutables .swf
•
Shockwave:
– Contenido creado con Macromedia Director – Usos: • Juegos de alto rendimiento multijugador • Simulaciones interactivas en 3D • Aplicaciones de formación – Lingo: Lingo lenguaje utilizado en la generación de animaciones ShockWave – Se generan ejecutables .dcr
ISABEL
Tecnologías Cliente Contenido
Estilo visual
Estructura
Manejo de contenido/eventos
DHTML
Lenguajes Script de (<script></script>) - JavaScript
HTML
CSS
HTML DOM
ECMA-262
- JScript - VBScript
- XSLT
XML
XSL
- XSL-FO - XPath
XHTML
DOM SAX
Tecnologías de Objetos (<object></object>)
Applets
ActiveX
Flash/ShockWave
PARTE II
Tecnologías y Arquitecturas Web Marcos López Sanz
Tecnologías Servidor • Servidores Web – Sofware que suministra servicios a usuarios o terminales. – Normalmente sirve datos en forma de páginas Web (HTML) – Sirve también todos los componentes que forman la página Web (contenido multimedia, imágenes, etc.) – Características: • Básicas: – Respuestas HTTP – ‘Logging’: registro de actividad del servidor
• Complementarias: – Configurabilidad y extensibilidad – Autenticación y HTTPS – Gestión de contenido dinámico (SSI, CGI, SCGI, FastCGI, PHP, ASP, ASP.Net, Server APIs como NSAPI, ISAPI, etc.) – Host virtuales (varios servidores en una misma IP) – Balanceo de carga, etc.
Tecnologías Servidor • Tipos de servidores
– Basado en procesos: • Obtención de paralelismo mediante duplicación del proceso de ejecución • Técnica pre-fork: crear varios procesos por defecto • Ventajas: Ventajas simplicidad y seguridad • Inconveniente: Inconveniente crear procesos es una tarea pesada para el SO – Basados en hilos (threads): • Paralelismo por creación de threads (procesos ligeros) • Ventajas: Ventajas mejor rendimiento, simplicidad de implementación • Inconveniente: Inconveniente seguridad (se comparten espacios de memoria) – Basados en sockets no bloqueantes (basados en eventos) • Utilización de lecturas y escrituras asíncronas sobre elementos de comunicación del SO (sockets) • El SO controla diversos sockets que es donde llegan las peticiones al servidor • Ventaja: Ventaja velocidad • Inconveniente: Inconveniente un solo proceso y un solo hilo concurrencia simulada – Implementados en el kernel
Tecnologías Servidor • Servidores Web
– Componentes: • Subsistema de recepción: escucha las peticiones HTTP • Analizador de peticiones: traduce el recurso solicitado al recursos local concreto • Módulo de autenticación y control de acceso • Manejador de recursos: ejecuta el recurso solicitado y genera la respuesta
– Contenido estático sirve las páginas HTML – Contenido dinámico interpreta el código del recurso mediante un intérprete de script o API instalada como módulo del servidor
• Módulo de log: registra la actividad del servidor (peticiones y respuestas) – Servidores principales • Apache • Internet Information Server (IIS) • Sun Java System Web Server • Zeus Web Server
Tecnologías Servidor • Estadísticas de servidores
Cuota de mercado (%)
Impacto de mercado (nº de servidores)
Tecnologías Servidor • Apache HTTP Server
– Servidor gratuito de código abierto – Actualmente es el servidor más extendido – Características
• Puede servir páginas tanto estáticas como dinámicas • Forma parte de LAMP: Linux, Apache, MySQL PHP/Perl/Python • Se utiliza como servidor Web en productos tales como: – – – –
Oracle Database IBM Websphere Mac OS X Novell Netware 6.5
• Es posible extender la funcionalidad del servidor a través de módulos: mod_isapi, mod_dbd, mod_cgi, mod_ssl, etc.
Tecnologías Servidor • Internet Information Server (IIS) – Arquitectura (IIS 6.0)
Tecnologías Servidor •
Internet Information Server (IIS)
– Versiones: • IIS 1.0: Windows NT 3.51 Service Pack 3 • IIS 2.0, 3.0 y 4.0: Windows NT 4.0 • IIS 5.0: Windows 2000 • IIS 5.1: Windows XP Professional • IIS 6.0: Windows Server 2003 y XP Professional x64 Edition • IIS 7.0, Windows Vista y Windows Server "Longhorn" – Filtros ISAPI • Extensión de IIS que permite modificar la forma en que las peticiones HTTP son atendidas • Son librerías DLL que se añaden e instalan en IIS (como plugins) • Arquitectura de procesamiento: 1. 2. 3. 4. 5. 6. 7. 8.
IIS lee y procesa la solicitud HTTP Transforma la URL pedida en una ruta local Se comprueba si la petición necesita de una autenticación especial IIS lee los datos transferidos por el cliente (GET/POST), si los hay IIS o el componente correspondiente manda las cabeceras al cliente El servidor manda los datos solicitados al cliente El servidor escribe en el registro el proceso completo El servidor cierra la sesión (conexión con el cliente)
Tecnologías Servidor •
Sun Java System Web Server 6.1 – Características: • Seguridad: – Ejecutado en el espacio de usuario, no en el kernel – Soporte para SSL, TLS, X.509 (certificados digitales) e IPv6 – Control de acceso y configuración
• Disponibilidad – Reconfiguración dinámica sin reiniciar – Reinicio automático ante caídas
• Rendimiento y escalabilidad – Multiproceso y multi-hilo
• Soporte – ASP, JSP, CGI, PHP – Extensible
• Gestión – – – –
Soporte WebDAV Multiplataforma: Sun Solaris, Windows, Unix, AIX, HP-UX Permite servidores virtuales Administración remota o distribuida
Tecnologías Servidor • Contenido Web dinámico
– CGI (Common Gateway Interface):
• Primera solución para dotar de contenido dinámico a las páginas Web • Se basa en la ejecución de aplicaciones residentes en el servidor (escritas en C o Perl) • Limitaciones:
– Problemas de seguridad: Una llamada a una página ejecutaba un programa en el servidor – Carga del servidor: un proceso lanzado para cada petición CGI
• FastCGI: Evolución de CGI mediante la creación de un proceso por cada programa en vez de por cada petición
– Independencia del lenguaje: admite PHP, Java, C++, Perl, etc. – Se utiliza un proceso separado: independencia del servidor Web
Tecnologías Servidor • Lenguajes interpretados (script de servidor)
– Los documentos HTML contienen sentencias de script intercaladas • <? script ?> (PHP) • <% script %> (ASP) • <%@ directivas %> (JSP) – El servidor debe ejecutar el código antes de enviárselo al cliente – La ejecución se realiza secuencialmente Interpretación – El servidor debe tener un módulo que permita interpretar el código, si no, se enviará al cliente el código script (el navegador lo mostrará tal cual) – Ejemplos de lenguajes interpretados en el servidor: • PHP • ASP 3.0 • JSP • Perl • Python
Tecnologías Servidor • PHP – Definición: “PHP: Hypertext Processor” es un lenguaje de código abierto interpretado, de alto nivel, embebido en páginas HTML y ejecutado en el servidor” – Características: • Es un lenguaje multiplataforma y multi-servidor (Apache, IIS y Sun JWS) • Capacidad de conexión con la mayoría de los manejadores de base de datos que se utilizan en la actualidad • Leer y manipular datos desde diversas fuentes, incluyendo datos enviados por los usuarios desde formularios HTML • Capacidad de expandir su potencial utilizando módulos • Posee una amplia documentación en su página oficial (gran cantidad de funciones ya implementadas) • Pueden usarse técnicas de Programación Orientada a Objetos.
Tecnologías Servidor • ASP 3.0 (Active Server Pages)
– Tecnología de script de servidor de Microsof para mostrar contenido dinámico en páginas Web – Lenguajes utilizables: VBScript (Visual Basic), JScript, o PerlScript (Perl) – Se basa en la utilización de 6 objetos con los que se maneja la funcionalidad del servidor: • • • • • •
Application ASPError Session Server Request Response
Tecnologías Servidor •
ASP
– Objeto Application: Application Se crea cuando se solicita la primera página ASP y existe hasta que se reinicia el servidor • Colecciones: Contienen las variables de aplicación, compartidas por todas las aplicaciones ASP – Contents – StaticObjects
• Métodos:
– Contents.Remove/RemoveAll – Lock/Unlock
• Eventos:
– Application_OnEnd – Application_OnStart
– Objeto ASPError: ASPError Creado cuando se invoca Server.GetLastError • Propiedades: – – – –
ASPCode Line ASPDescription Line/Column
Tecnologías Servidor •
ASP
– Objeto Session: Session se crea cada vez que un usuario crea una conexión con el servidor (mantiene un navegador abierto a una página asp) • Colecciones: Contienen las variables de sesión – Contents – StaticObjects
• Propiedades:
– SessionId: número de tipo long que identifica unívocamente la relación con el cliente – Timeout: tiempo, en minutos, tras el cual si el usuario no interactúa con el servidor, éste cierra la sesión (por defecto 20 minutos)
– Objeto Server: Server Permite acceder a las propiedades del Servidor (IIS) • Propiedades:
– ScriptTimeout: indica el tiempo máximo que puede ejecutarse un script
• Métodos:
– CreateObject: se utiliza para crear objetos conocidos por el servidor (para conexión a BD por ejemplo) – Execute: se utiliza para ejecutar código .asp externo dentro de la propia página. El control vuelve a la propia página – MapPath: sirve para transforma una dirección virtual en una dirección local del servidor – Transfer: redirige el control a otra página
Tecnologías Servidor •
ASP
– Objeto Request: Request Permite acceder a las variables y valores enviados por el cliente • Colecciones
– Cookies – QueryString: Permite el acceso a los valores de formulario enviados por GET (en la URL solicitada) – Form: Permite el acceso a los valores de formulario enviados por POST
– Objeto Response: Response Se utiliza para enviar la respuesta al cliente. Contiene información acerca del contenido, las variables HTTP y cookies a enviar al cliente • Colecciones: – Cookies: conjunto de cookies enviadas al cliente
• Propiedades:
– ContentType: se utiliza para indicar el tipo de contenido que se enviará al cliente. Debe se un tipo MIME
• Métodos: – – – – –
AddHeader: modifica las cabeceras HTTP End: envía inmediatamente el contenido que ya se ha procesado Clear: borra el contenido procesado Redirect: Redirige la página del cliente Write: escribe contenido en la respuesta HTML
Tecnologías Servidor • Tecnología .Net
.Net Framework
Aplicaciones Cliente
Biblioteca de clases
CLR
Sistema Operativo
Common Biblioteca Language de Clases Runtime Clases del sistema • Tareas de comunicación con el Funciones CLR (IO, Security, Runtime…) • Gestión del código Clases de datos y de XML (localización y ejecución del • ADO.Net: System.Data código, manejo de pilas y • System.XML threads) Clases de Formularios Windows y de • Soporte de seguridad Dibujo: Recolección de basura y •• System.Windows.Forms gestión de errores • System.Drawing Windows Clases Web: ASP.Net y Servicios • System.Web
Tecnologías Servidor • ASP.Net – Ciclo de compilación y ejecución: Código Fuente
Cliente
inetinfo.exe
IIS aspnet_wp.exe
CLR Compilador de lenguaje
Código y Metadatos (DLL/EXE)
Código Nativo
Compilador JIT
Tecnologías Servidor •
ASP.Net – Ventajas: • Mejor rendimiento: pseudo-compilación (ejecución JIT) • Compatibilidad con entornos WYSIWYG • Eficacia y flexibilidad: compatible con la tecnología COM, puede programarse en VB.Net, C#.Net, etc. • Simplicidad: separación de la lógica de la página Web de su interfaz • Facilidad de uso y escalabilidad: sistema de configuración jerárquico (clases) • Facilidad de distribución: sólo hay que copiar los archivos fuente en IIS • Seguridad: Autenticación de Windows integrada – ¿Desventajas?: • Es una tecnología de Microsof* Microsof
Tecnologías Servidor •
Tecnologías Java en el servidor – Tecnología J2EE • Tecnología diseñada por Sun para desarrollar y ejecutar aplicaciones Java en arquitecturas multicapa distribuidas – Diferentes alternativas • Scripting: JSP • Aplicaciones: Servlets • Reutilización de componentes multiplataforma: JavaBeans y EJBs – Principios comunes: • Lenguaje Java • Necesidad de una máquina virtual de java en el servidor • Necesidad de un contenedor Web que ejecute la aplicación Java (IIS no vale) – Contenedor Web = contenedor servlet + contenedor jsp
• Necesidad de un servidor Web
Tecnologías Servidor •
Servlets – Def.: Programas Java que se ejecutan en un servidor de aplicaciones Web, que construyen páginas Web y que pueden asociarse a más de una URL – Cada servlet se corresponde con una clase Java que implementa un interfaz definido en los paquetes javax.servlet y javax.servlet.http – Usos: • Buscadores de páginas Web o de secciones que forman parte de una página (creación de listados a partir de desplegables) • Captura de datos introducidos mediante un formulario html • Procesos de identificación y autenticación • Creación de aplicaciones de comercio electrónico (venta de entradas) • Visualización de páginas Web personalizadas (en función de características de usuarios)
Tecnologías Servidor •
Servlets
– Por cada servlet hay que crear una clase que debe extender HttpServlet – En una misma máquina virtual sólo existe una instancia de un servlet – Funcionamiento: • El ClassLoader de la JVM carga en memoria una instancia del servlet • Se ejecuta el método init() (una sola vez) • Cada petición al servlet crea un hilo y ejecuta el método – void service(ServletRequest request, ServletResponse reponse)
• Este método detecta el modo de petición (GET, POST, …) y ejecuta el método correspondiente: doGet(), doPost(), etc. • Manejo de la petición:
– ServletRequest: Modela la petición del cliente con getParameter(String p) – ServletResponse: Modela la respuesta del servlet (getWriter() y getOutPutStream())
• Destrucción y descarga del servlet de la memoria: se invoca el método destroy()
Tecnologías Servidor •
Servlets – Jerarquía de clases:
Tecnologías Servidor • JSP (Java Server Pages)
– Es un tipo especial de Servlet: se trata de código intercalado en una página HTML – El contenedor Web crea un servlet la primera vez que se pide una página JSP, el resto de peticiones irán a ese servlet – Elementos JSP: • Expresiones – Son evaluadas e insertadas en el contenido final (imprimen contenido) – <%= expresión %>
• Scriptlets
– Código Java intercalado con el código HTML – <% código %>
• Directivas
– Especifican información y propiedades de la página – Permiten incluir ficheros, modificar la forma en que se genera la página, etc. – <%@ page (lenguaje) /include atributos %>
• Declaraciones
– Sirven para declarar variables o métodos. Pueden incluir código externo – <%! Tipo nombreVble; %> / <%@include file=“url local”%>
Tecnologías Servidor •
JSP: Etiquetas –
<jsp:include page=“URL relativa”/> • Incluye un fichero en tiempo de ejecución.
–
<jsp:forward page=“URL relativa”> • Reenvía la petición a otra página
–
<jsp:useBean id=“nombre” scope=“page|request|session|application” class=“paquete.clase”> • Encuentra o construye un JavaBean
–
<jsp:getProperty name=“beanName" property="propName"/> • Escribe el valor del atributo de un bean especificado. Equivalente a <%= beanName.getPropName() %>
–
<jsp:setProperty name=" beanName " property=" propName“ value=“string constant”/> • Establece valor a un atributo de un bean
–
<jsp:scriptlet>codigo</jsp:scriptlet> • Equivalente a <%codigo%>
–
<jsp:expression> expression </jsp:expression> • Equivalente a <%=expresion%>
Tecnologías Servidor • EJB (Enterprise Java Beans) – Java Bean: Bean componente utilizado en Java que permite agrupar funcionalidades (atributos y métodos) para formar parte de una aplicación – Enterprise Java Bean (EJB): Java Bean que constituye el elemento principal del modelo de objetos distribuidos de Java (en el servidor) – Permiten crear objetos en el servidor para: • Comunicación remota utilizando CORBA (RMI de forma nativa) • Transacciones y control de concurrencia • Eventos utilizando JMS (Java Messaging Service) • Servicios de nombres y de directorio • Seguridad • Ubicación de componentes en un servidor de aplicaciones. – Desventajas • Tiempo de desarrollo • Conocimiento pleno de Java (interfaces, RMI, etc…)
Tecnologías Servidor •
EJB (Enterprise Java Beans)
– Tipos • EJB de sesión: gestionan el flujo de información del servidor – Stateless (Session) EJB – Statefull (Session) EJB
• EJB de entidad: encapsulan la persistencia de los objetos del servidor
– Persistencia gestionada por el componente (Bean Managed Persistence) – Persistencia gestionada por el contenedor (Container Managed Persistence)
• Messaging EJB:
– Tienen funcionamiento asíncrono – Se apuntan a un tópico o cola de mensajes – Se activan cuando se envía un mensaje a ese tópico o cola
– Partes • Clase “Enterprise Bean”: Bean contiene los métodos principales de un EJB • Interfaz “Home”: Home contiene métodos para manipular la clase del EJB (no asociados a instancia) • Interfaz “Remote”: Remote contiene métodos y atributos para gestionar el EJB de forma remota • Descriptor de despliegue (Deployment Descriptor): permite parametrizar el EJB y describir sus características
El futuro de la Web •
Web 2.0 – Concepto creado en 2005 por O’Reilly Media – No está claro qué significa exactamente. Conceptos incluidos en su definición: • Web como plataforma • Web como elemento participativo: participativo colaborar, compartir, reutilizar información • Control total de la información por parte de los usuarios • Aprovechamiento de la inteligencia colectiva • Arquitectura de participación • Uso de servicios en vez de sofware empaquetado • Cambio de estrategias de mercado: importancia de los usuarios en vez de los “intermediarios” reacción frente a la crisis de las “punto-com”
El futuro de la Web â&#x20AC;¢ Web 2.0
El futuro de la Web • Web 2.0:
– Características generales • La Web como una plataforma: permitir a los usuarios utilizar las aplicaciones completamente desde y en Internet • Los usuarios son los propietarios de los datos puestos online • Arquitectura de participación que hace que el valor del contenido online aumente con la participación • Democracia que surge a partir de los principios de “contenido abierto” y “libertad de modificación” • Modelos de programación ligeros basados en servicios – Tecnologías • Nuevas técnicas de gestión de contenidos AJAX • Presentación basada en estándares XHTML y CSS • URLs efectivas (simples y significativas) • “Mashup” (Publicación Web Híbrida) Mezcla de contenidos de diferentes fuentes • Tecnologías de Servicios Web SOAP / WSDL / XML • Sindicación de contenidos RSS / Atom
El futuro de la Web •
AJAX (Asynchronous JavaScript and XML)
– No es una tecnología en sí misma, agrupa diferentes tecnologías • Presentación basada en estándares XHTML y CSS • Exhibición e interacción dinámicas utilizando el DOM • Intercambio y manipulación de datos con XML y XSLT • Recuperación de datos asíncrona con XMLHttpRequest • JavaScript para manejarlo todo – Problemas • Compatibilidades entre navegadores por usar JavaScript • Soporte para la API que contiene el objeto XMLHttpRequest – Objeto XMLHttpRequest • En IE 5 y 6 se utiliza un control ActiveX llamado ‘Microsof XMLHTTP’ • Existe una especificación estándar (5/04/06): http://www.w3.org/TR/XMLHttpRequest/ • Problemas conocidos:
– Caché de Internet Explorer – Incompatibilidades de navegadores encapsular el código en Flash/ActiveX/Applets – Caracteres no ASCII usar codificación UTF-8
El futuro de la Web â&#x20AC;˘ AJAX Escrito en JavaScript y normalmente en un frame oculto
http://www.uberbin.net/archivos/internet/ajax-un-nuevo-acercamiento-a-aplicaciones-web.php
El futuro de la Web • RSS (Really Simple Sindication)
– Formato de archivo derivado de XML – Se utiliza para notificar los cambios que ha habido en una página Web – Basado en el principio de sindicación/redifusión de contenidos (content sindication):
• Un sitio publica un resumen de ciertos contenidos de la página Web • Una página con RSS suele disponer de un link (llamado ‘feed’) que permite a un usuario apuntarse a esa página Web • Un ‘agregador’ (o lector de feeds) lee periódicamente los RSS y permite al usuario leer los contenidos a los que se ha apuntado sin necesidad de visitar la página Web
– Podcast: Podcast Sindicación de contenidos de audio – Atom 1.0: 1.0 alternativa a RSS 2.0
El futuro de la Web • Servicios Web
– Def.: Colección de protocolos y estándares utilizados para intercambiar datos entre aplicaciones a través de la red – Objetivo: mejorar la interoperabilidad entre aplicaciones mediante el uso de estándares abiertos – La comunicación se realiza (generalmente) sobre HTTP – Acoplamiento débil: una aplicación que use un servicio Web no se ve afectada por cambios en el servicio Web – Implementación: • Java:
– APIs de SUN: JAXRPC, JAXM, SAAJ – Librerías de Apache: AXIS
• Microsof:
– Directivas embebidas en ASP.Net – MS SOAP
• Otros
– SOAP:Lite (Perl), NuSOAP (PHP), Axis (C++)
El futuro de la Web • Servicios Web
– Arquitectura:
Registro (UDDI) WSDL
WSDL
SOAP
Cliente
Proveedor
– Estándares: • WSDL (Web Service Description Language): describe las funcionalidades ofrecidas por el servicio • SOAP (Simple Object Access Protocol): formato en el que se codifican los mensajes intercambiados entre el cliente y el proveedor • UDDI (Universal Description, Discovery and Integration): Sirve para describir registros (almacenes) de servicios Web
Referencias •
Páginas Web – – – – – – – – – – – – –
•
Wikipedia: www.wikipedia.org W3 Schools: www.w3schools.com World Wide Web Consortium: www.w3.org Documentación Java: http://java.sun.com/reference/docs/ Documentación Microsof: www.microsof.com/spanish/msdn/ Documentación Adobe: www.adobe.com Documentación PHP: www.php.net Programación: www.developer.net, www.desarrolloweb.com, http://www.webreference.com/programming/ Estadísticas de Servidores: http://news.netcraf.com/archives/web_server_survey.html Observatorio Tecnológico - Ministerio de Educación y Ciencia: http://observatorio.cnice.mec.es/ Jesse J. Garrett: Ajax: A New Approach to Web Applications. http://www.adaptivepath.com/publications/essays/archives/000385.php Web 2.0: http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html Y, por supuesto… www.google.es
Otros: – – –
A. Grosskurth, A. Echihabi: A reference architecture for Web Browsers. ICSM'05: Proceedings of the 21st IEEE International Conference on Software Maintenance (ICSM'05), pages 661-- 664, Washington, DC, USA, 2005. IEEE Computer Society. Admundsen M., Litwin P., Creación de sitios Web con ASP.Net. Ed. Pearson Educación, 2002 Java software solutions, foundations of program design (3rd edition). J. Lewis & W. Lofus. Ed. AddisonWesley, 2004.