Cliente/Servidor – Parte I

Hermoso martes, martes de eclipse. Hoy los poderes del Limbo me dan el poder… Qué buena serie Los Halcones Galácticos!!. Hoy seguimos con la introducción a los Sistemas Operativos.

No puedo, tengo que dejarles antes la apertura de los Halcones Galácticos!!

Roles y Funciones del Cliente

El rol del Cliente es el de iniciar el dialogo con el servidor solicitando acceso a los recursos compartidos que este posee. Una vez obtenidos dichos recursos, es responsabilidad del cliente mostrar los resultados al usuario, para lo cual es muy probables que deba ejecutar código.

En este sentido, en una arquitectura Cliente/Servidor clásica en 2 niveles, el cliente resolverá la lógica de presentación al usuario (GUI – Graphic User Interface) y también lógica de negocio. La variedad de clientes estará dada generalmente por el tipo de lenguaje de programación o plataforma de ejecución que posee.

Los denominados lenguajes de programación de cuarta generación o lenguajes visuales, fueron los facilitadores para la construcción de clientes con la funcionalidad mencionada anteriormente.

Cliente/Servidor en la Web con Tecnología JAVA

En la evolución de los sistemas distribuidos, se menciono la tecnología Web en 3 capas y se introdujo el concepto de Web Server dinámico.

El dinamismo que se busca en un Web Server consiste en lograr que dicho servidor que podría verse como un simple servidor de archivos, sea capaz de desencadenar algún tipo de procesamiento computacional, es decir, ejecutar código de programas.

En ese sentido, esta extension de funcionalidad que se busca obtener, puede lograrse de modo nativo o a traves de la programacion de interfaces (tal como sucede siempre que se requiere extender la funcionalidad de un software).

  • El modo nativo consiste en modificar el núcleo del software en cuestión dotándolo de las prestaciones que se buscan dentro mismo de su entorno de ejecución.
  • El modo por programación de interfaces, consiste en contar con un componente de software que brinde las prestaciones que se buscan lograr (en este caso que el ser­vidor no solo devuelva archivos sino que invoque rutinas para ejecutar código) y escribir las interfaces necesarias para conectar ambos componentes.

La tecnología Java para Web o Tecnologia JEE aporta una solución en modo nativo, mientras que la tecnología CGI, aporta una solución por programación de interfaces.

La tecnología basada en Web modo nativo hace uso del concepto de paginas HTML dinámicas.

Una página dinámica se ejecuta dentro del Web Server pero dentro de un componente de la misma que interpreta el código de programación de manera separada del código HTML.

Se considera de modo nativo porque el código no requiere invocaciones a programas externos y no usa una API.

Ejemplos de páginas dinámicas lo constituyen el lenguaje PHP, JSP (basado en JAVA) o ASP (páginas dinámicas en tecnología Microsoft).

En el caso particular de paginas dinámicas en tecnología Java, la arquitectura del sistema se presenta así.

Tecnología JEE en el contexto de Ambientes Distribuídos

Un servlet Java es un programa Java que corre del lado del servidor y se ejecuta en el contexto de un componente del Web Server denominado Web Container.

El Web Container es una maquina virtual Java (JVM) que brinda una implementación de la interface de aplicación del servlet (API). Las instancias de los servlets son componentes que utiliza el Web Container para responder a los requerimientos HTTP.

El componente Web Container puede atender requerimientos que se ejecutan en hilos separados, logrando un mayor rendimiento y escalabilidad. Ademas proporciona servicios adicionales para seguridad y manejo de errores.

Los Servlets, por su parte, aprovechan las prestaciones de su entorno de ejecución y se comportan como programas servidores robustos y orientados a objetos, que por estar escritos en Java son independientes de la plataforma.

En definitiva, un Servlet es un programa Java que debe generar código HTML dentro de su respuesta, debido a que se ejecuta en el contexto de un Web Server.

Esta característica, obliga a que se mezcle la lógica de la presentación y la lógica de negocio dentro del mismo programa, por esa razón surgen las paginas dinámicas Java o JSP (Java Server Page) que son paginas HTML con etiquetas particulares para incrustar código Java.

El Web Container convierte las paginas JSP en instancias de Servlets.

El siguiente es un ejemplo de código Java que implementa un Servlet para “Hola Mundo

public void generarRespuesta (HttpServletRequest request, HttpSeodetResponse response)
Throws lOException {
// Determina el nombre especificado String name = request.getParameter ("name");
If {(name == null) 11 (name.length() == 0 )) { name = DEFAULT, NAME;
>
// Especifica que ei tipo de contenido es HTML response.setContentType ("text/html");
PrinterWriter out= response.getWriter ();
//Generarrespuesta HTML
OUt.println ("<HTML>");
out.println ("<HEAD>");
out.println ("<TITLE>Hola Mundo</TITLE>");
out.println ("</HEAD>");
out.println ("<BODY BGCOLOR = 'white's-");
out.println ("<B>Hello," + name + "</B>");
out.println ("</BODY>");
out.println ("</HTML>");
out.close();
}

Este mismo ejemplo pero construido con páginas JSP serla:

<%! private static final String DEFAULT_NAME = "Mundo"; %>
<HTML>
<HEAD>
<TITLE> Hola Mundo en JSP </TITLE>
</HEAD>
<% - Determinar el nombre especificado — %>
<%
String name = re quest .get Parameter ("name"); if (( name == null) | J (name.length {) == 0)) { name = DEFAULT_NAME;
}%>
<BODY BGCOLOR = "white">
<B> Hello, <% =name %> </B>
</BODY>
</HTML>

La primera vez que una página JSP es requerida, el Web Container convierte el archivo JSP en un servlet que puede responder a los requerimientos HTTP.

El procesamiento de una pagina JSP por parte del Web Container realiza tres pasos:

  1.  En el primer paso el Web Container traduce el archivo JSP en código fuente Java que contiene la definición de una clase Servlet.
  2.  En el segundo paso, el Web Container compila el código fuente Java en un archivo de clase Java.
  3.  En el tercer paso, el Web Container crea una instancia de la clase servlet y realiza los pasos del ciclo de vida del mismo invocando un método especial que es jspInit.

La semana que viene seguimos con el patrón de diseño MVC (Model View Controller)

Dejá un comentario