- INTRODUCCIÓN A ASP .NET: ASP .NET significa
Páginas Activas de Servidor .NET (Active Server Pages .NET).
Es una tecnología para generar páginas dinámicas en el servidor y enviarlas
al cliente (navegador Web) que las ha solicitado, ejecutando previamente
el código que contienen (código Visual Basic, C#, etc.) y convirtiendo el
resultado a código HTML, que es el único que puede interpretar adecuadamente
el cliente.
La clave de este proceso es que, a diferencia de la navegación clásica en
que el sevidor espera (escucha) peticiones del cliente y, cuando
las recibe, envía automáticamente la respuesta (generalmente un documento
HTML que es mostrado en el navegador Web), aquí el servidor ejecuta algún
tipo de procesamiento a raíz de la petición del cliente y elabora dinámicamente
la respuesta que devuelve. En esquema sería:
- El cliente (explorador Web) se conecta al servidor Web gracias a
su URL
- El cliente envía una petición al servidor (solicita una página Web).
El cliente puede ejecutar código (en el lado del cliente), con
secuencias de comandos que se utilizan para generar efectos dinámicos
en el cliente (DHTML). Este código no se procesa en el servidor
- El servidor busca la página solicitada y ejecuta el código contenido
en ella. Este código del lado del servidor se escribe en secuencias
de comandos (para tareas simples) pero también en lenguajes compilados
(Visual Basic, C#, etc., para tareas complejas como son cálculos matemáticos,
recuperación de datos, gestión de sitios, comercio electrónico, etc.)
- El servidor traduce el resultado de la ejecución del código a HTML
y lo envía al cliente
- El cliente muestra al usuario el documento recibido. Si el usuario
consulta el código fuente del documento que visita, no verá el código
original del archivo que reside en el servidor, sino solamente código
HTML en que la tecnología ASP .NET ha convertido el resultado del procesamiento.
- CONFIGURACIÓN DE ASP .NET: para poder ejecutar
páginas ASP .NET se necesita:
- IIS (Internet Information Server): está disponible
para Windows NT, Windows 2000, Windows XP Profesional y Windows .NET
2003. Dado que ASP .NET es una tecnología de servidor, requiere un servidor
Web en ejecución, de ahí la necesidad de IIS.
Teóricamente no se puede utilizar en Windows XP Home ya que no aparece
como opción en Agregar y quitar elementos de Windows pero, mediante
unas maniobras sencillas, sí es posible instalarlo en sistemas con Windows
XP Home de manera que los poseedores de este sistema operativo también
pueden aprender ASP .NET (consulta
ésto)
- SDK (Kit de Desarrollo de Software) de .NET Framework:
está disponible para Windows NT con SP6a, Windows 2000, Windows XP y
Windows .NET 2003. Sin este componente, el servidor Web por sí mismo
no es capaz de interpretar adecuadamente las páginas ASP .NET. La instalación
de Visual Studio .NET conlleva automáticamente la del SDK de .NET Framework.
Las páginas ASP .NET tienen la extensión aspx. Para visualizar adecuadamente
una página aspx no basta con ejecutarla con doble clic o abrirla desde el
explorador Web, de ambas maneras el documento se visualiza defectuosamente.
Para que la página aspx funcione, debe ser filtrada por el servidor Web,
por lo que es necesario dirigir el navegador Web a http://localhost
o a http://127.0.0.1 (direcciones de la máquina local) y ahí a la
dirección correcta del archivo aspx.
- COMPONENTES BÁSICOS DE UNA PÁGINA ASP .NET:
- En la primera línea destaca la directiva
<%@ Page Language="Vb"
%>
que dice al servidor Web que se trata de una página ASP .NET y que usa
Visual Basic .NET como lenguaje de programación. También podría ser
<%@ Page Language="Cs"
%>
en caso de usar C# como lenguaje de programación.
- Después de la directiva @ Page
vienen bloques de declaración de código, en lenguaje Visual Basic
.NET, incluidos en la etiqueta
<script runat=server><script>
Aquí es donde debe ir todo o la mayor parte del código Visual Basic
ya que este código es el único compilado a MSIL
- Después comienza el código HTML. Este código, junto con el resultado
del código ASP .NET, es enviado al cliente. En esta sección puede haber
bloques proveedores de código con instrucciones adicionales en
ASP .NET, estos bloques van entre las etiquetas
<% y
%> y no son compilados
por lo que son menos eficientes que los bloques de declaración de
código
- Es fundamental tener una etiqueta Form
con el atributo runat=server, ello convierte
al formulario en un Formulario Web que es supervisado por ASP
.NET
- A lo largo de la página pueden aparecer elementos conocidos de HTML
pero que se declaran de manera especial:
<asp:textbox runat=server></asp:textbox>
Son controles Web, con algunas funcionalidades similares a las
de los elementos HTML del mismo nombre pero con otras añadidas por ASP
.NET.
- SEPARACIÓN DE CÓDIGO VB Y CONTENIDO HTML:
Se puede mantener todo el código, tanto Visual Basic .NET como HTML, en
un mismo archivo con extensión aspx; el código Visual Basic iría
sobre todo en bloques de declaración de código (en la cabecera del
documento) y el código HTML iría en el cuerpo del documento. Esta situación
provoca, en caso de archivos largos, código que se lee y modifica con dificultad.
Por ello, en muchas ocasiones es útil mantener el contenido HTML de las
páginas aspx fuera del código Visual Basic, aumenta la legibilidad
del código fuente de los archivos y facilita su modificación por el programador.
Se pueden usar formularios con código de apoyo, llevando a estos
formularios o archivos de código con extensión vb todo el código
Visual Basic y declarando en ellos versiones de los controles de servidor
que se usan en la página. Por ejemplo, para una etiqueta llamada lbEtiqueta
en el archivo aspx, se puede escribir en el archivo de código
vb:
Public lbEtiqueta As Label
de esa manera, el control de servidor lbEtiqueta (Label) de
la página aspx es una instancia de la variable lbEtiqueta
de la clase declarada en el archivo vb y, desde el código de la clase,
se puede acceder a las propiedades del control a pesar de encontrarse en
2 archivos diferentes.En varios de estos ejercicios se utilizan archivos
externos como código de apoyo:
- las páginas Asp .NET *.aspx contienen solamente contenido
HTML y código Asp .NET con controles de servidor y controles HTML
- los archivos de código de apoyo *.vb contienen el código
Visual Basic .NET con declaraciones de variables, funciones y procedimientos
De forma predeterminada, ambos archivos han de estar juntos en la misma
carpeta para que los ejercicios funcionen con su código actual pero, como
se verá más adelante, pueden estar situados en carpetas diferentes. A la
hora de compilar y colocar en el servidor una aplicación Asp .NET hemos
de distinguir entre 2 situaciones diferentes:
- Si se trabaja dentro del entorno de desarrollo integrado de Visual
Studio .NET: generamos una serie de archivos de los que, sobre todo,
nos interesan 2:
- la página aspx de la carpeta raíz de la aplicación, es
el archivo hacia el que apuntar el navegador Web, puede ser colocado
en cualquier carpeta del servido Web
- la librería dll de la carpeta bin de la aplicación,
es el archivo de código Visual Basic .NET compilado, debe ser colocado
obligatoriamente en una carpeta bin que cuelgue directamente
de la carpeta raíz del servidor Web
- Si se trabaja con un simple editor de texto: sólo generamos 2 archivos,
aspx y vb, pueden ser colocados en cualquier lugar del
servidor Web, el navegador Web apunta a la página aspx y en ella,
como se verá inmediatamente después, aparece una referencia a la localización
del archivo vb
Las páginas *.aspx necesitan de estos atributos en la
directiva @ Page al comienzo
del código:
- Si se trabaja en el entorno RAD de Visual Studio .NET, se usa el
atributo Codebehind, que especifica el nombre del archivo compilado
que contiene la clase asociada con la página (el diseñador de formularios
Web Forms de Visual Studio .NET usa este atributo para averiguar dónde
se encuentra la clase derivada de Page, de forma que pueda crear
una instancia de la misma para que se pueda trabajar con ella en tiempo
de diseño) (Codebehind no se usa en tiempo de ejecución, ya hemos
visto que el archivo vb como tal no es necesario, sólo la librería
dll resultante de la compilación), y el atributo Inherits,
que define la clase de la que hereda la página aspx (esta clase
será buscada en la librería correspondiente de la carpeta
bin de la raíz del servidor Web, según el esquema nombre_de_la_dll.nombre_de_la_clase).
Así es como debe ser configurado mientras se trabaja con la página dentro
de Visual Studio .NET:
<%@ Page Language="vb"
Codebehind="clases.aspx.vb" Inherits="ejercicio.clase1" %>
(aquí la página aspx utiliza el atributo Inherits para
heredar la clase clase1 derivada de Page,
descrita en el archivo clases.aspx.vb, que es precompilado
en segundo plano para poder probar la página a medida que se va construyendo).
- Si se trabaja fuera del entorno RAD de Visual Studio .NET (ej: editor
de texto y servidor Web), se usa el atributo Inherits, que define
la clase que hereda la página aspx (puede ser cualquier clase
derivada de la clase Page), y el atributo Src, que especifica
el archivo de código fuente en el que se define la clase heredada (es
compilado dinámicamente cuando se solicita la página aspx); este
archivo puede estar situado en cualquier carpeta del servidor, sólo
hay que especificarlo correctamente en la ruta del atributo Src.
Así es como debe ser configurado al colocar las páginas en el servidor
Web:
<%@ Page Language="vb"
Inherits="clase1" Src="clases.aspx.vb" %>
(aquí la página aspx hereda la clase clase1,
que está descrita en el archivo clases.aspx.vb, que
es compilado en tiempo de ejecución)
- ESPACIOS DE NOMBRES Y HERENCIA: A su vez,
en los archivos de código de apoyo *.vb, hay que importar
determinados espacios de nombres necesarios para utilizar ASP .NET, que
no es necesario especificar cuando todo el código va en la página
aspx (Asp .NET lo hace automáticamente por nosotros) y
también heredar la clase Page (de System.Web.UI)
al declarar la clase principal:
Imports
System
Imports System.Collections
Imports
System.Web
Imports
System.Web.UI
Imports
System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls
Imports Microsoft.VisualBasic
Public
Class clase1 :
Inherits
Page
En los ejercicios en que conectamos con bases de datos también han de importarse
los espacios de nombres Data y Data.OleDb para permitir el
uso de ADO .NET:
Imports
System.Data
Imports
System.Data.OleDb
Igualmente hemos de hacer con cualquier otro espacio
de nombres que se necesite para una aplicación en concreto:
Imports
System.Web.SessionState
Imports
System.IO
Imports
System.Drawing
Imports
System.Xml
Imports
Web.UI.HtmlControls
(etc...)
- CONTROL DATAGRID PERSONALIZADO: En varios
de los ejercicios se utiliza el control DataGrid como medio de mostrar
al usuario los registros de la base de datos por ser un control de gran
potencia y facilidad de uso, pero hay que contar con, al menos, otros 2
controles de servidor que ASP .NET nos proporciona para tomar colecciones
de datos e iterar por ellos automáticamente, mostrando el resultado al usuario:
se trata de los controles Repeater y DataList que, junto al
DataGrid, son llamados controles de lista precisamente por
su funcionalidad de enlazarse a los datos y recorrerlos, ahorrando mucho
trabajo manual al programador.
Cada uno de los 3 tiene ventajas e incovenientes que están relacionados
con la relación entre potencia y complejidad: el control que proporciona
más características también es más complejo de usar. Ordenados de menor
a mayor complejidad, estarían Repeater, DataList y DataGrid.
El DataGrid utiliza columnas para mostrar los datos con un diseño
de cuadrícula. De forma predeterminada, el DataGrid elige automáticamente
el tipo de columna y muestra una columna por cada campo de la tabla origen,
pero es sencillo modificar ese comportamiento y adaptarlo a nuestras necesidades.
En estos ejercicios, los datos son mostrados en un DataGrid de aspecto
personalizado (colores, tipo de letra, título de columnas, anchura, formato
de filas alternas, etc.), a veces en una sola página que contiene todos
los registros de la tabla y otras veces en varias páginas de algunos registros
cada una con botones numéricos de navegación entre las páginas, éste es
el paginado del DataGrid, cuya configuración se realiza en
el código de definición del DataGrid mediante las etiquetas
AllowPaging="True" PageSize="9"
y configurando las opciones de navegación entre las páginas con
<PagerStyle pagebuttoncount="4" mode="NumericPages"></PagerStyle>
pero que por sí sólo no funcionará si no se añade un procedimiento asociado
al evento OnPageIndexChanged del DataGrid,
en ese procedimiento es en el que hay que activar que el índice de página
mostrada por el DataGrid coincida con el índice pulsado en los botones
de navegación.
Por ejemplo, al declarar el DataGrid rejilla en la página
aspx se usaría entre sus atributos
<...OnPageIndexChanged="rejilla_IndexChanged"...>
y en el archivo vb se definiría el procedimiento rejilla_IndexChanged:
Sub
rejilla_IndexChanged(ByVal obj
As Object,
ByVal e As DataGridPageChangedEventArgs)
rejilla.CurrentPageIndex = e.NewPageIndex
rejilla.DataBind()
End Sub