ColdFusion и Active Server Pages

Сравнение двух технологий

Алексей Федоров

Active Server Pages

    Идеология

    Средства разработки

    Связь с данными

    Интеграция с технологиями

    Корпоративные стандарты

    Средства администрирования

    Где взять ASP

    Системные требования

    Использование cookie

    Серверные переменные

    Действия с формами

    Публикация данных

    Управление файлами на сервере

    Сервисы для приложений

    ASP 3.0

ColdFusion

    Идеология

    Средства разработки

    Связь с данными

    Интеграция с технологиями

    Корпоративные стандарты

    Средства администрирования

    Системные требования

    Использование cookie

    Серверные переменные

    Действия с формами

    Публикация данных

    Управление файлами на сервере

    Сервисы для приложений

Заключение

 

Относительно недавно на смену статическим Web-страницам стали приходить динамические — то есть страницы, содержимое которых формируется в зависимости от действий пользователя. Соответственно, потребовался и новый класс приложений, способных формировать такие страницы. Эти приложения, получившие уже достаточно широкое распространение, получили название серверов Web-приложений. Существует довольно много способов реализации таких серверов. Это может быть самостоятельный продукт, объединяющий в себе функции как сервера Web-приложений, так и обычного Web (HTTP)-сервера. Также это может быть функциональное расширение существующего Web-сервера, основанное на использовании его программных интерфейсов, либо продукт, работающий совместно с Web-сервером другой фирмы. К последним двум типам относятся, соответственно, Active Server Pages (ASP) фирмы Microsoft — технология, расширяющая функциональность Web-сервера Microsoft Internet Information Server (IIS), и ColdFusion фирмы Allaire — самостоятельный продукт, работающий совместно с различными Web-серверами других фирм.

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

Active Server Pages

Active Server Pages — это технология фирмы Microsoft для создания Web-приложений на базе сервера Microsoft Internet Information Server (IIS), работающего под управлением Windows. IIS поставляется в составе Windows NT Option Pack (для Windows 95, Windows NT 4.0 Workstation и Windows NT 4.0 Server). Младший вариант IIS — Personal Web Server входит в состав Windows 98. Помимо IIS, встроенная поддержка ASP (правда, только версии 1.0) есть у сервера WebSite Professional фирмы O'Relly. Поддержка других серверов (Windows NT) и платформ (Unix) возможна при использовании продукта Chili!ASP 1.2 фирмы Chili!Soft. При этом ASP-приложения могут работать под управлением Lotus Domino Go 4.6 и 5.0, Netscape Enterprise 3.0 и 3.51 и Netscape FastTrack 3.0 на платформе Windows и Netscape Enterprise и 3.51 и Netscape FastTrack 3.01 на платформе Unix под управлением Sun Solaris 2.51 и 2.6.

В состав Windows 2000 (планируемый срок выхода — второе полугодие 1999 года) войдет компонент под названием Internet Information Services 5.0, который объединит в себе Internet Information Server 5.0, включая ASP 3.0 и Active Data Objects (ADO) 2.1 и такие дополнительные сервисы, как Certificate Server и Index Server. Ниже мы кратко рассмотрим основные изменения в ASP 3.0.

В начало

В начало

Идеология

ASP является серверным расширением языка HTML, построенным на основе использования одного дополнительного элемента (<% %>), скриптовых языков типа JScript и VBScript (теоретически возможно использование таких языков, как PerlScript и Tcl) и объектной модели. Например:

<body>
   <b>Текущая дата</b> : <i>
   <% =Now( )%>
   </i>
</body>

Обратите внимание на то, что серверные элементы отделены от клиентских, хотя возможно и такое «смешение»:

<body>
   <% 
     Response.Write("<b>Текущая дата</b> : <i>" &   Now() &"</i>")
    %>
</body>

Принцип работы ASP показан на диаграмме. Клиентский браузер обращается к ресурсу, расположенному на сервере, посылая соответствующий HTTP-запрос. Если запрос был адресован ASP-странице, IIS передает ее на обработку ISAPI-фильтру ASP.DLL, который выполняет включенную в состав страницы ASP-программу и возвращает серверу HTML-страницу. Эта страница пересылается запросившему ее клиенту.

Технология ASP подразумевает использование скриптовых языков (по умолчанию используется язык VBScript) и объектной модели. В ASP 2.0 объектная модель состоит из шести объектов: ScriptingContext, Request, Response, Application, Session и Server. Каждый из этих объектов отвечает за определенные функции Web-приложения. Основными объектами являются Request и Response, которые представляют собой программную реализацию запроса клиента к серверу (объект Request) и ответа сервера (объект Response).

Помимо этого, существуют объекты для работы с файловой системой (FileSystemObject, Drive, Folder, File) и соответствующие коллекции (Drives, Folders, Files), объект для работы с текстовыми файлами — TextStream и объект, реализующий специальный тип коллекций — Dictionary. Также в распоряжении разработчиков находится несколько COM-компонентов, которые можно использовать в ASP-приложениях: Ad Rotator, Browser Capabilities, Contentent Linking и т.п., включая Collaborative Data Objects (CDO), доступные только под Windows NT.

В распоряжении разработчика находятся все функции и объекты, реализованные в VBScript и JScript, причем эти два языка при необходимости можно смешивать внутри ASP-страницы.

Для расширения функциональности ASP можно использовать десятки готовых коммерческих, условно-бесплатных и бесплатных компонентов, а также создавать собственные — для этого подходит любое средство разработки, поддерживающее создание COM-объектов: Visual Basic, Visual C++, Visual J++, Borland Delphi и т.п.

Отметим, что компоненты, изначально разработанные для ASP, могут с успехом использоваться в ColdFusion.

В начало

В начало

Средства разработки

Основным средством разработки ASP-приложений является Microsoft Visual InterDev — продукт, который распространяется либо отдельно, либо в составе Microsoft Visual Studio. Обзор этого средства публикуется в этом номере, поэтому здесь мы остановимся только на тех характеристиках Microsoft Visual InterDev, которые интересны для данной статьи.

Visual InterDev предоставляет в распоряжение разработчика:

  • Визуальные средства разработки приложений — WYSIWYG-редактор, редактор исходного кода с выделением синтаксиса цветом, средства сборки, отладки и внедрения приложений

  • Интегрированные средства для работы с базами данных

  • Программную модель, расширяющую базовую функциональность ASP-приложений

  • Средства для коллективной разработки приложений

  • Средства для разработки корпоративных приложений — интеграция с серверами баз данных, возможность моделирования приложений, интеграция с сервисами Microsoft BackOffice 4.5

Дополнительную информацию можно получить на Web-узле фирмы Microsoft или из Microsoft Visual InterDev Web Solutions Kit.

Помимо Microsoft Visual InterDev для разработки ASP-приложений можно использовать Drumbeat 2000 фирмы Elemental Software, PowerSite фирмы Sybase и Mediatruck фирмы r.e.d.d. System.

Из HTML-редакторов, поддерживающих ASP, можно отметить Microsoft FrontPage, NetObjects Fusion, Allaire HomeSite, Macromedia Dreamweaver и ряд других.

В начало

В начало

Связь с данными

Для связи с данными разработчики используют объектную модель Active Data Objects, доступную из скриптовых языков. ADO представляет собой высокоуровневый программный интерфейс к OLE DB и ODBC и является частью архитектуры Universal Data Access (см. КомпьютерПресс № 1'99).

При создании приложений, использующих транзакции, ASP-приложения интегрируются с Microsoft Transaction Server (MTS) через объект ObjectContext и его методы SetComplete и SetAbort.

В начало

В начало

Интеграция с технологиями

ASP-приложениям, работающим под управлением IIS, доступны все сервисы операционной системы, реализованные как COM-интерфейсы. Так как платформа Windows предоставляет большой набор собственных сервисов, а за счет подключения COM-компонентов можно реализовать недостающие, ASP обладает практически неограниченным доступом к технологиям.

Отметим, что Microsoft работает над расширенной поддержкой XML на сервере (полная поддержка текущей версии XML реализована в Internet Explorer 5.0).

Следует сказать, что из ASP-приложений доступны любые Automation-серверы, например, продукты семейства Microsoft Office.

Существует большое число ASP-компонентов, например, позволяющих работать с реестром, файловой системой, отсылать и принимать электронную почту и т.п.

В начало

В начало

Корпоративные стандарты

Microsoft предлагает использовать технологии COM/DCOM для создания трехзвенных приложений, оперируя, при необходимости, сервером транзакций MTS. Продвижение собственной компонентной технологии, которая в скором времени предстанет перед разработчиками в виде технологии COM+ (COM/DCOM + MTS), не подразумевает поддержки таких объектных стандартов, как CORBA или Enterprise JavaBeans. Впрочем, при желании и эти сервисы могут быть интегрированы в ASP-приложения.

В начало

В начало

Средства администрирования

Под управлением Windows 95/98 для Personal Web Server предоставляются минимальные средства администрирования (Personal Web Manager), отвечающие назначению данного Web-сервера.

При использовании Internet Information Server средства администрирования интегрированы в Microsoft Management Console (MMC) и предоставляют администраторам больше возможностей для настройки параметров.

Отметим, что Visual InterDev поддерживает концепцию ASP-приложений и позволяет настраивать ряд характеристик самих приложений.

В начало

В начало

Где взять ASP

Этот вопрос наиболее часто задают пользователи, желающие познакомиться с этой технологией фирмы Microsoft. Поэтому ответ на него мы вынесли в отдельный раздел.

Как было отмечено выше, ASP 3.0 будет интегрированной частью Windows 2000. Пока этот продукт еще не вышел, у вас есть следующие варианты:

  • Windows NT 4.0 Option Pack — содержит ASP 2.0 для Personal Web Server (Windows 95 и Windows NT 4 Workstation) и для Internet Information Server (Windows NT 4 Server). Option Pack доступен подписчикам MSDN (см. диск 2 для BackOffice Test Platform или диск 13 для Development Platform), подписчикам Microsoft TechNet, а также может быть загружен с Web-узла Microsoft по адресу: http://www.microsoft.com/windows/downloads/contents/Update/NT4OptPk/default.asp

  • Windows 98 — в каталоге add-ons/pws находится Personal Web Server с поддержкой ASP 2.0

  • Visual Studio 6 — в состав этого продукта включены Personal Web Server, IIS и, соответственно, ASP.

После того как мы познакомились с технологией ASP, ее архитектурой и предоставляемыми возможностями, давайте рассмотрим некоторые операции, часто встречающиеся при создании Web-приложений. Более подробно о технологии ASP можно узнать из статьи «Технология Active Server Pages 2.0», опубликованной в КомпьютерПресс №2-98.

В начало

В начало

Системные требования

Чтобы использовать ASP под Windows NT, необходимо установить IIS, для работы с которым на платформе Intel необходимо не менее 16 Мбайт ОЗУ (рекомендуется 32-64 Мбайт) и не менее 50 Мбайт дискового пространства (рекомендуется 200 Мбайт). На платформе Alpha требуется не менее 48 Мбайт оперативной памяти. Personal Web Server для Windows 98 не предъявляет дополнительных требований к конфигурации компьютера.

В начало

В начало

Использование cookie

Как известно, механизм cookie (впервые появившийся в браузере Netscape 2.0) используется для хранения информации на клиентском компьютере и извлечения этой информации. Объекты Response и Request имеют коллекцию Cookies. Коллекция Request.Cookies содержит cookies, имеющиеся на клиентском компьютере, коллекция Response.Cookies позволяет либо изменить значения существующих cookies, либо задать новые.

Например, для задания значения cookie можно использовать следующий код:

<%
     Response.Cookies("TimeVisited") = Now
  %>

а для получения значения cookie — такой код:

<%
   Response.Write Request.Cookies("TimeVisited")
 %>

Отметим, что Cookies, как и любая коллекция, имеет два свойства — Count, позволяющее узнать число элементов коллекции, и HasKeys, с помощью которого можно определить, есть ли в коллекции cookie c несколькими значениями.

В начало

В начало

Серверные переменные

Для доступа к серверным переменным (они также называются переменными среды) в ASP используется коллекция ServerVariables объекта Request. Например, чтобы узнать название и версию программного обеспечения, работающего на Web-сервере, мы можем написать такой код:

<h3>Тип и версия Web-сервера: </3>
   <%
      Response.Write
                Request.ServerVariables("SERVER_SOFTWARE")
   %>

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

  <%
     Response.Write 
               Request.ServerVariables("HTTP_USER_AGENT")
  %>

Отметим, что если клиентский браузер посылает дополнительную информацию, она также доступна через коллекцию Request.ServerVariables.

В начало

В начало

Действия с формами

Формы широко используются для передачи информации с клиентского браузера на сервер. Существуют два способа передачи информации, задаваемые атрибутом METHOD элемента FORM, - POST и GET. При использовании метода GET вся информация передается как часть URL, и некоторые версии браузеров накладывают ограничение в 255 символов на объем такой информации. При этом передаваемая информация видна всем. При использовании метода POST информация передается как часть HTTP-запроса, и на ее объем никаких ограничений не накладывается.

Для получения информации, переданной методом GET, в ASP используется коллекция QueryString объекта Request. В случае применения метода POST информация становится доступной через коллекцию Form того же объекта Request.

Давайте создадим небольшую форму и посмотрим, как принять информацию из нее в ASP-программе. Вот код нашей формы:

<form action="demoform.asp" method="get">
<h2>Введите информацию:</h2>
<pre>
  Ф.И.О. <input type="text" name="name"><br>
  e-mail <input type="text" name="mail"><br><INPUT 
type=submit value=Готово> <INPUT type=reset value=Отмена>
</pre> 
</form>

Как видно из приведенного кода, сначала мы используем метод GET, указав в качестве обработчика данных программу, расположенную в файле DEMOFORM.ASP. Наша программа будет всего лишь выводить переданные данные на экран. Вот ее код:

<%
  Response.Write "Ф.И.О. " & Request.QueryString("Name") 
                   "<br>"
  Response.Write "E-MAIL " & Request.Form("Mail")
 %>

Мы обращаемся к элементам коллекции QueryString объекта Request по именам, заданным атрибутами NAME соответствующих элементов формы.

Теперь изменим способ передачи информации — будем использовать метод POST:

<form action="demoform.asp" method="post">

Так как механизм передачи информации будет уже другим — данные вместо URL будут составлять часть HTTP-запроса, — мы должны использовать коллекцию Form:

 <%
    Response.Write "Ф.И.О. " & Request.Form("Name") & 
	         "<br>"
    Response.Write "E-MAIL " & Request.Form("Mail")
  %>

Отметим, что в новых приложениях рекомендуется использовать метод POST (и, соответственно, коллекцию Request.Form), но для того, чтобы передавать данные без применения форм, например через элемент A, вам придется воспользоваться коллекцией QueryString.

В начало

В начало

Публикация данных

Возможность публикации динамических данных — одна из характеристик, отличающих так называемые Web-приложения от набора статичных HTML-страниц. Для публикации данных в ASP мы должны использовать объектную модель ADO, обращаясь к ней из скриптовых программ.

Отметим, что средства разработки — Visual InterDev и Drumbeat 2000 позволяют автоматизировать публикацию данных, но создаваемый ими код получается слишком объемным (он занимает несколько десятков, а то и сотен строк), чтобы приводить его здесь. Поэтому мы будем использовать «профессиональное» средство NotePad. Описание визуальных средств для работы с данными, входящих в состав Visual InterDev, можно найти в обзоре, публикуемом в этом номере.

Для начала, возьмем базу, в которой перечислены некоторые статьи, опубликованные в «КомпьютерПресс», их авторы, а также продукты, описанные в статьях, и фирмы, производящие эти продукты. Будем выводить на экран браузера содержимое этой базы в виде таблицы, в которой каждая строка отображает автора, название статьи, идентификатор продукта и идентификатор фирмы.

Вот текст ASP-программы, которая выполняет необходимые нам действия:

<%
   Response.Write "<TABLE BORDER>"
   Set conn = Server.CreateObject("ADODB.Connection")
   conn.Open "CPARTS"
   Set oRs = Server.CreateObject("ADODB.RecordSet")
   Set oCmd = Server.CreateObject("ADODB.Command")
   SQL = "SELECT Article, Author, ProdID, Company FROM
   CPARTICLES ORDER BY  Author, Article"
   oCmd.CommandText = SQL
   oCmd.CommandType = 1
   oCmd.ActiveConnection = "CPARTS"
   Set oRs = oCmd.Execute
   oRs.MoveFirst
   Response.Write "<TR>"
   Do While Not oRs.EOF
         Response.Write "<TD>" & oRs.Fields("ARTICLE") & "</
                 TD>"
         Response.Write "<TD>" & oRs.Fields("AUTHOR") & "</
                 TD>"
         Response.Write "<TD>" & oRs.Fields("PRODID") & "</
                 TD>"
         Response.Write "<TD>" & oRs.Fields("COMPANY") & "</
                 TD>"
         Response.Write "</TR>"
         oRs.MoveNext
   Loop
%>

Весь код написан «вручную», за исключением SQL-запроса, который я построил в Visual InterDev. Еще раз отмечу, что если бы я использовал какое-либо средство для разработки, то получил бы более сложный код. Кроме того, эту программу можно сохранить в виде шаблона и использовать для дальнейших разработок.

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

Запросы будут выглядеть так:

<h1 align="center">Ресурсы Web</h1>
<ul>
   <li><a href="reslist.asp?sub=Java">Java</a>
   <li><a href="reslist.asp?sub=JScript">JScript</a>
   <li><a href="reslist.asp?sub=HTTP">HTTP</a>
   <li><a href="reslist.asp?sub=ASP">ASP</a>
   <li><a href="reslist.asp?sub=DEV">Средства разработки</a>
</ul>

Обратите внимание на то, что мы используем одну ASP-программу — RESLIST.ASP, передавая ей различные значения (в нашем примере — это идентификаторы подкатегории).

Вернемся к предыдущему коду и внесем в него ряд изменений — они показаны выделенным шрифтом:

<%
    subcat = Request.QueryString("sub")
    Response.Write "<TABLE BORDER>"
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "DEVRES"
    Set oRs = Server.CreateObject("ADODB.RecordSet")
    Set oCmd = Server.CreateObject("ADODB.Command")
    SQL = "SELECT * FROM WEBDEV WHERE SUBCAT = ' " & subcat 
            & " ' "
    oCmd.CommandText = SQL
    oCmd.CommandType = 1
    oCmd.ActiveConnection = "DEVRES"
    Set oRs = oCmd.Execute
    oRs.MoveFirst
    Response.Write "<TR>"
    Do While Not oRs.EOF
           Response.Write "<TD>" & oRs.Fields("SiteName") & "</
                   TD>"
           Response.Write "<TD>" & oRs.Fields("SiteDesc") & "</
                  TD>"
           Response.Write "<TD><A HREF=' " &
                  oRs.Fields("SiteUrl") &_ 
                " '>Web</TD>"
      Response.Write "</TR>"
      oRs.MoveNext
    Loop
 %>

Вот результат работы нашей программы:

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

В начало

В начало

Управление файлами на сервере

Для управления файлами на сервере — получения списка каталогов, удаления и перемещения файлов, их переименования, а также для того, чтобы прочитать содержимое текстового файла, изменить его или дополнить, в ASP существует несколько дополнительных объектов: FileSystemObject, Drive, Folder, File и TextStream, а также их коллекции — Drives, Folders и Files.

Чтобы прочитать содержимое текстового файла, например, AUTOEXEC.BAT и вывести его на экран, мы должны написать следующий код:

<%
   Set File = CreateObject("Scripting.FileSystemObject")
   Set Auto = File.OpenTextFile("c:\autoexec.bat", 1)
   Do While Auto.AtEndOfStream <> True
      Response.Write Auto.ReadLine & "<br>"
   Loop
   Auto.Close
  %>

Список файлов в каталоге можно получить с помощью следующего кода:

<%
   Set FSO = CreateObject("Scripting.FileSystemObject")
   Set Folder = FSO.GetFolder("d:\pws\wwwroot\asp\")
   Set Files = Folder.Files
   For Each F in Files
      Response.Write "<tr>"
      Response.Write "<td>" & F.Name & "<td>"
      Response.Write "<td>" & F.Size & "<td>" 
      Response.Write "<td>" & F.Type & "<td>" 
      Response.Write "<td>" & F.DateLastModified & "<td>" 
      Response.Write "<td>" & F.Attributes & "<td>" 
      Response.Write "<tr>"
   Next
%>
В начало

В начало

Сервисы для приложений

Active Server Pages — это событийно-ориентированная технология. В ней существуют понятия приложения (объект Application) и сессии (объект Session). Каждый из этих двух объектов имеет два события — OnStart и OnEnd. Первое возникает при начальном запуске приложения или новой сессии, второе — при завершении сесии или приложения.

Для создания обработчиков этих событий используется специальный файл — GLOBAL.ASA, в котором можно предусмотреть какие-либо действия, необходимые при запуске и завершении новой сессии или всего ASP-приложения.

«Время жизни» сессии поддерживается с помощью свойства SessionID объекта Session — значение этого свойства хранится на клиентском компьютере в виде cookie.

Имеется возможность задания глобальных для всего приложения объектов — они хранятся в коллекции StaticObjects объекта Application — и объектов, локальных для текущей сессии, которые доступны через коллекцию StaticObjects объекта Session.

Еще раз отметим, что в ASP все приложение разделено на функциональность соответствующих объектов: все, что может посылать клиент, поддерживается объектом Request; все, что возвращает сервер, — объектом Response; действия на уровне сессии поддерживаются объектом Session; на уровне приложения — объектом Application; а ряд утилитарных методов реализован в объекте Server.

В начало

В начало

ASP 3.0

Как мы отметили выше, ASP 3.0 станет интегрированной частью Internet Information Services 5.0 — сервисов, входящих в Windows 2000. Обсуждение этих сервисов заслуживает отдельной статьи. Здесь же мы кратко остановимся на основных новинках в ASP 3.0, о которых известно на уровне второй бета-версии Windows 2000.

  • Некоторые изменения коснулись объектной модели.

    • У объекта Server появилось три новых метода, два из которых — Transfer и Execute — позволяют выполнять перенаправление страниц на сервере, минуя клиента.

    • Появился новый объект ASPError. Этот объект, возвращаемый методом Server.GetLastError, позволяет получить различную информацию об ошибках с кодами 4xx и 5xx и сформировать собственное сообщение об ошибке.

    • Объект ObjectContext (используемый для поддержки транзакций) стал основной базовой объектной модели — это означает, что все метод и свойства объектов ASP теперь будут доступны через ObjectContext, а не через ScriptingContext, как это было раньше..

  • По умолчанию теперь включена буферизация (Response.Buffer = True), что сделало отклики сервера более быстрыми.

  • Есть еще несколько изменений. Улучшена логика работы метода IsClientConnected, который теперь вызывается автоматически перед посылкой информации клиенту.

  • Стал более «разумным» и компонент Browser Capabilities, который теперь «умеет» анализировать cookie-инфомацию и добавлять ее в список своих свойств.

  • Переработан интерпретатор ASP, который теперь «понимает», является ли та или иная страница действительно ASP-программой или просто HTML-файлом с расширением .ASP.

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

  • И еще одна новинка — возможность кодирования клиентских скриптовых программ. Для этого клиентским браузером должен быть Microsoft Internet Explorer 5.0.

  • В состав IIS 5 войдет и новая версия ADO - ADO 2.1

  • Помимо этого, ASP 3.0 будет базироваться на новых версиях скриптовых языков — VBScript и JScript 5.0, в которых также есть ряд дополнений и изменений

По мере появления дополнительной информации по Windows 2000 и Internet Information Services, мы будем знакомить вас с другими новинками в этой системе.

После того как мы рассмотрели различные аспекты использования технологии Active Server Pages, давайте обратимся к другой технологии — ColdFusion фирмы Allaire.

В начало

В начало

ColdFusion

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

Принцип работы ColdFusion показан на диаграмме. Клиентский браузер обращается к ресурсу, расположенному на сервере, посылая соответствующий HTTP-запрос. Если запрос был адресован CF-странице (файлу с расширением CFM), сервер отдает его на обработку серверу ColdFusion, который выполняет включенную в состав страницы ColdFuison-программу и возвращает серверу HTML-страницу. Эта страница пересылается запросившему ее клиенту.

Сервер Web-приложений состоит из следующих компонентов: ColdFusion Server — собственно сервер приложений, обрабатывающий клиентские запросы, ColdFusion Studio — интегрированная среда разработки приложений для ColdFusion, базирующаяся на HTML-редакторе Allaire HomeSite (см. «HTML-редакторы: высшая лига» в этом номере «КомпьютерПресс»); ColdFusion Administrator — средство для управления приложениями, сервером приложений и администрирования кластеров (входит в состав ColdFusion Server) и ColdFusion Extensions (CFX) — открытая архитектура на базе языка XML, позволяющая использовать новые серверные компоненты и такие технологии, как COM, CORBA, C/C++, VBScript, JavaScript или CFML. Этот компонент входит в состав ColdFusion Server и ColdFusion Studio. Также в состав ColdFusion Studio входит однопользовательская версия ColdFusion Server, с помощью которой можно локально тестировать созадваемые на ColdFusion приложения.

В начало

В начало

Идеология

В ColdFusion используется серверный скриптовый язык на основе специльных HTML-элементов. Этот язык называется ColdFusion Markup Language (CFML). Элементы языка легко интегрируются с элементами HTML и XML. Например:

<body>
<CFOUTPUT>
   <b>Текущая дата</b> : <i>#DateFormat("#Now( )#")#</i>
</CFOUTPUT>
</body>

Язык CFML поддерживает более 70 специализированных элементов, 200 функций и может работать более чем с 400 компонентами, разработанными сторонними фирмами: в языке реализованы средства для управления COM- и CORBA-объектами. Язык CFML обеспечивает следующие возможности: инкапсуляцию процессов (единую возможность доступа ко всем серверам, интегрированным с ColdFusion, включая серверы баз данных, серверы электронной почты, серверы каталогов, Web- и файловые серверы), расширенный синтаксис для комплексной обработки данных, структурную обработку исключительных ситуаций, манипуляции с переменными, богатую библиотеку функций для работы с текстовыми строками, датой/временем, списками, запросами, математическими выражениями, поддержку регулярных выражений, работу с массивами и структурами, динамическое управление логикой работы и возможность повторного использования созданного кода.

В начало

В начало

Средства разработки

Для разработки приложений ColdFusion используется ColdFusion Studio — редактор на основе Allaire HomeSite, который позволяет работать с элементами HTML, CFML и XML и предоставляет в распоряжение разработчика среду, в которой, помимо самого редактора, есть отладчик, средства визуальной работы с базами данных, средства проверки создаваемого кода, инспектор элементов, утилита для построения сложных CFML-выражений и различные «мастера», автоматизирующие многие рутинные операции.

Среда разработчика поддерживает возможность работы с локальными и удаленными (на сервере ColdFusion) файлами и позволяет создавать не только отдельные страницы, но и целые проекты, называемые приложениями ColdFusion.

Помимо ColdFusion Studio для создания приложений можно использовать и продукты сторонних фирм — Macromedia Dreamweaver, NetObjects Fusion и NetObjects ScriptBuilder.

В начало

В начало

Связь с данными

Для создания Web-приложений, работающих с базами данных, в ColdFusion существует поддержка практически всех основных технологий: ODBC — для доступа к реляционным базам данных, включая Microsoft Access и SQL Server, собственные драйверы для доступа к Oracle и Sybase, OLE DB для различных источников данных, включая Microsoft Exchange, возможность динамического формирования SQL-запросов, поддержка хранимых процедур, транзакций, встроенные средства проверки вводимых данных, средства для генерации отчетов.

Некоторые операции с данными, возможные в ColdFusion, мы рассмотрим ниже.

В начало

В начало

Интеграция с технологиями

ColdFusion обладает тесной интеграцией с различными Internet-протоколами и технологиями, что делает более простым их использование в Web-приложениях. Среди этих технологий:

  • Полнотекстовая поисковая система на базе Verify SEARCH '97

  • Полная поддержка языка XML для обмена данными между серверами и другими приложениями с использованием Web Distributed Data Exchange (WDDX) и XML

  • Полная поддержка работы с серверами электронной почты (SMTP и POP)

  • Возможность использования сервисов Internet (FTP, HTTP)

  • Интеграция сервисов каталогов (LDAP), включая Netscape Directory Server, Microsoft Exchange Server, сервисы Windows NT, сервисы Novell NDS, сервисы Banyan Vines и другие

  • Возможность работы с файловыми серверами

  • Возможность работы с FTP-серверами

В начало

В начало

Корпоративные стандарты

В ColdFusion поддерживаются различные корпоративные стандарты, включая объектные стандарты:

  • CORBA-компоненты. Приложения могут быть дополнены CORBA-компонентами, что позволит им работать в гетерогенных средах

  • COM-компоненты. При использовании COM-компонентов в приложениях можно управлять их свойствами, вызывать их методы и контролировать их выполнение через Microsoft Transaction Server (MTS)

  • ColdFusion Extensions (CFX). Можно создавать собственные компоненты и элементы языка для расширения функциональности ColdFusion

  • Visual Tool Components (VTX). Новые визуальные компоненты могут расширять функциональность ColdFusion Studio

В начало

В начало

Средства администрирования

В состав ColdFusion входят средства удаленного администрирования и управления кластерами. Эти средства работают из любого Web-браузера.

Здесь также есть Cluster Explorer для управления серверами в кластере, отключения серверов, получения уведомлений о серверных событиях. Вся серверная статистика доступна либо через Performance Monitor (Windows NT), либо через специальную Unix-утилиту.

В начало

В начало

Системные требования

Платформа Windows

  • Windows NT Server 4.0

  • Intel Pentium

  • 70 Мбайт свободного пространства на диске

  • 64/128 Мбайт оперативной памяти

  • Web-сервер

  • Помимо Microsoft Internet Information Server (ISAPI), поддерживаются следующие интерфейсы:

    • Netscape Server API (NSAPI)

    • WebSite Server API (WSAPI)

    • Apache API 1.3.2 или выше

    • Common Gateway Interface (CGI)

Платформа Solaris

  • SPARC Solaris 2.6/2.5.1

  • 128 Мбайт оперативной памяти

  • 120 Мбайт свободного пространства на диске

  • Web-сервер

  • Помимо Netscape Enterprise Server, поддерживаются следующие интерфейсы:

    • Apache API 1.3.2 or higher

    • Common Gateway Interface (CGI)

После того как мы познакомились с ColdFusion, его архитектурой и предоставляемыми возможностями, давайте рассмотрим некоторые операции, часто встречающиеся при создании Web-приложений.

В начало

В начало

Использование cookie

Если для чтения и записи cookie в ASP используются коллекции Cookies объектов Request и Response, то в ColdFusion для этих целей служит элемент CFCOOKIE. Его атрибуты позволяют задавать различные характеристики cookie: название, значение, срок действия, защищенность, маршрут и домен.

Для задания значения cookie можно использовать следующий код:

<CFCOOKIE NAME="TimeVisited"
  VALUE="#Now()#"
  >

а для получения значения cookie — такой код:

<CFOUTPUT>
    Time Visited : #DateFormat("#COOKIE.TimeVisited#")#
</CFOUTPUT>

Отметим, что здесь мы используем встроенные функции ColdFusion — Now() для получения текущей даты и времени и DateFormat() для форматирования даты и времени.

В начало

В начало

Серверные переменные

Если для доступа к серверным переменным при использовании ASP предлагается воспользоваться коллекцией Request.ServerVariables, то в ColdFusion для этих целей используется набор переменных CGI.xxx, где xxx — одно из допустимых для серверных переменных значений. Например:

<cfoutput>
   #CGI.SERVER_SOFTWARE#
</cfoutput>

возвращает название и версию программного обеспечения, работающего на Web-сервере, а код

<cfoutput>
   #CGI.USER_AGENT#
</cfoutput>

позволяет узнать тип и версию клиентского браузера.

В начало

В начало

Действия с формами

Для получения информации, переданной с клиентского браузера на сервер, мы будем использовать ту же форму, что и в примере с ASP, изменив только атрибут ACTION элемента FORM:

<FORM ACTION="demoform.cfm" METHOD="POST">

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

<cfoutput>
  Ф.И.О. #FORM.Name# <BR>
  E-MAIL #FORM.Mail#
</cfoutput>

Как видно из приведенного примера, использование переменной FORM, обеспечивает нам доступ к информации, переданной в форме, точно так же, как и в ASP при использовании коллекции Request.Form.

В начало

В начало

Публикация данных

Работу над публикацией данных мы начинаем с того, что задаем RDS-сервер — на платформе Windows ColdFusion работает через сервисы данных Microsoft. В нашем примере это будет сервер demo, расположенный на компьютере localhost. После того как RDS-сервер описан, мы получаем список всех доступных ODBC-источников данных. Этот список отображается в панели, служащей, помимо окна редактирования, основным источником информации при разработке страницы или Web-узла. В этой панели мы можем просматривать таблицы, их содержимое, но самое главное заключается в том, что эта панель обеспечивает нам доступ к редактору запросов, с помощью которого мы формируем SQL-запросы, проверяем результаты их выполнения.

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

Моей задачей было вывести на экран браузера содержимое этой базы в виде таблицы, в которой каждая строка отображала бы автора, название статьи, идентификатор продукта и идентификатор фирмы. Используя Query Builder, я сформировал SQL-запрос простым переносом необходимых мне полей.

Затем я проверил, как выполняется данный запрос и сохранил его в файле.

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

Далее я добавил HTML-элементы, описывающие таблицу и элементы ColdFusion для вывода результатов запроса. В результате получился следующий HTML-документ (выделенным шрифтом показаны элементы, специфичные для ColdFusion):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
                   Transitional//EN">
<html>
<head>
   <title>Статьи в "КомпьютерПресс" </title>
</head>
<body>
<table>
<CFQUERY NAME="articles" DATASOURCE="CPARTS">
  SELECT Article, Author, ProdID, Company
  FROM CPArticles 
  ORDER BY Author, Article
</CFQUERY>
<CFOUTPUT query = articles>
  <tr><td>#Author#</td><td>#Article#</td>
  <td>#ProdID#</td><td>#Company#</tr>
</CFOUTPUT>
</table>
</body>
</html>

Я сохранил его на сервере как ARTICLES.CFM и открыл в браузере. Результат показан на следующей иллюстрации.

Итак, мы освоили азы публикации данных. Можно идти дальше. Давайте посмотрим, как динамически реагировать на запросы, посылаемые в URL. Для этого возьмем другую базу — в ней собраны ссылки на ресурсы по различным вопросам Web-программирования. Каждая запись в этой базе состоит из названия, описания, собственно ссылки и идентификатора подкатегории. Мы сделаем так, чтобы на одной странице отображались различные подкатегории в виде ссылок, каждая из которых представляет собой запрос к базе данных.

Сначала сформируем сам запрос с помощью Query Builder. Мы выбираем необходимые нам поля — в данном примере это будут название, описание и ссылка. Затем мы задаем критерий, который в нашем примере будет равенством значения поля подкатегории значению переменной.

SELECT SiteName, SiteDesc, SiteURL
FROM WebDev 
WHERE (SubCat = '#CFvariable#')

Отметим, что Query Builder дает нам возможность сразу же протестировать этот запрос, позволяя ввести то или иное значение переменной.

Теперь мы можем создать страницу, на которой будут расположены запросы к базе данных. Запрос выглядит привычным образом: адрес страницы, на которой расположен код, выводящий результаты запроса, символ «?» и параметр запроса:

<h1 align="center">Ресурсы Web</h1>
<ul>
  <li><a href="reslist.cfm?sub=Java">Java</a>
  <li><a href="reslist.cfm?sub=JScript">JScript</a>
  <li><a href="reslist.cfm?sub=HTTP">HTTP</a>
  <li><a href="reslist.cfm?sub=ASP">ASP</a>
  <li><a href="reslist.cfm?sub=DEV">Средства разработки</a>
</ul>

Далее мы формируем страницу, которая будет выводить результаты запроса. Как и в предыдущем примере, перетаскиваем наш запрос в редактор кода, добавляем код для вывода и определяем переменную, которая будет служить критерием запроса:

<CFSET RES = #url.sub#>

Здесь переменная RES будет хранить параметр с именем SUB, переданный через URL. Собственно говоря, все готово для того, чтобы проверить наше приложение. Вот его исходный текст (выделенным шрифтом показаны элементы, специфичные для ColdFusion):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
                  Transitional//EN">
<html>
<head>
  <title>Ресурсы Web</title>
</head>
<body>
<CFSET RES = #url.sub#>
<CFQUERY NAME="getlist" DATASOURCE="DevRes">
SELECT SiteName, SiteDesc, SiteURL
FROM WebDev 
WHERE (SubCat = '#res#')
</CFQUERY>
<table width="95%" align="center" border>
<CFOUTPUT QUERY="getlist">
<tr>
  <td>#SiteName#</td>
  <td>#SiteDesc#</td>
  <td><a href="#SiteURL#">Web</a></td> 
</tr>
</CFOUTPUT>
</body>
</html>

И результат работы по одному из запросов:

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

В начало

В начало

Управление файлами на сервере

Как мы отметили выше, для управления файлами на сервере ASP предлагает использовать объект FileSystemObject, который предоставляет необходимые свойства, методы и коллекции . В ColdFusion для этих целей используются элементы CFFILE и CFDIRECTORY, атрибут ACTION которых указывает, какие действия над файлами мы собираемся выполнить. Для элемента CFFILE это могут быть следующие значения

UPLOAD Сохраняет файл, загруженный на сервер через форму
MOVE Перемещает файл из одного каталога в другой
RENAME Переименовывает файл
COPY Копирует файл
DELETE Удаляет файл
READ Считывает содержимое текстового файла
WRITE Записывает содержимое текстового файла
APPEND Добавляет содержимое к текстовому файлу

Чтобы прочитать содержимое текстового файла, например, AUTOEXEC.BAT и вывести его на экран, мы должны написать следующий код:

<CFFILE 
      ACTION="READ"
      FILE="c:\autoexec.bat"
      VARIABLE = "Auto">

<CFOUTPUT>
   #Auto#
</CFOUTPUT>

Для элемента CFDIRECTORY возможно использование следующих значений атрибута ACTION:

LIST Выдает список файлов в каталоге (значение по умолчанию)
CREATE Создает каталог
DELETE Удаляет каталог
RENAME Переименовывает каталог

Например, список файлов в каталоге можно получить с помощью следующего кода:

<CFDIRECTORY
    DIRECTORY="d:\pws\wwwroot\cf\"
    NAME="cf_dir"
    SORT="size ASC, name DESC, datelastmodified">

<table width="90%" align="center">
<h2>Directory of d:\pws\wwwroot\cf\</h2>
 <CFOUTPUT QUERY="cf_dir">
      <tr>
         <td>#cf_dir.name#</td>
         <td>#cf_dir.size#</td>
         <td>#cf_dir.type#</td>
         <td>#cf_dir.datelastmodified#</td>
         <td>#cf_dir.attributes#</td>
         <td>#cf_dir.mode#</td>
      </tr> 
 </CFOUTPUT>
 </table>

Отметим, что вместо использования HTML-элементов для формирования таблицы можно воспользоваться элементами CFTABLE и CFCOL. В зависимости от значений их атрибутов

В начало

В начало

Сервисы для приложений

Некоторым аналогом ASP-объекта Application в ColdFusion является элемент CFAPPLICATION. С его помощью можно поддерживать «время жизни» сессии по аналогии с SessionID в ASP. Но в отличие от ASP, при задании атрибута CLEINTMANAGEMENT="YES" элемента CFAPPLICATION переменные сохраняются не как cookie, что освобождает их от соответствующих ограничений. Доступ к переменным осуществляется через глобальную переменную CLIENT.xxx. где xxx — имя переменной. Существует ряд клиентских переменных — HitCount, LastVisit и TimeCreated, доступ к значениям которых также осуществляется через CLIENT.

Для настройки сообщений об ошибках используется элемент CFERROR, позволяющий подключить тот или иной HTML-шаблон и даже послать уведомление по электронной почте. Для многих ошибок доступна расширенная информация — диагностика, выдаваемая сервером, дата и время возникновения ошибки, тип клиентского браузера, IP-адрес и т.п.

Элемент CFLOCATION позволяет перенаправить действия в другой HTML-файл. Этот элемент является аналогом ASP-метода Response.Redirect.

С помощью элемента CFCONTENT можно либо создать новый файл, либо считать содержимое существующего и передать его на клиентский компьютер. Этот элемент поддерживает задание MIME-типа, поэтому его действие не ограничивается HTML- или текстовыми файлами. Ближайшим аналогом элемента CFCONTENT является ASP-метод Response.BinaryWrite.

Отметим еще одну функциональную возможность ColdFusion. Элемент CFMAIL позволяет автоматически отсылать электронную почту, причем с подедржкой прикрепленных файлов. Назначение его атрибутов интуитивно понятно: TO, FROM, CC, SUBJECT, QUERY, STARTROW, MAXROWS, GROUP, MIMEATTACH. Таким образом, используя всего пару элементов, можно отсылать по электронной почте, например, запросы к базе данных.

В начало

В начало

Заключение

В данном обзоре мы рассмотрели две технологии для создания Web-приложений — Active Server Pages фирмы Microsoft и ColdFusion фирмы Allaire.

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

Позволю себе лишь один дополнительный комментарий. ASP и ColdFusion — две одинаково проверенные временем технологии (ColdFusion — чуть «старше»), и они обладают примерно одинаковыми возможностями. Выбор той или иной технологии — вопрос сложный, связанный не только с ее функциональностью, но и с выбором платформы, необходимостью интеграции с другими сервисами, технологиями, интерфейсами. На мой взгляд, лучшим вариантом было бы объединение лучших черт ColdFusion и ASP. Возможно, со временем кто-нибудь сделает нечто подобное.

КомпьютерПресс 5'1999

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует