АЛЕКСАНДР МЕЖЕНКОВ
ColdFusion, или Возможно, лучшее решение
для создания динамических сайтов
Я намеренно вынес спорное утверждение в заголовок, главным образом с целью привлечь внимание читателя к этому, безусловно, выдающемуся продукту.
Эта статья – первая в серии, адресованной читателям, делающим первые шаги в программировании на ColdFusion, а также тем, кто все еще не определился с выбором средств, позволяющих создавать динамические сайты, управляемые данными.
Сколько раз вам приходилось слышать или самим задавать вопросы типа «как я могу сохранить информацию из HTML-форм на своих веб-страницах?» или «как мне сделать счетчик посещений?» или, наконец, «как мне защитить код своих веб-страниц от всеобщего обозрения?» В самом языке HTML нет никаких простых способов обработки данных HTML-форм. Браузер может лишь собрать информацию из форм и передать ее на веб-сервер. Обработка информации может быть возложена на CGI серверные расширения. Одно название чего стоит! А ведь их еще нужно написать и отладить своими руками, потратив немало времени на изучение различных стандартов и протоколов! Безусловно, это полезное, с точки зрения общего развития, занятие. Кто из нас не проходил на первых курсах института сопромат или теорию машин и механизмов, с тем, чтобы позже получить диплом программиста или специалиста по микропроцессорам?! Так ли уж это было необходимо?
Пара слов пояснений для тех, кто не совсем в курсе. Хотя бы для того, чтобы понять от чего вас может уберечь ColdFusion.
CGI, или Common Gateway Interface, – это стандартный шлюзовый интерфейс. Проще говоря – это некоторый стандарт или набор правил, определяющий порядок общения (взаимодействия, обмена данными, если угодно) между веб-сервером и прикладными программами, выполняющими ту или иную задачу. По существу, написанные вами CGI программы расширяют возможности веб-сервера, дополняя его нужной вам функциональностью. Отсюда, собственно и второе название CGI программ – серверные расширения. В принципе, CGI программа может быть написана на любом языке: C/C++, Perl, TCL, Visual Basic, Clipper, Fortran. Все зависит от того, какая у вас система и в какой среде программирования вы чувствуете себя более комфортно. Главное, чтобы ваша программа обеспечивала средства общения с веб-сервером, или, говоря иначе, удовлетворяла стандарту CGI. Естественно, если вы пишите на С, то перед запуском вам нужно скомпилировать программу. Если же вы используете один из языков-сценариев типа Perl, TCL или Unix shell, то все, что вам надо сделать перед запуском, это поместить файлы в каталог /cgi-bin, где по умолчанию их будет искать веб-сервер. В чем же недостаток CGI программ? Во-первых, не каждый специалист по электронной торговле или веб-дизайнер знает С или Visual Basic. Во-вторых, CGI программы слишком расточительны по отношению к системным ресурсам. При каждом обращении на вашу страницу и, соответственно, при каждом запуске CGI программы, система порождает новый поток, выделяя для него в оперативной памяти компьютера новое пространство. И если у вашего сайта много посетителей (а ведь именно для этого вы и создаете сайт), то легко может сложиться ситуация, когда в памяти сервера одновременно будет находиться много копий одной и той же CGI программы, что, в свою очередь, очень быстро исчерпает всю оперативную. Наконец, при создании CGI программ немало усилий будет затрачено на программирование рутинных задач ввода/вывода, вместо того чтобы направить в созидательное русло решения прикладных задач сайта.
Однако вернемся к теме статьи...
Вначале немного истории. В далеком (по меркам Сети) 1995 году два брата Дж.Дж. И Джереми Эллейр (J.J. И Jeremy Allaire) в США (ну а где же еще?) основали новую компанию «Allaire Corporation» для продвижения первого в мире сервера веб-приложений, который они назвали ColdFusion. Одной из причин создания ColdFusion как раз и была сложность создания сайтов, управляемых данными с помощью CGI программ. Перед одним из братьев – Джереми – стояла задача периодического обновления электронной версии издававшегося в печатном виде журнала. Занятие это было крайне утомительным, и Джереми обратился к своему брату-программисту с просьбой написать для него какое-нибудь приложение, которое избавило бы его от излишней траты времени и сил, и позволило бы ему сосредоточиться на основной задаче – собственно, обновлению электронной версии журнала. Когда проект был завершен, оба брата осознали, что они испекли горячий пирожок, который наверняка многим придется по вкусу. Недолго думая, братья основали новую компанию и, не мудрствуя лукаво, дали ей свою фамилию. Вложив в свое детище 18 тысяч долларов личных сбережений, шестью годами позже, в 2001 году, братья Эллейр продали его корпорации Macromedia более чем за 360 миллионов долларов. У вас еще осталось желание писать низкоуровневые процедуры ввода/вывода?
Что же представляет собой этот чудесный продукт, который принес своим создателям такую прибыль? Безусловно, вам знакомы термины hardware и software. Так вот, ColdFusion – это middleware. Термином middleware называют программное обеспечение, осуществляющее некоторые преобразования. В самом общем смысле сервер приложений ColdFusion является посредником, преобразующим ваш код, написанный на языке высокого уровня, называемом CFML (ColdFusion Markup Language) в теги HTML-документа, который может отобразить веб-браузер. Официальное название ColdFusion – сервер веб-приложений, но в зависимости от того, как вы решите его использовать, он может быть средством разработки веб-страниц, сервером баз данных или вашим счастливым билетом в благополучную жизнь. От версии к версии ColdFusion предлагал все больше возможностей. Версия 1.5 в 1996 году содержала всего лишь 35 тегов, обеспечивавших простейшие функции доступа к базам данных и поддержки электронной почты. Сегодня 5-я версия ColdFusion предоставляет более 80 тегов и 255 функций для решения практически любой задачи, которая может возникнуть в веб-программировании.
ColdFusion позволяет начать создание нового приложения на основе прочного фундамента развитого и полностью ориентированного на веб-среду языка программирования, обеспеченного серьезной поддержкой солидной компании (Macromedia), ее бизнес – партнерами и тысячами разработчиков, публикующих свои решения на специальном веб-ресурсе под названием Developers exchange. Этот ресурс настолько богат, что прежде, чем приступать к разработке решения какой–бы то ни было задачи, имеет смысл заглянуть сюда. Очень часто здесь можно найти совершенно бесплатно готовое решение.
Конечно, на рынке существует много других технологий, которые вы можете использовать для создания динамических веб-приложений. Диапазон их достаточно широк: от «Open Source-технологий», таких как Perl и PHP, до коммерческих Java Server Pages (JSP) или Microsoft Active Server Pages (ASP). При таком богатстве выбора, что нас может побудить использовать ColdFusion, который, кстати сказать, является коммерческим и весьма недешевым продуктом. Его цена больше $1,000. Но пусть вас это не смущает. Во-первых, его покупают, как правило, не частные лица, а фирмы. А во-вторых, практика показывает, что стоимость конечного продукта или, говоря другими словами, «стоимость владения» (Total Cost of Ownership), включающая, помимо цены инструментальных средств, стоимость разработки алгоритмов, кодирования и отладки, часто оказывается ниже, чем стоимость приложения, разработанного с помощью «бесплатных» средств. Деньги, вложенные в ColdFusion окупаются очень быстро.
Одной из главных причин, побуждающих, выбирать ColdFusion в качестве рабочего инструмента является легкость разработки. В отличие от большинства упоминавшихся технологий, вам не нужно быть гуру программирования для того, чтобы начать работу с ColdFusion и успешно завершить свой первый проект, который приятно удивит вашего шефа. Эта простота использования отнюдь не означает отсутствия мощи и функциональной гибкости. Просто благодаря усилиям программистов из Allaire, а теперь и Macromedia, многие сложные вещи происходят за сценой. ColdFusion упрощает решение большинства задач, таких как обработка данных форм или выполнение запросов баз данных. Однако когда у вас возникает нужда выполнения более сложных операций, ColdFusion предоставляет вам такие возможности. В компаниях, использующих ColdFusion, сложные задачи, сборку всего приложения и его отладку осуществляет, как правило, действительно классный высокооплачиваемый специалист, тогда как простые операции возлагаются на новичков, которые еще только учатся программированию.
Другим важным достоинством ColdFusion является наличие версий для всех популярных систем и веб-серверов. Неважно, на чем вы работаете: Windows 95/98/NT/2000, Solaris, Linux или HP-UX. ColdFuison совместим с большинством известных веб-серверов: Netscape Enterprise и iPlanet, Microsoft IIS и PWS, O’Reilly Website, Apache. Вы можете переносить ColdFusion приложения с платформы на платформу и легко переключаться между различными системами управления базами данных.
- <%
- Dim RandomFraction
- Randomize
- RandomFraction = Rnd
- Response.Write(RandomFraction)
- %>
Теперь то же самое на ColdFusion:
- <cfset RandomFraction = Rand()>
- <cfoutput>#RandomFraction#</cfoutput>
Что проще – решать вам.
При использовании ASP одной распространенной проблемой является необходимость закрывать базы данных после окончания работы с ними. Часто программисты забывают это делать. Конечно, если все делать без ошибок, эта проблема не возникает.
Но покажите мне программиста, который пишет без ошибок. Подобная забывчивость приводит к тому, что пространство памяти, занимаемое объектом базы данных, не освобождается. Страницы с таким кодом, обращение к которым происходит несколько раз в минуту, весьма интенсивно расходуют оперативную память, что очень скоро может привести к зависанию сервера. ColdFusion отслеживает подобные ситуации автоматически. В части функциональных возможностей (без привлечения продуктов сторонних фирм) ColdFusion также дает некоторую фору ASP. Вот лишь несколько из них: работа с почтой, встроенные HTTP, POP и FTP клиенты, встроенный поисковый механизм. Это ни в коем случае не агитация в пользу ColdFusion, просто объективная попытка познакомить с малоизвестным в России пакетом.
Технология ASP, в свою очередь, также имеет преимущества. Но это уже тема другой статьи.
Рассмотрим, как ColdFusion обрабатывает пользовательские запросы.
- Веб-браузер направляет запрос к веб-серверу с требованием открыть файл ColdFusion. Эти файлы имеют расширение .cfm.
- Получив запрос, веб-сервер перенаправляет его серверу приложений ColdFusion.
- Сервер приложений анализирует шаблон и выполняет действия, предписанные встретившимися тегами и функциями CFML, взаимодействуя, если надо, с другими службами и приложениями, например источниками данных или почтовым сервером. В результате динамически создается часть результирующей HTML страницы.
- Далее сервер приложений собирает воедино только что созданную динамическую часть страницы со статической частью исходного шаблона и возвращает результирующую страницу веб-серверу.
- Веб-сервер отправляет полученную от сервера ColdFusion страницу на пославшую запрос клиентскую машину.
В заключение приведем полезные ссылки, а также примеры сайтов, построенных с использованием ColdFusion.
- Официальная страница описания стандарта CGI: http://www.w3.org/CGI.
- Документация и примеры CGI программ: http://hoohoo.ncsa.uiuc.edu/cgi.
- Программные продукты Macromedia – нынешнего владельца ColdFusion. Отсюда же можно скачать пробные (trial) версии: http://www.macromedia.com/software.
- Developer"s exchange. Коллекция готовых решений на ColdFusion: http://devex.macromedia.com/developer/gallery/index.cfm.
- ColdFusion-форумы: http://webforums.macromedia.com/coldfusion.
- On-line документация по ColdFusion: http://www.macromedia.com/support/coldfusion/documentation.html.