Пробел
Содержание Предметный указатель Предыдущая глава Следующая глава

ГЛАВА 8

Публикация данных и приложений


Службы узла Web для Windows NT позволяют публиковать как данные, так и приложения. Таким образом, узел Web может содержать все, что угодно, от статических страниц до интерактивных приложений. Кроме того, можно осуществлять поиск, выборку и запись информации в базы данных.

Этой главе объясняется как:


К началу Подготовка данных для публикации

Большинство страниц Web имеет формат HTML (Hypertext Markup Language). Файлы HTML представляют собой текстовые файлы ASCII, содержащие коды инструкций форматирования и гипертекстовые ссылки. Спецификации языка HTML постоянно изменяются. Для точной разметки собственных станиц HTML следует ознакомиться с последними спецификациями HTML, доступными через Интернет.

Создание файлов формата HTML

Для создания и изменения файлов HTML можно применять любой текстовый редактор, в том числе блокнот Windows или Write; однако удобнее пользоваться специальными редакторами документов HTML, такими как Microsoft® FrontPage™ или Internet Assistant для Microsoft® Word.

С помощью редактора документов HTML можно создавать гиперссылки на другие файлы. Для вставки в документ изображений и звукозаписей следует установить в системе соответствующее программное обеспечение.

Публикация документов HTML и файлов других форматов

Документы HTML могут содержать изображения и звукозаписи, а также ссылки на файлы Microsoft® Office и файлы других форматов. Для просмотра файла с форматом, отличным от HTML, удаленный пользователь должен установить на компьютере соответствующее приложение. Например, если все удаленные пользователи имеют Microsoft Word, в публикуемых документах можно использовать ссылки на файлы с расширением DOC. Пользователь может открыть документ Word на своем компьютере щелчком по ссылке.

После создания документа HTML или документа другого формата скопируйте файл в основной каталог Inetsrv\Wwwroot или назначьте каталог, содержащий публикуемый файл, основным каталогом.

Настройка отображения MIME

Если узел Web содержит файлы, использующие разные форматы, необходимо выполнить настройку отображения MIME (Multipurpose Internet Mail Extension). Если какой-либо формат будет пропущен при настройке, система просмотра не сможет загрузить такой файл. Параметры отображения MIME, используемые по умолчанию, см. в системном реестре Windows NT.

Чтобы настроить отображение MIME, запустите редактор реестра (Regedt32.exe) и откройте

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters\MimeMap

Добавьте значение REG_SZ, используя следующий синтаксис:

<тип mime>,<расширение имени>,<неиспользуемый аргумент>,<тип Gopher>

Например:

text/html,htm,/unused,1
image/jpeg,jpeg,/unused,5

Оставьте пустой строку данных, связанную с новым значением. При отсутствии отображения MIME для заданного расширения, по умолчанию используется тип MIME для расширения в виде звездочки (*). Например, чтобы обработать запрос на файл Current.vgr (для расширения VGR отсутствует отображение MIME), сервер будет использовать тип MIME, указанный для звездочки (двоичные данные). Как правило, это приводит к сохранению файла на диске.

Вставка файлов с помощью оператора include

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

Оператор include имеет следующий формат:

<!--#include file="значение"-->

Аргумент значение содержит относительный или полный путь из основного каталога службы WWW.

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


Все пути составляются относительно основного каталога WWW и могут включать виртуальные каталоги.


К началу Публикация динамических приложений

Одним из значимых средств, предоставляемых службами узла Web, является технология создания приложений и сценариев, которые могут запускать щелчком ссылки HTML или посредством заполнения и отправки формы HTML. С помощью языков программирования, например C или Perl, можно создавать приложения или сценарии для работы с динамическими страницами.

Создание приложений и сценариев

Интерактивные приложения и сценарии могут быть реализованы на любом 32-разрядном языке программирования, например на C или Perl, или на языке командных файлов Windows NT (расширение BAT или CMD). При создании приложений и сценариев можно использовать один из двух поддерживаемых интерфейсов ISAPI (Microsoft Internet Server Application Programming Interface) или CGI (Common Gateway Interface). Документация на ISAPI распространяется по подписке на MSDN (Microsoft Developer Network). Введение в CGI изложено в этой главе, а дополнительные сведения можно получить по Интернету. Командные файлы могут содержать любые правильные инструкции, выполняемые из командной строки.

Приложения ISAPI компилируются в виде библиотек динамической компоновки (DLL) и загружаются для выполнения службой WWW. Поскольку такие коды находятся в памяти резидентно, программы ISAPI работают значительно быстрее приложений CGI.

Новая версия языка Perl с поддержкой ISAPI

Независимый производитель программного обеспечения Hip, Inc., развивающий язык Perl для платформы Win32, разработал версию Perl со встроенной поддержкой ISAPI. Таким образом, сценарии Perl теперь выполняются быстрее, чем ранее. Несопровождаемая версия ISAPI Perl доступна на узле http://www.perl.hip.com/. Вопросы (в особенности по существующим сценариям Perl) можно посылать по адресу perlis@mail.hip.com.

Интерфейс ISAPI (Internet Server API)

Интерфейс ISAPI для Windows NT применяется для разработки приложений Web, которые пользователи могут запускать на вашем узле Web с помощью заполнения формы HTML или щелчком ссылки на странице HTML. Удаленное приложение может принимать в качестве аргументов пользовательские данные, выполнять необходимые действия и возвращать результаты на страницу HTML или пересылать их в базу данных.

Приложения ISAPI представляют собой библиотеки динамической компоновки (DLL), выполняемые на сервере Web. Приложения ISAPI работают быстрее сценариев CGI (Common Gateway Interface), поскольку находятся в памяти сервера резидентно и каждый новый запрос не приводит к запуску отдельного процесса.

[08_i260B  3669 bytes ]

Средства ISAPI позволяют выполнять предварительную обработку запросов и завершающую обработку ответов, реализуя конкретный для данного узла способ работы с запросами и ответами. Фильтры ISAPI применяются в пользовательских приложениях, осуществляющих проверку подлинности, доступ к ресурсам или ведение журнала.

[08_i260C  3703 bytes ]

С помощью фильтров ISAPI и приложений можно создать очень сложный узел. Расширения ISAPI используются в интерактивных системах совместно с приложением Internet Database Connector.

[08_i260D  4488 bytes ]

Программирование ISAPI подробно изложено в пакете Microsoft Win32 SDK (Software Development Kit), доступном через MSDN. Дополнительные сведения о получении ISAPI SDK см. в главе Перед началом работы этого руководства.

Интерфейс CGI (Common Gateway Interface)

Интерфейс CGI (Common Gateway Interface) представляет собой набор спецификаций для обмена данными между средством просмотра, сервером Web и приложением CGI. Средство просмотра Web клиента может запускать приложение CGI с помощью заполнения формы HTML или щелчком ссылки на странице HTML. Подобно фильтру ISAPI приложение CGI может принимать данные от клиента, выполнять предписанные действия и возвращать результаты обработки на страницу HTML или отправлять в базу данных. Поскольку приложения CGI часто реализуются на языке сценария, например Perl, они называются сценариями CGI.

Службы узла Web могут использовать большинство 32-разрядных приложений, работающих в Windows NT и удовлетворяющих спецификациям CGI.

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

[08_i260E  3832 bytes ]

Клиент посылает запрос

Средство просмотра клиента может отправить на сервер запрос CGI любым из следующих двух методов:

GET

POST


Клиент инициирует процесс CGI щелчком на странице HTML:

Сервер получает запрос

Адрес URL, который средство просмотра клиента посылает серверу, содержит имя исполняемого сценария CGI или приложения. Сервер проверяет записи системного реестра в разделе Script Mapping для поиска отображения расширения имени файла (т.е. программы, запускаемой для выполнения этого файла). В разделе Script Mapping системного реестра сервера содержатся отображения для файлов с расширениями CMD и BAT, которые обрабатываются Cmd.exe, и для файлов IDC, запускающих Internet Database Connector. Чтобы запустить приложение CGI без отображения расширения, добавьте соответствующую запись для этого приложения в раздел реестра. Например, чтобы запустить сценарий Perl, добавьте следующую запись:

.pl: REG_SZ: C:\RESKIT\PERL\BIN\PERL.EXE %s %s

Здесь

Сервер передает запрос приложению

Сервер передает данные приложению CGI посредством переменных среды, затем запускает приложение. Некоторые из этих переменных связаны с сервером; большинство приходит из средства просмотра клиента и имеет отношение либо непосредственно к средству просмотра клиента, либо к посланному запросу. См. таблицу в конце этой главы с неполным списком переменных среды.

Приложение CGI возвращает данные серверу

Приложение выполняет обработку данных. Если возможно, приложение выводит данные в стандартный выходной поток (STDOUT). Возвращаемые данные должны иметь следующий формат:

Сервер возвращает данные клиенту

Сервер принимает данные из потока STDOUT и добавляет к ним стандартный заголовок HTTP. Затем сервер передает сообщение HTTP обратно клиенту.

Дополнительные сведения о CGI, см. в спецификациях CGI по адресу http://hoohoo.ncsa.uiuc.edu/cgi/.

Интерфейс CGI и службы узла Web

Служба WWW поддерживает спецификацию CGI (Common Gateway Interface). Применительно к реализации CGI в службах узла Web необходимо знать следующее:
Как правило, приложения CGI являются программами, выполняемыми автономно, в отличие от приложений ISAPI, которые обычно загружаются в виде библиотек DLL и, следовательно, являются расширениями сервера.

Рекомендации по защите данных при использовании сценариев и приложений

Исполняемые программы CGI (Common Gateway Interface) следует применять с максимальной предосторожностью, чтобы уменьшить вероятность нарушения системы защиты данных на сервере. В виртуальных каталогах, содержащих приложения CGI или ISAPI (Internet Server API), предоставляйте разрешение только на выполнение файлов.

Настоятельно рекомендуется настроить отображение расширений имен файлов (для файлов сценариев). Отображение расширений имен файлов позволит автоматически выбрать интерпретатора исполняемого файла клиентского запроса, например Cmd.exe.

Каталоги документов World Wide Web должны иметь разрешение только на чтение. Любые исполняемые файлы, предназначенные для запуска с дисков файловой системы Windows NT (NTFS), должны иметь доступ только на чтение.

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

Примечание.   Исполняемые файлы CGI могут иметь расширение EXE или CGI.

Разрешение выполнения приложений ISAPI

Службы узла Web открывают ISAPI приложения по запросу пользователя с учетом установленных параметров защиты. Проверка доступа выполняется для каждого пользовательского запроса. Для запрета выполнения приложений ISAPI, например Internet Database Connector, можно применять разрешения NTFS.

Например, чтобы защитить Internet Database Connector без проверки разрешений на файл с расширением IDC, можно в системе NTFS предоставить только соответствующим пользователям разрешение на выполнение файла Inetsrv\Server\Httpodbc.dll. Файл Httpodbc.dll содержит библиотеку динамической компоновки Internet Database Connector. Всякий раз, когда пользователь запросит Internet Database Connector, сервер проверит его права. Приложение будет запущено, если этому пользователю предоставлено разрешение на его выполнение.

Примечание.   Если приложение ISAPI запущено, оно будет оставаться в памяти компьютера до тех пор, пока служба WWW не будет остановлена. Службы узла Web не отслеживают изменения описателя защиты после запуска приложения ISAPI. Если разрешения на файл ISAPI изменяются после запуска приложения, необходимо перезапустить службу WWW.

Соблюдайте осторожность при работе с таблицами управления доступом (ACL) каталога Winnt и его подкаталогами. Некоторые приложения ISAPI и базы данных требуют доступа к файлам и библиотекам динамической компоновки (DLL) в этих каталогах.

Примечание.   Библиотеки динамической компоновки приложения ISAPI имеют расширение DLL или ISA.

Установка приложения для служб узла Web

Поместите свое приложение или сценарий в каталог Scripts (виртуальный каталог для приложений). В этом виртуальном каталоге установлено разрешение на выполнение.

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

Выполнение приложения

Если приложение не предполагает ввода данных, для его запуска обычно создается ссылка в файле HTML. Если приложение принимает данные от пользователя, следует применить форму HTML. В других случаях можно послать запрос универсального указателя ресурсов (адрес URL), обычно содержащий параметры для вызова программы.

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

http://www.company.com/scripts/catalog.exe

где Scripts — виртуальный каталог для интерактивных приложений.

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

Назначение интерпретаторов приложений

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

Расширение Интерпретатор
BAT, CMD Cmd.exe
IDC Httpodbc.dll
EXE, COM Операционная система

Обеспечение безопасности

Если удаленным пользователям предоставлено право выполнения приложений на вашем компьютере, существует риск недозволенного доступа в систему. Службы узла Web по умолчанию настроены таким образом, чтобы уменьшить вероятность злонамеренного вторжения.

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

Для учетной записи IUSR_имякомпьютера в виртуальном каталоге рекомендуется иметь разрешения на чтение и выполнение, например для запуска сценариев Perl (расширение PL) и файлов Internet Database Connector (расширения IDC и HTX); полное управление осуществляет только администратор. Не предоставляйте разрешение на запись в каталог, чтобы предотвратить копирование на ваш сервер программ злоумышленников.

Во-вторых, если служба WWW настроена на работу только с анонимными подключениями, все запросы от удаленных пользователей используют учетную запись IUSR_имякомпьютера. По умолчанию пользователь, вошедший в систему по учетной записи IUSR_имякомпьютера, не сможет удалять и изменять файлы системы Windows NT (NTFS), если только администратор не назначил этой записи соответствующие разрешения. Таким образом, даже если какая-либо программа была скопирована на ваш компьютер, она не сможет причинить большого вреда, потому что ее возможности будут ограничены разрешениями на доступ, предоставленными учетной записи IUSR_имякомпьютера.


К началу Публикация информации и использование базы данных

С помощью службы WWW и драйверов ODBC (Open Database Connectivity), входящих в состав служб узла Web, можно:

Как работает приложение Internet Database Connector

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

[08_i260F  4052 bytes ]

Средства просмотра Web (например приложение Internet Explorer или средства просмотра других компаний, таких как Netscape) посылают запросы серверу Интернета, используя протокол HTTP. Сервер Интернета отвечает документом, форматируемым на языке гипертекстовой разметки HTML. Доступ к базам данных осуществляется через компонент служб узла Web, называемый приложением Internet Database Connector. Приложение Internet Database Connector (файл Httpodbc.dll) является библиотекой динамической компоновки ISAPI и использует для доступа к базам данных технологию ODBC.

Следующий рисунок раскрывает компоненты, необходимые для доступа в базы данных из служб узла Web.

[08_i260G  4880 bytes ]

Приложение Internet Database Connector использует два типа файлов для управления доступом к базе данных и созданием ответной страницы Web, а именно: файлы Internet Database Connector (IDC) и файлы на расширении языка HTML (HTX).

Файлы приложения Internet Database Connector содержат необходимую информацию, чтобы соединиться с соответствующим источником данных ODBC и выполнить оператор SQL. Файл приложения Internet Database Connector содержит также имя и местоположение файла расширения языка HTML.

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

Установка ODBC и создание источников данных

В процессе установки служб узла Web можно скопировать на диск компоненты ODBC версии 2.5 (флажок Драйверы ODBC и администрирование). Эта версия ODBC поддерживает имена системных источников данных DSN (Data Source Names) и необходима для использования технологии ODBC в службах узла Web.

Имена системных источников данных были введены в стандарт ODBC версии 2.5 специально для поддержки технологии ODBC в службах Windows NT.

Чтобы установить драйверы ODBC

Чтобы создать системные источники данных


Внимание!   Нажатие кнопки Системные DSN является необходимым действием, поскольку приложение Internet Database Connector работает только с системными источниками данных.

32-разрядные драйверы ODBC

Приложение Internet Database Connector использует 32-разрядные драйверы ODBC. Дополнительные сведения о ODBC см. в справочных системах служб узла Web и приложения ODBC Windows NT.

Драйверы ODBC Microsoft Access

Приложение Internet Database Connector использует 32-разрядные драйверы ODBC, входящие в состав Microsoft® Office 95 и Microsoft® Access 95. Драйвер ODBC для Microsoft Access 2.0 не будет работать со службами узла Web.

Создание страниц Web и доступ в базы данных

Для организации доступа в базу данных SQL со страницы Web необходимо создать файл Internet Database Connector (формат IDC) и файл расширения HTML (формат HTX).

Пример запроса к базе данных

Этот пример начинается с простой страницы Web, содержащейся в файле Dbsamp.htm. Начальная страница имеет гиперссылки для запуска запросов, использующих драйвер ODBC для Microsoft SQL Server (результаты возвращаются на другой странице Web).

Следующий рисунок показывает содержимое экрана приложения Internet Explorer после загрузки файла Dbsamp1.htm (предполагается, что службы узла Web установлены на компьютере, называемом webserver).

[08_i260m  3729 bytes ]

По щелчку гиперссылки Для выполнения запроса выберите эту ссылку на сервер отправляется другой запрос URL. Адрес URL предшествует тексту гиперссылки (форматируется как скрытый текст):

<A HREF="http://webserver/scripts/samples/sample.idc?">Для выполнения запроса выберите эту ссылку</A>

В адресе URL запрашивается файл приложения Internet Database Connector (Sample.idc). Отображение расширений имен файлов препятствует непосредственному указанию файла Httpodbc.dll в адресе URL.

Процедура использования приложения Internet Database Connector состоит из шести шагов, как показано на следующей схеме.

[08_i260n  4715 bytes ]

[08_i260o  5175 bytes ]

Изучение файла Sample.htx

Для передачи данных клиенту WWW приложение Internet Database Connector объединяет файл расширения языка HTML (файл HTX) и данные ODBC. Итоговый документ с стандартным заголовком HTTP (код 200 OK, поле Content-Type и т.д.) пересылается службе WWW и возвращается клиенту.

Файл HTX — это документ HTML с дополнительными командами (заключены в символы <%%> или <!--%%-->), используемыми для добавления динамических данных. Имеется шесть служебных слов (begindetail, enddetail, if, else, endif и %z) для разметки расположения результатов запроса к базе данных. Имена столбцов базы данных определяют данные, возвращаемые в документ HTML. Например, следующая строка в файле HTX добавляет данные из столбца Emailname для каждой обработанной записи:

<%begindetail%><%Emailname%><%enddetail%>

Файл Sample.htx содержит пример документа HTML с разметкой расположения результатов, возвращаемых из базы данных (команды выделены полужирным шрифтом).

Файл Sample.htx приведен с сокращениями.

<HTML>
<BODY>
<HEAD><TITLE>Авторы и объемы продаж за год</TITLE></HEAD>
<%if idc.sales eq ""%>

<H2>Авторы с объемом продаж более <I>5000</I></H2>
<%else%>

<H2>Авторы с объемом продаж более <I><%idc.sales%></I></H2>
<%endif%>

<P>
<%begindetail%>
<%if CurrentRecord EQ 0 %>

Результаты запроса:
<B>Автор Продажи за год (US$)<BR></B>
<%endif%>
<%au_lname%>
<%ytd_sales%>
<%enddetail%>
<P>
<%if CurrentRecord EQ 0 %>
<I><B>Отсутствуют авторы с объемом продаж больше </I><%idc.sales%>.</B>
<P>
<%else%>

<HR>
<I>
Эта страница Web получена в результате объединения результатов запроса SQL и шаблона Sample.htx.
<P>
Объединение выполнено приложением Microsoft Internet Database Connector; полученный документ передан этому средству просмотра службами узла Web корпорации Microsoft.
</I>
<%endif%>

</BODY>
</HTML>

Команды <%begindetail%> и <%enddetail%> ограничивают раздел для размещения возвращаемых данных. Столбцы, из которых осуществляется выборка данных, заключены в символы <%%> (в этом примере <%au_lname%> и <%ytd_sales%>).

Описание средств Internet Database Connector

Приложение Internet Database Connector имеет ряд возможностей для создания страниц Web с результатами запроса к базе данных.

Файлы Internet Database Connector

Файлы приложения Internet Database Connector содержат информацию, используемую при обращении к базе данных. Следующий раздел описывает параметры файлов приложения Internet Database Connector.

Параметры

В предыдущем разделе показан самый простой запрос, полностью заданный в файле приложения Internet Database Connector. Более мощные страницы Web могут быть созданы с помощью параметров. Параметры представляют собой имена и значения элементов управления форм HTML, типа <INPUT…>, а также имена, указанные непосредственно в адресах URL. Эти имена и значения посылаются средствами просмотра Web и могут использоваться в операторах SQL на сервере.

Например, в последнем разделе запроса в Sample.idc возвращаются только авторы, реализация книг которых в течении года превысила 5000 долларов. Используя параметр, можно сформировать страницу Web, на которой пользователь решит, какое число ввести вместо 5000.

На странице Web пользователь вводит сумму реализации; введенная сумма присваивается переменной sales. Файл Dbsamp2.htm содержит форму с полем для ввода необходимого числа:

[08_i260p  3837 bytes ]

Ниже приведен синтаксис HTML для создания поля ввода и кнопки:

<FORM METHOD="POST" ACTION="/scripts/samples/sample2.idc">
<P>
Введите объем продаж за год: <INPUT NAME="sales" VALUE="5000" >
<P>
<INPUT TYPE="SUBMIT" VALUE="Выполнить запрос">
</FORM>

Файл приложения Internet Database Connector (Sample2.idc) использует параметр вместо числа 5000:

SQLStatement:
+SELECT au_lname, ytd_sales
+ from pubs.dbo.titleview
+ where ytd_sales > %
sales%

Параметр имеет имя sales, что соответствует предложению <INPUT NAME= "sales" …> на странице Web. Параметры должны заключаться в символы процента (%) для отличия от обычных идентификаторов SQL. Когда приложение Internet Database Connector встретит параметр в файле IDC, оно подставит значение, посланное средством просмотра Web, и отправит оператор SQL драйверу ODBC.

Символ процента (%) является символом подстановки в SQL. Символы подстановки применяются в запросах SQL для поиска элементов таблицы, содержащих возможные комбинации символов. Чтобы отличать символ подстановки SQL от маркера языка HTML необходимо ввести символ % в следующем виде: %%. Например:

SQLStatement:
+SELECT au_lname, ytd_sales, title
+ from pubs.dbo.titleview
+ where title like '%%%title%%%'

Символ процента для использования в качестве символа подстановки SQL введен дважды; кроме того, добавлены символы процента для разметки параметра. В примере, запрос ищет все записи, содержащие слово title в столбце title. Этот запрос возвращает следующее:

title
title and deed
main title page
author and
title

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

SQLStatement:
+SELECT au_lname, ytd_sales, title
+ from pubs.dbo.titleview
+ where title like '%title%%%'

Запрос возвращает следующие данные:

title
title and deed

Чтобы отобрать все записи, завершающиеся словом title, можно создать следующий запрос:

SQLStatement:
+SELECT au_lname, ytd_sales, title
+ from pubs.dbo.titleview
+ where title like '%%%title%'

Запрос возвращает следующие данные:

title
author and title

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

Например, документ Dbsamp3.htm служит для запуска запроса из файла Sample3.idc, который в свою очередь использует файл Sample3.htx в качестве шаблона вывода. После обработки запроса документ Sample3.htx содержит фамилии авторов в виде ссылок, по щелчку которых отображаются названия книг соответствующего автора с помощью файлов Sample3a.idc и Sample3a.htx.

Поля в файлах Internet Database Connector

Следующие таблицы содержат список полей, которые могут быть заданы в файле приложения Internet Database Connector. Параметры или переменные сервера могут находиться в любом месте файла IDC.

Обязательные поля в файле Internet Database Connector
Поле Описание
Datasource Имя системного источника данных ODBC, созданное с помощью приложения ODBC панели управления или средствами, входящими в состав примеров.
Template Имя файла расширения HTML (файл HTX) для форматирования результатов запроса.
SQLStatement Выполняемый оператор SQL. Оператор SQL может содержать значения параметров, которые должны заключаться в символы процента (%). Предложение SQLStatement может занимать несколько строк в файле Internet Database Connector. После строки с полем SQLStatement каждая новая строка, начинающаяся со знака плюс (+), считается частью поля SQLStatement. Один файл может содержать несколько предложений SQLStatements.

Необязательные поля в файле Internet Database Connector
Поле Описание
DefaultParameters = параметр=значение

[, параметр=значение]
[…]

Значение, используемое для определения параметра, если он не задан клиентом
Expires Число секунд ожидания перед обновлением кэшированной выходной страницы. Если последующий запрос идентичен, кэшированная страница возвращается клиенту без обращения к базе данных. По умолчанию выходные страницы не кэшируются. Кэширование применяется при задании поля Expires.
MaxFieldSize Максимальная длина поля приложения IDC; любые символы, превышающие эту длину, отбрасываются. Параметр применяется только к полям, возвращенным из базы данных. Значение по умолчанию 8192 байт.
MaxRecords Максимальное число записей, возвращаемых по отдельному запросу. По умолчанию значение MaxRecords не установлено, что соответствует 4 миллиардам записей. Установите значение, чтобы ограничить число возвращаемых записей.
ODBCConnection Служит для добавления соединения в группу, использующую открытый канал связи с базой данных для выполнения новых запросов. Приложение Internet Database Connector посылает запросы в базу данных, используя файлы IDC, содержащие переменные Datasource, Username и Password. С помощью этого параметра можно улучшить производительность Internet Database Connector. Кроме того, предусмотрено значение запрещающее добавление соединения в группу. Применяйте значение nopool для более тонкого управления кэшом подключений. Существует ограничение на число соединений в группе, препятствующее объединению всех соединений.

Примечание. Чтобы применять группировку соединений по умолчанию, следует задать параметру системного реестра PoolIDCConnections значение 1. Дополнительные сведения см. в главе 10 Работа с данными системного реестра.

Password Пароль, соответствующий имени пользователя. Если пароль не задан, это поле может быть пропущено.
RequiredParameters Параметры (если они заданы) должны быть указаны клиентом; в противном случае будет возвращено сообщение об ошибке. Имена параметров отделяются с запятой.
Translationfile Путь к файлу трансляции (содержит буквы типа а, ф или й), используемому средством просмотра при отображении документов в формате HTML. Если файл трансляции находится в каталоге, отличном от каталога файла IDC, необходимо указать полный путь к этому файлу. Синтаксис: Translationfile: C:\имякаталога\имяфайла. Используйте поле Translationfile при публикации базы данных на языке, отличном от английского. Файл трансляции является текстовым файлом и содержит кодировку символов в следующем формате: величина=строка<CR>, где величина — международный символ и строка — код трансляции HTML.
Username Действующее имя пользователя для имени источника данных, указанное в поле Datasource.

Примечание. При использовании приложения Microsoft SQL Server с интегрированной функцией защиты поля имени и пароля в файле IDC игнорируются. Подключение к серверу SQL выполняется с помощью личных данных клиента службы Web (если они указаны в запросе). Для анонимного запроса имя и пароль пользователя определяются учетной записью анонимного пользователя (по умолчанию IUSR_имякомпьютера) в диспетчере служб Интернета.

Content-Type Любой действующий тип MIME, описывающий тип возвращаемого клиенту документа. Для файла HTX на языке HTML, как правило, используется тип text/html.

Дополнительные необязательные поля ODBC

Дополнительные параметры ODBC позволяют отлаживать и настраивать драйвер ODBC, используемый приложением Internet Database Connector. Дополнительные сведения см. в документации на драйвер ODBC или в ODBC SDK (Software Development Kit). Формат, применяемый в файле IDC:

ODBCOptions: Имя параметра=Значение[,Имя параметра=Значение…]

Например, чтобы остановить выполнение запроса SQL, длящегося более 10 секунд, и разрешить трассировку вызовов функций ODBC, в файле IDC необходимо указать:

ODBCOptions: SQL_QUERY_TIMEOUT=10, SQL_OPT_TRACE=1, SQL_OPT_TRACEFILE=C:\Sql.log

Все параметры описаны в следующей таблице:

Аргумент Значение Назначение
SQL_ACCESS_MODE 0 = Чтение/запись

1 = Только чтение.

Указание драйверу ODBC или источнику данных о выполнении операторов SQL с запросами на обновление данных (соединение не требуется). Этот режим используется для оптимизации стратегий блокировки, управления транзакциями и изменения других параметров, предусмотренных в соответствующем драйвере или источнике данных. Драйвер не требуется для защиты операторов от влияния источника данных. Взаимодействие драйвера и источника данных при обработке в запросе на чтение операторов SQL, не являющихся операторами только чтения, определяется реализацией. По умолчанию параметр имеет значение 0, что соответствует разрешению не чтение и запись.
SQL_LOGIN_TIMEOUT Целое Число секунд ожидания перед прерыванием подключения. Значение по умолчанию зависит от драйвера и должно быть отлично от нуля. Если параметр равен 0, блокировка по времени отсутствует и длительность попытки соединения может быть произвольной. Если интервал ожидания превышает интервал времени, указанный в источнике данных, драйвер использует значение из источника данных.
SQL_OPT_TRACE 0 = Трассировка выключена

1 = Трассировка включена

При включенной трассировке, каждое обращение к функции ODBC, сделанное из приложения Httpodbc.dll, записывается в файл трассировки. Файл трассировки задается с помощью параметра SQL_OPT_TRACEFILE. Если файл уже существует, записи добавляются в этот файл. В противном случае, создается новый файл. Если трассировка включена, но файл трассировки не задан, обращения к функциям ODBC выводятся в файл Sql.log.
SQL_OPT_TRACEFILE Имя файла Имя файла трассировки, используемое когда SQL_OPT_TRACE=1. Значение по умолчанию: SQL.LOG
SQL_PACKET_SIZE Целое Размер пакета (в байтах), используемый для обмена информацией между системой управления базой данных и сервером Web.

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

SQL_TRANSLATE_DLL Имя файла Имя библиотеки динамической компоновки (DLL) с функциями SQLDriverToDataSource и SQLDataSourceToDriver, предназначенными для загрузки драйвера и выполнения трансляции.
SQL_TRANSLATE_OPTION Целое Параметр, управляющий функциональными возможностями трансляции, которые являются специфическими для используемой библиотеки динамической компоновки (DLL) трансляции. См. документацию драйвера и библиотеки динамической компоновки трансляции.
SQL_TXN_ISOLATION Целое

1=Чтение без занесения

2=Чтение с занесением

4=Повторяемое чтение

8=Объединяемое чтение

16=Создание версий

Задание уровня изоляции транзакции. Приложение Internet Database Connector не поддерживает транзакции, более продолжительные, чем запрос в файле IDC. В некоторых СУБД, задав параметру значение 1, можно распараллелить обработку данных и повысить производительность. Для этого уровня изоляции данные, которые не были переданы в базу данных другими транзакциями, не могут быть восстановлены.
SQL_MAX_LENGTH Целое Максимальное количество данных, которые драйвер возвращает из текстового или двоичного столбца. Этот параметр предназначен для разгрузки потока данных в сети и используется, если в источнике данных (в противоположность драйверу) предусмотрена такая возможность.
SQL_MAX_ROWS Целое Максимальное число строк, возвращаемых оператором SELECT. Если параметр равняется 0 (значение по умолчанию), драйвер возвращает все отобранные строки. Этот параметр предназначен для разгрузки потока данных в сети в дополнение к встроенной переменной MaxRecords приложения Internet Database Connector, которая ограничивает число отобранных строк.
SQL_NOSCAN 0=Искать и конвертировать предложения escape

1=Не искать и не конвертировать предложения escape

Включает поиск предложений escape в строках SQL. Если параметр равен 0 (значение по умолчанию), драйвер ищет предложения escape в строках SQL. Если параметр равен 1, драйвер не ищет предложения escape в строках SQL; вместо этого, драйвер посылает оператор непосредственно источнику данных. Если оператор SQL не содержит предложения escape (они используют специальный синтаксис с фигурными скобками), параметру можно присвоить значение 1, что даст небольшое увеличение производительности драйвера.
SQL_QUERY_TIMEOUT Целое

0=Без блокировки

Число секунд ожидания перед прерыванием выполнения оператора SQL. Если параметр равен 0 (значение по умолчанию) блокировка по времени выполнения отсутствует. Если параметр превышает интервал, заданный в источнике данных, используется значение из источника данных.
Целое Зависит от драйвера Значение параметра драйвера может быть задано в виде число=параметр. Например:

4322=1, 234=String

Использование полей со списком в формах HTML

Если форма HTML содержит команду <SELECT MULTIPLE…>, приложение Internet Database Connector преобразует элементы команды в список, который может использоваться в файле IDC точно так же, как другие параметры. Параметр является списком, поэтому, как правило, применяется в предложении IN оператора Select, как показано в следующих примерах.

Если имя параметра в файле IDC заключено в одинарные кавычки, каждый элемент списка должен их использовать. Имя параметра заключается в кавычки всякий раз, когда столбец в предложении IN содержит текст или другой тип, применяющий литералы (например тип дата/время). Если одинарные кавычки отсутствуют в имени параметра, они отсутствуют в элементах списка. Не следует применять кавычки, если столбцы предложения IN имеют числовой тип.

Например, если форма HTML содержит поле со списком:

<SELECT MULTIPLE NAME="region">
<OPTION VALUE="Western">
<OPTION VALUE="Eastern">
<OPTION VALUE="Northern">
<OPTION VALUE="Southern">
</SELECT>

в файле IDC можно задать оператор SQLStatement:

SQLStatement: SELECT name, region FROM customer WHERE region IN ('%region%')

Если пользователь выбирает значения Northern, Western и Eastern в форме HTML, оператор SQL может быть преобразован следующим образом:

SELECT name, region FROM customer WHERE region IN ('Northern', 'Western', 'Eastern')

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

<SELECT MULTIPLE NAME="year">
<OPTION VALUE="1994">
<OPTION VALUE="1995">
<OPTION VALUE="1996">
</SELECT>

Оператор SQLStatement в файле IDC:

SQLStatement: SELECT product, sales_year FROM sales WHERE sales_year IN (%year%)

Если пользователь выбирает значения 1994 и 1995 в форме HTML, оператор SQL может быть преобразован следующим образом:

SELECT product, sales_year FROM sales WHERE sales_year IN (1994, 1995)

Использование параллельных и последовательных запросов

В файле IDC можно создавать параллельные и последовательные запросы SQL.

Параллельные запросы

При обращении к базам данных (например базе данных SQL Server), способным одновременно обрабатывать несколько запросов SQL, следует применять параллельные запросы для повышения производительности. Например:

SQLSTatement:
+insert into perf(testtime, tag) values (getdate(), '%tag%')
+SELECT au_lname, ytd_sales from pubs.dbo.titleview where ytd_sales>5000
+SELECT count(*) as nrecs from pubs.dbo.titleview where ytd_sales>5000

Последовательные запросы

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

SQLStatement:
+insert into perf(testtime, tag) values (getdate(), '%tag%')
SQLStatement:
+SELECT au_lname, ytd_sales from pubs.dbo.titleview where ytd_sales>5000
SQLStatement:
+SELECT count(*) as nrecs from pubs.dbo.titleview where ytd_sales>5000

Максимальная производительность достигается при работе с параллельными запросами (если такой режим поддерживается системой управления базой данных).

Файлы расширения языка HTML (файлы HTX)

Файлы расширения языка HTML содержат ряд зарезервированных слов (команд), управляющих выводом данных в документ HTML. Описание команд приводится в следующих разделах.

Команды <%begindetail%> и <%enddetail%>

Команды <%begindetail%> и <%enddetail%> ограничивают раздел (файла расширения HTML), в который выводятся результаты запроса к базе данных. Внутри раздела для разметки расположения данных используются комбинации символов: <%%> или <!--%%-->. Например, раздел:

<%begindetail%>
<%au_lname%>: <%ytd_sales%>
<%enddetail%>

создаст список значений из столбцов au_lnam и ytd_sales. Таким способом можно получить данные из любого столбца, а раздел может находиться в любом месте файла расширения языка HTML.

Примечание.   Если запрос не возвращает данные раздел <%begindetail%> будет пропущен. Для каждому оператору SQL (например SELECT), создающему набор результатов, в файле HTX должен соответствовать раздел <%begindetail%>

Команды <%if%>, <%else%> и <%endif%>

Для динамического изменения содержимого страницы Web в файлах расширения языка HTML можно проверять условия с помощью оператора if-then-else. Например, можно вставить условный оператор для проверки наличия результатов запроса в первой строке раздела <%begindetail%> и, если запрос не дает результатов, отобразить текст «Отсутствуют авторы с объемом продаж больше %idc.sales%». Таким образом, с помощью оператора <%if%> и встроенной переменной CurrentRecord на страницу Web можно вывести сообщение об ошибке при отсутствии результатов запроса. Следующий пример показывает применение оператора <%if%>.

<%begindetail%><%if CurrentRecord EQ 0 %>

Обработка результатов запроса:

<B>Авторы и объемы продаж за год<BR></B>
<%endif%>

<%au_lname%>$<%ytd_sales%>
<%enddetail%>
<P>
<%if CurrentRecord EQ 0 %>
<I><B>Отсутствуют авторы с объемом продаж больше </I><%idc.sales%>.</B>
<P>
<%else%>
<HR>
<I>
Эта страница Web получена в результате объединения результатов запроса SQL и шаблона Sample.htx.
<P>
Объединение выполнено приложением Microsoft Internet Database Connector; полученный документ передан этому средству просмотра службами узла Web корпорации Microsoft.
</I>

<%endif%>
</BODY>

</HTML>

Основной синтаксис:

<%if условие %>
текст HTML
[<%else%>
текст HTML]
<%endif%>

Прототип условие задается в следующем виде:

где оператор должен быть одним из следующих:

EQ если операнд1 равен операнду2
LT если операнд1 меньше чем операнд2
GT если операнд1 больше чем операнд2
CONTAINS если любая часть операнд1 содержит операнд2

Операнды операнд1 и операнд2 могут быть именами столбцов, одной из встроенных переменных (CurrentRecord или MaxRecords, см. ниже), переменными HTTP (см. ниже) или константами. Внутри оператора <%if %> элементы не разделяются символами <% и %>. Например, чтобы выполнить специальные действия для автора по имени Green, используйте условие:

<%begindetail%>
<%if au_lname EQ "Green"%>
этот парень зелен!
<%endif%>
<%enddetail%>

В условии оператора <%if %> можно использовать переменные протокола HTTP. Например, чтобы отформатировать страницу в зависимости от средства просмотра Web клиента в файл расширения языка HTML следует добавить строки:

<%if HTTP_USER_AGENT contains "Mozilla"%>
средство просмотра клиента поддерживает усовершенствованные средства HTML
<%else%>
используется средство просмотра <%HTTP_USER_AGENT%>
<%endif%>

Переменные CurrentRecord и MaxRecords

Встроенная переменная CurrentRecord содержит обработанных разделов <%begindetail%>. При первом вхождении в раздел <%begindetail%> переменная равна нулю. Далее, значение CurrentRecord увеличивается на единицу после выборки очередной записи из базы данных.

Встроенная переменная MaxRecords содержит значение поля MaxRecords в файле Internet Database Connector. Переменные MaxRecords и CurrentRecord могут использоваться только в операторах <%if%>.

Параметры из файлов Internet Database Connector

На параметры файла Internet Database Connector можно ссылаться в файле расширения HTML с помощью приставки idc с точкой. В примере Sample3.htx (см. выше), можно вывести значение параметра %sales%, если добавить строку:

Значение параметра sales: <%idc.sales%>

Переменные HTTP

Ряд переменных в файлах расширения HTML содержат информацию о среде и подключившемся клиенте Web. Кроме того, имеются заголовки, посланные клиентом. Для доступа к ним с помощью Internet Database Connector необходимо выполнить следующие действия:


В следующей таблице приведен список основных переменных (переменных среды для приложений CGI и переменных HTTP для приложений IDC).

Переменные сервера служб узла Web
Переменная Значение
ALL_HTTP Все заголовки HTTP, которые не были переданы ни в одну из приведенных переменных; эти переменные имеют форму HTTP_<имя поля заголовка>, например:

HTTP_ACCEPT: */*, q=0.300, audio/x-aiff, audio/basic, image/jpeg, image/gif, text/plain, text/html

HTTP_USER_AGENT: Microsoft Internet Explorer/0.1 (Win32)

HTTP_REFERER: http://webserver/samples/dbsamp/dbsamp3.htm

HTTP_CONTENT_TYPE: application/x-www-form-urlencoded

HTTP_CONTENT_LENGTH: 10

AUTH_TYPE Тип проверки подлинности. Если имя пользователя проверялось сервером, содержит значение Basic. В противном случае отсутствует.
CONTENT_LENGTH Число байтов, передаваемых сценарию от клиента.
CONTENT_TYPE Тип данных в основном тексте запроса POST.
GATEWAY_INTERFACE Версия рабочей спецификации CGI (Common Gateway Interface) сервера.
HTTP_ACCEPT Специальный заголовок HTTP. Значения полей accept объединены и разделены запятыми (,); например, если следующие строки являются частью заголовка HTTP:

accept: */*; q=0.1

accept: text/html
accept: image/jpeg

тогда переменная HTTP_ACCEPT имеет значение:

*/*; q=0.1, text/html, image/jpeg
LOGON_USER Учетная запись пользователя Windows NT.
PATH_INFO Дополнительные сведения о пути, предоставленные клиентом. Содержит завершающую часть адреса URL, стоящую после имени сценария, но до строки запроса.
PATH_TRANSLATED Значение PATH_INFO (любое виртуальное имя преобразовано в спецификацию каталога).
QUERY_STRING Данные после знака вопроса (?) в адресе URL, используемые сценарием.
REMOTE_ADDR Адрес IP клиента.
REMOTE_HOST Адрес узла клиента.
REMOTE_USER Имя пользователя, представляемое клиентом и проверяемое сервером.
REQUEST_METHOD Метод запроса HTTP.
SCRIPT_NAME Имя запускаемого сценария.
SERVER_NAME Имя сервера (или адрес IP) в том виде, который применяется в адресе URL при обращении к самому себе.
SERVER_PORT Порт TCP/IP, по которому запрос был получен.
SERVER_PORT_SECURE Имеет значение 0 или 1. Значение 1 указывает на то, что запрос находится на зашифрованном порту.
SERVER_PROTOCOL Название и версия информационного протокола запроса, обычно HTTP/1.0.
SERVER_SOFTWARE Имя и версия сервера Web, под управлением которого выполняется приложение Internet Server Extension.
URL Адрес URL запроса.


Содержание Предметный указатель Предыдущая глава К началу Следующая глава

© 1996 Microsoft Corporation. Все права защищены.