You are on page 1of 51

Configurar, optimizar e implementar

una aplicacin Web con Microsoft


ASP.NET

ndice

Descripcin 2
Leccin: uso del objeto Cache 3
Leccin: uso de la cach de resultados de ASP.NET 15
Leccin: configurar una aplicacin Web ASP.NET 25
Leccin: implementar una aplicacin Web ASP.NET 43
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 2

Descripcin

Uso del objeto Cache


Uso de la cach de resultados ASP.NET
Configurar una aplicacin Web ASP.NET
Implementar una aplicacin Web ASP.NET

*****************************

Introduccin Una vez finalizado el desarrollo de nuestra aplicacin Web con Microsoft
ASP.NET, podemos implementarla en un servidor de produccin. Sin embargo,
antes de la implementacin, podramos optimizar la aplicacin Web para
mejorar su rendimiento.
Podemos optimizar e implementar a continuacin la aplicacin Web:
Configurando el objeto Cache y la cach de resultados para optimizar los
tiempos de respuesta de la aplicacin Web.
Organizando la configuracin de la aplicacin en los archivos
Machine.config y Web.config para soportar y proteger el sitio Web.
Seleccionando los archivos necesarios para ejecutar el sitio Web y
copindolos en el servidor de produccin.

Objetivos En este mdulo, aprenderemos a:


Utilizar el objeto Cache para almacenar informacin.
Utilizar la cach de resultados ASP.NET para almacenar pginas Web y
fragmentos de pginas Web.
Configurar una aplicacin Web ASP.NET utilizando los archivos
Machine.config y Web.config.
Implementar una aplicacin Web ASP.NET.
3 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Leccin: uso del objeto Cache

Qu es el objeto Cache?
Ventajas de utilizar el objeto Cache
Cmo utilizar el objeto Cache
Eliminar elementos del objeto Cache
Demostracin: utilizar el objeto Cache

*****************************

Introduccin Una de las formas ms eficaces de incrementar el rendimiento de una aplicacin


Web ASP.NET es utilizar el objeto Cache de ASP.NET. El objeto Cache
permite ubicar elementos en memoria del servidor para que puedan recuperarse
rpidamente. Sin embargo, si se cargan demasiados elementos en el objeto
Cache se pueden retrasar los tiempos de respuesta al reducirse la memoria
disponible en el servidor.
En esta leccin, estudiaremos cmo configurar el objeto Cache para optimizar
los tiempos de respuesta de una aplicacin Web.
Objetivos de la leccin En esta leccin, aprenderemos a:
Explicar qu es un objeto Cache.
Explicar las ventajas y los inconvenientes de utilizar un objeto Cache.
Utilizar un objeto Cache para almacenar y recuperar elementos utilizados
por nuestra aplicacin Web.
Eliminar elementos de un objeto Cache transcurrido un periodo de tiempo,
o cuando cambie el elemento, para limitar el uso de memoria.
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 4

Qu es el objeto Cache?

Un objeto utilizado para almacenar informacin


z Un objeto Cache por aplicacin Web
z Una alternativa a las variables de aplicacin
z No se utiliza para almacenar informacin en variables
de sesin
Utiliza pares clave-valor para almacenar y recuperar
elementos
Cache("myKey")
Cache("myKey") == myValue
myValue

Cache["myKey"]
Cache["myKey"] == myValue;
myValue;

*****************************

Introduccin Un aspecto con el que nos encontraremos cuando generemos aplicaciones Web
de alto rendimiento es la necesidad de evitar duplicidad. Un objeto Cache
permite almacenar en cach elementos en memoria la primera vez que son
solicitados, y utilizar la copia en cach para posteriores peticiones. El uso de la
copia en cach evita volver a crear informacin que satisfizo una solicitud
anterior, especialmente informacin que exige un tiempo significativo del
procesador en el servidor cada vez que se crea.
Adems de almacenar en la cach elementos individuales, como los resultados
computacionales en el objeto Cache, ASP.NET ofrece una cach de resultados
que puede utilizarse para almacenar pginas Web y controles de usuario. El
objeto Cache y la cach de resultados son objetos distintos con roles y
propiedades nicos.
Un objeto utilizado para ASP.NET proporciona un motor de cach completo que puede utilizarse para
almacenar informacin almacenar y recuperar porciones de informacin. El objeto Cache no tiene
informacin sobre el contenido de los elementos que contiene. El objeto Cache
simplemente guarda una referencia a esos objetos y proporciona un proceso
para realizar el seguimiento de sus dependencias y establecer las polticas de
expiracin.
El objeto Cache tambin proporciona un mtodo para pasar valores entre
pginas de la misma aplicacin Web. Los mtodos de cach implementan un
bloqueo automtico; por tanto, existe seguridad al acceder a los valores
simultneamente desde ms de una pgina.
Cmo funciona el objeto El proceso para utilizar el objeto Cache es:
Cache
5 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

1. Una pgina solicita un elemento que se ha identificado como almacenado en


el objeto Cache.
2. ASP.NET comprueba el objeto Cache y utiliza la versin en cach si est
disponible.
3. Si no hay una versin en cach disponible, ASP.NET vuelve a crear el
elemento, lo utiliza y lo almacena en el objeto Cache para utilizarlo en el
futuro.

Un objeto Cache por ASP.NET crea un nico objeto Cache por cada aplicacin Web. Los elementos
aplicacin Web almacenados en el objeto Cache son exclusivos para la aplicacin Web y otras
aplicaciones Web ejecutndose en el mismo servidor o en otros servidores no
pueden acceder a ellos. En consecuencia, el uso del objeto Cache para
incrementar el rendimiento de la aplicacin Web no es escalable por encima del
nivel de una nica aplicacin Web.
El ciclo de vida de la cach es el mismo que el de la aplicacin Web. Cuando la
aplicacin Web se reinicia, la cach vuelve a crearse.
Almacenar variables El objeto Cache puede utilizarse para almacenar informacin que tambin
podra almacenarse en variables de aplicacin. En lugar de volver a crear el
valor cada vez que lo utilizamos, cualquier pgina de la aplicacin Web puede
acceder a un valor en la cach.
El objeto Cache no puede utilizarse para almacenar informacin que se
encuentra en variables de sesin. Las variables de sesin pueden almacenarse
en cookies, la URL (Uniform Resource Locator) de la pgina, o el control
ViewState oculto.

Nota Para ms informacin sobre las variables de aplicacin y de sesin,


consultar el Mdulo Administracin del estado.

Utiliza pares clave-valor El objeto Cache utiliza pares clave-valor para almacenar y recuperar objetos.
La clave es la cadena de la clave de la cach utilizada para referenciar el objeto.
El valor es el objeto a almacenar en la cach. En el caso ms sencillo, ubicar un
elemento en la cach y recuperarlo es exactamente igual que agregar un
elemento a un diccionario.
Agregar un elemento a un objeto Cache:
Microsoft Cache("mykey") = myValue
Visual Basic .NET
C# Cache["mykey"] = myValue;

Recuperar un elemento de un objeto Cache:


Visual Basic .NET myValue = Cache("myKey")

C# myValue = Cache["myKey"];
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 6

Ventajas de utilizar el objeto Cache

Es ms rpido que crear un nuevo objeto para cada


peticin
Soporta el bloqueo interno
Administracin automtica de los recursos de cach
Soporta funciones callback
Soporta el borrado basado en dependencias

*****************************

Introduccin El objeto Cache proporciona una sencilla interfaz de diccionario que permite
insertar valores fcilmente y recuperarlos posteriormente. El uso del objeto
Cache para almacenar valores tiene varias ventajas.
Ms rpido que crear un Es mucho ms rpido recuperar un elemento almacenado en memoria que
nuevo objeto para cada volver a generarlo. Por ejemplo, un DataSet relleno con datos de un equipo
solicitud ejecutando Microsoft SQL Server debe volver a conectarse con el servidor
SQL Server por cada peticin de pgina. Ubicar el DataSet en el objeto Cache
facilita un acceso mucho ms rpido a esos datos.
Soporta bloqueo interno El objeto Cache proporciona una gestin automtica de bloqueos para los
elementos que se encuentran en la cach; por tanto, las peticiones simultneas
de un mismo elemento no pueden modificar el objeto. La gestin automtica de
bloqueos protege las transacciones en curso cuando se actualizan los elementos.
Administra ASP.NET elimina regularmente y de forma automtica elementos de la cach.
automticamente los Este borrado automtico constituye una mejora respecto a las versiones de
recursos de cach cach anteriores en las que el desarrollador tena que administrar manualmente
los recursos de la cach.
Soporte de funciones Las funciones callback son cdigo que se ejecuta cuando se elimina un
callback elemento de la cach. Por ejemplo, podemos utilizar una funcin callback para
insertar la ltima versin de un objeto en la cach tan pronto como se elimine la
versin antigua.
Soporta la eliminacin Si un elemento en una cach tiene una dependencia con otro elemento en la
basada en dependencias cach o en un archivo, podemos configurar el objeto Cache para que ese
elemento se elimine cuando la dependencia cumpla determinados
requerimientos. Por ejemplo, si almacenamos datos de un archivo XML en la
cach, podemos eliminarlos cuando cambie el documento XML.
7 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Cmo utilizar el objeto Cache

Escribir en el objeto Cache:


'Implicit
'Implicit method
method
Cache("myKey")
Cache("myKey") == myValue
myValue

'Explicit
'Explicit method
method
Cache.Insert("myKey",
Cache.Insert("myKey", myValue,
myValue, Dependency,
Dependency, AbsoluteExpiration,
AbsoluteExpiration, __
SlidingExpiration, CacheItemPriority, CacheItemRemovedCallBack)
SlidingExpiration, CacheItemPriority, CacheItemRemovedCallBack)

//Implicit
//Implicit method
method
Cache["myKey"]
Cache["myKey"] == myValue;
myValue;

//Explicit
//Explicit method
method
Cache.Insert("myKey",
Cache.Insert("myKey", myValue,
myValue, Dependency,
Dependency, AbsoluteExpiration,
AbsoluteExpiration,
SlidingExpiration,
SlidingExpiration, CacheItemPriority,
CacheItemPriority, CacheItemRemovedCallBack);
CacheItemRemovedCallBack);

Recuperar valores del objeto Cache:


myValue
myValue == Cache("myKey")
Cache("myKey") myValue
myValue == Cache["myKey"];
Cache["myKey"];

*****************************

Introduccin Para utilizar el objeto Cache, utilizamos pares clave-valor para almacenar y
recuperar elementos. La clave es la cadena de la clave de Cache que se utiliza
para referenciar el elemento. El valor es el elemento que se va a almacenar en la
cach.
Escribir en el objeto Podemos escribir un elemento en un objeto Cache implcitamente, como
Cache muestra el siguiente cdigo:
Visual Basic .NET Cache("mykey") = myValue

C# Cache["mykey"] = myValue;

Tambin podemos proporcionar parmetros, como un lmite de tiempo para el


almacenamiento en el objeto Cache, cuando insertemos un elemento en el
objeto Cache. El siguiente cdigo muestra el mtodo Insert explcito con
parmetros:
Visual Basic .NET Cache.Insert("myKey", myValue, _
Dependency, AbsoluteExpiration, SlidingExpiration, _
CacheItemPriority, CacheItemRemovedCallBack)

C# Cache.Insert("myKey", myValue,
Dependency, AbsoluteExpiration, SlidingExpiration,
CacheItemPriority, CacheItemRemovedCallBack);
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 8

Recuperar valores del Recuperar valores del objeto Cache es igual de fcil. nicamente debemos
objeto Cache proporcionar la clave correcta para recibir el valor.
El siguiente cdigo utiliza la clave myKey para recuperar el valor myValue y,
a continuacin, muestra myValue si no est vaco:
Visual Basic .NET myValue = Cache("mykey")
If myValue <> Nothing Then
DisplayData(myValue)
End If

C# myValue = Cache["mykey"];
if (myValue != null)
DisplayData(myValue);
9 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Eliminar elementos del objeto Cache

Tiempo AbsoluteExpiration
DateTime.Now.AddMinutes(5)
DateTime.Now.AddMinutes(5)

Tiempo SlidingExpiration
TimeSpan.FromSeconds(20)
TimeSpan.FromSeconds(20)

Depende de un valor modificado


AddCacheItemDependency("Variable.Value")
AddCacheItemDependency("Variable.Value")

Prioridad del elemento en cach


CacheItemPriority.High
CacheItemPriority.High

*****************************

Introduccin El objeto Cache de ASP.NET est diseado para garantizar que no utiliza
demasiada memoria del servidor. Por ello, el objeto Cache elimina
automticamente los elementos menos utilizados cuando la memoria disponible
es escasa. Podemos influir en el modo como el objeto Cache almacena y
elimina los elementos, definiendo lmites de tiempo, dependencias y prioridades
para los elementos que se encuentran en el objeto Cache.
Los elementos del objeto Cache se eliminan tan pronto como se genera una
dependencia o un lmite de tiempo. Los intentos de recuperar los elementos
eliminados devolvern un valor null a menos que el elemento se agregue
nuevamente al objeto Cache.
AbsoluteExpiration Podemos definir la duracin mxima absoluta de un elemento utilizando el
parmetro AbsoluteExpiration. Este parmetro es un tipo de parmetro
DateTime que permite especificar el tiempo de expiracin del elemento.
El siguiente cdigo especifica que myValue se eliminar del objeto Cache
exactamente cinco minutos despus de su creacin:
Visual Basic .NET Cache.Insert("myKey", myValue, Nothing, _
DateTime.Now.AddMinutes(5), Nothing)

C# Cache.Insert("myKey", myValue, null, _


DateTime.Now.AddMinutes(5), Cache.NoSlidingExpiration);
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 10

SlidingExpiration Podemos definir la duracin relativa mxima de un elemento utilizando el


parmetro SlidingExpiration. ste es un parmetro de tipo TimeSpan que
permite especificar el intervalo de tiempo entre el momento en que se accedi
por ltima vez al objeto en cach y el tiempo de expiracin del objeto.
El siguiente cdigo especifica que myValue se eliminar del objeto Cache
exactamente 20 segundos despus del ltimo acceso:
Visual Basic .NET Cache.Insert("myKey", myValue, Nothing, _
Nothing, TimeSpan.FromSeconds(20))

C# Cache.Insert("myKey", myValue, null, _


null, TimeSpan.FromSeconds(20));

Dependencias En ocasiones, deseamos que un objeto sea eliminado del objeto Cache porque
un elemento de soporte, como un archivo, ha cambiado. ASP.NET permite
definir la validez de un elemento en cach, basndose en dependencias de
archivos u otro elemento en cach. Las dependencias basadas en directorios y
archivos externos se denominan dependencias de archivo, las dependencias
basadas en otro elemento en cach se denominan dependencias de clave. Si una
dependencia cambia, el elemento en cach se invalida y se elimina del objeto
Cache.
El siguiente cdigo especifica que myValue se eliminar del objeto Cache
cuando cambie el archivo myDoc.xml:
Visual Basic .NET Cache.Insert("myKey", myValue, _
new CacheDependency(Server.MapPath("myDoc.xml")))

C# Cache.Insert("myKey", myValue, new


CacheDependency(Server.MapPath("myDoc.xml")));

Prioridad de elementos Cuando al servidor Web le queda poca memoria, el objeto Cache elimina, de
en Cache forma selectiva, elementos para liberar memoria del sistema. Los elementos que
tengan asignados valores de alta prioridad tienen una menor probabilidad de ser
eliminados de la cach; es ms probable que se eliminen los elementos que
tengan asignados valores de menor prioridad.
El siguiente cdigo especifica que myValue tiene una prioridad alta y debera
ser uno de los ltimos elementos eliminados del objeto Cache cuando la
memoria de servidor es limitada:
Visual Basic .NET Cache.Insert("myKey", myValue, Nothing, Nothing, _
Nothing, CacheItemPriority.High, onRemove)

C# Cache.Insert("myKey", myValue, null, null,


Cache.NoSlidingExpiration, CacheItemPriority.High, onRemove);
11 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Ejemplo de establecer El siguiente cdigo inserta un valor para MyBook en el objeto Cache con
los parmetros en varios argumentos de parmetros. La dependencia o el evento con tiempo de
Cache.Insert expiracin que ocurra antes ser el elemento eliminado del objeto Cache:
Eliminar el elemento 5 minutos despus de ser almacenado.
Eliminar el elemento 30 segundos despus del ltimo acceso.
Eliminar el elemento si cambia el archivo Books.xml.
Configurar una prioridad alta para el elemento para que se elimine el ltimo
en caso de que los recursos del servidor lleguen a ser un problema.
Cuando el elemento se elimine del objeto Cache, se ejecutar la funcin de
callback onRemove.

Visual Basic .NET Cache.Insert("MyBook.CurrentBook", CurrentBook, _


new CacheDependency(Server.MapPath("Books.xml")), _
DateTime.Now.AddMinutes(5), _
TimeSpan.FromSeconds(30), _
CacheItemPriority.High, onRemove)

C# Cache.Insert("MyBook.CurrentBook", CurrentBook,
new CacheDependency(Server.MapPath("Books.xml")),
DateTime.Now.AddMinutes(5),
TimeSpan.FromSeconds(30),
CacheItemPriority.High, onRemove);
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 12

Demostracin: uso del objeto Cache

Ejecutar la pgina CacheTest.aspx sin el


objeto Cache habilitado
Ejecutar la pgina CacheTest.aspx con el
objeto Cache habilitado
Ejecutar la pgina CacheTest.aspx con el
objeto Cache habilitado y con una
dependencia

*****************************

Introduccin En esta demostracin, veremos cmo utilizar el objeto Cache con un


DataGrid.
Todos los archivos de esta demostracin se encuentran en el proyecto
Demo13CS o Demo13VB que se pueden encontrar dentro del fichero
demos13.zip.

Ejecutar la demostracin
Ejecutar sin 1. Abrir la pgina CacheTest.aspx.
almacenamiento en
cach 2. Mostrar la pgina de cdigo subyacente.
Observar que el DataSet lee un archivo XML y que el DataGrid est
relleno con el contenido del archivo XML.
3. Establecer el proyecto Demo13 como proyecto de Inicio, establecer la
pgina CacheTest.aspx como Pgina de inicio del proyecto, e visualizar la
pgina en Microsoft Internet Explorer.

Nota Debido a las diferencias de funcionalidades entre el navegador


incluido en Microsoft Visual Studio .NET e Internet Explorer, es
importante utilizar Internet Explorer en esta demostracin.

Habilitar el 4. En CacheTest.aspx.vb o CacheTest.aspx.cs, eliminar el comentario de las


almacenamiento en lneas marcadas con el siguiente comentario en los procedimientos de
cach evento Page_Load y dgXML_PageIndexChanged:
Visual Basic .NET 'comment this line for caching
C# //comment this line for caching
13 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

5. Eliminar el comentario en el cdigo restante en ambos procedimientos de


evento, Page_Load y dgXML_PageIndexChanged.
Explicar cmo este cdigo adicional crea una nueva clave de cach
dsCache, que coloca el objeto DataSet dsXML en la cach y establecer el
momento de vencimiento absoluto en dos minutos.
6. Hacer clic en Start para generar la pgina CacheTest.aspx y visualizarla en
Internet Explorer.
Verificar que el DataGrid est poblado con los datos XML y que funciona
la funcionalidad de paginacin.
Probar el 7. Dejar abierto Internet Explorer, y en Visual Studio .NET, abrir el archivo
almacenamiento en pubs.xml.
cach
8. Cambiar el ttulo del primer libro listado por un ttulo que los estudiantes
puedan detectar fcilmente y, a continuacin, guardar el archivo.
9. En Internet Explorer, cambiar a la Pgina 1 del DataGrid.
Si ya se est visualizando la Pgina 1, cambiar a otra pgina y regresar a la
Pgina 1.
10. Mostrar a los estudiantes que el ttulo del primer libro listado no ha
cambiado porque la informacin proviene de la cach.
11. Cambiar a otra pgina, esperar al menos dos minutos, y regresar a la primera
pgina.
El DataGrid mostrar ahora el nuevo ttulo para el primer libro.
12. Cerrar Internet Explorer.
Agregar una 13. Abrir la pgina CacheTest.aspx.vb o CacheTest.aspx.cs.
dependencia
14. Para las dos lneas de cdigo Cache.Insert de las pginas CacheTest.aspx.vb
o CacheTest.aspx.cs, agregar una dependencia en el archivo pubs.xml. El
cdigo debera ser similar al siguiente:
Visual Basic .NET Cache.Insert("dsCache", dsXML, New _
System.Web.Caching.CacheDependency _
(Server.MapPath("pubs.xml")), _
DateTime.Now.AddMinutes(1), Nothing)

C# Cache.Insert("dsCache", dsXML, new


System.Web.Caching.CacheDependency
(Server.MapPath("pubs.xml")),
DateTime.Now.AddMinutes(1), Cache.NoSlidingExpiration);
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 14

15. Hacer clic con el botn derecho en el proyecto Demo13VB o Demo13CS


de Explorador de soluciones y hacer clic en Generar.
16. Hacer clic con el botn derecho en CacheTest.aspx, y clic en Examinar
con En el cuadro de dilogo Examinar con, hacer clic en Microsoft
Internet Explorer, y clic en Examinar.
17. Hacer clic en Start para generar la pgina CacheTest.aspx y visualizarla en
Internet Explorer.
18. Dejar abierto Internet Explorer, y en Visual Studio .NET, abrir el archivo
pubs.xml.
19. Cambiar el ttulo del primer libro listado por un ttulo que los estudiantes
puedan detectar fcilmente. Guardar el archivo pubs.xml.
20. En Internet Explorer, cambiar a la Pgina 1 del DataGrid.
Si ya se est visualizando la Pgina 1, cambiar a otra pgina y regresar a la
Pgina 1.
21. Mostrar a los estudiantes que la informacin del DataGrid ha cambiado
para reflejar la modificacin del archivo pubs.xml, puesto que la cach
depende de ese archivo.
15 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Leccin: uso de la cach de resultados de ASP.NET

Multimedia: cach de resultados


Tipos de cach de resultados
Cmo utilizar la cach de resultados de pginas
Demostracin: cach de resultados de pginas
Cmo utilizar la cach de fragmentos de pginas

*****************************

Introduccin Un factor que los desarrolladores deben tener en cuenta cuando desarrollan
aplicaciones Web de alto rendimiento es la necesidad de minimizar el tiempo de
respuesta para las peticiones de pginas. Si se almacena en memoria una
pgina, o partes de una pgina, la primera vez que se solicita, y a continuacin
se utiliza esa pgina almacenada, o las partes de la pgina, en posteriores
solicitudes, podemos evitar el tiempo de proceso necesario para crear la pgina
de nuevo.
En esta leccin, estudiaremos cmo configurar la cach de resultados para
minimizar los tiempos de respuesta de las pginas en una aplicacin Web.
Objetivos de la leccin En esta leccin, aprenderemos a:
Explicar porqu utilizar la cach de resultados.
Explicar los distintos tipos de cach de resultados.
Utilizar el almacenamiento en la cach de resultados de pginas.
Utilizar almacenamiento en la cach de resultados de fragmentos de
pginas.
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 16

Multimedia: almacenamiento en cach de resultados

*****************************

Introduccin En esta animacin, veremos cmo afecta la cach de resultados de pgina a los
tiempos de respuesta del servidor cuando se solicita un formulario Web Form
ASP.NET ms de una vez. Para iniciar la animacin abrir el fichero
media13.swf.
17 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Tipos de cach de resultados

Almacenamiento en cach de pginas


Almacenamiento en cach de fragmentos de pginas
como controles de usuario
Almacenamiento en cach de servicios Web XML

*****************************

Introduccin ASP.NET proporciona almacenamiento en cach de los resultados de pginas,


lo que permite almacenar formularios Web Forms completos y controles de
usuario en la memoria del servidor. Tras la primera peticin, no se ejecuta el
cdigo del formulario Web Form, del control de usuario o del servicio Web
XML; se utilizan los resultados de la cach para satisfacer la peticin.
ASP.NET crea una nica cach de resultados por cada servidor Web. Las
pginas y fragmentos de pgina que estn almacenados en la cach de
resultados son exclusivos del servidor Web y los dems servidores de una
granja de servidores Web no pueden acceder a ellos. Por tanto, el uso de la
cach de resultados para incrementar el rendimiento del servidor no es escalable
por encima del nivel de un nico servidor.
Almacenamiento en El almacenamiento en la cach de pginas permite almacenar contenido
cach de pginas dinmico en la cach. Cuando se solicita por primera vez un formulario Web
Form, la pgina se compila y se almacena en la cach de resultados, y est
disponible para la prxima peticin. Esta pgina en cach se elimina cuando el
archivo fuente se modifica o se alcanza el tiempo de expiracin de la cach.
Almacenamiento en En ocasiones, es poco viable almacenar en cach una pgina completa, pues es
cach de fragmentos de posible que algunas partes de la pgina deban crearse dinmicamente para cada
pginas como un peticin. En estas situaciones, puede resultar til identificar los objetos o datos
control de usuario asociados a la peticin de pgina que no cambian con frecuencia y que, por
tanto, no requieren recursos significativos del servidor. Tras identificar estos
objetos o datos, podemos aislarlos del resto de la pgina crendolos como
controles de usuario y, a continuacin, almacenar en cach los controles de
usuario con la cach de resultados de la pgina.
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 18

Un ejemplo de un fragmento de pgina que sera til almacenar en cach es un


encabezado de pgina que contiene grficos estticos, o un sistema de men en
una barra lateral.
Almacenamiento en Los servicios Web XML tambin soportan el almacenamiento en cach para
cach de servicios Web incrementar el rendimiento de sus respuestas. Agregamos la propiedad
XML CacheDuration al atributo WebMethod, y establecemos el valor en segundos
que los resultados del mtodo del servicio Web XML permanecern en la cach
de resultados.
Por ejemplo, el siguiente cdigo ubica los resultados del WebMethod
CachedInfo en la cach de resultados durante cinco minutos:
Visual Basic .NET <WebMethod(CacheDuration:=300)> _
Public Function CachedInfo() As String
...
End Function

C# [WebMethod(CacheDuration=300)]
public string CachedInfo()
{
...
}

Importante Crear una cach de resultados para una aplicacin debera ser la
ltima tarea en el desarrollo de una aplicacin Web. De lo contrario, cuando
depursemos las pginas, podramos obtener pginas obsoletas que estuviesen
almacenadas en la cach de resultados en lugar de obtener pginas nuevas y
modificadas.
19 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Cmo utilizar la cach de resultados de pginas

El contenido de la cach se genera desde pginas


dinmicas
Toda la pgina Web est disponible en la cach
Establecer la duracin de la cach en segundos
Establecer la propiedad VaryByParampara controlar el
nmero de variaciones de pgina en la cach

<%@
<%@ OutputCache
OutputCache Duration="900"
Duration="900"
VaryByParam="none"
VaryByParam="none" %>
%>

*****************************

Introduccin ASP.NET proporciona almacenamiento en la cach de los resultados de


pginas, lo que nos permite almacenar en la memoria del servidor los
formularios Web Forms solicitados. Tras la primera peticin, el cdigo del
formulario Web Form no se ejecuta, sino que se utilizan los resultados de la
cach para satisfacer la peticin.
Contenido de la cach Para cargar una pgina en la cach de resultados, debemos agregar la directiva
de pginas dinmicas OutputCache al formulario Web Form. La directiva OutputCache incluye dos
propiedades: una propiedad Duration que establece en segundos el tiempo
mximo de almacenamiento en cach para la pgina, y una propiedad
VaryByParam que determina cundo crear una nueva copia de la pgina en la
cach, basndose en parmetros pasados a la pgina.
Toda la pgina Web est El almacenamiento en la cach de resultados permite satisfacer peticiones de
disponible en cach una determinada pgina desde la cach, de forma que no es necesario ejecutar el
cdigo creado inicialmente por la pgina en posteriores peticiones de la pgina.
El uso del almacenamiento en la cach de resultados para almacenar las pginas
del sitio Web accedidas con mayor frecuencia puede reducir considerablemente
el tiempo de respuesta de la pgina del servidor Web.
Establecer la duracin Podemos especificar el valor de tiempo de expiracin de la cach para una
de la cach pgina estableciendo la directiva de pginas OutputCache. Por ejemplo, para
almacenar en cach una pgina ASP.NET durante 15 minutos, agregar la
siguiente directiva de pginas OutputCache a la pgina .aspx:
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 20

<%@ OutputCache Duration="900" VaryByParam="None"%>

La unidad de tiempo para la propiedad Duration es en segundos. El valor


predeterminado son 0 segundos, lo cual significa que la respuesta no est
almacenada en la cach.
Establecer VaryByParam La propiedad VaryByParam se utiliza para determinar si ASP.NET debera
crear distintas versiones de la pgina en cach en situaciones en las que las
peticiones de la pgina pasen parmetros especficos. Establecer la propiedad
VaryByParam en "none" significa que nicamente se almacenar en cach
una versin de la pgina. Establecer la propiedad en "*" significa que cualquier
variacin de los parmetros de la pgina generar una nueva versin de la
pgina almacenada en la cach. Identificar uno o ms parmetros significa que
nicamente los cambios a estos parmetros producirn nuevas pginas
almacenadas en la cach.
Por ejemplo, la siguiente directiva de un archivo .aspx establece un vencimiento
de 60 segundos para los resultados almacenados en la cach de cada pgina
generada dinmicamente y, por tanto, requiere la creacin de una nueva pgina
en la cach de resultados por cada nuevo productID:
<%@ OutputCache Duration="60" VaryByParam="productID"%>

Precaucin Cuando utilizamos la directiva OutputCache, se requieren los


atributos Duration y VaryByParam. Si no incluimos estos atributos, se
produce un error del parseador cuando la pgina se solicita por primera vez. Si
no deseamos utilizar la funcionalidad que proporciona el atributo
VaryByParam, debemos establecer su valor en "none".
21 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Demostracin: cach de resultados de pginas

Mostrar cmo una pgina no almacenada


en la cach cambia con cada actualizacin
Mostrar cmo una pgina almacenada en
la cach no cambia con cada actualizacin
Mostrar cmo cambiar un parmetro puede
provocar que una nueva pgina se
almacene en la cach

*****************************

Introduccin En esta demostracin, veremos cmo afecta a la experiencia del usuario el


almacenamiento en la cach de resultados de pginas. En primer lugar, veremos
una pgina ejecutando una funcin de reloj que no se almacena en la cach. A
continuacin, veremos la misma pgina con una duracin de 10 segundos de la
cach de resultados. Finalmente, veremos cmo cambiar la propiedad
VaryByParam controla el almacenamiento en cach de distintas versiones de
la pgina.
Todos los archivos para esta demostracin se encuentran en el proyecto
Demo13CS o Demo13VB que se pueden encontrar dentro del fichero
demos13.zip.

Ejecutar la demostracin
Mostrar cmo una 1. Abrir la pgina OutputCache.aspx en el proyecto Mod15 en Visual Studio
pgina no almacenada .NET.
en cach cambia con
cada actualizacin 2. Mostrar el cdigo que obtiene la hora y fecha actuales, y muestra el cdigo
en una etiqueta.
3. Generar y examinar la pgina.
4. Volver a cargar la pgina varias veces consecutivamente para mostrar que
los segundos cambian.
Mostrar cmo una 5. Agregar la siguiente directiva a la pgina, tras la lnea de cdigo que
pgina almacenada en contiene la directiva de pgina.
cach no cambia con
cada actualizacin <%@ OutputCache Duration="10" VaryByParam="none"%>

6. Generar y examinar la pgina.


Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 22

7. Volver a cargar la pgina varias veces de forma consecutiva para mostrar


que los segundos cambian nicamente tras un intervalo de 10 segundos.
8. Podemos agregar un parmetro ficticio ?Name=Someone para mostrar que
no afecta al almacenamiento en cach. La pgina se almacena en cach con
independencia del valor del parmetro.
Mostrar cmo cambiar 9. Abrir la pgina OutputCacheVaryByParam.aspx.
un parmetro puede
hacer que una nueva 10. Mostrar la directiva OutputCache con la propiedad VaryByParam.
pgina se almacene en 11. Generar y examinar la pgina.
cach
12. Al final de la URL, agregar el parmetro ?Name=Someone.
13. Mostrar el efecto en la cach de resultados cuando se cambie el valor del
parmetro ?Name=Someone por un parmetro ?Name=Someone2.
23 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Cmo utilizar la cach de fragmentos de pginas

Convertir el fragmento de pgina en un control de


usuario
Establecer las propiedades Duration y varyByParam
<%@
<%@ OutputCache
OutputCache Duration="120"
Duration="120"
VaryByParam="none"
VaryByParam="none" %>
%>

*****************************

Introduccin Para almacenar en cach slo partes de una pgina, debemos aislar esas partes
del resto de la pgina insertndolas en un control de usuario. A continuacin,
almacenaremos en cach el control de usuario durante el periodo de tiempo que
especifiquemos. A este proceso se denomina almacenamiento en la cach de
fragmentos.
El almacenamiento en la cach de fragmentos permite separar las partes de una
pgina (como consultas a bases de datos, que requieren un valioso tiempo de
procesador) del resto de la pgina. Con el almacenamiento en cach de
fragmentos, podemos hacer que nicamente se generen dinmicamente para
cada peticin las partes de la pgina que requieren menos recursos del servidor,
o las partes de una pgina que deben crearse con cada peticin.
Los elementos que son buenos candidatos para el almacenamiento en la cach
de fragmentos incluyen encabezados, pies y listas desplegables que son
utilizados por mltiples pginas.
Convertir el fragmento Tras identificar las partes de la pgina que deseamos almacenar en cach,
en un control de usuario debemos crear controles de usuario que encapsulen cada uno de estos
fragmentos.

Nota Para ms informacin sobre la creacin de controles de usuario, consultar


el Mdulo Crear controles de usuario.

Establecer las Las polticas de almacenamiento en la cach para los controles de usuario,
propiedades Duration y como la duracin y el nmero de variaciones almacenadas, se establecen del
VaryByParam mismo modo que las polticas del almacenamiento en la cach de resultados de
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 24

las pginas. Las polticas de almacenamiento en la cach se establecen de forma


declarativa, utilizando la directiva OutputCache.
Por ejemplo, si incluimos la siguiente directiva en la parte superior de un
control de usuario, una versin del mismo se almacena en la cach de resultados
durante dos minutos, y nicamente una versin se almacenar en la cach del
control de usuario:
<%@ OutputCache Duration="120" VaryByParam="none"%>
25 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Leccin: configurar una aplicacin Web ASP.NET

Descripcin de los mtodos de configuracin


Configurar un servidor Web utilizando Machine.config
Configurar una aplicacin utilizando Web.config
Descripcin de la herencia de configuracin
Demostracin: herencia de configuracin
Prctica: determinar la herencia de configuracin
Almacenar y recuperar datos en Web.config
Uso de propiedades dinmicas
Demostracin: uso de propiedades dinmicas

*****************************

Introduccin Antes de poder implementar nuestra aplicacin Web ASP.NET, debemos


organizar la configuracin de la aplicacin Web en los archivos Machine.config
y Web.config. En esta leccin, estudiaremos cmo configurar una aplicacin
Web con ASP.NET.
Objetivos de la leccin En esta leccin, aprenderemos a:
Explicar cmo configurar una aplicacin Web.
Configurar un servidor Web utilizando el archivo Machine.config.
Configurar una aplicacin utilizando archivos Web.config.
Explicar cmo los archivos Web.config heredan del archivo Machine.config
y de otros archivos Web.config.
Almacenar y recuperar datos utilizando archivos Web.config.
Utilizar propiedades dinmicas para almacenar valores de propiedades.
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 26

Descripcin de los mtodos de configuracin

Archivo Machine.config
z Configuracin a nivel de equipo
Archivos Web.config
z Configuracin a nivel de aplicacin y directorio
Los archivos Machine.config y Web.config son:
z XML con un formato correcto
z Maysculas y minsculas Camel
z Extensibles

*****************************

Introduccin La informacin de configuracin para los recursos de ASP.NET est contenida


en una coleccin de archivos de configuracin. Cada archivo de configuracin
contiene una jerarqua anidada de etiquetas y sub-etiquetas XML con atributos
que especifican las opciones de configuracin.
La infraestructura de configuracin de ASP.NET no hace ninguna suposicin
sobre los tipos de datos de configuracin que soporta la infraestructura.
Machine.config La configuracin a nivel de equipo se almacena en el archivo Machine.config.
Slo hay un archivo Machine.config en cada servidor Web. Por tanto, el
archivo Machine.config puede ser utilizado para almacenar las opciones de
configuracin aplicables a todas las aplicaciones Web ASP.NET que residen en
ese servidor Web.
Web.config Las opciones a nivel de aplicacin y directorio se almacenan en archivos
Web.config. Cada aplicacin Web tiene al menos un archivo Web.config. Los
directorios virtuales pueden tener sus propios archivos Web.config que
contienen las opciones de configuracin especficas de ese directorio.
Atributos del archivo Debido a que las etiquetas de los archivos Machine.config y Web.config deben
.config estar formateadas en XML con un formato correcto, las etiquetas, sub-etiquetas
y atributos son sensibles a maysculas. Los nombres de las etiquetas y los
nombres de los atributos utilizan la combinacin de maysculas y minsculas
Camel, es decir, la primera letra de un nombre de etiqueta es minscula y la
primera letra de cada palabra subsiguiente concatenada es mayscula. Toda la
informacin de configuracin de un archivo .config se incluye entre las
etiquetas XML raz <configuration> y </configuration>.
27 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Configurar un servidor Web utilizando Machine.config

Las opciones de configuracin en el archivo


Machine.config afectan a todas las aplicaciones Web
del servidor
z Un nico archivo Machine.config por servidor Web
z La mayora de opciones de configuracin pueden
sobrecargarse a nivel de aplicacin utilizando archivos
Web.config

*****************************

Introduccin El archivo de configuracin del equipo, Machine.config, contiene las opciones


de configuracin aplicables a todo el equipo. Cada servidor Web dispone de un
nico archivo Machine.config.
El archivo Machine.config est ubicado en el siguiente directorio, siendo
version la versin del .NET Framework instalada en el servidor Web:
C:\Windows\Microsoft .NET \Framework\version\CONFIG\Machine.config
Las opciones de Las opciones de configuracin del archivo Machine.config afectan a todas las
configuracin afectan a aplicaciones Web ubicadas en el servidor. El sistema de configuracin busca
todas las aplicaciones primero en el archivo Machine.config el elemento <appSettings>, y busca las
Web principales configuraciones locales en los archivos Web.config de la aplicacin.
Ubicar la configuracin de la aplicacin Web en el archivo Machine.config
tiene ventajas e inconvenientes:
Ventajas del archivo Machine.config
Ubicar las opciones de configuracin en el archivo Machine.config puede
facilitar el mantenimiento de nuestro sistema, ya que nicamente tendr un
archivo de configuracin que buscar, editar y mantener.
Inconvenientes del archivo Machine.config
Cuando implementamos una aplicacin Web en un nuevo servidor, la
configuracin de la aplicacin Web que se encuentra en el archivo
Machine.config no se copiar al nuevo servidor Web.
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 28

Configurar una aplicacin utilizando Web.config

Uno o ms archivos Web.config por aplicacin Web


Los archivos Web.config contienen toda la informacin
de configuracin de la aplicacin
Contienen una seccin por cada categora principal de
funcionalidad ASP.NET
z Seguridad
z Modo
z Configuracin general de la aplicacin
z Seguimiento

*****************************

Introduccin En ASP.NET, podemos compartir la informacin y las opciones de


configuracin entre pginas Web almacenando la configuracin de la aplicacin
Web en una ubicacin central denominada archivo Web.config. Tambin
podemos almacenar informacin local y las opciones de configuracin en
directorios virtuales creando archivos Web.config locales adicionales.
La carpeta raz de la aplicacin Web siempre contiene un nico archivo
Web.config. Puede haber archivos Web.config adicionales ubicados en la
carpeta del directorio virtual al que pertenecen.
Uno o ms archivos La presencia de un archivo Web.config en un determinado directorio es
Web.config por opcional. Si un archivo Web.config no est presente, todas las opciones de
aplicacin Web configuracin del directorio se heredan automticamente del directorio
primario, el archivo Web.config.
Contiene una seccin En un archivo Web.config, hay secciones para cada categora principal de
para cada categora funcionalidad ASP.NET, como muestra la siguiente tabla.
principal de
funcionalidad ASP.NET Nombre de seccin Descripcin

<browserCaps> Responsable de controlar las opciones de configuracin del


componente de capacidades del explorador.
<compilation> Responsable de todas las opciones de compilacin que utiliza
ASP.NET.
<globalization> Responsable de configurar las opciones de globalizacin de una
aplicacin.
29 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

(continuacin)
Nombre de seccin Descripcin

<httpModules> Responsable de configurar los mdulos Hypertext Transfer


Protocol (HTTP) en una aplicacin. Los mdulos HTTP
participan en el procesamiento de cada peticin a una aplicacin.
Los usos habituales incluyen seguridad y registro.
<httpHandlers> Responsable de mapear URLs entrantes a clases IHttpHandler.
Los subdirectorios no heredan estas opciones.
<processModel> Responsable de configurar las opciones del modelo de proceso
ASP.NET en servidores Web Internet Informacin Services
(IIS).
<authentication> Responsable de todas las opciones de seguridad que utiliza el
<identity> mdulo httpModule de seguridad ASP.NET.
<authorization>
<sessionState> Responsable de configurar el estado de sesin httpModule.
<trace> Responsable de configurar el servicio de seguimiento de
ASP.NET.
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 30

Descripcin de la herencia de configuracin

El archivo Web.config a
CONFIG
CONFIG nivel de aplicacin
hereda las opciones del
Machine.config archivo Machine.config
Las opciones en el
VirtualDir
VirtualDir archivo Web.config que
estn en conflicto anulan
las opciones heredadas
Web.config
Directorios individuales
SubDir
SubDir
pueden tener archivos
Web.config que heredan
Web.config
de (y pueden anular) las
opciones a nivel de
aplicacin

*****************************

Introduccin Cuando un servidor Web recibe una peticin para un determinado recurso Web,
ASP.NET determina las opciones de configuracin de ese recurso
jerrquicamente. ASP.NET utiliza todos los archivos de configuracin ubicados
en la ruta del directorio virtual para el recurso solicitado. La opcin de
configuracin de nivel ms bajo puede sobrecargar las opciones que
proporcionan los archivos de configuracin del directorio primario.
Las reglas de herencia para los archivos de configuracin son las siguientes:
Los archivos Web.config a nivel de aplicacin heredan las opciones del
archivo Machine.config.
Las opciones que crean conflicto en un archivo Web.config secundario
sobrecargan las opciones heredadas.
Directorios individuales pueden tener archivos Web.config que heredan de,
y pueden sobrecargar, las opciones del archivo Web.config a nivel de
aplicacin.

Machine.config El archivo de nivel superior se denomina Machine.config. Las opciones en este


archivo se aplican a todos los directorios y subdirectorios de ASP.NET.
Machine.config se instala con el .NET Framework, y contiene numerosas
opciones ASP.NET predeterminadas.
Por ejemplo, la opcin predeterminada de la seccin de configuracin de
seguridad del archivo Machine.config permite que todos los usuarios accedan a
todos los recursos de URLs. Por tanto, todas las aplicaciones Web permiten el
acceso a todos los recursos URLs a menos que la opcin se sobrecargue en
Web.config.
31 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Web.config Los archivos de configuracin Web.config contienen informacin de


configuracin adicional para una aplicacin Web ASP.NET. Estos archivos
estn ubicados en los mismos directorios que los archivos de la aplicacin. Los
directorios secundarios heredan las opciones de los directorios primarios, salvo
cuando las opciones del directorio primario han sido sobrecargadas por un
archivo Web.config en el directorio secundario.
Por ejemplo, si el archivo Web.config en el directorio raz (VirtualDir) de una
aplicacin Web contiene una seccin de configuracin de seguridad que
permite el acceso nicamente a determinados usuarios, el subdirectorio SubDir
hereda esa opcin de seguridad. Por tanto, todos los usuarios tienen acceso a los
recursos ASP.NET del directorio raz de la aplicacin, VirtualDir, pero slo
determinados usuarios tienen acceso a los recursos ASP.NET de SubDir.
Los archivos Web.config de la aplicacin en VirtualDir y el subdirectorio
SubDir se encuentran en:
C:\Inetpub\wwwroot\VirtualDir\Web.config
C:\Inetpub\wwwroot\VirtualDir\SubDir\Web.config
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 32

Demostracin: herencia de configuracin

Crear una subcarpeta que contenga un


archivo Web.config
Mostrar las diferencias entre el archivo
Web.config principal y el archivo
Web.config de la subcarpeta
Mostrar cmo el formulario Web Form lee
informacin de los archivos Web.config
Eliminar el archivo Web.config de la
subcarpeta y actualizar el formulario Web
Form

*****************************

Introduccin En esta demostracin, veremos cmo un segundo archivo Web.config que se


encuentra en un subdirectorio hereda las opciones de configuracin de un
archivo Web.config primario.
Todos los archivos para esta demostracin se encuentran en el proyecto
Demo13CS o Demo13VB que se pueden encontrar dentro del fichero
demos13.zip.

Ejecutar la demostracin
Crear una subcarpeta 1. En Visual Studio .NET, mostrar el cdigo del archivo Web.config y
que contenga GetConfigMainFolder.aspx en la carpeta principal.
Web.config
Mostrar las diferencias Observar el valor almacenado en el archivo Web.config.
entre el Web.config 2. Mostrar el cdigo del archivo Web.config y GetConfigSubFolder.aspx en la
principal y el Web.config carpeta SubFolder.
de la subcarpeta
Observar que el valor almacenado en el archivo Web.config es distinto.
3. Generar y examinar la pgina GetConfigMainFolder.aspx, y resaltar el valor
que ha sido recuperado del archivo Web.config.
4. Hacer clic en Siguiente para abrir la pgina GetConfigSubFolder.aspx que
se encuentra en la carpeta SubFolder y destacar el hecho de que el valor
aqu es distinto.
Eliminar Web.config de 5. En la carpeta SubFolder, cambiar el nombre del archivo Web.config por
la subcarpeta y oldWeb.config.
actualizar el formulario
Web Form 6. Generar y examinar la pgina GetConfigMainFolder.aspx, y destacar el
valor que ha sido recuperado del archivo Web.config.
33 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

7. Hacer clic en Siguiente para abrir la pgina GetConfigSubFolder.aspx en la


carpeta SubFolder, y observar que el valor es el mismo que el valor del
archivo Web.config del directorio principal.
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 34

Prctica: determinar la herencia de configuracin

Los estudiantes:
z Determinar las opciones de configuracin
de una aplicacin Web basndonos en
distintas variables
Tiempo: 5 Minutos

*****************************

Introduccin En esta prctica, examinaremos un archivo Machine.config y dos archivos


Web.config para determinar las opciones de configuracin del servidor Web, la
aplicacin Web y el subdirectorio de la aplicacin Web.
Examinar el siguiente cdigo del archivo Machine.config. A continuacin,
responder las preguntas a continuacin.
35 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

<configuration>
<appSettings>
<add key="Default XML File Name"
value="Default.xml" />
<add key="Default Text File Name"
value="Default.txt" />
</appSettings>
<authentication mode="Windows">
<forms name=".ASPXAUTH"
loginUrl="login.aspx"
protection="All"
timeout="30"
path="/">
</forms>
</authentication>
<system.web>
<trace
enabled="false"
localOnly="true"
pageOutput="false"
requestLimit="10"
traceMode="SortByTime"
/>
</system.web>
</configuration>

A este nivel, cul es la opcin de configuracin para el mecanismo de


autenticacin?
____________________________________________________________

____________________________________________________________

Existe una opcin de configuracin para una cadena de conexin? Si es as,


cul es?
____________________________________________________________

____________________________________________________________

Hay otras opciones de configuracin de aplicacin? Si es as, qu valores


tienen?
____________________________________________________________

____________________________________________________________

Existen una opcin de configuracin que permita el seguimiento de la


aplicacin Web? Si es as, es posible hacer el seguimiento desde un equipo
externo?
____________________________________________________________

____________________________________________________________
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 36

Examinar el cdigo siguiente de un archivo Web.config ubicado en la raz del


directorio virtual de la aplicacin Web. A continuacin, responder a las
preguntas siguientes. Considerar el cdigo del ejemplo anterior al responder a
las preguntas.
<configuration>
<appSettings>
<add key="northwind"
value="data source=localhost;
initial catalog=northwind;
integrated security=true;" />
</appSettings>
<system.web>
<trace
enabled="true"
localOnly="true"
pageOutput="false"
requestLimit="30"
traceMode="SortByCategory"
/>
</system.web>
</configuration>

A este nivel, qu es el mecanismo de autenticacin?


_____________________________________________________________

_____________________________________________________________

Existe una cadena de conexin? Si es as, qu es?


_____________________________________________________________

_____________________________________________________________

Hay otras opciones de aplicacin? Si es as, qu valores tienen?


_____________________________________________________________

_____________________________________________________________

Est habilitado el seguimiento para la aplicacin Web? Si es as, es


posible realizar el seguimiento desde un equipo externo?
_____________________________________________________________

_____________________________________________________________
37 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Examinar el siguiente cdigo de un archivo Web.config ubicado en una


subcarpeta de la aplicacin Web. A continuacin, responder las preguntas.
Considerar el cdigo de ejemplo anterior al responder.
<configuration>
<appSettings>
<add key="Northwind"
value="data source=SQLServ01;
initial catalog=northwind;
integrated security=true;" />
</appSettings>
<authentication mode="Forms">
<forms name=".ASPXAUTH"
loginUrl="loginPage.aspx"
timeout="30"
path="/">

</forms>
</authentication>
<system.web>
<trace
enabled="true"
localOnly="false"
pageOutput="false"
requestLimit="40"
traceMode="SortByTime"
/>
</system.web>
</configuration>

A este nivel, cul es el mecanismo de autenticacin?


____________________________________________________________

____________________________________________________________

Existe una cadena de conexin? Si es as, cul es?


____________________________________________________________

____________________________________________________________

Hay otras opciones de aplicacin? Si es as, qu valores tienen?


____________________________________________________________

____________________________________________________________

Est habilitado el seguimiento para la aplicacin Web? Si es as, es


posible realizar el seguimiento desde un equipo externo?
____________________________________________________________

____________________________________________________________
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 38

Almacenar y recuperar datos en Web.config

Almacenar la configuracin de la aplicacin en un


archivo Web.config
<configuration>
<configuration>
<appSettings>
<appSettings>
<add
<add key="pubs"
key="pubs" value="server=localhost;
value="server=localhost;
integrated
integrated security=true;
security=true; database=pubs"/>
database=pubs"/>
</appSettings>
</appSettings>
</configuration>
</configuration>
Recuperar la configuracin de la aplicacin de un
archivo Web.config
Dim
Dim strPubs
strPubs As
As String
String == __
ConfigurationSettings.AppSettings("pubs")
ConfigurationSettings.AppSettings("pubs")

AppSettingsReader
AppSettingsReader App
App == new
new AppSettingsReader();
AppSettingsReader();
string
string strPubs
strPubs == (string)App.GetValue("pubs",
(string)App.GetValue("pubs",
typeof(string));
typeof(string));

*****************************

Introduccin Podemos utilizar la seccin <appSettings> del archivo Web.config como


repositorio de las opciones de configuracin de la aplicacin. En la seccin
<appSettings>, podemos crear pares clave-valor para los datos que se utilicen
habitualmente en nuestra aplicacin Web. La creacin de pares clave-valor para
los datos resulta muy til, pues nos permite definir todos los datos de
configuracin de la aplicacin en una ubicacin central. Por ejemplo, podemos
almacenar una cadena de conexin a una base de datos para una aplicacin en
una ubicacin centralizada, en lugar de ubicarla en cada pgina ASP.NET.
Almacenar las opciones Para almacenar las opciones de configuracin de la aplicacin, introducimos un
de configuracin de la par clave-valor para la informacin que deseamos almacenar. El siguiente
aplicacin en archivo Web.config crea dos pares clave-valor para las cadenas de conexin de
Web.config las bases de datos utilizadas en una aplicacin Web:
configuration>
<appSettings>
<add key="pubs"
value="data source=localhost;
initial catalog=pubs;
integrated security=SSPI" />
<add key="northwind"
value="data source=localhost;
initial catalog=northwind;
integrated security=SSPI" />
</appSettings>
</configuration>
39 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Recuperar las opciones Para recuperar las opciones de configuracin de la aplicacin de los archivos
de configuracin de la Web.config, se utiliza la coleccin de cadenas estticas
aplicacin de ConfigurationSettings.AppSettings.
Web.config
Por ejemplo, el siguiente cdigo de ejemplo lee el valor de la clave pubs en la
seccin <appSettings>:
Visual Basic .NET Dim strPubs As String = _
ConfigurationSettings.AppSettings("pubs")

C# string strPubs = System.Configuration.


ConfigurationSettings.AppSettings["pubs"];
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 40

Uso de propiedades dinmicas

Almacenar los valores


de las propiedades en
archivos Web.config en
lugar de almacenarlos en
el cdigo compilado de
la aplicacin
Permite actualizaciones
sencillas sin recompilar
la aplicacin
Habilitar y configurar las
propiedades en el objeto

*****************************

Introduccin Las propiedades dinmicas permiten configurar la aplicacin de forma que los
valores de sus propiedades se almacenen en un archivo de configuracin
externo, por ejemplo Web.config, en lugar de almacenarse en el cdigo
compilado de la aplicacin. Almacenar en un archivo de configuracin externo
puede reducir el coste total de mantenimiento de una aplicacin, una vez que
haya sido implementada, al proporcionar a los administradores los medios para
actualizar valores de propiedades que pueden cambiar con el tiempo.
Almacenar los valores Aunque las propiedades de la mayora de componentes y controles de una
de las propiedades en aplicacin Web pueden gestionarse dinmicamente, este tipo de gestin es ms
Web.config conveniente para algunas propiedades que para otras. Por ejemplo,
probablemente utilizaremos propiedades dinmicas para almacenar y recuperar
las propiedades que estn conectadas a recursos externos que podran cambiar,
como bases de datos.
Permite actualizaciones Por ejemplo, supongamos que estamos generando una aplicacin Web que
sencillas utiliza una base de datos de prueba durante el proceso de desarrollo y debemos
trasladar la aplicacin Web a una base de datos en produccin cuando la
implementemos. Si almacenamos los valores de las propiedades en la
aplicacin Web, deberemos cambiar manualmente toda la configuracin de la
base de datos para poder implementar la base de datos, y deberemos recompilar
el cdigo fuente. Si almacenamos los valores de estas propiedades
externamente, podremos realizar un solo cambio en el archivo externo y la
aplicacin Web utilizar los nuevos valores la prxima vez que se ejecute.
Habilitar y configurar las Configuramos un objeto para utilizar propiedades dinmicas en la ventana
propiedades del objeto Propiedades del objeto en Visual Studio .NET. Seleccionar la casilla de
verificacin DynamicProperties en la seccin de configuracin de la ventana
Propiedades, y establecer la propiedad en una clave en Web.config.
41 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Demostracin: uso de propiedades dinmicas

Configurar un objeto SqlConnection para


utilizar propiedades dinmicas
Mostrar el cdigo que acaba de
generarse en la pgina de cdigo
subyacente
Abrir el archivo Web.config y mostrar la
clave SqlConnection1.ConnectionString
en la seccin appSettings

*****************************

Introduccin En esta demostracin, veremos cmo habilitar y configurar un objeto


SqlConnection para utilizar propiedades dinmicas.
Todos los archivos para esta demostracin se encuentran en el proyecto
Demo13CS o Demo13VB que se pueden encontrar dentro del fichero
demos13.zip.

Ejecutar la demostracin
Configurar un objeto 1. Abrir la pgina DataAccess.aspx del proyecto Mod15VB o Mod15CS en
SqlConnection para Visual Studio .NET.
utilizar propiedades
dinmicas 2. Seleccionar el objeto SqlConnection y visualizar la ventana Propiedades.
3. Expandir la propiedad DynamicProperties.
Observar que la propiedad ConnectionString puede ser una propiedad
dinmica.
4. Seleccionar la propiedad ConnectionString y hacer clic en el botn ....
5. En el cuadro de dilogo Propiedad dinmica, convertir la propiedad en una
propiedad dinmica con el nombre de clave predeterminado seleccionando
Asignar la propiedad a una clave en el archivo de configuracin, y hacer
clic en Aceptar.
6. En la ventana Propiedades, observar el glifo azul junto a la propiedad
<original> ConnectionString del objeto SqlConnection. El glifo indica
que es una propiedad dinmica.
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 42

Mostrar el cdigo que se 7. Visualizar el cdigo que acaba de generarse en la pgina de cdigo
ha generado subyacente y buscar la lnea de cdigo que establece la propiedad
ConnectionString del objeto SqlConnection:
Visual Basic .NET Me.SqlConnection1.ConnectionString = _
CType(configurationAppSettings.GetValue _
("SqlConnection1.ConnectionString", _
GetType(System.String)), String)

C# this.SqlConnection1.ConnectionString =
((string)(configurationAppSettings.GetValue("SqlConnection1
.ConnectionString", typeof(string))));

Mostrar la clave 8. Abrir el archivo Web.config y buscar la clave


SqlConnection1. SqlConnection1.ConnectionString en la seccin appSettings.
ConnectionString
43 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Leccin: implementar una aplicacin Web ASP.NET

Implementar una aplicacin Web


Preparar una aplicacin Web para su implementacin
Prctica: seleccionar los archivos necesarios
Compartir ensamblados en la cach de ensamblados
global
Actualizar la aplicacin Web

*****************************

Introduccin Despus de haber configurado los objetos Cache y la cach de resultados, y de


haber organizado las opciones de configuracin de la aplicacin Web entre los
archivos Machine.config y Web.config, estamos preparados para implementar
la aplicacin Web ASP.NET.
En esta leccin, estudiaremos cmo seleccionar los archivos necesarios para
ejecutar la aplicacin Web y utilizaremos XCOPY o FTP (file transfer
protocol) para copiar estos archivos en el directorio de produccin.
Objetivos de la leccin En esta leccin, aprenderemos a:
Implementar una aplicacin Web.
Preparar la aplicacin Web para su implementacin seleccionando
nicamente los archivos necesarios para ejecutar la aplicacin Web.
Compartir los ensamblados en la Cach de Ensamblados Global (Global
Assembly Cache, GAC).
Actualizar una aplicacin Web ASP.NET.
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 44

Implementar una aplicacin Web

Copiar archivos localmente o archivos FTP


remotamente
Configurar la carpeta de destino como un directorio
virtual en IIS
Copiar todos los archivos necesarios, incluyendo el
directorio \bin y su contenido
z No es necesario registrar componentes

*****************************

Introduccin Para implementar una aplicacin Web ASP.NET en un directorio o servidor en


produccin, debemos copiar todos los archivos necesarios en la ubicacin
adecuada. Normalmente, este proceso de copia se realiza utilizando Windows
Explorer para las copias locales, o FTP para implementaciones remotas. Este
tipo de copia a menudo se denomina implementacin XCOPY, por la utilidad
XCOPY de Microsoft MS-DOS, y copia todos los archivos y carpetas de un
directorio.
Configurar la carpeta de Antes de poder implementar una aplicacin Web en un directorio en
destino como un produccin, la carpeta en la que se implementar la aplicacin Web debe
directorio virtual en IIS configurarse como un directorio virtual en IIS.

Configurar una carpeta como un directorio virtual en IIS


1. En el men Inicio, hacer clic con el botn derecho en Mi PC y clic en
Administrar.
2. Expandir Servicios y aplicaciones, y expandir Internet Information
Services.
3. En el panel izquierdo de la consola IIS, ir a la carpeta que se desea convertir
en un directorio de aplicaciones Web.
4. Hacer clic con el botn derecho en la carpeta y clic en Propiedades.
5. En la ficha Directorio, en la seccin de configuracin de la aplicacin,
hacer clic en Crear.
6. Hacer clic en Aceptar.
45 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Copiar todos los Para ejecutar la aplicacin Web en el directorio de produccin, nicamente se
archivos necesarios necesita un subconjunto de los archivos requeridos para generar una aplicacin
Web. El paso final antes de copiar la aplicacin Web sera generar la aplicacin
Web y eliminar todos los archivos innecesarios.
Como las aplicaciones que se ejecutan bajo el CLR son autodescriptivas y no
requieren entradas de registro, no necesitamos registrar componentes antes o
despus de copiar archivos. La aplicacin Web est preparada para aceptar
peticiones despus de ser copiada a una carpeta que se ha configurado en IIS
como un directorio de aplicacin Web.
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 46

Preparar una aplicacin Web para su implementacin

1. Generar la aplicacin Web


2. No seleccionar archivos innecesarios
z Archivos de solucin de Visual Studio .NET (.vbproj,
.vbproj.webinfo, .csproj, .csproj.webinfo, etc.)
z Archivos de recursos (.resx)
z Pginas de cdigo subyacente (.vb, .cs)
3. Copiar o FTP archivos necesarios en el directorio de
produccin

*****************************

Introduccin Hay tres pasos importantes que son necesarios para trasladar la aplicacin Web
desde el entorno de desarrollo a un directorio o servidor en produccin:
1. Generar la aplicacin Web.
2. Eliminar todos los archivos innecesarios de la aplicacin Web.
3. Copiar los archivos en el entorno de produccin.

Generar la aplicacin El primer paso es generar, o compilar, la aplicacin Web. Esta compilacin
crea un archivo DLL (dynamic-link library) en el directorio \bin que contiene
todo el cdigo de la aplicacin Web. Se crea un archivo NombreAplicacin.dll
por cada aplicacin Web; este archivo contiene el cdigo de todos los recursos
y archivos de cdigo subyacente.
No seleccionar archivos El segundo paso en la implementacin de una aplicacin Web es seleccionar
innecesarios nicamente los archivos necesarios del directorio que contiene la aplicacin
Web. Al no copiar archivos innecesarios, se incrementa la seguridad del
entorno de produccin limitando la exposicin de cdigo no compilado.
47 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Los archivos que no son necesarios en el directorio de produccin son:


Archivos de solucin de Visual Studio .NET (.vbproj, .vbproj.webinfo,
.csproj, etc.)
Visual Studio .NET necesita estos archivos nicamente para desarrollar la
aplicacin Web y no son necesarios para ejecutar la aplicacin Web en
produccin.
Archivos de recursos (.resx)
Estos archivos estn compilados en el archivo DLL.
Pginas de cdigo subyacente (.vb, .cs)
Estos archivos estn compilados en el archivo DLL.

Nota Si se utiliza la compilacin dinmica en la aplicacin Web, deben


copiarse las pginas de cdigo subyacente. La compilacin dinmica se
habilita utilizando el atributo src en la directiva @ Page.

Archivos necesarios Los archivos necesarios en el servidor de produccin incluyen:


El directorio \bin y los archivos DLL que incluye.
Estos archivos son los archivos de recursos compilados y las pginas de
cdigo subyacente.
Todos los archivos de formularios Web Forms, controles de usuario y
servicios XML Web (.aspx, .ascx, .asmx).
stos son los archivos de la interfaz de usuario y de la aplicacin.
Archivos de configuracin, incluyendo Web.config y global.asax.
Si se han modificado las opciones de configuracin en el archivo
Machine.config en el equipo de desarrollo, deben realizarse los mismos
cambios en el archivo Machine.config en el servidor de produccin.
Los archivos de soporte adicionales que existan en el directorio (como
archivos XML).

Copiar o utilizar FTP Una vez compilada la aplicacin Web y eliminados todos los archivos
innecesarios, debemos utilizar FTP o copiar en el directorio de produccin
nicamente los archivos restantes de la aplicacin Web del directorio de
desarrollo.
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 48

Prctica: seleccionar los archivos necesarios

Los estudiantes:
z Seleccionarn los archivos necesarios
para una implementacin
Tiempo: 5 Minutos

*****************************

En esta prctica, seleccionaremos los archivos necesarios que debemos copiar


en el directorio de produccin.
Archivo Visual Basic Archivo Microsoft Visual Conservar Eliminar
.NET C#

.vbproj .csproj
.vbproj.webinfo .csproj.webinfo
.resx .resx
.dll .dll
.aspx .aspx
directorio \bin y contenido directorio \bin y contenido
.aspx.vb .aspx.cs
.csproj .vbproj
Global.asax Global.asax
.exe .exe
.ascx .ascx
.xml .xml
Web.config Web.config
49 Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET

Compartir ensamblados en la cach de ensamblados global

La cach de ensamblados global proporciona el


almacenamiento para los ensamblados que deben
compartirse
z Cach para cdigo a nivel de equipo
z Los archivos DLL no estn registrados, por ello, no se
comparten fcilmente entre aplicaciones Web

*****************************

Introduccin Los equipos que tengan instalado el .NET Framework tambin tienen una cach
de cdigo a nivel de equipo denominada Cach de Ensamblados Global (Global
Assembly Cache - GAC). Despus de implementar nuestra aplicacin Web en
un servidor Web en produccin, podemos utilizar la GAC para compartir
cdigo entre las aplicaciones Web en el servidor Web.
Almacenamiento para Aunque el objeto Cache de ASP.NET se utiliza para el almacenamiento de
ensamblados que deben informacin a corto plazo de una aplicacin Web, la GAC puede utilizarse para
compartirse compartir cdigo en todo el servidor Web. La GAC almacena ensamblados
diseados especficamente para ser compartidos por varias aplicaciones Web en
un servidor. Un ensamblado es una coleccin de recursos en un nico archivo
(por ejemplo, un archivo dll).
Existen varios motivos para instalar un ensamblado en la GAC, incluyendo:
Ubicacin compartida
Los ensamblados utilizados por mltiples aplicaciones pueden incluirse en
la GAC.
Seguridad de archivos
La GAC se encuentra en el directorio WINNT, que normalmente tiene
restricciones de acceso a su contenido.
Versionado lado a lado
Mltiples copias de ensamblados con el mismo nombre, pero con diferente
informacin de versin, pueden mantenerse en la GAC.
Configurar, optimizar e implementar una aplicacin Web con Microsoft ASP.NET 50

Actualizar la aplicacin Web

Copiar o FTP archivos para actualizar la aplicacin


Web
z No es necesario detener y volver a iniciar IIS
z Los archivos .dll pueden actualizarse mientras el sitio
sigue ejecutndose
La cach de resultados protege a los usuarios
existentes

*****************************

Introduccin Una vez que nuestra aplicacin Web se est ejecutando en un directorio en
produccin, podemos actualizar la aplicacin Web en cualquier momento sin
necesidad de volver a iniciar el servidor, IIS o la aplicacin Web.
Copiar o FTP archivos Con ASP.NET, cuando tenemos una nueva versin de la aplicacin Web,
nicamente necesitamos copiar los nuevos archivos en el directorio,
sobrescribiendo los archivos existentes. Cuando el siguiente usuario se conecta
a nuestra aplicacin Web, recibe los archivos ms actualizados. A diferencia de
versiones anteriores de Active Server Pages (ASP), actualizar un sitio Web
ASP.NET no requiere que detengamos y volvamos a iniciar IIS.
La cach de resultados Si deshabilitamos el almacenamiento en cach de resultados de pginas para los
protege a los usuarios formularios Web Forms, los usuarios seguirn recibiendo las versiones antiguas
existentes de las pginas hasta que venza la cach. Cuando expiren las pginas en cach,
los usuarios recibirn una versin actualizada de esa pgina.

You might also like