domingo, 30 de marzo de 2014

PHP

PHP (acrónimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de código abierto que permite la generación dinámica de páginas web. Este se ejecuta del lado del servidor generando código en HTML y enviándolo al cliente.

La interpretación de este código se lleva a cabo mediante un programa interprete (que reside en el servidor) el cual interpreta el código PHP, lo ejecuta y genera un resultado en HTML.


Un mecanismo importante de PHP es que su código puede ser embebido (incrustado) dentro del código HTML: todo lo que está afuera de las etiquetas PHP se deja tal y como está, mientras que el resto se interpreta como código.  

Para delimitar la sección de código PHP se puede hacer de varias formas: 
  • Usando las etiquetas <?php  ...   ?>
  • Usando las etiquetas <? ... ?>
  • Mediante <script language="php"> ... </script>
Ejemplo:

<html>
 <head>
  <title> Programa Ejemplo </title>
 </head>
 <body>
 <?php
      echo "¡Hola, soy un script de PHP!";
   ?>
 </body> 
</html>

Comentarios


Los comentarios en PHP se hacen al estilo de "una sóla línea", sólo se comentan hasta el final de la línea o del bloque actual de código de PHP. O "multi-línea" empezando con /* y terminando el comentario con */. También existe el comentario de estilo consola de una sóla línea #.

Ejemplo:

<?php 
  echo 'Esto es una prueba';   // Este es un comentario de una sóla línea

 /* Este es un comentario multi-línea
  y otra línea de comentarios */
 echo 'Esto es otra prueba';
 echo 'Una prueba final';  #Esto es un comentario estilo consola de una sóla línea

?>

Despliegue de información

Para desplegar información en PHP existen las siguientes sentencias:

print() : está función es fácil de utilizar, inclusive los paréntesis no son necesarios. Su estructura es la siguiente: 

<?php
print("Contenido de PHP");
print "Con print se muestre el contenido en el navegador"; 
?> 

además de contenido estático, permite mostrar el valor de una variable: 

<?php
$saludo = "Hola";
print("$saludo"); // Se imprime la variable saludo
print "$saludo";
?>

echo : está función se comporta de manera muy similar a print: 


<?php
$saludo = "Hola";
echo("$saludo"); // Se imprime la variable saludo
echo "$saludo";
?>

pero echo() nos permite desplegar múltiples elementos, mientras que print no.

<?php
echo "uno","dos","tres";
?>

Sin embargo, se utiliza print() como parte de una expresión más compleja, de manera que puede comportarse como una función retornando falso o verdadero y echo() no.

<?php
$array = file("archivo.txt") or print "No he podido abrir el archivo";
?> 

En muchos casos muchos programadores recomiendan usar echo debido que es un 50% más veloz que print().

Declaración de Variables

En PHP las variables se representan con un signo de dólar seguido por el nombre de la variable. Los nombres de las variables son case sensitive, esto significa que PHP hace distinción entre letras mayúsculas y minúsculas al escribir el nombre de una variable, por lo tanto la variable $var y la variable $Var son dos nombres de variable diferentes. Un nombre de variable tiene que empezar con una letra o una raya (guión bajo).

Ejemplo:

<?php
$var = "Bob";
$Var = "Joe";
echo "$var, $Var";  // Imprime "Bob, Joe"

$4site = 'not yet';  // Inválido; comienza con un número
$_4site = 'not yet'; // Valido; comienza con un subrayado
$täyte = 'mansikka'; // Válida; 'ä' es ASCII 228 (Extendido)
?>

En PHP, las variables siempre se asignan por valor. Esto significa que cuando se asigna una expresión a una variable, el valor íntegro de la expresión original se copia en la variable destino.

PHP ofrece otra forma de asignar valores a las variables; asignar por referencia. Esto significa que la nueva variable simplemente referencía (en otras palabras, "se convierte en un alias de" ó "apunta") a la variable original. Los cambios a la nueva variable afectan a la original y viceversa. Para asignar por referencia, simplemente se antepone un signo de ampersan "&" al comienzo de la variable cuyo valor se está asignando (la variable fuente).

<?php
 $foo = 'Bob'; // Asigna el valor 'Bob' a $foo
 $bar = &$foo; // Referencia $foo vía $bar
 $bar = 'John';
 echo $foo; //$foo también se modifica
 echo $bar;
?>

Algo importante a tener en cuenta es que sólo las variables con nombre pueden ser asignadas por referencia.

<?php
$foo = 25;
$bar = &$foo; // Esta es una asignación válida
$bar = &(24 * 7); // Inválida; referencía a una expresión sin nombre
?>

Entorno de las variables

En PHP hay tres diferentes entornos (scope) de variable:
  • local : Variables declaradas dentro de una función (Local scope)
  • global: Variables declaradas fuera de una función (Global scope)
  • static
Ejemplo:

<?php
$x = 5; // Global scope

function myTest()
{
 $y = 10; // Local scope
 echo "<p>Probando variables dentro de la función: </p>";
 echo "Variable x es : $x"; // Variable x es : 5
 echo "<br/>";
 echo "Variable y es: $y"; // Variable y es : 10
}

myTest();

echo "<p>Probando variables fuera de la función: </p>";
echo "Variable x es: $x";  // Variable x es : 5
echo "<br/>";
echo "Variable y es $y";  // Variable y es :
?>

Como se observa en el ejemplo anterior, las variables declaradas dentro de una función sólo pueden ser utilizadas dentro de la función, de este modo si se intenta acceder a ellas fuera de la función PHP no desplegará ningún resultado.

Otra forma de acceder a las variables globales dentro de una función es utilizar la palabra reservada global. Está referencía a los valores de las variables globales, de tal modo que si la función modifica los valores de estas variables, estas se verán afectadas en su contenido.

Ejemplo;





















































martes, 18 de marzo de 2014

HTML

Las páginas web son archivos escritos en el lenguaje de marcado HTML (HyperText Markup Language). El desarrollo de estas páginas abarca un amplio grupo de tecnologías, desde páginas que sólo usan el lenguaje HTML hasta las más complejas que usan DHMTL (Dynamic HTML), CSS, JavaScript, Applets, Servlets, etc.

El lenguaje HTML se basa en SGML (Standard Generalized Markup Language) el cual es un estandar normalizado por la ISO (International Organization for Standardization) para la organización y etiquetado de documentos. HTML define e interpreta las etiquetas de acuerdo a SGML.

Las páginas web se pueden clasificar en dos tipos:

  • Estáticas. Poseen un contenido fijo, todos los usuarios que las consultan reciben la misma información. El usuario recibe en su navegador la página del servidor sin un procesamiento previo.
  • Dinámicas o activas en el servidor. Poseen un contenido variable, distintos usuarios al consultar la misma información pueden recibir distintos contenidos. El usuario recibe en su navegador la página después de haber sido procesada en el servidor. Para lograrlo se emplean lenguajes de programación como por ejemplo Java.

Por otro lado, según como se visualizan las páginas en el cliente, se clasifican en:

  • Estáticas.  Cuando no poseen ningún tipo de código de scripts, applets o pluggins. Ejemplo: sólo código HTML.
  • Dinámicas o activas en el cliente. Cuando se interpreta o ejecuta código en el equipo del usuario. Para lograrlo se emplean lenguajes de programación y objetos integrados. Ejemplo: páginas con JavaScript, DHTML, applets, etc.
Las características anteriores se pueden combinar como se quieran: una página puede ser estática en el servidor y en el cliente, estática en el servidor pero dinámica en el cliente, dinámica en el servidor y estática en el cliente y, por último dinámica en el servidor y dinámica en el cliente.

Conceptos básicos de HTML

 

Un archivo HTML suele tener la extensión *.html o *.htm, consta de una serie de etiquetas o marcas (tags). La mayoría de las etiquetas aparecen por parejas, habiendo una de inicio (apertura) y otra de fin (cierre), delimitando la parte del documento HTML que se ve afectada por una acción.

Todas las etiquetas comienzan con el simbolo < (menor que) y terminan con el simbolo > (mayor que) , por ejemplo <html>,<hr>, <body>. En HTML no se distingue entre mayúsculas y minúsculas por lo que las cadenas <HTML>,<html>,<Html> representan la misma etiqueta.

Las etiquetas de fin tienen el mismo nombre que las de inicio, pero vasn precedidas del símbolo / (barra inclinada). Por ejemplo, la etiqueta de cierre correspondiente a <html> es </html>.

Una etiqueta puede poseer varios atributos a los que hay que asignar un valor.  Algunosd e estos atributos son obligatorios, mientras que otros suelen ser opcionales. Los atributos se escriben dentro de la etiqueta y separados por espacios en blanco. Para asignar un valor a un atributo se emplea el signo igual (=). El valor que se asigna a un atributo tiene que ir encerrado entre comillas. Por ejemplo, la etiqueta <img> (que no tiene una etiqueta de cierre) tiene varios atributos, entre ellos src que espera cualquier carácter válido en una URL, width y height que esperan un valor alfanumérico y el atributo alt que espera cualquier cadena de caracteres. Un ejemplo del uso de esta etiqueta es: <img src="archivo.gif" width="10" height="10" alt="Algo">. Los atributos sólo se ponen en la etiqueta de inicio: la etiqueta de fin nunca lleva atributos.

Estructura de una página web

La estructura básica de una página web se define en cabecera (<head> ... </head>) y cuerpo (<body> ... </body>). El esquema básico de una página web es:

1: <!DOCTYPE HTML PUBLIC ".//W3C//DTD HTML 4.0//EN">
2: <html>
3: <head>
4: Cabecera de la página
5: </head>
6: <body>
7: Cuerpo de la página
8: </body>
9: </html>

en donde cada línea representa:

Línea 1: Permite indicar la versión HTML que se va a utilizar para escribir en la página. De este modo, el navegador puede utilizar


lunes, 17 de marzo de 2014

Diseño de Sitios Web

Un sitio web es un conjunto de páginas web relacionadas entre sí.  Se entiende por página web a un archivo que contiene código HTML, y los recursos que se emplean en la página (imagenes, sonidos, scripts, etc.).

Estructura física


El contenido de un sitio web suele estar estructurado por diferentes recursos (archivos) que en conjunto representan todo un sistema de archivos en el servidor web. Dependiendo de la cantidad de archivos del sitio se pueden hacer las siguientes preguntas: ¿Todos los archivos se pueden almacenar en una única carpeta? ¿O deben almacenarse en distintas carpetas?. Al definir la estructura física de un sitio web hay que tener presente estas preguntas, ya que una adecuada planificación de esta estructura reduce costos de mantenimiento cada vez que se tenga que actualizar el sitio web, o de tiempo cada vez que se tenga que buscar un recurso para su actualización.

Si el sitio web contiene un número pequeño de archivos (5 o 10 archivos), quizás sea suficiente con tenerlos todos en una misma carpeta, pero si el número de archivos es muy grande conviene organizar los archivos en diferentes carpetas, de manera que sea fácil localizar los archivos y editarlos.

Existen diferentes alternativas de organización de un sitio web en archivos. Algunas de las más usuales son:

  • Por el tipo de archivo. Por ejemplo, archivos HTML, archivos gráficos, de video, entre otros.
  • Por el nivel de acceso (visibilidad). Por ejemplo, parte pública, parte privada de los clientes, parte privada de los administradores, etc.  
  • Por el contenido. Por ejemplo, una empresa que vende productos puede organizar los archivos según la información que contiene: los archivos de la familia de productos A en una carpeta, en otra carpeta la familia de productos B, etc.
  • Por fecha.  Por ejemplo, el sitio web de una revista puede organizar archivos según la fecha de publicación.
  • Por su propietario. Por ejemplo, una empresa puede organizar los archivos, según el departamento al que pertenecen: departamento A, departamento B, etc.
  • Por su estructura lógica o de navegación. La estructura física puede ser copia de la estructura lógica.
Por ejemplo, en la siguiente figura tenemos dos ejemplos de organización, para (a) el sitio web se ha organizado físicamente según su contenido, para (b) el sitio web se ha estructurado por tipo de archivo, (asp, html, etc) en  un primer nivel y en función del tipo de acceso (privado y público) y de tipo de archivo (gif, jpg,  png) en un segundo nivel.


Como buena práctica no se debe de crear estructuras de directorios muy profundas, ya que cada directorio que se crea añade unas letras más a la URL. Podría llegar a ser difícil recordar tal URL.


Los nombre de carpetas y archivos

 

Con la intencion de evitar errores es recomendable respetar las siguientes normas cuando se le asiga nombre a las carpetas o archivos:

  1. El nombre debe estar formado por caracteres alfanuméricos: a-z y 0-9.
  2. No debe contener caracteres no alfanuméricos como signos de puntuación, espacios en blanco, caracteres acentuados, eñes, etc.
  3. Los unicos caracteres no alfanuméricos permitidos son el subrayado _ (guión bajo) y el guión (-).
  4. No debe superar los 20 caracteres.
  5. Utilizar siempre letras minúsculas aunque se admitan mayúsculas. Hay servidores que distinguen entre mayúsculas y minúsculas. Esto significa que la página INDEX.html no es lo mismo que la página index.html.
  6. Para las páginas HTML utilizar siempre la extensión: *.html aunque se admita la  *.htm
  7. Reservar el nombre index.html para la página que deseamos se muestre por defecto cuando el usuario navega en el sitio web, esta no deberá ir en ninguna carpeta.

Enlaces 

 

Los enlaces son claves en la web, ya que son los que permiten crear el hipertexto. Los enlaces se pueden crear en distintas formas. Atendiendo al ámbito de referencia, se pueden dividir en enlaces que hacen referencia a recursos del propio sitio web y enlaces que hacen referencia a recursos de otro sitio web.

Por otro lado, los enlaces se pueden clasificar en absolutos y relativos. Cuando se crea un enlace desde un sitio web, siempre se emplea un enlace absoluto de la forma:  
http://www.otrositio.mx/dir/recurso.yyyy.

Sin embargo, cuando se crea un enlace a un recurso en el mismo sitio web, se puede hacer en absoluto o relativo:
  • Absoluto 1:  Similar al enlace a otro sitio web. Se indica el nombre del sitio actual y la ruta completa al recurso. Todos los enlaces de este tipo comienzan por http://. Por ejemplo: http://www.sitioactual.mx/dir/recurso.yyyy
  • Absoluto 2: Se indica la ruta completa al recurso. Como  no se indica el nombre del sitio web, se emplea el actual. Todos los enlaces de este tipo comienzan por /.  Por ejemplo: /dir/recurso.yyyy
  • Relativo:  No se indica la ruta completa, sino la posición relativa del recurso respecto al archivo que contiene el enlace. Por ejemplo, si un  enlace en la página a.html de la carpeta dir quereremos que apunte a la página b.html del mismo directorio, simplemente escribiremos: b.html.

 

Estructura lógica


La estructura lógica o de navegación define como un visitante se va a mover (navegar) de una zona a otra de un sitio web. Según el tipo de navegación que se permita en un sitio web, los usuarios pueden tener una sensación de  "poca libertad" (navegación controlada) o "mucha libertad" (navegación libre).

La estructura de navegación se suele elegir en función del tipo de contenido. Existen distintos tipos de estructura como:

Jerarquica. Estructura en árbol donde existe una página índice (index) o principal desde donde se accede al resto de las páginas. Desde estas subpáginas se puede acceder a otras y así sucesivamente creando distintos niveles o jerarquías. Esta estructura es ideal para sitios web de centros o proyectos. No se aconseja utilizar más de 4 niveles para evitar que el usuario se desoriente durante la navegación. Conviene situar en todas las páginas un menú que permita moverse de una forma más fácil y directa por los distintos niveles y páginas de cada nivel.

Lineal. Es una estructura muy simple, similar a las páginas de un libro. Desde una página concreta se puede ir a la página siguiente o a la página anterior. Es muy útil si deseamos que el usuario siga un itinerario fijo y guiado sin la posibilidad que pueda acceder a otras páginas que puedan distraerle. Ejemplo: Guía o tutorial de aprendizaje. No es recomendable si el número de páginas encadenadas es muy elevado porque produce sensación de fatiga y no permite retomar fácilmente la secuencia allí donde se abandonó en la última sesión.

Lineal con jerarquía. Es una estructura híbrida que trata de aprovechar las ventajas de las dos estructuras anteriores. Las páginas y subpáginas se organizan de forma jerárquica pero también es posible navegar de forma lineal por las páginas de un mismo nivel.

Red. A partir de la página índice o principal se puede navegar a otra u otras sin ningún orden aparente. Es una estructura más libre pero no es aconsejable cuando el número de páginas es elevado porque desorienta al usuario al no saber dónde está ni disponer de recursos para ir donde sea.
 
 


sábado, 15 de marzo de 2014

Variantes de la arquitectura cliente servidor

Como se mencionó anteriormente una aplicación web se basa en una arquitectura cliente-servidor: por un lado está el cliente (el navegador o browser) y por otro lado el servidor (el servidor web). Existen diversas variantes de está arquitectura básica según se implementan diferentes funcionalidades en la parte del servidor. Las variantes más comunes son:
1. Todo en un servidor. En una única computadora se aloja el servicio de HTTP, la lógica de negocio (las especificaciones de la aplicación), la lógica de datos (la forma como se accede a los datos) y los datos. Las tecnologías  ASP y PHP emplean está clase de arquitectura.
 
2. Servidor de datos separado.  A partir de la arquitectura anterior, se separa la lógica de los datos y los datos en un servidor de base de datos específico. Las tecnologías ASP y PHP emplean está clase de arquitectura. 
3. Todo en un servidor con servicio de aplicaciones. En esta variante de arquitectura se separa la lógica de negocio del servicio HTTP y se incluye el servicio de aplicaciones para administrar los procesos que implementan la lógica de negocio. La tecnología que emplea esta arquitectura es JSP.

4. Servidor de datos separado con servicio de aplicaciones. A partir de la arquitectura anterior, se separa la lógica de datos y los datos a un servidor de base de datos específico. La tecnología JSP  emplea está clase de arquitectura.

5. Todo separado.  Las tres funcionalidad básicas de un servidor web se separa en tres servidores específicos. JSP emplea esta clase de arquitectura.


El objetivo de separar las distintas funcionalidades (servicio web, lógica de negocio y lógica de datos) en distintos servidores es aumentar la escalabilidad del sistema de cara a obtener un mayor rendimiento. Al separar las distintas funcionalidades en distintos servidores, cada uno de ellos se puede configurar de forma adecuada a los requisitos que presenta cada uno de ellos. Por ejemplo, para ofrecer el servicio HTTP hace falta una caomputadora con una buena conexión a Internet, rápida pero sin grandes necesidades de almacenamiento. Por otro lado, para el servidor de base de datos hace falta una computadora con mucha memoria, y con un disco duro de alta capacidad de almacenamiento y rápido para mantener los datos.

Otra ventaja que se obtiene al separar las funcionalidades, es que al aislar la lógica de negocio y la lógica de datos en servidores separados que no están conectados directamente en Internet, es que se aumenta el nivel de seguridad ya que no es tan fácil acceder a ellos.

Servidor Web vs Servidor de Aplicaciones

 

En ocasiones existe la confunción entre los términos servidor web y servidor de aplicaciones. Un servidor web no es  más que un simple servidor de archivos. Los clientes se dirigen a éste mediante el protocolo HTTP, extrae simplemente de la petición el nombre del recurso solicitado, lo busca en disco, y lo "envuelve" dentro de una respuesta HTTP para transmitirlo al cliente. No realiza ningún tratamiento en el recurso antes de transmitirlo al cliente, siendo su única función transmitir al cliente una página HTML, una imagen, un archivo de audio o algún archivo ejecutable. Los servidores web más populares que existen son: Apache, Tomcat y Microsoft IIS.

Por otro lado un servidor de aplicaciones es radicalmente distinto al servidor web, ya que los recursos que le son confiados no son simples archivos estáticos, sino que contienen el código que se va a encargar de ejecutar en nombre de los clientes que realicen una petición. Cuando el servidor de aplicaciones recibe una solicitud HTTP, éste también analiza la petición para determinar qué recurso se le ha solicitado. Está petición concierne a código ejecutable alojado en el servidor. Contrariamente a lo que haría un servidor web en la misma situación, no trasnfiere al cliente el código sino que lo ejecuta y el resultado de la ejecución de ese código lo reenvía al cliente.  Un ejemplo común del uso de servidores de aplicación (y de sus componentes) son los portales de Internet, que permiten a las empresas la administración y divulgación de su información, y un punto único de entrada a los usuarios internos y externos. Teniendo como base un servidor de aplicación, dichos portales permiten tener acceso a información y servicios (como servicios Web) de manera segura y transparente, desde cualquier dispositivo. Los servidores de aplicaciones más comunes que existen son los que están basados en lenguaje de programación Java, como: WebLogic de Oracle, y WebSphere de IBM.

Servidores web locales


Un servidor web local suele ser una solución para realizar pruebas y/o tareas de administración, instalación y desarrollo. Un servidor web local reside en una red local o equipo local de referencia, el cual contiene una serie de aplicaciones para hacer pruebas, configurar o programar aplicaciones web  sin miedo a estropear la aplicación web oficial  en un servidor en producción.

Las páginas web se acceden siempre mediante una dirección o URL, que por defecto se encuentra en nuestro equipo y que se conoce como localhost, que es un nombre reservado para toda computadora, router o dispositivo que disponga de una tarjeta ethernet para referirse a sí misma. El nombre localhost es traducido como la dirección IP 127.0.0.1.

Configurar e instalar cada uno de los componentes necesarios para un servidor web puede ser costoso e implicar mucho tiempo, por lo que existe la posibilidad de crear un servidor local mediante paquetes de software llamados stacks que contienen todo lo necesario para hacer hacer funcionar  una aplicación web. Tradicionalmente se les suele denominar WAMP (Windows + Apache + MySQL + PHP) o LAMP (Linux + Apache + MySQL + PHP), existiendo también la versión para Mac: MAMP (Mac OS + Apache + MySQL + PHP).

Algunos de los servidores locales que existen para el desarrollo o administración se listan a continuación:

XAMPP

Uno de los servidores web locales más conocidos es XAMPP (Apache, MySQL, PHP, Perl). Incorpora un DBMS MySQL y los lenguajes PHP y Perl. Además, ofrece soporte para administrar cuentas FTP, acceso a base de datos mediante PHPMyAdmin, bases de datos SQLite y varias de otras características como el servidor de correo Mercury o un servidor Tomcat para servlets y JSP.



WAMPServer

WAMPServer o simplemente WAMP contiene un servidor Apache,  un DBMS MySQL y un lenguaje PHP para Windows en el que se incluye la aplicación para accesar a base de datos PHPMyAdmin y un analizador para medir el rendimiento de aplicaciones PHP en el servidor.

MAMP

Si tenemos la aplicacion para Windows tambien existe la versión para Mac OS con las mismas funcionalidades que WAMP.


EasyPHP

EasyPHP es un WAMP orientado a desarrolladores PHP. La aplicación es muy sencilla y minimalista, ya que sólo muestra el control de los servidores y un registro de sucesos (log). Sin embargo, en la página local principal, ofrece varias cosas interesantes, como un panel de opciones de cada servidor, cambiar credenciales, avisos de actualizaciones o incluso un intérprete para pruebas PHP.

Más información en: http://www.emezeta.com/articulos/15-aplicaciones-para-montar-servidores-web-en-local
EasyPHP es un WAMP orientado a desarrolladores PHP. La aplicación es muy sencilla y minimalista, ya que sólo muestra el control de los servidores y un registro de sucesos (log). Sin embargo, en la página local principal, ofrece varias cosas interesantes, como un panel de opciones de cada servidor, cambiar credenciales, avisos de actualizaciones o incluso un intérprete para pruebas PHP.

Más información en: http://www.emezeta.com/articulos/15-aplicaciones-para-montar-servidores-web-en-local
EasyPHP es un WAMP orientado a desarrolladores PHP. La aplicación es muy sencilla y minimalista, ya que sólo muestra el control de los servidores y un registro de sucesos (log). Sin embargo, en la página local principal, ofrece varias cosas interesantes, como un panel de opciones de cada servidor, cambiar credenciales, avisos de actualizaciones o incluso un intérprete para pruebas PHP.

Más información en: http://www.emezeta.com/articulos/15-aplicaciones-para-montar-servidores-web-en-local
Es como un WAMP orientado a desarrollo PHP. La aplicación es muy sencilla ya que sólo muestra el control de los servidores y un registro de sucesos (log). Más sin embargo, en la página local ofrece varias opciones interesantes, como un panel de opciones de cada servidor, aviso de actualizaciones o un interprete PHP


 

 



Arquitectura Cliente-Servidor

La web funciona siguiendo la denominada arquitectura cliente-servidor. Esta arquitctura implica la existencia de una relación entre procesos que solicitan servicios (clientes) y procesos que responden a esos servicios (servidores). Estos procesos pueden ejecutarse en una misma computadora o en distintas.

La  web es un tipo de aplicación especial que funciona bajo esta arquitectura cliente/servidor, donde tanto el cliente (el navegador, browser) como el servidor (el servidor web) y el protocolo mediante el que se comunican (HTTP) están estandarizados y no han de ser creados por el programador de aplicaciones.

El protocolo HTTP forma parte de la familia de protocolos de comunicaciones TCP/IP, que son empleados en Internet. Estos protocolos permite la conexion de sistemas heterogéneos, lo que facilita el intercambio de información entre distintas computadoras.


El cliente web interacciona con el usuario para solicitar a un servidor web el envió de recursos que desea obtener mediante HTTP. La parte cliente de la web suele estar formada por el código HTML que forma la página web al cual se le puede incorporar código en lenguaje de script como JavaScript o VBScript ó pequeños programas realizados en Java (applets). La misión del cliente web es interpretar las páginas HTML y los diferentes recursos que contienen (imagenes, sonidos, etc.).

Las tecnologías que se suelen emplearse en programas de lado del cliente son: HTML, CSS, DHTML, lenguajes de Script (como JavaScript), ActiveX, Applets y pluggins como: Adobe, Acrobat Reader, Macromedia Flash entre otros.

El servidor web espera permanentemente las solicitudes de conexion mediante el protocolo HTTP por parte de los clientes web. La parte del servidor de las aplicaciones web esta formada por:
  • Páginas estáticas (documentos HTML) que siempre muestran el mismo contenido.
  • Recurso adicionales (como contenido multimedia, documentos) que se pueden emplear dentro de las páginas web o estar disponibles para ser descargados y ejecutados (visualizados) en el cliente.
  • Programas o scripts que son ejecutados por el servidor web cuando el navegador del cliente solicita algunas páginas. La salida de un script suele ser una página HTML estándar que se envía al navegador del cliente. En algunos casos estos scripts pueden acceder a bases de datos.
Del lado del servidor se pueden incorporar otras tecnologías destinadas, a crear páginas web con contenido dinámico (aquel que se genera automáticamente en el momento que alguien solicita su visualización) como pueden ser: JSP, Servlet, PHP, ASP entre otras, todas estás ofrecen servicios equivalentes.

El proceso completo, desde que el usuario solicita una página, hasta que el cliente web muestra el contenido es el siguiente:
  • El usuario especifica en el cliente web (navegador) la dirección URL  de la página deseada que desea consultar.
  • La URL es traducida a una dirección IP por medio de una base de datos distribuida llamada DNS (Domain Name System), que es necesaria para contactar con el servidor web. 
  • El cliente establece comunicación con el servidor web y solicita la página deseada.
  • El servidor busca la página que ha sido solicitada en su sistema de archivos. Si lo encuentra, la envía al cliente; en caso contrario, devuelve un código de error.
  • El cliente interpreta los códigos HTML y muestra la página al usuario.
  • Se cierra la conexión.
La arquitectura cliente-servidor se puede denominar arquitectura de transacciones: el cliente realiza una petición, el servidor la atiende e inmediatamente se cierra la comunicación. Las transacciones son independientes y no se mantiene una memoria entre las sucesivas peticiones. Esto puede ser incoveniente para aplicaciones en las cuales esta memoria es fundamental, como por ejemplo, operaciones de compra através de la web. No obstante, existen mecanismos para resolver este problema como el uso de cookies o de base de datos.


viernes, 14 de marzo de 2014

Introducción a la web


La web fue creada en 1989 por Tim Bernes-Lee. Su objetivo principal era el compartir información entre grupos de investigadores de gran tamaño localizados en diversos lugares del mundo, basandose en el concepto de hipertexto.  El hipertexto amplia el concepto habitual de texto al permitir que una serie de documentos enlazados unos con otros y ubicados en lugares remotos aparezcan formando una sóla unidad. Las referencias entre las partes de un documento de hipertexto se establecían mediante anclas. Un ancla representaba algun fragmento de información dentro del documento al cual se le asociaba un enlace. Este fragmento podía ser una palabra, una frase o un parrafo, el cual contenía la información necesaria para acceder a otro fragmento enlazado. La información que debía tener el enlace es la siguiente: nombre, ubicación y un mecanismo de acceso (protocolo).


Con el desarrollo de internet el concepto de hipertexto cobró gran importancia ya que un documento podía estar físicamente distribuido en distintas máquinas conectadas entre sí. Esta es la idea que dio origen a la web y en la que Bernes-Lee trabajo.

La web se creó con estás ideas básicas:
  • La desaparición de la idea de un servidor único de información mantenido por un equipo de profesionales dedicado. Cualquiera puede crear sus propios documentos y referenciar en ellos a otros documentos. Así pues, no existe una autoridad central en la Web.
  • La especificación de un mecanismo para localizar de forma unívoca documentos distribuidos geográficamente. Cada documento tiene asociada una dirección llamada Uniform Resource Locator (URL). Está dirección indica no sólo la localización del documento, sino también el mecanismo para acceder a él (es decir, el protocolo HTTP[HyperText Transfer Protocol], el cual está encargado de la transferencia de las páginas web y demas recursos).
  • La existencia de una interfaz de usuario uniforme que esconde los detalles de los formatos y protocolos utilizados para la transferencia de la información, simplificando por tanto el acceso a la misma. Los programas que utilizan está interfaz son denominados browsers o también denominados navegadores.
El elemento básico de la web es la página web, un documento que contiene enlaces de hipertexto a otros documentos relacionados que pueden estar localizados en la propia máquina o en máquinas remotas. De está forma, siguiendo  enlaces se puede navegar por la red visitando páginas ubicadas en distintos lugares como si formaran una unidad.

El protocolo de la Web  también especifica un formato para escribir los documentos que forman parte de ella: el HTML (HyperText Markup Language). HTML hace referencia a un lenguaje de marcado, basado en una serie de etiquetas o tags, el cual define un código y una estructura para la elaboración de las páginas web.

La web comenzó siendo un medio para el intercambio de información básicamente textual, pero conforme se hizo más popular incremento su contenido, permitiendo trasnmitir cualquier tipo de medio, como gráficos, imagenes, audio, video y animaciones. A partir de este entonces se empezó a hablar del concepto de hipermedia, el cual ampliaba el concepto de hipertexto con la adición de cualquier tipo de medio (hipermedia = hipertexto + multimedia).


    lunes, 10 de marzo de 2014

    Introducción a la Internet

    Internet (inició en 1967 bajo el nombre de ARPANET) fue el resultado de la creación de un modelo de arquitectura de red abierta en donde cualquier equipo podía comunicarse con cualquier otro, independientemente del hardware o software en particular de cada uno de ellos. Para lograr está comunicación se creó un protocolo llamado Transmission Control Protocol/Internet Protocol (TCP/IP) el cual permitió que distintas redes de computadoras pudieran interconectarse entre sí.

    Gracias al protocolo de comunicación TCP/IP dos equipos distintos podían establecer una conexión e intercambiar datos, teniendo la garantía de que los datos eran entregados, es decir,  los datos no se perdían durante la transmisón y tambien se garantizaba que los paquetes de datos eran entregados en el mismo orden en el cual eran recibidos. No importando que tan geográficamente se encontraran los equipos, era posible interconectarlos e intercambiar información. Esto permitió a científicos e investigadores compartir recursos y servicios de forma remota, convirtiendo al internet en un éxito.

    Conforme creció la popularidad de Internet, no sólo instituciones militares y de investigación se beneficiaron de sus ventajas, sino que pronto esta tecnología también fue usada para actividades comerciales y se abrió a instituciones de otros países. Para 1985 Internet estaba firmemente  establecida como una tecnología que ayudaba a una amplia comunidad de desarrolladores e investigadores a acceder a gran cantidad de recursos y servicios. Entre los servicios que ofrecía Internet estaban: la transferencia archivos, el acceso remoto a otras computadoras, el correo electrónico, el chat, la web (1989) y en años más recientes los buscadores de información.

    En la actualidad la Internet está compuesta de miles de redes independientes distribuidas por todo el mundo, permitiendo a cientos de usuarios comunicar, buscar y transferir información sin grandes requerimientos tecnológicos ni économicos. En la red participan computadoras de todo tipo, desde grandes sistemas hasta pc's personales, y en ella se dan cita instituciones gubernamentales, educativas, científicas y empresas privadas, haciendo su información disponible a un público de más de 100 millones de personas.