Java – Un resumen organizado….o no.

Llevo escribiendo artículos sobre Java, programación  de Java, entorno de Java… demasiado tiempo, y como ahora estoy preparando un curso de dicho tema, se me ha ocurrido hacer una especie de indice de lo que llevo publicado para que tanto vosotros como yo, podamos acudir a un tema concreto. Esto también me ha permitido detectar duplicados y faltas, por lo que deberé seguir ampliando la colección…. en cuanto pueda, incluso darle formato de libro…..ya veremos; de momento os dejo este indice Sigue leyendo

Publicado en Formacion, Java | Deja un comentario

PHP – Presentacion del curso

Mucho tiempo ha pasado desde que en 1994 se le ocurrió a Rasmus Lerdof «inventar» un lenguaje para la creación de sitios webs dinámicos, y como era una especie de pequeña herramienta para construir HTML, lo llamo PHP (PHP Hipertext preprocesor), y supongo que no llego a pensar en la importancia que tendria unos años mas tarde ese lenguaje. Pero aquí estamos, y hoy nos costaría mucho imaginarnos la web sin su existencia. Cierto es que hay otros lenguajes de servidor, pero PHP es el mas barato y, hoy por hoy el mas extendido, de forma que vamos a ver como se escribe un programa en él. Sigue leyendo

Publicado en Desarrollo Web, PHP y MySQL/MariaDB | 2 comentarios

Tu máquina de desarrollo. Instalando LAMP

Días atrás, os explicaba como instalar un servidor web en vuestra maquina de desarrollo bajo windows. Como poco a poco Linux penetra en nuestro mundo, hoy os comento como instalar un servidor web en vuestra maquina Linux: LAMP. Sigue leyendo

Publicado en Desarrollo Web, Linux | Etiquetado , , , , , | 1 comentario

HTML5 – Presentacion

Desde 1998 en que finaliza el desarrollo de HTML (4.0) han venido sucediéndose una serie de operaciones para establecer un nuevo estándar web. El XML primero, y su consecuente XHTML fue una buena apuesta, pero su posible sucesor el XHTML 2.0, cuyo desarrollo se abandona a finales del 2009, fue un fracaso. Eso obliga al W3C a buscar un nuevo camino, y lo encuentra retomando un trabajo iniciado por WHATWG  (Mozilla, Opera, Apple, Google…) sobre 2004 como variante a la linea de W3C.

Con todo ello, se anuncia en 2012 la recomendación candidata de Html5 y se prevee para 2020 la recomendación final.

En el curso que empezamos hoy, vamos a explicar que es HTML5HTML5_logo_and_wordmark.svg Sigue leyendo

Publicado en HTML5 | Etiquetado , | 1 comentario

Monta tu propio WordPress….y gratis

Si estáis decididos a probar suerte como webmaster con todas sus consecuencias, os invito a que probeis a instalar un wordpress en tu propio servidor. WordPress es gratuito, luego, si eso lo combinamos con un hosting gratuito…tendremos una interesante plataforma para aprender. Sigue leyendo

Publicado en Desarrollo Web, Divulgacion, Empezando en, WordPress | 3 comentarios

Macros de Excel

Con éste artículo, iniciamos una colección dedicada a la utilización de las hojas de cálculo de Microsoft Excel, y, más concretamente, a la forma que tiene este producto de solucionar y simplificar las tareas repetitivas. Debido a que estos artículos los voy escribiendo a medida que me surge la necesidad, he empezado por una parte de la formación Excel, bastante avanzada, sin embargo, y debido que su aprendizaje tiene mucho mas que ver con la programación que con Excel, pienso que se puede aprender de forma paralela a cualquier otro curso de Excel medio, y ya dejo claro que me comprometo a escribirlo… algún día. Que sea mas pronto o mas tarde, dependerá del trabajo, y de las necesidades de los lectores.

Sigue leyendo

Publicado en Excel, Formacion | Etiquetado , , | Deja un comentario

Servlets: Atributos de petición, sesión, aplicación y cookies

Durante la programación de una aplicación web nos encontramos que tenemos necesidad de conservar el valor de las variables. En una aplicación de escritorio, podemos controlar cuando queremos borrar una variable, por lo que no aparece ese problema, pero en una aplicación web, el tema es bastante mas delicado. Recordemos que el protocolo http no esta orientado a sesion, eso hace que en cada conexion TODOS los datos que tengamos a mano, sean nuevos. Nuestro servidor, no recordara nada acerca de si ese cliente se ha conectado hace un momento, o no se ha conectado nunca. Se ha logonado o no, …. Sigue leyendo

Publicado en Desarrollo Web, Formacion, Java | Etiquetado , , | Deja un comentario

Complicando un poco nuestro servlet.Trabajando con formularios

Cuando hayamos conseguido que nos funcione el servlet, querremos conseguir mostrar un formulario, y recogerlo; y para hacer todo eso correctamente, vereis que dentro de poco, os volvere a hablar de «vistas», pero mientras tanto, vamos a hacer que nuestro servlet presente un formulario, y cuando se envie, lo recojamos y procesemos….

Sigue leyendo

Publicado en Desarrollo Web, Formacion, Java | Etiquetado , , | Deja un comentario

Linux y los ficheros Swaps

Si buscamos en la historia, podemos encontrar que veíamos a Linux como el S.O. que podía correr en cualquier maquina, por pequeña que fuera; hablábamos de CPUs Pentium 5, son 1Gb máximo de memoria; en aquella época, el trabajar con ficheros swaps, era una necesidad, después nos fuimos animando a utilizarlo con maquinas mayores, y llegamos a la conclusión que el swap lo hacia mas lento…y ahora?…volvemos a ello?

Sigue leyendo

Publicado en Formacion, Linux | Etiquetado , , | 3 comentarios

Complicando un poco nuestro servlet. web.xml

Tras ver como funciona nuestro primer servlet, el siguiente paso que vamos a dar, para conocer un poco mas estas herramientas es controlar las rutas de acceso por medio de web.xml.

Estoy de acuerdo que la introducion de anotaciones, ha hecho nuestra vida mas sencilla, pero no evita el tener que utilizar web.xml, no solo para los mappings de las clases, si no , tambien para la carga de parametros en las mismas.

Sigue leyendo

Publicado en Desarrollo Web, Formacion, Java, Sin categoría | Etiquetado , , , | Deja un comentario

Empezando con servlets

En nuestra aplicacion web, nos vamos a encontrar con varios entornos; en estos articulos, orientados al mundo Java, nos vamos a preocupar de los relacionados con ellos.

Segun eso, si vas a escribir una aplicacion web en Java, te encontraras con las clases de Java que ya conoces, con Servlets y con JSPs

En este articulo, vamos a hablar de los servlets. Los servlets son clases de Java mas o menos tradicionales, pero que heredan de una clase muy concreta (HttpServlet) con lo que van a tener acceso a las variables web, como puede ser la linea de URL. y seran instanciadas por el contenedor, y llamadas en un metodo concreto…. vamos por partes. Sigue leyendo

Publicado en Desarrollo Web, Formacion, Java | Etiquetado , , , | Deja un comentario

Instalacion de un contenedor web (Tomcat)

Segun hemos visto anteriormente, para poder desarrollar una aplicacion web con Java, necesitamos un contenedor web.

Somos desarrolladores, con lo que vamos a seleccionar uno que no sea excesivamente pesado, y que podamos instalar en nuestras maquinas de desarrollo.

Uno de los que cumplen ampliamente con nuestros requerimientos, es Tomvcat, que ademas a ser parte del desarrollo de Apacyhe, es totalmente integrable en el mismo, con lo que nos ofrece muchas posibilidades.

La imagen en la que debemos pensar, viene a ser esta:

Esta es la definicion de wikipedia:

Apache Tomcat (también llamado Jakarta Tomcat o simplemente Tomcat) funciona como un contenedor de servlets desarrollado bajo el proyecto Jakarta en la Apache Software Foundation. Tomcat implementa las especificaciones de los servlets y de JavaServerPages (JSP) de Oracle Corporation (aunque creado por Sun Microsystems).

Tomcat es un contenedor web con soporte de servlets y JSPs. Tomcat no es un servidor de aplicaciones, como JBoss o JOnAS. Incluye el compilador Jasper, que compila JSPs convirtiéndolas en servlets. El motor de servlets de Tomcat a menudo se presenta en combinación con el servidor web Apache.

Tomcat puede funcionar como servidor web por sí mismo. En sus inicios existió la percepción de que el uso de Tomcat de forma autónoma era sólo recomendable para entornos de desarrollo y entornos con requisitos mínimos de velocidad y gestión de transacciones. Hoy en día ya no existe esa percepción y Tomcat es usado como servidor web autónomo en entornos con alto nivel de tráfico y alta disponibilidad.

Dado que Tomcat fue escrito en Java, funciona en cualquier sistema operativo que disponga de la máquina virtual Java.

A continuacion, vamos a ver como lo podemos instalar

  • Descargar de su web
  • Para Windows, podemos escoger un instalador

Después, podemos ir indicando “next”, ….”next”, y solo prestar atención a esta pantalla.

En este caso, nos indica que Tomcat estará en el puerto 8080

Como muchas veces este puerto esta ocupado, propongo que lo cambiemos a 9090

El resto de opciones, no necesitamos modificarlas

Con la siguiente confirmacion, acabara la instalacion, podemos decir que queremos que lance Tomcat

A continuacion, podemos abrir un navegador y escribir como direccion

A continuacion, podemos abrir un navegador y escribir como direccion

http://localhost:9090 y veremos la respuesta de Tomcat

Con esto ya sabemos que Tomcat está instalado y funcionando, veamos la estructura:

Dejando aparte el tema de versiones, esta sera la forma que adoptara en nuestro disco, veamos ahora que puede contener cada carpeta:

bin – arranque, cierre, y otros scripts y ejecutables.

conf – ficheros XML y los correspondientes DTD para la configuración de Tomcat.

logs – logs de Catalina y de las aplicaciones.

webapps – directorio que contiene las aplicaciones web. Aqui podemos dejar los WAR

work – almacenamiento temporal de ficheros y directorios.

Con esto, ya esta finalizada la instalacion de Tomcat, ahora, si vosotros, como yo, vais a utilizar Eclipse para el desarrollo del web, creo que es conveniente que sigamos unos pasos mas, para integrar Tomcat en nuestro IDE, y poder trabajar sin preocuparnos del mismo.

Integración con Eclipse

Nos interesa detenerlo para hacer que el arranque y parada lo gestione Eclipse; para ello, debemos buscar un programa que se ha instalado que es “Monitor Tomcat”

Al arrancarlo, se inicia minimizado por lo que lo tendremos que ir a buscar en la bandeja de sistemas o área de comunicaciones

Al abrirlo…

Pulsamos Stop, y Aceptar.

Lo paramos, porque si queremos controlarlo desde Eclipse, lo mejor es que podamos encerderlo/apagarlo desde alli, por lo que preveemos que fuera de Eclipse, no se este ejecutando; a continuación, abrimos Eclipse

Seleccionamos Window > Preferences

y alli, Runtime Environment y “Add”

Seleccionamos en función de la versión instalada y “Next”

Deberemos indicar la carpeta en donde se instaló Tomcat

Tras esto, indicamos Finish y OK

Para poder verlo y controlar, podemos activar la ventana Server

Nos aparece la pestaña correspondiente a Servers

Y podemos crear el servidor, pulsando en el enlace

Como ya definimos todo, nos aparece configurado el servidor

Nos bastara con indicar “Finish” para que nos aparezca el servidor en su ventana y podamos controlarlo

Otra forma de conseguir la ventana de Servers, seria activar la Perspectiva Java EE

De esta forma, dejaremos Eclipse preparado para crear Dynamic Web Project, cosa que haremos pronto.

Publicado en Desarrollo Web, Formacion, Java | Etiquetado , , , | Deja un comentario

La aplicacion Java

Si habeis llegado a este punto, supongo que os he convencido de las ventajas de realizar una aplicacion en Java

El siguiente paso, es ver, como enviamos nuestro trabajo a un servidor web…la cosa no va a ser tan sencilla como subir nuestro directorio de trabajo,… pero tampoco mucho mas complicada

Formato de despliegue de una aplicación

Según hemos visto antes, una aplicación web desarrollada en Java va a estar compuesta de

  • Ficheros JSP
  • Servlets
  • Clases Java
  • Recursos varios como imágenes, ficheros Javascript, HTML, CSS, ….

Para entregar a producción el trabajo (Desplegar),debemos organizar todos los ficheros


Ficheros JAR

Hasta ahora, para entregar una aplicación Java, generábamos un fichero JAR, en ese fichero se guardaban Clases y Librerías de apoyo

Como en JAR solo había clases java, básicamente, el JAR era un fichero comprimido del directorio en donde se encontraban las clases

  • Permite agrupar distintos archivos java en uno solo.
  • Sigue el formato ZIP
  • Incorporado en la versión 1.1 del JDK
  • Contienen:
    • Clases java
    • Recursos que emplean las clases
  • Es el empleado para empaquetar componentes EJBs, respetando una estructura de directorios


Ficheros WAR

Para entregar una aplicación web, utilizaremos un fichero WAR, capaz de contener todos sus componentes.

  • Servlets y JSPs
  • Contenido estático
    • Html,Imágenes,etc.
  • Otros recursos web

En el WAR, además de las clases, deben ir ficheros descriptores, librerías de apoyo,…por lo que antes de la compresión, deben estructurar la información, siguiendo la siguiente imagen

Hemos de aclarar que los IDEs habitualmente, ya disponen de las herramientas para generar el fichero, y se encargan de la organización de la información.

Ficheros EAR

Archivos desplegables en servidores de aplicaciones JEE

Contienen

  • Archivos WAR
  • EJBs (Empaquetados dentro de ficheros JAR)

Descriptor de despliegue

El descriptor de despliegue se trata de un fichero XML en donde se dan instrucciones al contenedor, acerca de las clases que entregamos, como se han de comportar, y cualquier información necesaria para el funcionamiento de la aplicación, (datos para la conexión a BBDD, …)

En nuestro entorno, será el fichero web.xml que estudiaremos mas adelante

Contenedores y servidores de aplicaciones

Hemos de pensar que una clase java, asi, por las buenas, no es capaz de ser sensible a una direccion web, esto es, no podra ser arrancada desde una URL

Ademas, ya hemos ido comentandoo que el cumplir con la interfaz EJB nos aporta un monton de soluciones a los problemas de programacion

Para que todo eso sea cierto y se pueda cumplir, deberemos introducir nuestras clases en un contenedor que las maneje. Este contenedor lo podriamos ver de la siguiente forma:

Ese contenedor, creado para las gestion de componentes, puede cumplir con nuestros objetivoc

  • Un contenedor es un proceso donde se ejecutan los componentes
  • Provee un ambiente estandarizado de ejecución que provee servicios específicos a componentes
  • Se encarga de implementar todas las especificaciones del API, además de proveer servicios, para el manejo y ejecución de componentes web, tales como servlets, JSPs, filters, listeners, etc..
  • Poseen acceso a sistemas de información empresarial (RDBMS, JDBC, etc.)
  • Gestiona los componentes de la aplicación
    • Ciclo de vida
  • Proporciona acceso a servicios de la plataforma
    • Seguridad, transacciones, persistencia, conectividad, etc.
  • El desarrollador tiene que especificar
    • Los componentes de la aplicación
      • Servlets
      • JSPs (JavaServer Pages)
      • JSFs (JavaServer Faces)
      • EJBs (Enterprise Java Beans)
    • Los descriptores de despliegue (deployment)
      • Ficheros XML que describen los componentes de aplicación

Los contenedores también poseen acceso a sistemas de información empresarial (RDBMS, JDBC, etc.)

Los contenedores, naturalmente los encontraremos la mayoria de las veces, como servidores de aplicaciones, y en algunos casos, orientados unicamente a la web, a continuacion ponemos un ejemplo de lo que hay en el mercado

Servidores de aplicaciones

Son programa que proveen la infraestructura necesaria para las aplicaciones empresariales

  • Contenedores EJBs
    • Jboss
  • Contenedores Web
    • Tomcat
  • Servidores de aplicaciones completos
    • Weblogic
    • IBM WebSphere
    • Caucho Resin
    • JOnAS (Open Source Jee app. Server).
    • iPlanent
    • Orión – OC4J
    • Jboss + Tomcat
    • Glassfish…

Y si queremos tener una idea aproximada de su popularidad….

Realmente, Tomcat nació como un servicio de Apache pensado para entornos de desarrollo, y es el contenedor que vamos a usar en nuestras pruebas, a partir del proximo articulo en que lo instalaremos,

Ultimamente, Tomcat ha pasado a ser un contenedor Web muy util en produccion, y con eso ha terminado de expandir su popularidad

Publicado en Desarrollo Web, Formacion, Java | Etiquetado , , | Deja un comentario

Introduccion a Java EE

Componentes y servicios Java EE

Internet y WWW representan el fundamento sobre los cuales se está construyendo la economía de la información.

La meta de JEE es definir un estándar que ayude a suplir los retos tecnológicos en esta nueva era.

JEE soporta aplicaciones distribuidas que toma ventajas de las tecnologías existentes y en desarrollo simplificando el proceso a través de un modelo de aplicaciones basados en componentes.

JEE soporta aplicaciones desde las C/S corporativas hasta e-commerce con Web en Internet.

Defines estándares que son implementados por distintos proveedores y fabricantes, no fuerza a emplear ningún producto específico.

Máxima interoperabilidad (Web services, IIOP, RMI, etc.).

“Conjunto de especificaciones y prácticas coordinadas que juntas permiten soluciones para el desarrollo, despliegue y gestión de aplicaciones multicapa centradas en servidor”.

En conclusión…

La plataforma de Java EE es un conjunto de especificaciones en el API que te permiten construir aplicaciones web.

Las funcionalidades de Java EE están basadas en Contenedores y componentes

Los componentes web

  • Java Servlets
    • Clases escritas en Java que procesan peticiones HTTP y construyen respuestas
  • JavaServer Pages (JSP)
    • Documentos basados en texto que contienen dos tipos de texto
      • una plantilla de datos estática que puede expresarse en un formato como (X)HTML o XML
      • elementos JSP que determinan cómo la página construye el contenido dinámico
  • JavaServer Faces (JSF)
    • Componentes de interfaz de usuario para aplicaciones web

Los componentes de negocio

  • Lógica que resuelve las necesidades de un determinado dominio de aplicación
  • Enterprise beans (EJBs)
    • Pueden procesar datos recibidos del lado cliente y enviarlos al nivel de sistema de información para su almacenamiento
    • Pueden recuperar datos del sistema de información, procesarlos y enviarlos al cliente
    • Tipos de EJBs
      • Bean de sesión
        • Una conversación con un cliente
      • Bean dirigido por mensajes
      • Permite que un componente de negocio pueda recibir mensajes asíncronamente, normalmente con el Java Message Service (JMS)

Los clientes en Java EE son

  • Clientes web: navegadores web, páginas web, applets
  • Aplicaciones de cliente

Estructura de una aplicación web

Denominamos aplicación web a las herramientas que los usuarios pueden utilizar accediendo a un servidor; ya sea en Internet o en Intranets

La estructura más habitual para este tipo de aplicaciones es de tres niveles, aunque podemos verla también como cuatro niveles

  • Nivel Cliente: Proporcionado por un navegador o una aplicación cliente, Corre en la máquina del usuario.
    • Si es un navegador, esperara recibir HTML, CSS, Javascript, …..
    • Si es una aplicación, puede esperar mensajes con un formato definido….
  • Nivel Vista: Se compone de un conjunto de objetos orientados totalmente a controlar la presentación de la información. Se encargan de generar los mensajes que se enviaran al cliente, por ejemplo, el HTML, y el CSS, si nuestro cliente es un navegador.
    • Podemos utilizar JSF, Java, PHP, ASP,
    • Nosotros nos centraremos en utilizar JSP
  • Nivel Capa de Negocio. Contiene toda la lógica de la aplicación, se encarga de resolver el trabajo que debe hacer la aplicación
    • Podemos utilizar Java, Perl, PHP,
    • Nosotros lo realizaremos con Servlets de Java
  • Nivel de Persistencia. Contiene las herramientas para acceder a la base de datos para obtener o guardar la información
    • Nosotros utilizaremos Java y MySQL

Si nos paramos a pensar un momento, vemos que el nivel vista y el nivel cliente es el mismo, ya que en el servidor esta como vista, y se envia al cliente…luego, de lo que estamos hablado, es de construir aplicaciojnes siguiendo el patron MVC del que ya habiamos hablado anteriormente, solo tenemos que asumir que la capa de negocio está resuelta en los controladores y servicios, y la capa de persistencia está tambien resuelta en los modelos y servicios (de repositorio)

Ventajas:

  • Ahorra tiempo: Se pueden realizar tareas sencillas sin necesidad de descargar ni instalar ningún programa.
  • No hay problemas de compatibilidad: Basta tener un navegador actualizado para poder utilizarlas.
  • No ocupan espacio en nuestro disco duro.
  • Actualizaciones inmediatas: Como el software lo gestiona el propio desarrollador, cuando nos conectamos estamos usando siempre la última versión que haya lanzado.
  • Consumo de recursos bajo: Dado que toda (o gran parte) de la aplicación no se encuentra en nuestro ordenador, muchas de las tareas que realiza el software no consumen recursos nuestros porque se realizan desde otro ordenador.
  • Multiplataforma: Se pueden usar desde cualquier sistema operativo porque sólo es necesario tener un navegador.
  • Portables: Es independiente del ordenador donde se utilice (un PC de sobremesa, un portátil, un movil) porque se accede a través de una página web (sólo es necesario disponer de acceso a Internet). La disponibilidad suele ser alta porque el servicio se ofrece desde múltiples localizaciones para asegurar la continuidad del mismo.
  • Los virus no dañan los datos porque éstos están guardados en el servidor de la aplicación.

Desventajas:

  • Ofrecen menos funcionalidades que las aplicaciones de escritorio. Las funcionalidades que se pueden realizar desde un navegador son más limitadas que las que se pueden realizar desde el sistema operativo. Tenemos que reconocer que cada vez este problema se va reduciendo, gracias al empleo de Javascript y Ajax.
  • La disponibilidad depende de un tercero, el proveedor de la conexión a internet o el que provee el enlace entre el servidor de la aplicación y el cliente. Así que la disponibilidad del servicio está supeditada al proveedor.
Publicado en Desarrollo Web, Divulgacion, Java | Etiquetado , , , | Deja un comentario

Servidores de aplicaciones y servidores web

Debemos diferencia entre un Servidor de aplicaciones y un servidor Web:

Un servidor web:

  • Está pensado para recibir peticiones (normalmente HTTP) y devolver el contenido estático que obtendrá de un fichero
  • Puede disponer de plugins para utilizar Perl, PHP, ASP, o JSP para que generen el contenido HTML o delegando el trabajo en algún subsistema
  • Un servidor web no aporta ninguna funcionalidad aparte de la propia comunicación cliente-servidor

Un servidor de aplicaciones

  • Expone la lógica empresarial  a las aplicaciones cliente a través de varios protocolos, incluyendo HTTP. Mientras que un servidor web trata principalmente con el envío de HTML para su visualización en un navegador web, un servidor de aplicaciones proporciona acceso a la lógica de negocios para que lo utilicen los programas de aplicaciones cliente. El programa de aplicación puede usar esta lógica tal como llamaría a un método en un objeto.
  • En la mayoría de los casos, el servidor expone esta lógica comercial a través de una API de componente, como el modelo de componente EJB (Enterprise JavaBean) que se encuentra en los servidores de aplicaciones J2EE (plataforma Java 2, Enterprise Edition). Además, el servidor de aplicaciones administra sus propios recursos. Como seguridad, transacciones,  mensajería. Al igual que un servidor web, un servidor de aplicaciones también puede emplear diversas técnicas de escalabilidad y tolerancia a fallas.
  • Qué quiere decir esto?
    • Que los programadores van a poder dedicarse casi en exclusiva a implementar la lógica del dominio, ya que servicios de uso común, como transacciones, seguridad, persistencia, etc. ya son proporcionados por el servidor de aplicaciones
    • Se ha convertido en una pieza de software clave para cualquier empresa

Porque utilizar los Servidores de aplicación

  • Comienzan a surgir cuando queda claro que las aplicaciones cliente/servidor no iban a ser escalables a un gran número de usuarios
  • Se hacía necesario mover las reglas de negocio a algún lugar intermedio entre los clientes y la base de datos (Separation of Concerns).
  • Empezaron a surgir productos para hacer esa tarea
    • Cada compañía los llamaba de una forma distinta
    • Servidores de transacciones, servidores de aplicaciones…
  • Pero todos ellos estaban pensados para:

Gestionar de forma centralizada el modo en que los clientes debían conectarse a la base de datos o a los servicios con los que tenían que interoperar

Alguno de los servicios que proporciona:

Control de sesiones

Como sabemos, HTTP es un protocolo sin sesión

  • No permite mantener una conexión abierta entre el cliente y el servidor más allá de lo que dura la transferencia del documento en cuestión

En cualquier aplicación de comercio electrónico, es necesario poder identificar al usuario a través de su navegación por el sitio Web

  • Autenticación, adición de productos al carrito de la compra, etc.

La implementación “a mano” se complicaría enormemente en el caso de contar con varios servidores (equilibrado de carga)

  • La petición de un usuario registrado en la máquina A puede ser redirigida al servidor B

Lo lógico es que sea el servidor de aplicaciones quien se encargue de gestionar la sesión

Además, debería ser más eficiente que si lo programamos nosotros mismos

Equilibrado de carga

Por equilibrado de carga (load balancing) se entiende la capacidad de repartir el procesamiento entre distintos servidores

Las peticiones de los clientes se redirigen a la máquina que más desocupada se encuentre en ese momento

Mejora de rendimiento de la aplicación

No es tan sencillo como añadir una nueva máquina y ya está

Además de la escalabilidad, se consigue una mayor tolerancia a fallos

Acceso a Datos

Los servidores de aplicaciones proveen facilidades para administrar conexiones a bases de datos relacionales

  • Oracle, SQL Server, DB2…

Los componentes (las clases que implementan la lógica del negocio) acceden a ellas de forma estándar

  • Independiente de la base de datos subyacente

También suelen permitir acceder a otros tipos de fuentes de datos:

  • Tales como distintos ERP (SAP, Vaan…), repositorios XML, etc.
  • Los servidores de aplicaciones son también importantes, por tanto, como mecanismo de integración de sistemas heredados

Pooling de conexiones

Abrir una conexión a una base de datos suele ser un proceso costoso

  • No es viable abrir una nueva conexión por cada consulta a la base de datos.Penalizaría enormemente el rendimiento de la aplicación

Los servidores de aplicaciones suelen contar con una serie de conexiones permanentemente abiertas que distribuye de forma transparente a los distintos procesos

  • Se puede configurar el número de conexiones abiertas, e incluso la política de asignación

Gestion de transacciones

Recuerda: Transacción: secuencia de pasos que, o se ejecutan todos, o si no el sistema queda en el estado original

Son un elemento básico de cualquier aplicación comercial

  • Evitan que haya información inconsistente

Sería complejísimo implementarlas “a mano”

Con un servidor de aplicaciones que tenga esta característica, bastaría con indicarle dónde empieza y termina la transacción

  • Encargándose él de deshacer los pasos intermedios en caso de un error del sistema

Algunos servidores populares

Publicado en Desarrollo Web, Divulgacion | Etiquetado , , | Deja un comentario

El patrón MVC

La arquitectura en tres capas

Objetivo:

Compatibilizar aplicaciones web, aplicaciones cliente / servidor y aplicaciones de sobremesa, permitiendo la reutilización del codigo

  • Separar las responsabilidades en distintos niveles
    • Permite aislar los cambios en tecnologías a ciertas capas para reducir el impacto en el sistema total.
  • Aumentar la reutilización del código
    • Cada capa no tiene dependencia con otra, por lo que es más fácil que se pueden reutilizar
  • Aumentar la portabilidad al crear clases con alta cohesión
    • Las clases realizan trabajos especializados y se relacionan con interfaces perfectamente definidas
  • Mejorar el rendimiento.
    • Distribuir las capas entre múltiples sistemas (físicos) puede incrementar la escalabilidad, la tolerancia a fallos y el rendimiento.
  • Aumentar la independencia del hardware

Cuando hablamos de estructura en capas, habitualmente, planteamos tres capas:

  • Persistencia
    • Responsable del acceso a la base de datos para la obtención o grabación de toda la información
  • Lógica de negocios
    • gestionan la lógica empresarial de la aplicación y pueden acceder a los servicios del tercer nivel. La capa de la lógica de aplicación es donde se produce la mayor parte del trabajo de los procesos.
  • Interfaz de usuario
    • permiten al usuario interactuar con los procesos del segundo nivel de forma segura

Los tres niveles deben comunicarse entre ellos. Los protocolos abiertos estándar y las API expuestas simplifican esta comunicación. Puede escribir componentes de cliente en cualquier lenguaje de programación, como Java o C++. Estos clientes se ejecutan en cualquier sistema operativo, comunicándose con la capa de la lógica de la aplicación. Las bases de datos del tercer nivel pueden tener cualquier diseño, si la capa de la aplicación pueda consultarlas y manipularlas. La clave de esta arquitectura es la capa de la lógica de aplicación.

Esta estructura permite p.ej: la reutilización de los controladores, en cualquier entorno:

La ventaja que aporta esta forma de programar es la independencia de las capas; esto significa que cada capa utilizar la tecnología que mejor se adapte al entorno.

Frente a cambios de estructuras…

  • En web, la capa presentación se puede desarrollar con HTML, Javascript,…
  • En cliente-servidor, podemos utilizar Visual Basic, Java, o cualquier tecnología soportada por el cliente
  • En sobremesa, volveríamos a utilizar la tecnología soportada

Frente a cambios de Base de datos

  • Cambiamos la capa de acceso a datos

Cuando se requiere alta disponibilidad o redundancia, podemos hacer que cada capa corra en cualquier número de máquinas distintas

Por último, no se debe confundir capa con nivel; los niveles es la forma en que se distribuyen las capas. Esto es, si todas la capas están en la misma máquina, la aplicación tendrá 1 nivel

Publicado en Desarrollo Web, Divulgacion | Etiquetado | Deja un comentario