is2objetos distribuidos - j2ee,rmi1 ingeniería del software ii ingeniería web

29
IS2 Objetos Distribuidos - J2EE,RMI 1 Ingeniería del software II Ingeniería Web

Upload: encarnacion-roldan-cano

Post on 02-Feb-2016

219 views

Category:

Documents


0 download

TRANSCRIPT

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