Aplicaciones de Servidor ("Server Side")

Qué ocurre cuando se solicita una página a www.micompañia.com ?

El Servidor de Páginas (Web-Server) ,es el encargado de esta función.

Qué información envía ?, Cómo decide que enviar ?

La gran mayoría de las páginas de Internet son algún tipo de programa, una parte de éste es ejecutado por el Servidor de Páginas por lo que es denominado Aplicación de Servidor ("Server-Side") , mientras otra parte puede ser ejecutada por el cliente ("Internet Explorer" o "Netscape Navigator").

Es de esta manera que:

  1. Cuando usted visita un sitio es capaz de enviarle un página que inicia con : "Bienvenido <su nombre>"
  2. Se genera la información apropiada cuando usted realiza una búsqueda
  3. Es capaz de enviar su tarjeta de crédito y otras funcionalidades más.

La forma mas antigua de ejecutar estos programas es mediante un "CGI Script" o "Common Gateway Interface" que es escrito ya sea en Perl o Tcl, otras opciones incluyen ASP,ADP u otro lenguaje, y en tiempos mas recientes son utilizados Java Servlets, JSP (Java Server Pages) en conjunción con Java Beans y JDBC.El programa ya sea en Perl,VBScript,Java o cualquier otra forma es invocado cada vez que sea solicitada alguna página que requiera personalización o datos específicos, estos datos específicos son enviados generalmente en una forma para HTML

El documento mas sencillo que usted puede observar en su "Netscape Navigator" o "Internet Explorer" es uno conformado por solo HTML .Sin embargo la forma y la cantidad de información que se le envíe, dependerá del programa que sea ejecutado en el Servidor de Páginas

Que sucede cuando usted visita la página principal de Yahoo y le dice "Bienvenido <su nombre>" ?

  1. Cuando usted solicita la página www.yahoo.com o mail.yahoo.com, su Navegador (Netscape o Explorer) envía una secuencia de datos denominada "Cookie", que básicamente es una serie, digamos: 474572358479.
  2. Cuando esta información arriba a los "Servidores de páginas", éstos revisan su requisición,el servidor de páginas observa que lleva una serie :474572358479, este número es utilizado para realizar una búsqueda en una base de datos (si el Navegador no mando un "Cookie" entonces no se realizará una búsqueda, y se asume que usted es usuario nuevo)
  3. Una vez teniendo el resultado de la búsqueda , sera substituida en el documento esqueleto y este dirá : "Bienvenido <su nombre>" o "Bienvenido <usuario nuevo>".
  4. Este documento será enviado por el servidor de páginas a su computadora y se desplegará en su "Netscape Navigator" o "Internet Explorer".

NOTA: El servidor de páginas no necesariamente le envía solo HTML, le puede enviar JavaScript,Tcl o Java para que sea ejecutado en el cliente ("Navigator" o "Explorer")

Aunque en los pasos anteriores se trivializó la ejecución del programa, cualquier página que tenga cierto grado de personalización es realizada de la misma forma. La velocidad de ejecución así como su sencillez, es lo que hace que existan varias formas de Aplicaciones en Servidor , así como también Servidores de Páginas Ejemplos:

Otro detalle importante es que el "Servidor de Páginas" sea capaz de ejecutar el programa internamente así como soportar "Threading"..más sobre esto en Servidores de Páginas

Implementaciones más comunes de Aplicaciones de Servidor

ASP e IIS

IIS es el "Servidor de páginas" desarrollado por Microsoft que comúnmente utiliza lo que es denominado ASP ("Active Server Pages").Cuando se solicita una página a IIS y suponiendo que ésta es un ASP (99% las veces lo es), IIS llamará al documento esqueleto que compone la página, este esqueleto tiene la forma:


<% if cookie != 0 then %>  
<HTML> 
<HEAD>
<TITLE> Bienvenido de Nuevo </TITLE> 
</HEAD>
<BODY>
<% Set Conn=Server.CreateObject("ADODB.Connection")
  Conn.Open "MiBasedeDatos"

    SQL= "SELECT nombre_de_usuario
  FROM usuarios 
  WHERE numero_usuario=Request.Form("Cookie")
 
    Set RS = Conn.Execute(SQL)

%>  

  *** Continua Documento para ser enviado a usuario registrado ***
</BODY> 
 <% else %>
<HTML>
<HEAD>
<TITLE> Bienvenido Usuario Nuevo </TITLE> 
</HEAD>
<BODY> 
  *** Enviar Documento para usuarios nuevos ***
</BODY> 
 <%End If%>
   

El esqueleto esta compuesto por información en HTML y entre ésta se encuentran comandos que son interpretados y ejecutados por el "Servidor de Páginas (IIS)".Los comandos ejecutables se encuentran entre <% %> ; esta secuencia de comandos realiza una búsqueda en la base de datos Una vez interpretados estos comandos el "Servidor de Páginas (IIS) " substituye esta información en los espacios adecuados.Nótese que el lenguaje que es ejecutado por IIS es típicamente VBScript (Visual Basic de Microsoft).

Perl y Apache

Esta implementación es similar a la anterior, y quizás sea más utilizada que cualquiera otra ( se estima que en 60 % de todos los WebSites del Mundo),a diferencia de IIS/ASP la combinación de Apache con Perl requiere que el programa sea ejecutado por un interpretador de Perl , uno de los problemas que surgieron con este tipo de implementación fue su implementación a "escala", ya que era necesario iniciar un "proceso nuevo" cada vez que fuera solicitada una página dinámica (Vea Apache y el interpretador en Perl ). Para contrarrestar este problema han surgido módulos de Apache como mod_perl que permite ejecutar un programa sin iniciar un "proceso nuevo" y fast_cgi que ejecuta varios servidores (pseudo-threading).

A pesar de las funcionalidades que han sido agregadas a Apache , han surgido "Aplicaciones de Servidor" más eficientes que Perl,y aunque muchas aplicaciones han sido modularizadas para Apache estas en ocasiones son ejecutadas más eficientemente en otro "servidor de páginas".

Hoy en día Perl con Apache sigue siendo una forma muy popular de utilizar aplicaciones de servidor ya que una gran parte de las empresas que ofrecen servicios de Hosting están basados en este sistema.

Links:
  • Guia de Apache : Detalles sobre la Instalación-Configuración y otros detalles del Servidor Apache.
  • Guia de Apache 2 : Detalles sobre la Instalación-Configuración y otros detalles del Servidor Apache 2.
  • Procesar información en Perl : Ejecución de una Aplicación de Servidor en Perl con información de una forma HTML.

Tcl y AOLServer

Aunque esta combinación no esta en amplio uso, es un ejemplo a seguir por su flexibilidad e implementación a escala. Que tan flexible ? : Es la que utiliza America Online para sus visitantes, cuantos usuarios ? 25,000,000.AOLServer también es un producto Open Source

Para aquellos que utilizan Perl o PHP, se preguntarán : Escribir "scripts" (programas) en Tcl ? Si ya existen miles de programas en Perl o PHP que utilizo para realizar transacciones como: registro de usuarios, opiniones en foros , tarjetas de crédito. Un conjunto de aplicaciones llamado OpenACS también Open Source incluye cientos de "scripts" en Tcl que son capaces de comunicarse con una base de datos , generar contenido dinámico y otras funcionalidades.

Links:

PHP ("Hypertext Preprocessor")

"PHP" es una solución empleada en diversos servidores de páginas que permite crear contenido dinámico, a continuación se describe un ejemplo:


<?php
if(strstr($HTTP_USER_AGENT,"Mozilla")) {
?>


             <b>Utiliza Netscape!</b>
 
<?php
} else {
?>


             <b>Utiliza Explorer</b>
<?php
}
?>

Los fragmentos que se encuentran entre <? ?> están escritos en "PHP", mientras que el resto de la página esta escrita en HTML; cuando el servidor de páginas encuentra los elementos <? ?> éste los procesa, en efecto cumpliendo la definición de Aplicación de Servidor.

Links:
JSP/Java Servlets y "Servelt/EJB Containers"

JSP's (Java Server Pages) son "homólogos" de ASP's y ADP's, ya que contienen elementos de HTML y código de programación escrito en Java , mientras un Servlet es un programa escrito "puramente" en Java; inclusive el surgimiento de JSP's es únicamente para acelerar el tiempo de desarrollo y auxiliar al personal que no conoce el lenguaje Java, estas razones se ven ilustradas por la simple razón que todo JSP es convertido a un Servlet , por lo tanto considere un JSP como una capa de abstracción por arriba de un Servlet .

Para ejecutar Servlet's (implicado JSP's también), existen varios Servlet Engines (por eso el parámetro xxxxx), estos "Servlet Engines" son encargados de ejecutar el código en Java, nótese el término Servlet Engine , esto es de suma importancia ya que un Servlet Engine no es lo mismo que un Servidor de Páginas , inclusive muchos Servlet Engines deben trabajar en conjunción con un Servidor de Páginas (más sobre esto en "Servlet Engines" y "Java Application Servers" )

Lo siguiente es parte de un JSP,(vea la similitud con un ASP )


 <%@ page language="java" import="java.io.*" %>
 <%@ page language="java" import="java.util.*" %>

<HTML>
<BODY bgcolor=white>

<% 
    try 
   { 
       File archivoregistro = null;
     
       if  ...........

   } 
 %> 
<h1> Este es un JSP para recibir un Archivo </h1> 
 <%
    .......
  %>

Los fragmentos que se encuentran entre <% %> están escritos en "Java", mientras que el resto de la página esta escrita en HTML.

Psuedo-Lenguajes aún en uso.... por ahora.

En pleno Boom de Internet (A finales de los 90's) surgieron otros mecanismos para generar contenido dinamico en Internet, sin embargo, aunque estas tecnologías aún siguen subsistiendo hoy en día, la gran mayoría de estas creaciones tenían en mente únicamente facilidad de uso, algo que todas las tecnologías previamente mencionadas han adquirido a lo largo de los años.

Por lo que es probable, en un futuro no muy lejano siga en decadencia el uso de estos pseudo-lenguajes, entre los que figuran: Miva Script y Cold Fusion.

Links: