lunes, 6 de enero de 2014

Carpetas de código compartido en proyectos web ASP.NET

Si el proyecto de sitio web incluye código que desea compartir entre páginas, guárdelo en una de las dos carpetas especiales que hay bajo la raíz de la aplicación web: el código compilado (archivos .dll) en la carpeta Bin y el código fuente en la carpeta App_Code. Cuando se crean estas carpetas y se almacenan determinados tipos de archivos en ellas, ASP.NET los trata de manera especial. (Para obtener información sobre cómo funcionan estas carpetas en los proyectos de aplicación web, vea App_Code folder doesn't work with Web Application Projects en el blog de Vishal Joshi).
Puede almacenar los ensamblados compilados (archivos .dll) en la carpeta Bin y el resto del código de cualquier parte de la aplicación web (como en las páginas de código) hará referencia a ella automáticamente. Un ejemplo típico es el código compilado de una clase personalizada. Puede copiar el ensamblado compilado en la carpeta Bin de la aplicación Web y, a continuación, la clase estará disponible para todas las páginas.
Los ensamblados de la carpeta Bin no necesitan registrarse. La presencia de un archivo .dll en la carpeta Bin es suficiente para que ASP.NET lo reconozca. Si cambia el archivo .dll y escribe una nueva versión del mismo en la carpeta Bin, ASP.NET detectará la actualización y utilizará la nueva versión para las nuevas solicitudes de página a partir de ese momento.

Seguridad de la carpeta Bin

La colocación de los ensamblados compilados en la carpeta Bin pueden comprometer la seguridad. Si escribió el código y lo compiló, sabrá cuál es su función. Sin embargo, deberá tratar el código compilado de la carpeta Bin como cualquier otro código ejecutable. Tenga cuidado con el código compilado hasta que lo haya probado y esté seguro de que entiende su funcionamiento.
Tenga en cuenta los siguientes aspectos de seguridad al colocar el código compilado en la carpeta Bin:
  • El ámbito de los ensamblados de la carpeta Bin es la aplicación actual. Por consiguiente, no pueden tener acceso a recursos ni invocar código que se encuentre fuera de la aplicación Web actual.
  • En tiempo de ejecución, los niveles de acceso de un ensamblado se establecen de acuerdo con el nivel de confianza especificado en el equipo local. Para obtener más información, vea Niveles de confianza y archivos de directivas de ASP.NET.
  • Cuando ejecuta un proyecto en Visual Studio, el código de la carpeta Bin se ejecuta en un contexto distinto del contexto en tiempo de ejecución. El servidor de desarrollo de Visual Studio se ejecuta con la identidad con la que se haya iniciado sesión. Si inició sesión como administrador, el código se ejecutará con permisos de administrador. Cuando implementa el sitio, sin embargo, el código no se suele ejecutar con permisos de administrador. Por consiguiente, pruebe el proyecto con un servidor IIS antes de implementarlo, para asegurarse de que no se producen errores de seguridad en producción.

En un proyecto de sitio web, se puede almacenar el código fuente en la carpeta App_Code y se compilará automáticamente en tiempo de ejecución. Al ensamblado resultante puede tener acceso cualquier otro código de la aplicación Web. Por tanto, la carpeta App_Code funciona como la carpeta Bin, salvo que se puede almacenar código fuente en lugar de código compilado. La carpeta App_Code y su estado especial en una aplicación Web ASP.NET permiten crear clases personalizadas y otros archivos que sólo contienen código fuente, y utilizarlos en la aplicación Web sin tener que compilarlos independientemente.
Esta carpeta puede contener archivos de código fuente escritos como archivos de clase tradicionales (es decir, archivos con extensión .vb, .cs, etc.). Sin embargo, también puede incluir archivos que no sean explícitamente de un lenguaje de programación específico. Entre los ejemplos cabe destacar los archivos .wsdl (lenguaje de descripción de servicios Web) y los archivos de esquema XML (.xsd). ASP.NET puede compilar estos archivos en ensamblados.
La carpeta App_Code puede contener todos los archivos y subcarpetas que necesite. Puede organizar el código fuente de la forma que crea más conveniente, ya que ASP.NET lo compilará en un solo ensamblado al que podrá tener acceso el código de cualquier parte de la aplicación Web.

No hay comentarios:

Publicar un comentario