Вы находитесь на странице: 1из 51

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

NET

ndice Descripcin Leccin: uso del objeto Cache Leccin: uso de la cach de resultados de ASP.NET Leccin: configurar una aplicacin Web ASP.NET Leccin: implementar una aplicacin Web ASP.NET 2 3 15 25 43

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

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.

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

Qu es el objeto Cache?

Un objeto utilizado para almacenar informacin


z z z

Un objeto Cache por aplicacin Web Una alternativa a las variables de aplicacin 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 almacenar informacin

ASP.NET proporciona un motor de cach completo que puede utilizarse para 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 Cache

El proceso para utilizar el objeto Cache es:

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 aplicacin Web ASP.NET crea un nico objeto Cache por cada aplicacin Web. Los elementos 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 Visual Basic .NET C#
Cache("mykey") = myValue Cache["mykey"] = myValue;

Recuperar un elemento de un objeto Cache: Visual Basic .NET C#


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

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

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. Es mucho ms rpido recuperar un elemento almacenado en memoria que volver a generarlo. Por ejemplo, un DataSet relleno con datos de un equipo 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. 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. ASP.NET elimina regularmente y de forma automtica elementos de la cach. Este borrado automtico constituye una mejora respecto a las versiones de cach anteriores en las que el desarrollador tena que administrar manualmente los recursos de la cach. Las funciones callback son cdigo que se ejecuta cuando se elimina un 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. Si un elemento en una cach tiene una dependencia con otro elemento en la 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.

Ms rpido que crear un nuevo objeto para cada solicitud

Soporta bloqueo interno

Administra automticamente los recursos de cach Soporte de funciones callback

Soporta la eliminacin basada en dependencias

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. Podemos escribir un elemento en un objeto Cache implcitamente, como muestra el siguiente cdigo:
Cache("mykey") = myValue Cache["mykey"] = myValue;

Escribir en el objeto Cache Visual Basic .NET C#

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) Cache.Insert("myKey", myValue, Dependency, AbsoluteExpiration, SlidingExpiration, CacheItemPriority, CacheItemRemovedCallBack);

C#

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

Recuperar valores del objeto Cache

Recuperar valores del objeto Cache es igual de fcil. nicamente debemos 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 myValue = Cache["mykey"]; if (myValue != null) DisplayData(myValue);

C#

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 C#

Cache.Insert("myKey", myValue, Nothing, _ DateTime.Now.AddMinutes(5), Nothing) 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 C# Dependencias

Cache.Insert("myKey", myValue, Nothing, _ Nothing, TimeSpan.FromSeconds(20)) Cache.Insert("myKey", myValue, null, _ null, TimeSpan.FromSeconds(20));

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 C# Prioridad de elementos en Cache

Cache.Insert("myKey", myValue, _ new CacheDependency(Server.MapPath("myDoc.xml"))) Cache.Insert("myKey", myValue, new CacheDependency(Server.MapPath("myDoc.xml")));

Cuando al servidor Web le queda poca memoria, el objeto Cache elimina, de 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 C#

Cache.Insert("myKey", myValue, Nothing, Nothing, _ Nothing, CacheItemPriority.High, onRemove) 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 los parmetros en Cache.Insert

El siguiente cdigo inserta un valor para MyBook en el objeto Cache con varios argumentos de parmetros. La dependencia o el evento con tiempo de 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) Cache.Insert("MyBook.CurrentBook", CurrentBook, new CacheDependency(Server.MapPath("Books.xml")), DateTime.Now.AddMinutes(5), TimeSpan.FromSeconds(30), CacheItemPriority.High, onRemove);

C#

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 almacenamiento en cach 1. Abrir la pgina CacheTest.aspx. 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 almacenamiento en cach Visual Basic .NET C# 4. En CacheTest.aspx.vb o CacheTest.aspx.cs, eliminar el comentario de las lneas marcadas con el siguiente comentario en los procedimientos de evento Page_Load y dgXML_PageIndexChanged:
'comment this line for caching //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 almacenamiento en cach 7. Dejar abierto Internet Explorer, y en Visual Studio .NET, abrir el archivo pubs.xml. 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 dependencia 13. Abrir la pgina CacheTest.aspx.vb o CacheTest.aspx.cs. 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:
Cache.Insert("dsCache", dsXML, New _ System.Web.Caching.CacheDependency _ (Server.MapPath("pubs.xml")), _ DateTime.Now.AddMinutes(1), Nothing) Cache.Insert("dsCache", dsXML, new System.Web.Caching.CacheDependency (Server.MapPath("pubs.xml")), DateTime.Now.AddMinutes(1), Cache.NoSlidingExpiration);

Visual Basic .NET

C#

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 cach de pginas

El almacenamiento en la cach de pginas permite almacenar contenido 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. En ocasiones, es poco viable almacenar en cach una pgina completa, pues es posible que algunas partes de la pgina deban crearse dinmicamente para cada peticin. En estas situaciones, puede resultar til identificar los objetos o datos 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.

Almacenamiento en cach de fragmentos de pginas como un control de usuario

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 cach de servicios Web XML Los servicios Web XML tambin soportan el almacenamiento en cach para incrementar el rendimiento de sus respuestas. Agregamos la propiedad 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 [WebMethod(CacheDuration=300)] public string CachedInfo() { ... }

C#

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. Para cargar una pgina en la cach de resultados, debemos agregar la directiva 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. El almacenamiento en la cach de resultados permite satisfacer peticiones de 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. Podemos especificar el valor de tiempo de expiracin de la cach para una 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:

Contenido de la cach de pginas dinmicas

Toda la pgina Web est disponible en cach

Establecer la duracin de la cach

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


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

20

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 pgina no almacenada en cach cambia con cada actualizacin 1. Abrir la pgina OutputCache.aspx en el proyecto Mod15 en Visual Studio .NET. 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 pgina almacenada en cach no cambia con cada actualizacin 5. Agregar la siguiente directiva a la pgina, tras la lnea de cdigo que contiene la directiva de pgina.
<%@ 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 un parmetro puede hacer que una nueva pgina se almacene en cach 9. Abrir la pgina OutputCacheVaryByParam.aspx. 10. Mostrar la directiva OutputCache con la propiedad VaryByParam. 11. Generar y examinar la pgina. 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 en un control de usuario

Tras identificar las partes de la pgina que deseamos almacenar en cach, 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 propiedades Duration y VaryByParam

Las polticas de almacenamiento en la cach para los controles de usuario, como la duracin y el nmero de variaciones almacenadas, se establecen del 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. En esta leccin, aprenderemos a:

Objetivos de la leccin

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 Configuracin a nivel de aplicacin y directorio XML con un formato correcto Maysculas y minsculas Camel Extensibles

Archivos Web.config
z

Los archivos Machine.config y Web.config son:


z z z

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

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. 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. Debido a que las etiquetas de los archivos Machine.config y Web.config deben 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>.

Web.config

Atributos del archivo .config

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 z

Un nico archivo Machine.config por servidor Web 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 configuracin afectan a todas las aplicaciones Web

Las opciones de configuracin del archivo Machine.config afectan a todas las aplicaciones Web ubicadas en el servidor. El sistema de configuracin busca primero en el archivo Machine.config el elemento <appSettings>, y busca las 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 z z z

Seguridad Modo Configuracin general de la aplicacin 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 Web.config por aplicacin Web Contiene una seccin para cada categora principal de funcionalidad ASP.NET

La presencia de un archivo Web.config en un determinado directorio es opcional. Si un archivo Web.config no est presente, todas las opciones de configuracin del directorio se heredan automticamente del directorio primario, el archivo Web.config. En un archivo Web.config, hay secciones para cada categora principal de funcionalidad ASP.NET, como muestra la siguiente tabla.
Nombre de seccin <browserCaps> <compilation> <globalization> Descripcin Responsable de controlar las opciones de configuracin del componente de capacidades del explorador. Responsable de todas las opciones de compilacin que utiliza ASP.NET. 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 <httpModules> Descripcin 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. Responsable de mapear URLs entrantes a clases IHttpHandler. Los subdirectorios no heredan estas opciones. Responsable de configurar las opciones del modelo de proceso ASP.NET en servidores Web Internet Informacin Services (IIS). Responsable de todas las opciones de seguridad que utiliza el mdulo httpModule de seguridad ASP.NET. Responsable de configurar el estado de sesin httpModule. Responsable de configurar el servicio de seguimiento de ASP.NET.

<httpHandlers> <processModel>

<authentication> <identity> <authorization> <sessionState> <trace>

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

30

Descripcin de la herencia de configuracin


CONFIG CONFIG Machine.config VirtualDir VirtualDir

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

Web.config SubDir SubDir Web.config

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

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 que contenga Web.config Mostrar las diferencias entre el Web.config principal y el Web.config de la subcarpeta 1. En Visual Studio .NET, mostrar el cdigo del archivo Web.config y GetConfigMainFolder.aspx en la carpeta principal. Observar el valor almacenado en el archivo Web.config. 2. Mostrar el cdigo del archivo Web.config y GetConfigSubFolder.aspx en la carpeta SubFolder. 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 la subcarpeta y actualizar el formulario Web Form 5. En la carpeta SubFolder, cambiar el nombre del archivo Web.config por oldWeb.config. 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. Para almacenar las opciones de configuracin de la aplicacin, introducimos un par clave-valor para la informacin que deseamos almacenar. El siguiente archivo Web.config crea dos pares clave-valor para las cadenas de conexin de 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>

Almacenar las opciones de configuracin de la aplicacin en Web.config

39

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

Recuperar las opciones de configuracin de la aplicacin de Web.config

Para recuperar las opciones de configuracin de la aplicacin de los archivos Web.config, se utiliza la coleccin de cadenas estticas ConfigurationSettings.AppSettings. Por ejemplo, el siguiente cdigo de ejemplo lee el valor de la clave pubs en la seccin <appSettings>:

Visual Basic .NET C#

Dim strPubs As String = _ ConfigurationSettings.AppSettings("pubs") 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. Aunque las propiedades de la mayora de componentes y controles de una aplicacin Web pueden gestionarse dinmicamente, este tipo de gestin es ms 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. Por ejemplo, supongamos que estamos generando una aplicacin Web que 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. Configuramos un objeto para utilizar propiedades dinmicas en la ventana 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.

Almacenar los valores de las propiedades en Web.config

Permite actualizaciones sencillas

Habilitar y configurar las propiedades del objeto

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 SqlConnection para utilizar propiedades dinmicas 1. Abrir la pgina DataAccess.aspx del proyecto Mod15VB o Mod15CS en Visual Studio .NET. 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 ha generado Visual Basic .NET

7. Visualizar el cdigo que acaba de generarse en la pgina de cdigo subyacente y buscar la lnea de cdigo que establece la propiedad ConnectionString del objeto SqlConnection:
Me.SqlConnection1.ConnectionString = _ CType(configurationAppSettings.GetValue _ ("SqlConnection1.ConnectionString", _ GetType(System.String)), String) this.SqlConnection1.ConnectionString = ((string)(configurationAppSettings.GetValue("SqlConnection1 .ConnectionString", typeof(string))));

C#

Mostrar la clave SqlConnection1. ConnectionString

8. Abrir el archivo Web.config y buscar la clave SqlConnection1.ConnectionString en la seccin appSettings.

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. Antes de poder implementar una aplicacin Web en un directorio en produccin, la carpeta en la que se implementar la aplicacin Web debe configurarse como un directorio virtual en IIS.

Configurar la carpeta de destino 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 archivos necesarios

Para ejecutar la aplicacin Web en el directorio de produccin, nicamente se 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.) Archivos de recursos (.resx) Pginas de cdigo subyacente (.vb, .cs)

z z

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. El segundo paso en la implementacin de una aplicacin Web es seleccionar 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.

No seleccionar archivos innecesarios

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 .NET .vbproj .vbproj.webinfo .resx .dll .aspx directorio \bin y contenido .aspx.vb .csproj Global.asax .exe .ascx .xml Web.config Archivo Microsoft Visual C# .csproj .csproj.webinfo .resx .dll .aspx directorio \bin y contenido .aspx.cs .vbproj Global.asax .exe .ascx .xml Web.config Conservar Eliminar

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 z

Cach para cdigo a nivel de equipo 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. Aunque el objeto Cache de ASP.NET se utiliza para el almacenamiento de informacin a corto plazo de una aplicacin Web, la GAC puede utilizarse para 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:

Almacenamiento para ensamblados que deben compartirse

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 z

No es necesario detener y volver a iniciar IIS 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. 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. Si deshabilitamos el almacenamiento en cach de resultados de pginas para los formularios Web Forms, los usuarios seguirn recibiendo las versiones antiguas de las pginas hasta que venza la cach. Cuando expiren las pginas en cach, los usuarios recibirn una versin actualizada de esa pgina.

Copiar o FTP archivos

La cach de resultados protege a los usuarios existentes

Вам также может понравиться