Оба подхода дают один и тот же результат. Например, если вы пишете код для компонента базы данных, то сможете обращаться к нему таким же способом независимо от того, имеется ли скомпилированная сборка в каталоге Bin или файл исходного кода в каталоге App_Code. Точно так же, если вы пользуетесь возможностями предварительной компиляции ASP.NET (они рассматриваются в главе 18), оба варианта будут работать одинаково. (В противном случае вы увидите, что на выполнение первого запроса к вашему приложению будет затрачено больше времени, чем при использовании подхода с App_Code, так как в его случае включается дополнительный шаг компиляции.)
Хотя оба подхода имеют, по сути, одну и ту же основу, управлять ими с помощью кода нужно по-разному. Это особенно касается тех случаев, когда вам нужно повторно использовать компонент в нескольких приложениях (или даже в различных типах приложений .NET). Если вы применяете подход, связанный с App_Code, во многих Web-приложениях, будет вообще просто сделать небольшие видоизменения, получив множество различных версий одного и того же совместно используемого класса. Кроме того, второй подход является более практичным для построения крупномасштабных приложений командой разработчиков, когда под рукой нужно иметь несколько разных частей Web-приложения, подготовленных и скомпилированных по отдельности. В силу этих причин подход с использованием библиотеки классов всегда является предпочтительным для профессиональной работы.
Совет. Подкаталог App_Code должен использоваться только для тех классов, которые тесно связаны с вашим Web-приложением. Повторно используемые функциональные модули (например, библиотеки бизнес-логики, компоненты базы данных, подпрограммы проверки достоверности, утилиты шифрования и так далее) всегда должны встраиваться в виде отдельных библиотек классов. Сокращенная версия Visual Web Developer 2005 Express Edition не поддерживает проекты библиотек классов.
В следующем примере демонстрируется простой компонент, который считывает случайную, цитату из произведений о Шерлоке Холмсе из ХМL-файла. (Этот XML-файл доступен в Internet, и его можно использовать в соответствие с общедоступной лицензией GNU (GNU Public License)). Компонент состоит из двух классов — класса Quotation, который представляет одну цитату, и класса SherlockQuotes, который позволяет считывать случайную цитату. Оба эти класса находятся в пространстве имен SherlockLib.
В первом листинге показан класс SherlockQuotes, который во время создания его экземпляра загружает XML-файл, содержащий цитаты, представленные в QEL (Quotation Exchange Language — язык обмена цитатами). Класс SherlockQuotes предлагает общедоступный метод цитат GetRandom(), который может использоваться в коде Web-страницы.
using System;
using System.Xml;
namespace SherlockLib
{
public class SherlockQuotes
предыдущая следующая страница оглавление
235