Хранение классов в Application State (ASP.NET) - PullRequest
0 голосов
/ 28 июля 2011

Допустим, я хочу сохранить экземпляр следующего в Application State, чтобы к нему обращались очень часто.

public class Example {
  public string A;
  public string B;
  public bool C;
  public int D;
  // ...
}

Я не могу решить, хранить ли весь класс вместе как Application["Example"] или хранить его свойства по отдельности как Application["ExampleA"] и т. Д.

Я думаю, что ((Example)Application["Example"]).A может потребоваться скопировать весь класс в память только для доступа к одному свойству - это правильно? Или я ошибаюсь?

Ответы [ 3 ]

1 голос
/ 28 июля 2011

Я бы использовал статическую глобальную переменную, немного лучшую производительность, безопасный тип и сделал бы ваш код более легким для чтения. Для получения дополнительной информации см ...

Состояние приложения ASP.NET и статический объект

0 голосов
/ 28 июля 2011

Состояние приложения в любом случае сохраняется в памяти, поэтому я не вижу значительных накладных расходов при извлечении класса.Я вполне уверен, хотя мог и ошибаться, что классы не будут сериализованы / десериализованы с каждым запросом.

0 голосов
/ 28 июля 2011

вы правы, но ....

вам не нужно копировать весь объект, если вам просто нужно значение одного из его свойств. Концептуально, если мы говорим об объекте-значении (вам не нужен идентификатор или конкретный объект), вы можете хранить только свойство. Если вам нужно знать, каково значение свойства для одного конкретного объекта (с изображением пароля пользователя), вам следует сохранить весь объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...