private static string[] fileList;
public static string[] FileList
{
  get
  {
    if (fileList == null)
    {
      fileList = Directory.GetFiles(
        HttpContext.Current.Request.PhysicalApplicationPath);
    }
    return fileList;
  }
}

В этом коде используются классы доступа к файлам, которые описываются в главе 13, для извлечения списка файлов в Web-приложении. С коллекцией Application такой подход был бы невозможен.

Еще одно преимущество применения статических переменных экземпляра состоит в том, что использующий их код может обеспечивать безопасность в отношении типов. Ниже показан пример такого кода, в котором используется свойство FileList:

protected void Page_Load(object sender, EventArgs e)
{
  StringBuilder builder = new StringBuilder();
  foreach (string file in Global.FileList)
  {
    builder.Append(file + "<br />");
  }
  lblInfo.Text = builder.ToString();
)

Обратите внимание на то, что выполнять операцию приведения для получения доступа к этому специальному свойству не требуется.

Резюме

Управление состоянием — это искусство сохранения информации между запросами. Как правило, эта информация касается только одного пользователя (например, это может быть список элементов в корзине для покупок, имя пользователя или уровень доступа), но иногда она касается всего приложения, то есть является глобальной (например, это могут быть статистические данные об активности сайта). Поскольку ASP.NET использует несвязную архитектуру, данные состояния должны явно сохраняться и извлекаться при каждом запросе. Подход, выбранный для сохранения этих данных, может очень сильно влиять на производительность, масштабируемость и безопасность приложения. Чтобы улучшить выбранное решение, вы почти наверняка захотите добавить в используемую схему кэширование. О том, как это лучше сделать, речь пойдет в главе 11.

 

 

предыдущая    следующая страница   оглавление

294

Hosted by uCoz