Когда использовать блокировку в области применения - PullRequest
1 голос
/ 19 ноября 2008

Мне интересно, нужно ли мне блокировать некоторый код, созданный в области приложения. Если я создаю объект, скажем userDAO.cfc в области приложения, чтобы он был доступен для всех страниц. Затем, если у меня есть метод в этом объекте, скажем, getUserInfo (userID), который будет вызываться в разных частях приложений, нужно ли блокировать этот метод?

1 Ответ

4 голосов
/ 19 ноября 2008

Краткий ответ: вероятно, нет.

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

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

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

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

Наконец, если вы не меняете все свои переменные ( используете varScoper Майка Ширберла! ), то вы будете изменять состояние объекта. Вы никогда не должны подходить к этому моменту, но это случай блокировки.

Большие исключения для всего этого случая, если вы используете CF 5 или ниже, и в этом случае любой доступ к общей области ДОЛЖЕН быть заблокирован, а если вы используете CF 6 или 6.1, в этом случае Application.cfc не существует.

...