Introducción a programación Web Muchos desarrolladores y programadores se encuentran con el dilema de cómo comenzar un proyecto de desarrollo web. Mientras muchos desarrolladores pueden crear extensas aplicaciones de escritorio con facilidad, no se encuentran preparados para crear aplicaciones web. La mayoría de los desarrolladores tiene algún nivel de familiaridad con HTML, así como con la implantación de páginas estáticas en un servidor web. Con Internet jugando un rol cada vez mayor en la mayoría de los esfuerzos de desarrollo de aplicaciones, puede esperarse que habrá una creciente demanda de aplicaciones web. Algunas veces los sistemas heredados requieren la creación de una interfaz web, por ejemplo, para permitir a un cliente de la empresa consultar el estado de su pedido online. Para asistirle en la transición, y para entender la arquitectura general de la web y de las aplicaciones web, la siguiente información provee una introducción al plano del desarrollo de aplicaciones web. Internet Internet es una red de computadoras. Si Usted llama por modem desde su casa a un Proveedor de Servicios de Internet (PSI), su computadora está conectada a Internet. Cada dispositivo en Internet tiene una dirección IP (Internet Protocol) única. Esta dirección está compuesta por un número de 32 bits que permite que su computadora pueda ser encontrada por otras computadoras. Esta dirección IP es asignada dinamicamente por el PSI cuando Usted se conecta a sus computadoras, y puede cambiar cada vez que se conecta al sistema. Alternativamente, si Usted usa una conexión de alta velocidad, tales como DSL o microondas, probablemente tenga una dirección IP estática que nunca cambia. Usted puede ver usualmente su dirección IP en una computadora Windows usando el comando “ipconfig /all”. Para encontrar quién es el propietario de una dirección IP particular, puede buscarla en el sitio web de ARIN (http://www.arin.net/). Conectándose a Internet Si Usted está conectado a Internet desde su lugar de trabajo, probablemente no está conectado directamente, sino a través de un router que es utilizado para unir dos redes. Un router que conecta una red privada a Internet es también conocida como gateway. El router “rutea” el tráfico entre computadoras y redes y envía los paquetes de información a su destino a través del camino más corto disponible en la red. Si Usted envía información a la computadora más cercana en la red, por ejemplo, el router no necesita enviar nada a Internet. Sin embargo, si Usted quiere ver una página web en Internet, el router enviará su pedido a otro gateway que determinará como siendo el más cercano al servidor de destino. Si Usted se conecta a Internet desde su casa, necesitará un router, puente, o un modem que traduzca las señales desde su computadora personal o red al formato necesario para permitir a los datos que viajen a y desde Internet. El modem es generalmente utilizado para conectar una computadora sola a Internet vía un PSI convirtiendo la señal digital en analógica para su transmisión a través de una línea telefónica. Un router puede tambien incluir un servidor proxy que provee la habilidad de compartir una dirección IP individual entre múltiples computadoras conectadas a Internet. Esto preserva el número de direcciones IP que Usted usa y agrega extra seguridad ya que el IP público pertenece al router y sus computadoras locales no pueden ser accesadas desde Internet sin una dirección válida de IP. Otra función de un servidor proxy es almacenar datos en caché, para que las computadoras locales puedan obtener algunas de las informaciones más accesadas sin conectarse a Internet.. Usando un Firewall para Acceso Seguro a Internet Computadoras que son publicamente accesibles via Internet están expuestas a mayores riesgos de seguridad. Debido a estos riesgos, es recomendado que Usted utilice un firewall, que filtra pedidos no deseados originados desde Internet. El firewall puede ser configurado para encontrar criterios específicos y filtrar tanto el tráfico entrante como el saliente. Muchos firewalls también funcionan como servidores proxy y routers permitiéndole usar un solo dispositivo para todas sus necesidades de conectividad a Internet. Debido a constantes aumentos en los riesgos de seguridad, la popularidad de los firewalls ha crecido exponencialmente, y Windows XP actualmente incluye un firewall simple. Servidores Web Ahora que Usted tiene un mejor entendimiento de la conectividad a Internet, debería comprender cómo funciona un sitio web real en Internet. Cuando Usted navega por Internet, su browser actúa como el cliente que se conecta a varios servidores web y despliega la información retornada por el servidor. Su computadora puede tambien actuar como un servidor web si Usted instala y ejecuta una aplicación de servidor web, tales como el Personal Web Server (PWS), IIS (Internet Information Services) o Apache. El servidor web espera pedidos entrantes de Hypertext Transfer Protocol (HTTP) y responde enviando de vuelta la información apropiada. HTTP es un protocolo de Internet que define el formato usado para intercambiar información por Internet. Pedidos HTTP usualmente vienen desde los navegadores en forma de un URL, que luego es usado por el servidor web para determinar cual archivo debe ser enviado de vuelta al navegador, tales como una página HTML o una imagen. Muchos servidores web populares están disponibles gratuitamente. Ejecutando Programas en un Servidor Web Además de servir páginas estáticas HTML, muchos servidores web pueden también ejecutar programas que crean una salida HTML para el browser. Para hacer esto, el servidor web debe estar ejecutando un lenguaje de programación. Algunos de los lenguajes más populares son PHP, ASP, Java, PERL, ColdFusion, VB.NET and C#. El servidor web más popular, Apache, no soporta directamente lenguajes de programación específicos, pero es a menudo configurado para trabajar con PHP, Java o PERL. Servidores web basados en Windows generalmente soportan aplicaciones ASP (Active Server Pages) que son escritas en VBScript, una versión simplificada de Visual Basic. Servidore .NET pueden ejecutar programas VB.NET y C#. Obteniendo un Servidor Web "Permanente" Asumiendo que Usted ya tiene o planea tener contenido que desearía hacer accesible a otros usuarios de Internet, necesitará un servidor web que siempre se encuentre conectado. Si Usted tiene una conexión de alta velocidad en su casa, podría tener un servidor web en su computadora local, siempre que su computadora permanezca encendida y su dirección de IP no cambie. Usted necesitará preguntar a su PSI si su dirección IP es estática o dinámica. Una dirección dinámica es reasignada a Usted cada vez que se conecta a Internet, haciendo que la dirección sea probablemente diferente en cada ocasión. Una solución comunmente utilizada es encontrar una empresa de hospedaje web que tiene un servidor web instalado y corriendo las 24 horas del día. A no ser que Usted compre un servidor dedicado, usualmente obtendrá un espacio en un servidor compartido que hospeda cientos de sitios web. Esto es frecuentemente llamado hospedaje virtual. La empresa de hospedaje divide el espacio en los discos duros de sus servidores en particiones que posteriormente asignan a nombres de dominio que hospedan. Si Usted planea crear aplicaciones Web, asegúrese de que el plan que elige incluye hospedaje de bases de datos, tales como MS SQL o MySQL. Nombres de Dominio Cuando Usted compra un plan de hospedaje, le pedirán que transfiera u obtenga un nombre de dominio para su sitio web. El nombre de dominio es una cadena de caracteres y números, usualmente unas palabras que son más fáciles de recordar que la dirección IP que es asignada a su computadora. Los nombres de dominio están almacenados en un Servidor de Nombres de Dominio (DNS), que es parte de un sistema distribuido de bases de datos que son consultadas cada vez que alguien solicita un URL o dirección de Internet. El DNS facilita la ubicación de un servidor donde, cuando Usted escribe un URL en su browser, el browser es capaz de buscar la dirección IP para luego enviar el pedido HTTP al servidor web correcto. Par obtener un nombre de dominio, Usted necesita encontrar uno que esté disponible y comprar los derechos de uso en una base anual. Tipos de Sitios Web Estáticos Un sition web estático es uno en el cual las páginas contienen contenido fijo. Todo el contenido es editado y agregado usando un editor estándar, creando archivos con la extensión .htm o .html. Cuando un usuario accede a la página, ésta es cargada y desplegada. El contenido es cambiado únicamente con un editor por el desarrollador de la página. Dinámicos Sitios web dinámicos, también referidos como aplicaciones web, son programas que se ejecutan en el servidor web y envían HTML al browser en una computadora cliente. Estos programas pueden ser escritos en los mismos lenguajes que las aplicaciones estándar de Windows y UNIX, aunque ciertos lenguajes están mejor adaptados para sacar ventaja en la web. Las aplicaciones web son muy parecidas a las aplicaciones cliente-servidor. La principal diferencia reside en la salida: En una aplicación estándar es direccionada a coordenadas específicas de pantalla, mientras que en una aplicación web la salida consiste en la generación de tags HTML y texto entremezclados de modo que la información es mostrada apropiadamente. Beneficios del Uso de Tecnologías Web Las tecnologías Web aportan muchos beneficios sobre otras tecnologías, incluyendo cliente / servidor. Ellos son: Infrastructura menos cara: Como cada PC puede esta equipada con un browser gratuito, los usuarios solamente necesitan computadoras de bajo costo de mantenimiento. Distribución Rápida de Software: Gracias a la web, no hay necesidad de distribuir nuevo software a cualquiera de los browsers clientes. Una vez que los programas son actualizados en el servidor, los usuarios pueden instantáneamente ven los cambios la próxima vez que cargan la página en su browser. La localización de problemas también es mejorada desde que la mayoría de ellos pueden ser investigados y resueltos en el servidor. Baja Utilización de la Red: En un entorno web, la aplicación cliente (browser) no accede a la base de datos a través de la red para retirar y actualizar los datos. El browser solo envía instrucciones al servidor con tanta información como sea necesaria para ejecutar el programa en el servidor. El software del servidor es responsable de comunicarse con la base de datos y leer cualquier contenido para componer la página a ser enviada al cliente. Así no es necesario intercambiar grandes cantidades de datos. A causa de esto, las aplicaciones Web se ejecutan más rápido que aquellas que están basadas en clientes voluminosos. Independencia de Plataforma: La mayoría de las aplicaciones web pueden ser accedidas a través de una variedad de browsers, tales como Internet Explorer, Netscape Navigator, Opera, y Lynx. Browsers web existen para virtualmente cualquier sistema operativo y desde que ellos reciben solamente el documento HTML, es irrelevante si el documento es visto en Windows, Linux/UNIX, Mac, o cualquier otro sistema. Adicionalmente, ciertas aplicaciones web son accesibles a través de dispositivos inalámbricos equipados con un browser y conexión a Internet. Seguridad: La seguridad puede darse a nivel de red, a nivel de servidor y a nivel de las aplicaciones. Las aplicaciones deben contemplar accesos diferenciados por niveles de acuerdo al perfil de los usuarios, con diferentes grados de privilegios. Elección de la Tecnología Web Hacer la elección de la tecnología es una de la más difíciles y críticas decisiones en la mayoría de las organizaciones. Las decisiones en Tecnología están a menudo basadas en el presupuesto existente, el sistema operativo de preferencia y en la base de datos disponible. Aquí describimos como estos factores influencian su decisión. Costo Si Usted está buscando las soluciones menos caras entonces probablemente escuchó que Linux con el servidor web Apache, base de datos MySQL, y lenguaje de programación PHP pueden ser obtenidos e instalados gratuitamente. Esta tecnología puede ser utilizada para aplicaciones pequeñas y grandes proyectos, tales como partes del sitio web Yahoo. Otra alternativa es Windows con IIS y MS SQL corriendo programas ASP. Este entorno puede ser instalado a un costo mayor que aumenta con el número de usuarios. Preferencia del Sistema Operativo Si para el servidor Usted prefiere el sistema operativo Linux es probable que utilice el servidor web Apache y una base de datos MySQL, ejecutando aplicaciones PHP o Java. Si prefiere el sistema operativo Windows, entonces es probable que lo use con el servidor web IIS y base de datos MS SQL, ejecutando aplicaciones ASP o .NET. Base de Datos Si Usted ya tiene una base de datos con información y desea crear un interfaz web para ella, entonces su decisión de tecnología estará relacionada con el tipo de base de datos. Por ejemplo, si usa una base de datos compatible con Windows, como ser MS Access o MS SQL, debería probablemente considerar tecnología ASP o .NET en un servidor IIS sobre Windows. Si su base de datos existente es MySQL, entonces es probable que esté familiarizado con Linux y debe considerar utilizar PHP.