Ingeniería del software IIIntroducción
La web es uno de los servicios presentes en Internet, es un sistema
de hipertexto/hipermedia que conforma un entramado de paginas por
las que podemos navegar
Las paginas Web pueden ser:
Estáticas: Paginas que muestran información y no tienen
funcionalidad más allá de los propios enlaces
Dinámicas: Paginas que permiten la interactividad con el usuario,
el interfaz de usuario de las aplicaciones web
IS2
Introducción
Dentro de las aplicaciones web debemos distinguir entre la parte de
la aplicación que se ejecuta en el cliente y la parte de la
aplicación que se ejecuta en el servidor
En la parte cliente se ejecutan operaciones relativas al interfaz
de usuario de la aplicación: efectos de presentación, cálculos y
validaciones que no requieran de datos alojados en el servidor
etc,etc
En la parte servidora es donde se ejecuta toda la lógica asociada a
nuestra aplicación que requiere de datos que están en el
servidor
IS2
Lenguajes de Script:
JavaScript
VisualBasicScript
Estos lenguajes son interpretados y ejecutados por el navegador,
están embebidos dentro del código HTML de las paginas web y se
suelen utilizar para realizar pequeños procesos dentro de la pagina
web que esta visualizando el cliente
Desde estos lenguajes es posible acceder a todos los elementos de
la pagina web (ventanas, formularios, controles..) y programar
respuestas a determinadas acciones del usuario (cerrar una ventana,
pulsar un boton...)
IS2
Otras tecnologías del lado cliente:
DHTML: Permite dividir una pagina en diferentes “capas” de modo en
cada momento podemos seleccionar visualizar una u otra
CSS (Cascade Style Sheet): Son hojas de estilo que permiten
uniformar el aspecto de nuestras paginas web, definiendo
tabulaciones, tamaño de letra, color y una gran gama de
posibilidades
Applets: Son programas Java que se ejecutan dentro del navegador
del cliente, se utilizan cuando se requiere implementar alguna
funcionalidad en el lado cliente que por sus características o
complejidad no puede hacerse con otros lenguajes o tecnologías del
lado cliente
ActiveX: Es una alternativa a los Applets de Java, sólo funcionarán
en clientes con sistema operativo Windows
IS2
La parte servidora de una aplicación web podemos dividirla
en:
Lógica de presentación: Es la parte encargada de construir
dinámicamente las paginas que se presentarán al usuario
Lógica de negocio: los diferentes procesos que efectuará nuestra
aplicación: dar de alta un usuario, realizar un pedido
etc,etc.
Acceso a fuentes de datos: Bases de datos, sistema legacy u otras
fuentes de datos
IS2
CGI (Common Gateway Interface)
Es una norma para establecer comunicación entre un servidor web y
un programa
Un CGI se puede programar en cualquier lenguaje, los más habituales
son: PERL, C, C++, phyton, visual basic etc,etc
Por cada petición el servidor ejecuta el programa CGI pasandole los
datos de la petición, el programa CGI escribe el HTML en la salida
estándar y el servidor web la envía al cliente
Desventajas de esta tecnología:
Para cada petición el servidor web lanzara un CGI en su propio
espacio de memoria, los sistemas basados en CGI’s son poco
escalables
IS2
Lenguajes de Script:
ASP
PHP
JSP
Son lenguajes para programar scripts del lado del servidor, que se
incrustan dentro del código HTML
El servidor web se encarga de ejecutar el código incrustado y
devolver el HTML generado al cliente
Desventajas:
En estos lenguajes se mezcla la lógica de presentación con la
lógica de negocio, pueden ser útiles para desarrollos
pequeños/medianos pero no se recomienda su uso en grandes
desarrollos
IS2
Servlets Java: Permiten construir programas para generar paginas
dinámicas en Java, aportan una serie de ventajas sobre la
tecnología CGI:
Cada petición es manejada por un thread Java de peso ligero, no un
pesado proceso del sistema operativo
en CGI, si hay N peticiones simultáneas para el mismo programa CGI,
el código de este programa se cargará N veces en memoria. Sin
embargo, con los Servlets, hay N threads pero sólo una copia de la
clase Servlet
Portabilidad del código Java
Permiten obtener facilmente información acerca del cliente (ip del
cliente)
Permiten gestionar de forma sencilla sesiones con el cliente
Se aprovechan de todas las capacidades del lenguaje Java para
comunicaciones, conexiones a bases de datos y un largo etc
IS2
Interface ServletContext : Permite acceder a información sobre el
entorno de ejecución del servlet
Interface ServletConfig: Permite leer parametros de inicialización
del servlet
Interface HttpServletRequest: Permite acceder a la petición enviada
por el cliente
Interface HttpServletResponse: Contiene los métodos necesarios para
devolver la respuesta al cliente
IS2
El Método Init():
Cuando un servlet es cargado por primera vez, el método init es
llamado por el contenedor de servlets. Este método no será llamado
nunma más mientras el servlet se este ejecutando
Este método recibe un sólo parametro del tipo ServletConfig que
permite leer los datos de configuración del servlet
Se puede utilizar este método para incluir operaciones de
inicialización costosas en tiempo de proceso, por ejemplo
establecer la conexión con una base de datos
IS2
Método service():
Cada petición por parte del cliente se traduce en una llamada al
método service() del servlet
Este método recibe dos parametros:
ServletRequest: que contiene la petición del cliente
ServletResponse: que contiene los métodos necesarios para devolver
la respuesta
La clase HttpServlet define el método service llamando a otros dos
métodos DoGet() y DoPost() según sea la petición. De modo que
cuando implementemos un servlet sobreescribiremos estos métodos en
lugar del método service
IS2
Método Destroy():
El servidor llamará a este método cuando el servlet se descargue de
memoria
De esta forma, es posible liberar recursos (ficheros abiertos,
conexiones con bases de datos, etc.) de una forma segura. Cuando
esto no es necesario o importante, no hará falta redefinir el
método destroy()
IS2
Servlets: Seguimiento de usuarios
El API servlets nos facilita la labor para el siguiente de usuarios
con la posibilidad de usar 3 métodos diferentes:
Cookies: La clase javax.servlet.http.cookie facilita la creación,
lectura y escritura de cookies
Reescritura de URL's: Consiste en reescribir los enlaces internos a
otras paginas de mi aplicación incluyendo en ellos un identificador
de sesión. La clase HttpServletResponse dispone del método
encodeURL() que automatiza esta tarea
Sesiones gestionadas por el servidor: Se delega en el contenedor de
servlets la gestión de servlets, el contenedor dependiendo de su
configuración o las reestricciones del cliente utilizara alguno de
los dos métodos anteriores para gestionar la sesión
IS2
MVC Web
La arquitectura MVC (Model/View/Controller) fue introducida como
parte de la versión Smalltalk-80 del lenguaje de programación
Smalltalk. Fue diseñada para reducir el esfuerzo de programación
necesario en la implementación de sistemas múltiples y
sincronizados de los mismos datos
IS2
MVC Web
En la web este patron es ligeramente diferente ya que el modelo no
puede enviar notificaciones a las vistas por las restricciones del
protocolo HTTP
En la Web este patron tiene como principal ventaja una separación
clara de las distintas partes de la aplicación Web
Modelo = lógica de negocio
Vista = lógica de presentación
Controlador = esquema de navegación
MVC Web
1. El controlador carga el esquema de navegación al comienzo de la
aplicación
2. El browser realiza una petición
3. El controlador recibe la petición y la redirige al método
adecuado de la lógica de negocio
4. la capa de lógica de negocio consulta a través de la capa de
acceso a datos la BD
5. la capa de lógica de negocio devuelve el resultado de la
operación al controlador
6. El controlador redirige el resultado a la vista adecuada (en
función de la configuración de navegación y el resultado de la
operación)
7. La vista genera la pagina que se enviará al cliente a partir de
los datos recibidos del controlador
IS2
MVC Web: ventajas del modelo
Al separar de manera clara la lógica de negocio (modelo) de la
vista permite la reusabilidad del modelo, de modo que la misma
implementación de la lógica de negocio que maneja una aplicación
pueda ser usado en otras aplicaciones, sean éstas web o no
Permite una sencilla división de roles, dejando que sean
diseñadores gráficos sin conocimientos de programación o desarrollo
de aplicaciones los que se encarguen de la realización de la capa
vista, sin necesidad de mezclar código Java entre el código visual
que desarrollen
Permite crear diferentes vistas para un mismo modelo:
Diferentes “temas” según el usuario
Internacionalización de la aplicación
IS2
MVC Web: J2EE
Esta arquitectura encaja muy bien con las tecnologías de la
plataforma J2EE:
El modelo: Existen dos claras alternativas para implementar la
lógica de negocio en J2EE:
POJOs (Plain Old Java Objects)
Utilizando EJB (Enterprise JavaBeans) en sistemas con unas mayores
necesidades de concurrencia o distribución
IS2
Para la vista existen diversas opciones:
JSP (Java Server Pages): muy extendidas, con gran cantidad de
librerías tanto open source como comerciales
Motores de plantillas:
Velocity
Freemaker
Xml + XSLT: la lógica de negocio devolverá los datos a presentar en
xml, para generar la vista se transforma este xml mediante una
plantilla de transformación xslt
IS2
Struts
Definición:
Un Web Service es un componente de software que se comunica con
otras aplicaciones codificando los mensaje en XML y enviando estos
mensaje a través de protocolos estándares de Internet tales como el
Hypertext Transfer Protocol (HTTP). Intuitivamente un Web Service
es similar a un sitio web que no cuenta con un interfaz de usuario
y que da servicio a las aplicaciones en vez de a las personas
IS2
Servicios Web
En la actualidad existen dos protocolos diferentes para llevar a
cabo la implementación de servicios web:
Xml-RPC
SOAP
La diferencia entre SOAP y XML-RPC es su complejidad. XML-RPC está
diseñado para ser sencillo. SOAP por el contrario está creado con
idea de dar un soporte completo y minucioso de todo tipo de
servicios web
IS2
No se encuentra asociado a ningún protocolo de transporte
Aprovecha los estándares existentes en la industria
Permite la interoperabilidad entre múltiples entornos
IS2
Servicios Web: WSDL
WSDL (Web Service Description Language) es un lenguaje que nos
permite describir los servicios web de una forma estándar
Un fichero WSDL debe proporcionar toda la información necesaria
para que un cliente pueda realizar peticiones al servicio,
incluyendo:
El formato de los mensajes de petición que pueden aceptar los
servicios así como el formato de las respuestas
Los parametros y los tipos de los parametros de los mensajes de
petición y respuesta
Las direcciones de cada uno de los servicios expuestos
El protocolo de transporte de mensajes (HTTP, SMPT...)
IS2
UDDI (Universal Description Discover and Integration) es un
mecanismo que permite dar a conocer el servicio Web para que los
clientes puedan utilizarlo
Basicamente la interfaz UDDI permite dos tipos de acciones:
Registrar nuevos servicios web
IS2