Você está na página 1de 8

PROGRAMACIÓN II UNIDAD I: ASP .

NET

1. Historia de las páginas web.


A diferencia del desarrollo de la mayoría de aplicaciones de escritorio, en las cuales muchas de
las partes se encuentran disponibles localmente (como componentes en el disco duro del
usuario), desarrollar una aplicación Web requiere obtener partes de software que trabajen
sobre una amplia red distribuida usando un protocolo desconectado.
Para trabajar adecuadamente con ASP .NET se requiere conocer lo siguiente:
1. Cómo trabajan las transacciones HTTP.
2. Cómo trabaja HTML.
3. Cómo son manejadas las transacciones HTTP en la plataforma de producción Web de
Microsoft, Servicios de Información de Internet (IIS).

1. Transacciones HTTP.
HTTP es el mecanismo de comunicación por el cual los navegadores Web “hablan” con los
sitios Web.
En su concepción original, HTTP fue concebido solamente para enlazar documentos sin
considerar las interfases de usuario basadas en Web, las cuales son un requerimiento básico
de los sitios Web modernos. Las primeras versiones de HTTP soportaban solamente
transferencia de flujos de texto y no soportaban ningún otro tipo de transferencia de datos.
La primera especificación formal para HTTP se encuentra en la versión 1.0 y fue publicada a
mediados de 1990, y agregó soporte para mensajes más complejos que un simple protocolo de
transferencia de texto. HTTP creció para soportar diferentes medios (especificados por las
Extensiones de Correo de Internet de Propósitos Múltiples – Multipurpose Internet Mail
Extensions – MIME). La versión actual de HTTP es 1.1.
Normalmente la respuesta del servidor llega como un flujo de texto marcado con etiquetas
HTML.

Solicitud Solicitud

Cliente Internet Servidor Web

Respuesta Respuesta

Cliente Internet Servidor Web


PROGRAMACIÓN II UNIDAD I: ASP .NET

Como un protocolo de conexión, HTTP es formado por varios comandos básicos. Los más
importantes que estudiaremos son:
GET: recupera la información identificada por el URL especificado por la solicitud.
HEAD: es igual que GET pero solo devuelve cabeceras HTTP sin cuerpo de documento.
POST: efectúa una solicitud al servidor, que puede causar efectos secundarios, como enviar
información al servidor para que sea procesada.
La mayoría de contactos iniciales a una página se hacen con el comando GET, y comúnmente
se manejan las interacciones posteriores con el comando POST.

2. Lenguaje de Marcación de Hipertexto (HTML).


La mayoría de las solicitudes HTTP resultan en un flujo de texto regresando al programa que
realizó la solicitud. HTML es el lenguaje para dar formato a documentos, y todos los
navegadores lo entienden.
El primer lanzamiento de HTML fue la versión 2.0. La versión 3.2 introdujo nuevas
características, tales como tablas, flujo de texto, applets, superscripts y subscripts, mientras
ofreció compatibilidad con el estándar existente HTML 2.0.
Esto facilitó el inicio de la tecnología de desarrollo de interfaces de usuario, siempre que se
tenga un navegador competente y una estructura HTML bien estructurada. Y debido a que
HTML fue entendido por todos los navegadores ejecutándose en una variedad de plataformas,
se inició la implementación de una plataforma de computación interactiva mundial.
La estructura de un archivo HTML es la siguiente:
ejemplo1.htm
<html>
<head>
<title>Título del documento</title>
</head>
<body>
Cuerpo del documento: texto, imágenes, sonido y órdenes HTML
</body>
</html>

Guardar el código anterior con el nombre ejemplo1.htm en la carpeta c:\Inetpub\wwwroot.


En el navegador deberá escribir http://localhost/ejemplo1.htm.
NOTA: Debe tener IIS (Internet Information Services) instalado.
PROGRAMACIÓN II UNIDAD I: ASP .NET

Un segundo ejemplo sobre el uso de HTML básico:


ejemplo2.htm
<html>
<head>
<title>¿Documento dinámico? NO!!!</title>
</head>
<body>
<h2>Escoja una carrera sobre tecnología en la UTEC</h2>
<select name='Carrera'>
<option> Ingeniería en Sistemas y Computación</option>
<option> Licenciatura en Informática</option>
<option> Técnico en Ingeniería de Software</option>
<option> Técnico en Ingeniería de Hardware</option>
<option> Técnico en Ingeniería de Redes</option>
<option> Ninguna </option>
</select>
<input type=submit name='Seleccion' value='Enviar'></input>
</body>
</html>

Sin embargo, esto es una página estática y no realiza ninguna acción, a pesar de contener un
combo box y un botón. Para que una página sea dinámica, el servidor que se encuentra en el
otro extremo necesita soportar contenido dinámico.

3. Contenido dinámico.
Los primeros sitios Web fueron construidos principalmente usando páginas HTML estáticas, lo
cual permitía navegar hacia una página y leer el documento ahí alojado. Si bien en un principio
fue algo sorprendente, HTML eventualmente evolucionó para ser capaz de mucho más que
simplemente dar formato a textos.
HTML incluye las etiquetas <form> y </form> para notificar al navegador que una sección de
HTML incluye etiquetas representando controles con los cuales el usuario interactuará para
eventualmente devolver información al servidor. Así es como se especifica en un documento
Web que manejará entradas efectuadas por el usuario final y no solo salida de información. El
contenido de la forma, lo cual es la data contenida en los controles de entrada, será enviado al
servidor para su procesamiento. Esta es la razón por la cual el caso de uso típico de un
documento HTTP es GET, y luego POST para devolver datos al servidor.
La etiqueta <form> encierra un conjunto de etiquetas especificando controles de entrada del
usuario, tal como se muestra en el ejemplo siguiente:
PROGRAMACIÓN II UNIDAD I: ASP .NET

ejemplo3.htm
<html>
<head>
<title>¿Documento dinámico? Tal vez…</title>
</head>
<body>
<form action=”http://localhost/ejemplo3.htm” method=”get”>
<h2>Escoja una carrera sobre tecnología en la UTEC</h2>
<select name='Carrera'>
<option> Ingeniería en Sistemas y Computación</option>
<option> Licenciatura en Informática</option>
<option> Técnico en Ingeniería de Software</option>
<option> Técnico en Ingeniería de Hardware</option>
<option> Técnico en Ingeniería de Redes</option>
<option> Ninguna </option>
</select>
<br>
<input type=submit name='Seleccion' value='Enviar'></input>
</form>
</body>
</html>

Después de seleccionar la opción deseada y hacer click sobre el botón “Enviar”, el URL debería
mostrar lo siguiente (asumiendo que seleccionó la opción “Ninguna”)
http://localhost/”http://localhost/ejemplo3.htm”?Carrera=Ninguna&Seleccion=Enviar
Este URL modificado, a menudo llamado cadena de consulta, es enviado al servidor.
Adicionar la etiqueta “form” al cuerpo del documento es una parte para tener una aplicación
HTTP que en realidad interactúe con un usuario. Ahora se necesita un poco más de soporte del
lado del servidor, y es aquí donde el servidor empieza a jugar un papel mucho más activo.

3.1 Common Gateway Interface (CGI).


Los primeros servicios Web que soportaron “contenido Web dinámico” lo hicieron por medio
de Common Gateway Interface (CGI), el cual fue el primer estándar para construir servidores
web. Los programas CGI se ejecutan en tiempo real y cambian sus salidas basados en el estado
de las aplicaciones y las solicitudes entrantes. Cada solicitud proveniente de un servidor web
ejecutando corridas de CGI corre una instancia del programa para poder responderla. La
aplicación podía correr cualquier tipo de operaciones, incluyendo búsqueda de información en
una base de datos, aceptar números de tarjetas de crédito, y enviar información con formato.
Pero también representaba un alto costo debido a los elevados tiempos de espera y los
requerimientos de memoria.
PROGRAMACIÓN II UNIDAD I: ASP .NET

3.2 La Plataforma Microsoft como un Servidor Web.


Debido a que era muy costoso para la plataforma Microsoft el tener que ejecutar un nuevo
proceso para cada solicitud, la solución de Microsoft es tener un proceso demonio (que en
Microsoft se le llama servicio) para monitorear el puerto 80 en busca de paquetes de red
entrantes y cargar DLLs para manejar solicitudes separadas cuando el contenido necesita ser
cambiado. La plataforma de web estándar de Microsoft está basada en los Servicios de
Información de Internet (IIS).

3.2.1 Internet Server Application Programming Interface (ISAPI).


Crear un espacio de proceso sobre la plataforma Microsoft es una proposici ón costosa (en
términos de recursos de sistema y ciclos de reloj), ya que al intentar responder a cada solicitud
iniciando un programa separado saturaría muy rápidamente un servidor.
La arquitectura de Microsoft prefiere usar DLLs para responder a solicitudes, ya que son
relativamente no costosas para cargar, y ejecutar código dentro de una DLL se realiza muy
rápidamente. Las DLLs que manejan las solicitudes web son llamadas ISAPI DLLs.
ISAPI DLLs manejando solicitudes normales HTTP definen un punto de entrada llamado
HttpExtensionProc. A pesar de que las extensiones ISAPI definen más puntos de entrada que
HttpExtensionProc, es quizás el método más importante en una ISAPI DLL. El punto a resaltar
sobre las extensiones ISAPI DLLs es que todas implementan esta función singular cuando
responden a solicitudes HTTP. Sin embargo, todas pueden responder de diferentes maneras.
El método HttpExtensionProc toma un solo parámetro – una estructura llamada
EXTENSION_CONTROL_BLOCK, la cual incluye todo el contexto de una solicitud. Al recibir una
solicitud, IIS empaqueta la información dentro de EXTENSION_CONTROL_BLOCK. Luego IIS
pasa la estructura a través del punto de entrada HttpExtensionProc. La extensión ISAPI DLL es
responsable de analizar la solicitud entrante y hacer cosas interesantes con ella (por ejemplo,
una solicitud que incluya parámetros en la cadena de consulta es usada para crear una
consulta de base de datos específica para el sitio).

3.2.2 Internet Information Services (IIS).


Todos los ambientes de aplicaciones web trabajan fundamentalmente de la misma forma. Sin
importar la plataforma de hardware/software que use, alguna parte de software es requerida
en el servidor para monitorear al puerto 80 (típicamente) por solicitudes HTTP entrantes.
Cuando llega una solicitud, es trabajo del servidor responder de alguna manera a la solicitud
en una forma significativa. En la plataforma Microsoft, IIS es el guardián que intercepta las
solicitudes HTTP del puerto 80 – el puerto de entrada normal para solicitudes HTTP. Los
servidores de Internet usan también otros puertos. Por ejemplo, HTTPS (HTTP Seguro) sucede
sobre el puerto 443.
Cuando un navegador hace una llamada a un servidor ejecutándose en la plataforma
Microsoft, IIS intercepta esa llamada y busca el recurso identificado por el URL. IIS divide su
espacio de directorio en piezas manejables llamadas directorios virtuales. Cada directorio
virtual típicamente se refiere a una sola aplicación y es usada para mapear un directorio físico
en el disco duro del servidor a un URL de Internet. Usando directorios virtuales, uno por
aplicación, IIS puede servir múltiples aplicaciones. Cada directorio virtual incluye varias
propiedades de configuración (por ejemplo: opciones de seguridad, redirección de manejo de
errores, y opciones de aislamiento de aplicaciones).
PROGRAMACIÓN II UNIDAD I: ASP .NET

4. Páginas Activas de Servidor (ASP – Active Server Pages).


Microsoft desarrolló originalmente Páginas Activas de Servidor (ASP) para animar a un gran
número de desarrolladores y no solo a los que usaban C++ para realizar el desarrollo web.
Cuando apareció IIS, era ciertamente un ambiente factible para desarrollar sitios web sobre la
plataforma Microsoft comparada con otras plataformas. De hecho aún puede ver algunos
sitios hoy desarrollados como sitios puros ISAPI DLL; sólo observe las cadenas de conexión
yendo entre el navegador y el servidor.
Sin embargo, escribir un sitio entero usando sólo ISAPI DLLs puede ser intimidante. Escribir
ISAPI DLLs en C o C++ le da un control completo sobre cómo su sitio se desempeñará. Sin
embargo, junto con este control viene una cantidad igual de responsabilidad debido a que
desarrollar software usando C o C++ presenta numerosos retos.
Al presentar ASP, Microsoft proveyó una sola ISAPI DLL llamada ASP.DLL. Los desarrolladores
web ASP escriben su código en archivos identificados con la extensión .asp. Los archivos ASP a
menudo contienen una mezcla de HTML estático y secciones ejecutables (usualmente escritas
en un lenguaje de secuencia de comandos) que generan resultados en tiempo de ejecución.
A continuación se presenta un ejemplo de ASP clásico:
ejemplo4.asp
<%@ Language="javascript" %>
<html>
<head>
<title>ASP clásico</title>
</head>
<body>
<form>
<h3>Esta es una página ASP</h3>
<% Response.Write("Este contenido ha sido generado ") ;%>
<% Response.Write("como parte de un bloque de ejecución") ;%>
</form>
</body>
</html>

IIS monitorea el puerto 80 por solicitudes. Cuando una solicitud llega, IIS ve la extensión de
archivo .asp y le solicita a ASP.DLL que maneje esta solicitud (así es como el mapeo de archivos
se establece). ASP.DLL simplemente reproduce el código estático HTML. Luego, cuando
encuentra las etiquetas de ejecución (<% y %>), ejecuta esos bloques al correrlos en un
analizador JavaScript (observe la etiqueta de lenguaje en la primera línea de código).
PROGRAMACIÓN II UNIDAD I: ASP .NET

Un segundo ejemplo sobre el uso de ASP clásico:


ejemplo5.asp
<%@ Language="javascript" %>
<html>
<head>
<title>Segundo ejemplo de ASP clásico</title>
</head>
<body>
<form>
<h3>Esta es una segunda página ASP</h2>
<select name='Carrera'>
<option> Ingeniería en Sistemas y Computación</option>
<option> Licenciatura en Informática</option>
<option> Técnico en Ingeniería de Software</option>
<option> Técnico en Ingeniería de Hardware</option>
<option> Técnico en Ingeniería de Redes</option>
<option> Ninguna </option>
</select>
<br>
<input type=submit name='Seleccion' value='Enviar'></input>
<br/>
<p>
Hola, has seleccionado <%=Request("Carrera") %>
</p>
</form>
</body>
</html>

5. Conceptos de desarrollo web.


Al final, desarrollar aplicaciones web le obliga a tratar con dos asuntos significativos:
a. Administrar interfaces de usuario (UI) usando HTML sobre un protocolo desconectado.
b. Administrar el estado de su aplicación.
Estas dos actividades fundamentales diferencian el desarrollo web de otros tipos de desarrollo
de aplicaciones.
En muchas formas, el modelo de programación ha retrocedido hacia el modelo que dominaba
a mediados de 1970, cuando grandes mainframes servían resultados a terminales conectadas
directamente a ellos. Los usuarios enviaban trabajos al mainframe y obtenían resultados en
sus terminales. Lo que ha cambiado aquí es que ahora las terminales son más potentes y
contienen un navegador que interpreta HTML. El punto final al cual el navegador se conecta es
un servidor web (o quizás una granja de servidores). Finalmente, el protocolo de conexión
usado por el cliente y el servidor es indirecto (y una solicitud puede literalmente cruzar el
globo antes de que el usuario vea el resultado).
En el desarrollo de aplicaciones web, el trabajo primario del programa es recibir solicitudes de
“afuera” y proveer respuestas significativas a los solicitantes. Eso a menudo significa generar
PROGRAMACIÓN II UNIDAD I: ASP .NET

HTML complejo que se ejecute en una forma que los humanos puedan leer en el navegador
del cliente. El proceso de “generar código HTML significativo para el cliente” de pronto
significa hacer cosas como crear accesos a bases de datos, autenticación de la identidad del
cliente, y mantener un seguimiento de la orden del cliente. Imagine hacer esto desde cero.
Mientras los marcos de trabajo tales como ASP clásico recorren un largo camino para hacer el
desarrollo web más accesible, muchas características aún son dejadas para que los
desarrolladores las creen por sí mismos. Por ejemplo, construir un sitio web seguro pero
administrable con ASP clásico usualmente significa escribir su propio subsistema de seguridad
(o comprar uno). Administrar el estado de la UI emitida por su sitio web era a menudo una
tarea tediosa también.

6. ASP .NET.
Todo esto nos lleva a ASP .NET. Un tema común es que ASP .NET toma características
usualmente implementadas (una y otra vez) por desarrolladores y las incluye en el marco de
trabajo de ASP .NET.
ASP .NET ha estado evolucionando continuamente desde que fue liberado por primera vez.
ASP .NET 1.0 introdujo una tubería bien definida, un modelo de extensión viable, un modelo
de ejecución de control del lado del servidor, y numerosas características adicionales para
hacer el desarrollo de sitios web muy realizable. ASP .NET 2.0 llevó a ASP .NET 1.0 al siguiente
nivel e implantó aún más características comúnmente implementadas en el marco de trabajo.
Un ejemplo es la adición del subsistema de autenticación.
ASP .NET 3.5 presenta un par de características significativas:
a. La primera es soporte a Java Asíncrono y estilo de programación XML (comúnmente
conocido como AJAX).
b. La segunda es soporte para aplicaciones fundamentales de comunicación Windows
(Windows Communication Foundation) alojadas vía IIS/ASP .NET.

Você também pode gostar