работа со статическими переменными в .net - PullRequest
2 голосов
/ 05 марта 2011

Каково точное использование статических переменных в общем программировании в .net и для asp.net ...

Недавно я пошел на собеседование, где интервьюер задал мне 2 вопроса, в которых я не был уверен в том же..

  1. что такое использование объекта сеанса, я сказал, что сеансы - это объект на стороне сервера, они используются, когда вы хотите хранить пользовательские данные на стороне сервера, затем он спросил, что еслия хочу использовать статические переменные для того же самого, я был мамой, может кто-нибудь сказать мне, как будет вести себя asp.net, если я сохраню информацию о пользователе в статических переменных.

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

Ответы [ 4 ]

1 голос
/ 05 марта 2011
  1. Область действия статических переменных привязана к домену приложения, поэтому значение статической переменной будет ЖЕ для всех пользователей.Вы не можете использовать статическую переменную для сохранения пользовательских данных.Статические переменные хороши для хранения специфичной для приложения информации, но, поскольку ASP.NET является многопоточной средой, вам необходимо управлять блокировкой / разблокировкой.

  2. Как проверить, что cookie отключены, описано здесь

1 голос
/ 05 марта 2011

1.) Сеанс - это пользовательский словарь (у каждого пользователя есть свой собственный), а статические / общие переменные имеют широкое применение (если приложение работает / все сеансы не отменены).

Обычно вы используете Session, если хотите хранить данные, принадлежащие одному пользователю, и статические переменные, если вы хотите поделиться ими со всеми пользователями.

Поэтому Session менее масштабируем, чем статические переменные, потому чтооно увеличивается с увеличением количества пользователей.Одним из недостатков статических переменных (или ASP.Net Cache ) является то, что вам нужно избегать конфликтов, когда разные пользователи обращаются к ним / изменяют их параллельно самостоятельно.Производительность - одно из преимуществ статических переменных / кеша.

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

2.) Определите, принимает ли браузер файлы cookie

Клиент может отключить файлы cookie.Один из способов проверить, отключены ли cookie-файлы, - записать cookie-файл в ответ и в следующем запросе проверить, существует ли cookie-файл.Если cookie не существует, вы должны предположить, что cookie отключены.

Здесь - дополнительная информация о файлах cookie.

0 голосов
/ 29 июля 2013

Статические переменные предназначены для экземпляров приложений. Приложения в большинстве случаев запускаются на клиентских ПК. И статические переменные используются в них все время.

Веб-приложения имеют только один экземпляр, работающий на сервере. Таким образом, каждый клиент, подключенный к этому серверу, будет использовать одни и те же данные.

Вместо этого вы используете переменные сеанса для создания переменных и объектов, которые относятся только к клиенту.

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

Что лучше: статическая переменная V.S. Asp.NET Application Session? , кажется, согласен с моим мнением.

  1. , если cookie отключены, сохраняет ли asp.net cookie как cookie сеанса или нет? , поскольку аналогичная проблема говорит о необходимости использования файлов cookie или использования ViewState как альтернативы. Вы должны проверить, существует ли cookie, увидев, что находится в

    Request.Cookies

и, если пусто, сделайте любую альтернативу, какую выберете.

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