ColdFusion: Существуют ли варианты использования, в которых Application.cfm предпочтительнее Application.cfc?

Я занимаюсь обновлением большого устаревшего приложения ColdFusion, в котором интенсивно используются файлы шаблонов Application.cfm вместо более новых файлов Application.cfc.

Кажется, что Application.cfc предлагает более чистое и эффективное решение для всего, что может сделать файл Application.cfm.

  • Application.cfm запускает каждую строку последовательно для каждого запроса, поэтому он будет воссоздавать переменные приложения при каждом последующем запросе новой страницы. (Может привести к снижению производительности, если загружено много переменных приложения) The Application.cfc позволяет некоторым действительно глобальным переменным избежать повторного создания с помощью метода onApplicationStart() и onRequestStart().

Кто-нибудь сталкивался с какими-либо вариантами использования/примерами (помимо очевидного времени, необходимого для переноса), где Application.cfm страницы предпочтительнее Application.cfc?


person Hedge7707    schedule 22.11.2017    source источник
comment
Вопрос в том, оправдывает ли вознаграждение труд.   -  person Dan Bracuk    schedule 23.11.2017


Ответы (1)


ИМО, это не "слишком широкая" тема. Это не мнение, я бы классифицировал его как передовую практику.

Существует огромное количество причин использовать cfc вместо cfm. Я был именно в такой ситуации.

Вот список общих функций, доступных в Application.cfc (я уверен, вы знаете) :

  • onApplicationStart()
  • onSessionStart()
  • onRequestStart()
  • по запросу()
  • onRequestEnd()
  • в конце сеанса ()
  • в конце приложения ()
  • при ошибке()

Не вдаваясь в подробности каждого из них, возможность сортировать код по контекстным корзинам, подобным этим, позволит вам лучше управлять различными областями действия переменных. Без этих контекстуальных триггеров вы просто отвечаете на процедурные аспекты Application.cfm.

Хотя оба они запускаются при каждом запросе страницы, запускаются только определенные функции в cfc. cfm у вас есть код, работающий все время, проверяющий условия, когда он должен или не должен запускаться.

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

person Adrian J. Moreno    schedule 22.11.2017
comment
Я согласен со всем в этом списке, но мне хочется добавить еще один. Поскольку это cfc, он может использовать расширения. Существуют богатые фреймворки, такие как FW/1 и Taffy, которые используют это. Также я думаю, что если вы хотите использовать ORM, вы должны использовать application.cfc. - person James A Mohler; 23.11.2017
comment
Спасибо за ответы! Итак, я определенно вижу преимущество .CFC над .CFM, но есть ли веские причины, по которым кто-то когда-либо будет использовать CFM вместо CFC в современных приложениях, применяющих лучшие практики? - person Hedge7707; 23.11.2017
comment
ЕСЛИ бы мне приходилось заботиться о 15-летнем компьютере, на котором работала CF 5, И он приносил компании миллионы долларов в день, И мне сказали никогда не трогать, И мне разрешили жаловаться на настройку каждый день, И мой ребенок болел раком, И моей жене ампутировали руки и ноги, а кот хотел тунца, ТОГДА я бы оставил его в покое. Единственная причина использовать application.cfm — вы просто не хотите с этим возиться. - person James A Mohler; 24.11.2017