Статьи

ColdFusion 8: верьте обману

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

Независимо от того, использовали ли вы ColdFusion ранее, вы хотите вернуться в сложное положение или ищете вескую причину для обновления, ColdFusion 8 определенно заслуживает вашего внимания. Действительно, ColdFusion 8 представляет собой основной выпуск с большим количеством новых функций, чем я мог бы описать в одной статье. Короче говоря, сейчас очень подходящее время для разработчиков ColdFusion, и в этой статье мы рассмотрим мои любимые причины почему.

Улучшения скорости

Что ты говоришь? Скорость не особенность? Что ж, когда улучшение столь же драматично, как и в ColdFusion 8, его, безусловно, можно считать функцией. Коллектив ColdFusion проанализировал более 100 реальных приложений клиентов, чтобы найти и устранить узкие места. Это привело к общему улучшению, которое делает сервер в 4,25 раза быстрее, чем ColdFusion 7.0.2. На самом деле, некоторые конкретные области и теги работают в 39 раз быстрее, чем в предыдущих версиях. В частности, если вы занимаетесь объектно-ориентированной разработкой с использованием компонентов ColdFusion (CFC), вы заметите заметное улучшение.

Самое приятное, что вам не нужно ничего делать, чтобы воспользоваться преимуществами этой функции, кроме установки ColdFusion 8. Не изменяя ни одной строки кода, ваше существующее приложение ColdFusion увидит огромный прирост производительности. Итак, вот план …

    1. Продайте боссу план, который позволит значительно повысить производительность сайта и составить бюджет на четыре недели работы.

      1. Купите и установите ColdFusion 8.

      1. Проведите четыре недели, улучшая свой рейтинг в World of Warcraft .

      Если вы еще не разрабатываете с ColdFusion, важно помнить, что ColdFusion давно переросли обвинения в том, что они медленные или не масштабируемые. Как отметил разработчик The Economist, который недавно обновился до ColdFusion 8, «… все это смехотворно стабильно».

      Монитор сервера

      Иногда при диагностике проблем с производительностью приложений в предыдущих версиях ColdFusion чувствовалось, что вы врач, который пытается диагностировать травму внутренних органов без доступа к рентгеновскому аппарату. Вы знали, что внутри обычно что-то не так, но у вас не было возможности увидеть (и, следовательно, рассмотреть) проблему. Что ж, хорошая новость заключается в том, что ColdFusion 8 (версии для предприятий и разработчиков) поставляется с рентгеновским аппаратом… э-э… монитором сервера, который позволяет вам взглянуть на внутренние компоненты вашего сервера ColdFusion, на котором вы запускаете приложение.

      ColdFusion Server Monitor — это приложение Flex, которое позволяет просматривать различные статистические данные, относящиеся к общему состоянию вашего сервера. Он предоставляет вам подробную информацию о конкретных приложениях, сессиях, запросах и запросах. Например, вы можете получать отчеты о медленных запросах и детализировать эти запросы, чтобы увидеть переменное использование памяти для каждого запроса, а также производительность любых включений, пользовательских тегов и компонентов в запросе. Это может очень помочь, когда вы пытаетесь найти узкие места в медленном запросе. По моему мнению, одна эта функция будет иметь огромное влияние на то, как разработчики будут создавать и отлаживать приложения ColdFusion в будущем.

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

      Ajax Integration

      С выпуском версии 7.0.2 ColdFusion добавил интеграцию Flex, что сделало его предпочтительным языком для создания многофункциональных интернет-приложений (RIA) с использованием Adobe Flex. Это было здорово для тех из нас, кто любит Flex (как и я!). Однако для создания RIA с помощью Ajax потребовалась интеграция сторонних библиотек с открытым исходным кодом, если вы хотите работать с типами данных ColdFusion и JavaScript. Это также означало, что вы должны были включить и изучить синтаксис одной или нескольких внешних библиотек JavaScript, таких как Ext , Spry или библиотека пользовательского интерфейса Yahoo (YUI) . С ColdFusion 8 это уже не так.

      ColdFusion 8 добавил длинный список новых тегов и функций, которые были специально разработаны, чтобы позволить вам быстро создавать многофункциональные интернет-приложения на основе Ajax, используя удобный и знакомый тег и синтаксис функций. На самом деле библиотеки, о которых я упоминал выше, встроены в ColdFusion 8, что позволяет, например, создавать Ajax-сетку, используя Ext, просто используя тег cfgrid. Вы даже можете привязать эту сетку к набору данных, который возвращается методом CFC, просто вставив ссылку на функцию в атрибут связывания тега. ColdFusion 8 действительно делает невероятно простым и интуитивно понятным добавление блеска в ваше приложение за счет интеграции богатых элементов пользовательского интерфейса.

      На мой взгляд, еще лучше то, что интеграция Ajax в ColdFusion 8 идет гораздо глубже, чем просто добавление в ваше приложение модных элементов пользовательского интерфейса. ColdFusion добавил теги и функции, которые позволяют легко перемещать данные назад и вперед между JavaScript. Например, с cfajaxproxy тега cfajaxproxy вы можете создавать функции, которые находятся в CFC, и вызывать их прямо с вашей страницы, используя JavaScript. Эта функция даже автоматически преобразует типы данных (например, объект запроса ColdFusion) в тип, который можно использовать в вашем блоке JavaScript, например массив или в виде пакетов JSON. Созданный прокси также содержит встроенные методы для установки обработчика обратного вызова для асинхронных вызовов методов. Все это делает работу с Ajax и ColdFusion совершенно безупречной.

      В следующем примере кода показано, как тег cfajaxproxy можно использовать для создания класса на основе компонента, который можно использовать в JavaScript:

       <cfajaxproxy cfc="path.to.cfc" jsclassname="MyClass" />   <script>    function myFunction(id) {        var myClass = new MyClass();        myClass.setCallbackHandler(populateWindow);        myClass.getSomeData(id);    }    function populateWindow {        // this function can be used, for example, to populate the returned data into a javascript window generated with the cfwindow tag    } </script> 

      дебаггер

      Давным-давно ColdFusion имел собственную среду разработки под названием ColdFusion Studio, в которую входил пошаговый отладчик. Когда этот инструмент вышел из этого мира, программисты ColdFusion стали экспертами в попытках отладки с помощью метода cfdump / cfabort , который в основном влечет за собой cfabort значения переменной на экран и прерывание запроса. Несмотря на то, что это было эффективно, у него есть некоторые существенные недостатки, основной из которых было то, что процесс отладки всей страницы таким способом был чрезвычайно медленным и утомительным. Тем не менее, многие программисты ColdFusion, такие как я, привыкли к тяжелой работе и забыли, чего нам не хватало … Ну, мы уже без серьезного отладчика!

      Отладчик ColdFusion 8 был встроен в Eclipse IDE — инструмент, который знаком всем, кто использует Flex Builder или CFEclipse. Отладчик позволяет устанавливать точки останова и отлаживать запросы, выполняемые на локальном или удаленном экземпляре ColdFusion. Когда точка останова обнаружена, вы можете проверить значение любой и всех переменных в любой области видимости, содержащейся в запросе. Кроме того, вы можете выполнить запрос и просмотреть определенные выражения, чтобы найти несоответствия в настройках значений. Я считаю, что это в сочетании с Server Monitor не только значительно облегчает процесс отладки, но и позволяет нам создавать гораздо более эффективные и безошибочные приложения. Не то чтобы я когда-либо писал ошибки! ( Гм! — Редактор. )

      Многопоточность

      Я сравниваю добавление многопоточных возможностей в ColdFusion 8 к укушению радиоактивным пауком. Это дает разработчику большую власть, но мы все знаем, что приходит с большой властью … да, обычно слава и деньги, но в этом случае я имею в виду большую ответственность. Дополнительные потоки используются для повышения производительности запроса, который содержит какой-то длительный процесс, который передается потоку. Как правило, потоки могут быть:

      • созданный и затем воссоединившийся с текущим потоком запросов, когда они закончили
      • создано, а затем просто забыто о том, когда они закончили
      • создан и работает бесконечно, будучи альтернативно усыпленным или приведенным в действие по мере необходимости

      ColdFusion позволяет легко cfthread новые темы с тегом cfthread . Любой код, содержащийся в теге cfthread выполняется асинхронно, причем текущий запрос существует в независимом потоке выполнения кода. Остальная часть вашего запроса может продолжать обрабатываться без необходимости ждать завершения кода потока, если это не указано в инструкции. Любой опытный программист сталкивался с множеством ситуаций, когда запросу на страницу не нужно ждать, пока какой-либо процесс запустится, прежде чем продолжить, поэтому очевидно, что это очень полезная функция (несмотря на склонность к неправильному использованию).

      Чтобы дать вам пример того, как это будет работать, в следующем примере показан код, который перебирает массив URL-адресов RSS-каналов и использует новый тег cffeed для анализа XML-RSS. Он обрабатывает каждый канал в отдельном потоке, чтобы все они могли работать одновременно, сокращая общее время, необходимое для обработки страницы. Как только потоки завершены, используется другой тег cfthread чтобы присоединить их к текущему потоку, где мы можем вывести значения. Те из вас, кто уже знаком с ColdFusion, могут также заметить, что я использую создание нового неявного массива для построения массива каналов:

       <cfset feeds = ["http://www.remotesynthesis.com/blog/rss.cfm?mode=full","http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml"] />   <cfset threads = "" />   <cfloop from="1" to="#arrayLen(feeds)#" index="i">      <cfset threads = listAppend(threads,"thread"&i) />      <cfthread action="run" name="thread#i#" feed="#feeds[i]#">          <cffeed source="#feed#" properties="thread.myProps" query="thread.myQuery" />      </cfthread>   </cfloop>   <cfthread action="join" name="#threads#" timeout="6000" />   <cfloop list="#threads#" index="thread">      <cfif structKeyExists(cfthread[thread],"myProps")>          <cfoutput>#cfthread[thread].myProps.title#<br/></cfoutput>      </cfif>   </cfloop> 
      Даже больше…

      Как я уже говорил ранее, в ColdFusion 8 так много новых функций, что я не могу описать их все подробно здесь. Тем не менее, вот несколько ключевых функций, которые могут заинтересовать вас в этом новом выпуске:

      • Более глубокая интеграция PDF: Как и следовало ожидать от продукта Adobe, ColdFusion 8 содержит самую сложную интеграцию PDF любого сервера приложений. Это выходит за рамки простого создания PDF-файлов на лету и позволяет разработчикам создавать PDF-формы и принимать отправленные PDF-формы, объединять PDF-файлы, добавлять и удалять страницы, создавать эскизы страниц и многое другое.
      • Интеграция с RSS / Atom. Как кратко показано выше, новый тег cffeed облегчает чтение и создание каналов RSS или Atom.
      • Работа с изображениями: ColdFusion 8 наконец-то включает в себя длинный список тегов и функций для создания и управления изображениями.
      • Zip / Jar File Manipulation: Создание, изменение и извлечение файлов .zip и .jar.
      • Презентации по запросу: Создавайте презентации на лету, которые работают так же, как Adobe Presenter.
      • Улучшения языка: Версия 8 представляет ряд синтаксических и общих улучшений языка, которые включают в себя операторы в стиле JavaScript, неявное создание массивов и структур, а также передачу атрибутов в теги в виде коллекций. Эти улучшения могут сделать ваш код более быстрым для написания, более легким для чтения и намного менее многословным.
      • Интеграция .Net: изначально работает со сборками .Net, которые существуют локально или на удаленном сервере.
      • Интеграция с сервером Exchange. Программно управляйте электронной почтой, элементами календаря, контактами и задачами на сервере Microsoft Exchange с помощью тегов ColdFusion.
      Резюме

      Как видите, в ColdFusion 8 включено так много новых функций, что ваши пять избранных могут полностью отличаться от моих. Если вы еще не пробовали ColdFusion 8, что вас останавливает? Версия для разработчиков является бесплатной, в конце концов. Попробуй!

      Дальнейшее чтение

      Производительность
      Краткое описание ColdFusion 8 (PDF, 172K)

      Монитор сервера
      Серия мониторинга серверов ColdFusion 8:

      Ajax Integration
      Обзор возможностей Ajax в ColdFusion 8

      дебаггер
      Использование пошагового отладчика ColdFusion 8 для Eclipse