Многие разработчики ошибаются, полагая, что это является особенностью CLR, которая позволяет ASP.NET плавно переходить к новому домену приложения. На самом же деле, CLR всегда блокирует файлы сборки во время их выполнения. Чтобы обойти это ограничение, ASP.NET не использует файлы ASP.NET в виртуальном каталоге. Вместо этого во время компиляции она использует теневое копирование для создания копии ваших файлов в каталоге c:\[Каталог_Windows]\Microsoft.NET\[Версия]\Temporary ASP.NET Files. Рабочий процесс ASP.NET загружает сборки из этого каталога, что означает, что эти сборки будут заблокированы.
Кроме того, ASP.NET может обнаруживать внесение изменений в исходных файлах. Это делается очень просто — на основе возможности операционной системы Windows отслеживать каталоги и файлы и посылать незамедлительные уведомления об изменениях. ASP.NET поддерживает активный список всех сборок, загруженных в домен приложения определенного приложения, и использует код мониторинга для наблюдения за изменениями и выполнения соответствующих действий.
На заметку! ASP.NET может использовать файлы, хранящиеся в GAC — доступном в пределах всего компьютера репозитории сборок, который включает такие элементы, как сборки для всей библиотеки классов .NET Framework. Вы можете также помещать в GAC свои собственные сборки, хотя обычно проще развертывать и управлять Web-приложениями.
Каждое Web-приложение должно иметь хорошо спланированную структуру каталога. Независимо от того, какую структуру каталога вы спроектируете, ASP.NET определяет несколько каталогов со специальным назначением.
В версиях серии ASP.NET 1.x просто представлялся один специальный каталог — каталог Bin. В версии ASP.NET 2.0 представлено больше каталогов, как показано в табл. 5.1.
Таблица 5.1. Специальные каталоги ASP.NET
Каталог | Описание |
---|---|
Bin |
Содержит все предварительно скомпилированные сборки .NET
(обычно DLL-библиотеки), используемые Web-приложением
ASP.NET. Эти сборки могут включать предварительно
скомпилированные классы Web-страниц и Web-служб, а также другие сборки,
на которые ссылаются данные классы. |
App_Code | Содержит файлы исходного кода, динамически
скомпилированные для использования в вашем приложении. Эти файлы кода
обычно представляют собой отдельные компоненты, например
компонент входа (регистрации) или библиотеку доступа к данным.
Скомпилированный код никогда не появляется в каталоге Bin, так
как ASP.NET помещает его во временные каталоги, используемые
для динамической компиляции. |
App_GlobalResources | Этот каталог хранит глобальные ресурсы, доступные каждой
странице в Web-приложении. В главе 17 будет подробно рассказано о
ресурсах и локализации. |
продолжение см. на след. странице.
предыдущая следующая страница оглавление
206