ColdFusion 11: изменение метаданных Application this Scope из разных функций в расширенном Application.cfc

У меня есть общее представление о рабочем процессе приложения ColdFusion. Но некоторые моменты остаются для меня неясными. Общий рабочий процесс выглядит следующим образом...

  1. Настройки общедоступного приложения установлены (т.е. this.name, this.mappings ext.)
  2. onApplicationStart
  3. onSessionStart
  4. onRequestStart

У меня есть подкаталог с Application.cfc, который расширяет корневой Application.cfc, существующий в корневом каталоге.

После прочтения множества блогов, описывающих этот шаблон проектирования....

В последней ссылке (некоторые ответы предлагают некоторое базовое понимание, но ни один из них на самом деле не затрагивает использование области this с расширенным Application.cfc. Один из следующих ответов сбивает меня с толку.. (это может быть неправильно, так как нет голосов)

Все, что попадает в эту область внутри файла Application.cfc, становится переменной приложения и создается только ОДИН РАЗ за жизненный цикл приложения. После запуска приложения другого пользователя для этого в Application.cfc нет.

Я сбросил область #application#, и она отличается от #this#

getApplicationMetaData(), кажется, сбрасывает одни и те же данные <cfdump var=#this#>, поэтому я предполагаю, что эти метаданные - это первоначально установленные глобальные переменные конфигурации.

1) Если Application.cfc расширяет корневой Application.cfc с помощью прокси, является ли область действияthis (используется для установки имени приложения) общей для расширенных компонентов? (Если я установлю this.name = "root" в корневом компоненте и this.name = "user" в производном, будет ли холодный синтез воспринимать это как два разных приложения или это единственный эффект, заключающийся в простом изменении значения имени приложения?

2) Можно ли каким-либо образом изменить метаданные приложения в области this в любой из функций Applicaiton.cfc после псевдоконструктора (onApplicationStart ,onSessionStart ,onRequestStart)?

Я пытаюсь установить сопоставления для конкретного приложения в корневом компоненте с помощью onApplicationStart(), чтобы сопоставления устанавливались только один раз.


person Hedge7707    schedule 08.01.2018    source источник
comment
Пытаетесь установить сопоставления в корне cfc или использовать их?   -  person Dan Bracuk    schedule 09.01.2018
comment
Я экспериментировал с попыткой установить их в корне onApplicationStart()... Я знаю, что могу установить их в этой области вне функций, но я считаю, что сопоставления повторно инициализируются при каждом запросе (не думайте, что слишком много накладные расходы), но было бы здорово, если бы я мог просто установить их один раз ... (сопоставления ранее были установлены на странице администрирования CF, но я хотел попробовать сопоставления для конкретного приложения)   -  person Hedge7707    schedule 09.01.2018
comment
Я подозреваю, что вы правы насчет области this, но... настройте простой тест и создайте дамп области this в обоих файлах Application.cfc для проверки. Помимо фактора крутости, есть ли какие-либо причины не устанавливать их в родительском элементе, как предложил Дэн?   -  person SOS    schedule 09.01.2018
comment
@Ageax Таким образом, моя причина заключалась в том, чтобы уменьшить накладные расходы, связанные с инициализацией сопоставлений, которые, насколько я понимаю, повторно инициализируются каждый раз при попадании в Application.cfc (они не являются динамическими во время выполнения приложения, поэтому я не понимаю, почему они не могут устанавливается один раз при первоначальном запуске приложения). Я мог бы просто настроить сопоставления в консоли администратора ColdFusion, но это добавляет еще один шаг для тех, кто позже развернет приложение.   -  person Hedge7707    schedule 09.01.2018
comment
@ Hedge7707 вам может быть интересно прочитать Сопоставление с CFC в ColdFusion и Действительно ли преждевременная оптимизация является корнем всех зол?   -  person Twillen    schedule 09.01.2018
comment
Что вы в итоге сделали с этим?   -  person James A Mohler    schedule 11.01.2018
comment
ATM Я установил сопоставления и конфигурацию ColdFusion для этой области в корневом Application.cfc вне функций компонента (но, насколько я могу судить, я могу изменить эти настройки из расширенного Application.cfc вне каких-либо функций компонента.   -  person Hedge7707    schedule 11.01.2018
comment
почему их нельзя установить один раз при первоначальном запуске приложения @ Hedge7707 - я не думаю, что Adobe реализовала это таким образом, поэтому ... если это не вызывает проблем или проблем с производительностью, я бы не беспокоился об этом.   -  person SOS    schedule 12.01.2018