Tutorial de ASP.NET
Vista Previa de ASP.NET 2.0

Compartir Código entre páginas

A pesar de que podemos colocar código dentro de cada página de nuestro site (utilizando el modelo inline o el modelo code-behind que hemos descrito en el capítulo previo), hay veces que lo que querremos será compartir código entre varias páginas de nuestro site. Sería ineficiente y difícil mantener dicho código copiándolo en cada página que lo necesite. Afortunadamente, ASP.NET proporciona varias formas cómodas para hacer que el código sea accesible a todas las páginas en una aplicación.

El Directorio "Code" Nuevo en 2.0

 Como las páginas se pueden compilar dinámicamente en tiempo de ejecución, pueden codificar ficheros de forma arbitraria (por ejemplo .cs o .vb). ASP.NET 2.0 introduce el directorio App_Code, que contiene ficheros sueltos con el código que compartiran las diferentes páginasl de nuestra aplicación. A diferencia de ASP.NET 1.x, dónde ser requería que estos ficheros fueran precompilados en el directorio Bin, cualquier fichero de código del directorio App_Code será compilado de forma dinámica en tiempo de ejecución y estará disponible para la aplicación. Es posible colocar ficheros de más de un lenguaje en el directorio App_Code, siempre que se particionen en subdirectorios (registrados en un lenguaje particular en el fichero Web.config). El siguiente ejemplo muestra el uso del directorio App_Code para contener una sola clase llamada en la página.

C# Ejemplo de la Carpeta App_Code



Por defecto, el directorio App_Code sólo puede contener ficheros del mismo lenguaje. Sin embargo, podemos particionar dicho directorio en subdirectorios (cada uno conteniendo ficheros de un lenguaje) para contenre múltiples lenguajes bajo el directorio App_Code. Para hacer esto, hay que registrar cada subdirectorio en el fichero Web.config de la aplicación.

<configuration>

<system.web>
<compilation>
<codeSubDirectories>
<add directoryName="Subdirectory"/>
</codeSubDirectories>
</compilation>
</system.web>
</configuration>


El siguiente ejemplo muestra un directorio App_Code particionado para contener ficheros tanto en VB como en C#.

C# Ejemplo de Carpeta App_Code Particionada


El Directorio Bin

Ya soportado en la versión 1 de ASP.NET, el directorio Bin es como el directorio Code, a excepción que puede contener ficheros precompilados. Esto es útil cuando necesitamos utilizar código que posiblemente haya sido escrito por otra persona, y no tenemos acceso al código fuente (un fichero VB o C#) pero si que tenemos una DLL compilada. Simplemente podemos colocar dicho fichero en el directorio Bin para que sea accesible desde nuestro site. Por defecto, todo lo que hay en el directorio Bin se carga automáticamente en la aplicación y se hace accesible a las páginas. Tendremos que importar espacios de nombres (namespaces) desde los ficheros del directorio Bin utilizando la directiva @Import al principio de la página.


 <@ Import Namespace="MyCustomNamespace" >


La Cache de "Montaje" (assembly) Global

El Framework 2.0 de .NET incluye algunos "ensamblajes" (assemblies) que representan las diferentes partes del Framework. Estos ensamblajes se almacenan en una cache global de ensamblajes, que es un repositorio versionado de ensamblajes puestas a disposición de todas las aplicaciones de la máquina (no sólo de una aplicación específica, como era el caso de los directorios Bin o App_Code). Varios ensamblajes del Framework se ponen a disposición de las aplicaciones ASP.NET de forma automática. Podemos registrar ensamblajes adicionales en el fichero Web.config de nuestra aplicación.

<configuration>
<compilation>
<assemblies>
<add assembly="System.Data, Version=1.0.2411.0,
Culture=neutral,
PublicKeyToken=b77a5c561934e089"/>
</assemblies>
</compilation>
</configuration>

Observar que seguimos necesitando una directiva @Import para que los espacios de nombres de estos ensamblajes estén disponibles para páginas individuales