В чем разница между приложением («что-то») и сеансом («что-то») - PullRequest
1 голос
/ 06 сентября 2010

При отладке классического приложения ASP (и в то же время изучая классический ASP) я столкнулся со следующим

Application("Something") = "some value"

и в других местах кода это значение используется следующим образом:

someObj.Property = Session("Something")

Как объект Application относится к Session?

1 Ответ

4 голосов
/ 06 сентября 2010

Переменная Session связана с пользователем.Переменная Application является общей для всех пользователей.

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

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

Примечание: могут возникнуть проблемы с параллелизмом при использовании Application (потому что вы можете легко сделать так, чтобы несколько пользователей ударили что-то, что читает или пишет в него), поэтому я предлагаю вам использовать Application.Lock перед тем, как написать, и Application.Unlock после того, как вы закончите.Это действительно относится только к письму.

Примечание 2: Я не уверен, автоматически ли оно разблокируется после выполнения запроса (это было бы разумно), но я бы не стал доверять,Убедитесь, что любая часть приложения, которая может быть взорвана, не находится в пределах блокировки, иначе вы можете столкнуться с блокировкой других пользователей.

Примечание 3: В том же духе, непоместить в блокировку вещи, которые долго обрабатываются, только бит, в который вы записываете данные.Если вы делаете что-то, что занимает 10 секунд, находясь в замке, вы блокируете всех остальных.

...