Академический Документы
Профессиональный Документы
Культура Документы
LABORATORIO Asp.Net – 8.
El contenido de este laboratorio tiene todos los derechos reservados, por lo tanto no
se puede reproducir, transcribir, almacenar a un sistema de recuperación o de
alteración, asimismo la traducción a otro idioma de ninguna forma o por ningún
medio mecánico, manual, electrónico, magnético, óptico o de otro modo.
8 Asp.Net
Una aplicación Asp.Net se define como el conjunto de todos los archivos, páginas, controles, módulos,
clases que se pueden invocar o ejecutar dentro del ámbito de un determinado directorio virtual dentro de
un servidor de aplicaciones Web.
Para cada aplicación Web de Asp.Net en un servidor Web se ejecuta dentro de un dominio único lo que
garantiza la ejecución de sus componentes sin en el conflicto con otros espacios de nombres.
Con Asp.Net se mantiene una agrupación de instancias HttpApplication para cada aplicación Web cuando
se realiza una solicitud, la instancia HttpApplication asignada a un proyecto Web es responsable del
proceso de la solicitud a lo largo de todo su período de duración y sólo se puede volver a utilizar después
de que la solicitud se haya completado.
Aplicación Web
INTERNET HttpApplication
Servidor Web
Al realizar la primera solicitud, se crea una instancia de HttpApplication y se provoca el evento
Application_Start. Al instanciarse HttpApplication se procesan estas solicitudes y al realizarse la
última instancia con la que se termina se provoca el evento Application_End.
Application_End
Primero veamos con un ejemplo, para entender que es lo que sucede con objetos de ámbito globales en
una aplicación Web.
2.- Dentro de la página debemos crear un DataSet de ámbito público con los espacios de nombre que se
indican:
Imports System.Data
Imports System.Data.SqlClient
Me.lstCategorias.Items.Clear()
If Ds.Tables.Count <> 0 Then
Me.lstCategorias.DataSource = Ds.Tables("Categorias")
Me.lstCategorias.DataValueField = "CATEGORYNAME"
Me.lstCategorias.DataBind()
Else
Response.Write("El Dataset no contiene datos")
End If
5.- Y al refrescar la información activando lo que esta en el botón, este produce lo siguiente:
Como se vio en un proyecto Web las variables cargadas en un ámbito general no conservan su valor
después de realizar un PostBack, como poder resolver este problema, bueno para eso están las variable
de Sesion o de Aplication que nos ayudan a resolver estos problemas.
Entonces si utilizamos objetos con ámbito global dentro de una aplicación, se debería tener en cuenta que
Asp.Net se procesan las solicitudes de forma concurrente y que nos proporciona el objeto Application
para tener o almacenar valores dentro de nuestra aplicación Web.
Me.lstCategorias.Items.Clear()
Ds = Application("MiCategorias")
If Ds.Tables.Count <> 0 Then
. . .
. . . . .
Además de escribir código para interfaces de usuario, los programadores también pueden agregar lógica
del nivel de aplicación y código de control de eventos a sus aplicaciones Web. Este código no se encarga
de generar interfaces de usuario y no se invoca normalmente en respuesta a solicitudes de páginas
individuales. En vez de ello, se encarga de procesar eventos de la aplicación de nivel superior, tales como
Application_Start, Application_End, Session_Start, Session_End, etc. Los programadores crean esta
lógica mediante un archivo Global.asax ubicado en la raíz del árbol de directorios virtuales de una
aplicación Web. ASP.NET analiza y compila automáticamente este archivo para producir una clase
dinámica de .NET Framework, la cual extiende la clase base HttpApplication (la primera vez que se activa
o se solicita cualquier recurso o URL dentro del espacio de nombres de la aplicación).
ASP.NET analiza y compila dinámicamente el archivo Global.asax para producir una clase de .NET
Framework la primera vez que se activa o se solicita cualquier recurso o URL dentro del espacio de
nombres de la aplicación. El archivo Global.asax está configurado para rechazar automáticamente
cualquier solicitud de URL directa de modo que los usuarios externos no puedan descargar o ver el código
interno.
Los programadores pueden definir controladores para eventos de la clase base HttpApplication creando
métodos en el archivo Global.asax que se ajusten al modelo de nomenclatura
"NombreDeEventoDeLaAplicación(FirmaDeArgumentosDelEvento)". Por ejemplo:
<script runat="server">
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application startup
Application("Contador") = 0
Application("userCount") = 0
End Sub
Los controles de servidor integrados que proporciona ASP.NET, podemos encontrar desde
autenticación, navegación, con esto nos podemos ahorrar en la configuración, diseño o formato
especificado para los controles que se quieren trabajar.
Los controles personalizados, son desarrollados por el desarrollador, el cual busca una forma de no
utilizar funcionalidades de un objeto repetidas en todo un proyecto, que al cambiar alguno de los
eventos o métodos se tendría que hacer el cambio en todo el proyecto donde se encuentre dicho
objeto.
Veamos un ejemplo:
1.- Agregar un nuevo elemento Web Control Personalizado, con el nombre MiMenu.ascx:
3.- Configurar en el archivo de mapas la siguiente estructura, para las paginas siguientes:
Clientes.aspx
Pedidos.aspx
Productos.aspx
Empleados.aspx
Categorias.aspx
5.- Dentro de la página Categorías, crear el siguiente diseño, una tabla con 3 filas y en la ultima
fila arrastrar el control MiMenu.ascx desde el explorador de soluciones y soltarlo en la ultima fila
de la tabla:
1.- Crear en el mismo proyecto el siguiente control ctlListados.ascx, con el siguiente diseño:
Me.SqlData.DataBind()
End Sub
4.- Una vez, realizado y depurado la aplicación y este control lo arrastramos dentro de la página
Clientes.aspx:
Me.CtlListados1.Tipo = ctlListados.TipoListado.ListClientes
6.- Repetir lo mismo como corresponda para las demás páginas y probar: