2008-11-19 2 views
1

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

+0

См. Также: [Когда следует использовать блокировку области действия (приложение, сервер и т. Д.) Против именованной блокировки в ColdFusion?] (Http://stackoverflow.com/q/296721/21960) – ale 2016-08-02 12:51:15

ответ

4

Короткий ответ: возможно, нет.

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

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

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

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

И, наконец, если вы не var все переменные (use Mike Schierberl's varScoper!), то вы будете изменять состояние объекта. Вы никогда не должны доходить до этого момента, но это случай блокировки.

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

+0

Ну, ColdFusion 5 исключает возможность использования CFC, но в остальном вы правы. – ale 2008-11-19 17:56:35

Смежные вопросы