Asp разработка производительных приложений isapi

Содержание

Устройство веб-приложений

Веб-приложение состоит из клиентской и серверной частей, тем самым реализуя технологию «клиент-сервер».

Клиентская часть реализует пользовательский интерфейс, формирует запросы к серверу и обрабатывает ответы от него.

Серверная часть получает запрос от клиента, выполняет вычисления, после этого формирует веб-страницу и отправляет её клиенту по сети с использованием протокола HTTP.

Само веб-приложение может выступать в качестве клиента других служб, например, базы данных или другого веб-приложения, расположенного на другом сервере. Ярким примером веб-приложения является система управления содержимым статей Википедии: множество её участников могут принимать участие в создании сетевой энциклопедии, используя для этого браузеры своих операционных систем (будь то Microsoft Windows, GNU/Linux или любая другая операционная система) и не загружая дополнительных исполняемых модулей для работы с базой данных статей.

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

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

Виды Веб-приложений и технологии их создания:

AJAX(Asynchronous JavaScript and XML) — подход к построению пользовательских интерфейсов Web-приложений, при котором в ответ на каждое действие пользователя Web-страница на его браузере, не перезагружается полностью — с Web-сервера только догружаются нужные ему данные. Этим обеспечивается оперативная работа как одного, так и групп пользователей с приложениями. AJAX представляет собой не одну, а группу технологий и базируется на принципах использования DHTML для динамичного изменения содержания страницы и использования XMLHttpRequest для обращения к серверу (альтернативный вариант — динамическая подгрузка JavaScript с использованием объектной модели документа — DOM). С учетом этих принципов можно создавать удобные Web-интерфейсы на тех страницах сайтов, где необходимо активное взаимодействие с пользователями. Популярность AJAX приобрела после того, как компания Google начала применять его при создании Gmail, Google maps, Google suggest.

ASP (Active Server Pages) — технология создания Web-приложений, использующая объектную модель интерфейса, созданного на основе ISAPI-фильтра. ASP упростила задачи генерации HTML-страниц и позволила производить обращение к компонентам баз данных. Принцип, заложенный в основу интерфейса приложения, заключается в том, что на Web-странице присутствуют фрагменты кода, который интерпретируется Web-сервером и предоставляет пользователю готовый результат выполнения выбранных фрагментов кода. Web-страница, созданная с использованием технологии ASP, имеет расширение «.asp».

CGI(Common Gateway Interface, общий шлюзовой интерфейс) — программа поиска в удаленных БД, переадресации ссылок, использования графических меню, связи с базами данных (путем запуска программы преобразования форматов баз данных в формат языка HTML).

CRM (Customer Relationship Management) — Web-приложения для автоматизации и повышения эффективности процессов, связанных с бизнесом (обработка заказов, маркетинг, обслуживание клиентов). CRM используются в специализированных операторских «контакт-центрах». Первая версия программного продукта Microsoft CRM появилась в 2002 году. Web-сервисы Microsoft CRM реализуются на основе использования SQL-сервера и предусматривают создание основного хранилища данных Microsoft CRM, БД метаданных, БД для построения отчетности и дистрибуционной БД, предназначенной для отслеживания взаимодействия автономных пользователей клиента Outlook с основной БД Microsoft CRM. Использование XML позволяет интегрировать Microsoft CRM с приложениями подобного назначения независимо от языка программирования и операционной системы, под управлением которой работает стороннее приложение (например, SAP R/3). Система предусматривает ограничения доступа и проверку прав доступа клиентов.

ERP (Enterprise Resource Planning) — Web-приложения, предназначенные для автоматизации процессов управления внутрихозяйственной деятельностью корпорации, включая управление производством, финансами, снабжением, персоналом.

ISAPI (Internet Server Application Programming Interface) — интерфейс к серверу Интернета фирмы Microsoft, предназначен для программного управления сервером. ISAPI поддерживается большинством производителей программных средств. ISAPI-программы представляют собой специальный вид приложений, обрабатывающих пользовательские запросы и отображающих их вывод в виде потока HTML, который поступает непосредственно в браузер клиента.

ITRP (IT Resources Planning) — класс Web-приложений, предназначен для поддержки управления корпоративными ИТ-ресурсами и сервисами.

JSP (Java Server Pages) — технология создания Web-приложений, основанная на однократной компиляции Java-кода (сервлета) при первом обращении к нему с последующим выполнением методов этого сервлета и помещением полученных результатов в набор данных, которые отправляются в браузер.

OSS (Operation Support Systems) — вид Web-приложений, предназначен для обеспечения работы операторов распределенных вычислительных сетей. OSS обеспечивает управление сетью, производительность, ликвидацию сбоев в работе, создание и учет сервисов, планирование сетевых ресурсов, мониторинг процессов, контроль за безопасностью, качество услуг и уровень обслуживания клиентов, сбором статистических данных. Разновидностью OSS является система поддержки бизнеса — BSS (Business Support Systems). К ним относятся биллинговые системы, системы управления взаимоотношениями с клиентами, управления сетями, заказами, качеством услуг.

PHP (Personal Home Page) — сценарный язык и программное средство для создания Web-страниц. В его состав входит CGI-интерфейс, интерпретатор языка и набор функций для доступа к базам данных и различным объектам WWW. PHP позволяет формировать страницы в режиме интерактивного взаимодействия в системах «клиент-сервер».

Требования к веб-приложениям

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

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

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

• надежность: Формально, надежность – это свойство приложения сохранять

во времени в установленных пределах значения всех параметров, характеризующих

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

применения (ГОСТ 27.002-89). Т.е. требования к надежности приложения

определяются условиями функционирования приложения (параметры сервера,

максимальное количество пользователей приложения) и допустимыми показателями

качества работы системы в этих условиях (время обработки запроса пользователя к

системе, количество отказов системы). Таким образом, надежное веб-приложение

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

(т.е. все возможные условия для данного приложения должны быть рассмотрены и учтены

при проектировании системы).

быстродействие приложения: Быстродействие определяется как среднее

время обработки запроса пользователя к системе. Максимальным приемлемым

временем отклика для веб-приложений считается 5 секунд.

• безопасность: Требование безопасности веб-приложения включает в себя:

разграничение прав доступа к функциям и данным каждого компонента веб-

приложения может, контроль уровня доступа компонентов и/или пользователей,

авторизация и верификация пользователей.

масштабируемость:– это способность системы увеличивать свою

производительность при повышенной нагрузке и добавлении ресурсов. Для

пользователя масштабируемого веб-приложения должен оставаться незаметным

момент (т.е. время отклика системы на запросы пользователя не должно заметно

изменяться), когда возрастет нагрузка (например, к приложению получают доступ

одновременно еще несколько пользователей), и при изменении конфигурации

приложения (например, если на уровень бизнес-логики будет добавлен

дополнительный компонент обработки данных).

66. Виды Web-сайтов. Структура сайта. Предпроектное обследование для создания структуры сайта и его информационного наполнения.Виды сайтов и их назначение

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Только сон приблежает студента к концу лекции. А чужой храп его отдаляет. 8807 — | 7523 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

СЕРВЕРНЫЕ РАСШИРЕНИЯ CGI И ISAPI CGI-механизм взаимодействия приложения-клиента с приложением — сервером, достоинства и недостатки метода.

CGI — технология.

Основу WWW составляют веб-узлы — ПК, на которых выполняется специальная программа — веб-сервер, ожидающая запроса со стороны клиента на выдачу документа. Документы хранятся на веб-узле в формате HTML. Клиентом веб-сервера является программа-браузер, выполняющаяся на удаленном ПК, которая осуществляет запрос к веб-серверу, принимает запрошенный документ и отображает его на экране.
Стандартный язык разметки HTML позволяет легко и быстро создавать веб-страницы, передаваемые по сети Интернет. Это удобный инструмент, но, загружаемые в окно браузера страницы — статичны. Пользователь не может менять их содержимое, не может взаимодействовать с ними. Для придания динамичности HTML страницам был предложен и реализован ряд технологий, оживляющих и создающих реагирующие на действия пользователя HTML-документы. CGI-сценарий — одна из первых таких технологий. Это программа, инициализируемая на сервере при передаче на него информации из полей форм HTML, создаваемых тэгом .
CGI — Common Gateway Interface (интерфейс общего шлюза). Это часть веб-сервера, которая может взаимодействовать с другими программами, выполняющимися на этом же веб-узле. В этом смысле является шлюзом для передачи данных, полученных от клиента программами обработки (СУБД, электронными таблицами, графическими приложениями).

CGI включает общую среду (набор переменных) и протоколы для взаимодействия с этими программами.

Схема работы CGI.

  1. Получение веб-сервером информации от клиента-браузера. Для передачи данных веб-серверу в HTML используется форма, задаваемая при помощи тэгов FORM. Она состоит из набора полей ввода, отображаемых браузером в виде графических элементов управления (селекторные кнопки, опции, строки ввода/вывода).
  2. Анализ и обработка полученной информации. Данные, извлеченные из HTML-формы, передаются на обработку CGI-программе. Они не всегда могут быть обработаны ею самостоятельно. Так, если в данных содержится запрос к базе данных, то CGI-программа переадресовывает запрос СУБД, выполняющейся на том же ПК.
  3. Создание нового HTML документа и пересылка его браузеру. После обработки полученной информации, CGI-программа создает динамический (виртуальный) html-документ и возвращает результат в Apache, а он — браузеру клиента.

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

Дополнительные параметры: CLASS, NAME, STYLE.
Документ может содержать несколько форм, но они не могут быть вложенными друг в друга.

  1. ACTION. Его значением является URL-адрес CGI-программы, которая будет обрабатывать информацию, извлеченную из данной формы.
  2. METHOD. Определяет метод пересылки данных, содержащихся в форме, от браузера к веб-серверу. Обычно принимает одно из двух значений: GET (по умолчанию) и POST. В методе GET данные формы пересылаются в составе URL-запроса. В методе POST данные формы пересылаются в теле запроса.
  3. ENCTYPE. Возможны два значения параметра: application/x-www-form-urlencoded и multipart/form-data.

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

Электронная почта — одно из первых приложений Интернет. Ориентировано на пересылку текстовых сообщений, но часто возникает необходимость вместе с текстом переслать данные в нетекстовом формате (zip-файл, рисунок). Для пересылки этих файлов без искажения средствами электронной почты, их кодируют в соответствии с некоторым стандартом.
Стандарт MIME — Multipurpose Internet Mail Extensions (Многоцелевые расширения электронной почты для Интернета). Определяет набор MIME-типов, соответствующих различным типам данных, и правила пересылки их по электронной почте.
Для обозначения MIME-типа используется запись вида: тип/подтип.
Тип определяет общий тип данных. Например, application, text, image.
Подтип определяет конкретный формат внутри типа данных (application/zip, image/gif, text/html).
MIME-типы нашли применение в веб, где они называются медиатипами для идентификации формата документов, передаваемых по протоколу http.
В HTML-форме параметр ENCTYPE определяет медиатип, используемый для кодирования и пересылки специального типа данных — содержимого формы.
Если в форме присутствует элемент для ввода имени локального файла (TYPE = FILE), то этот файл присоединяется к содержимому формы при пересылке на сервер. Для корректной передачи этого файла нужно установить значение параметров формы равными:
ENCTYPE = «multipart/form-data»
METHOD = POST

Иначе будет передана введенная строка, т.е. маршрутное имя файла, а не его содержимое.

Кодирование и пересылка данных формы в запросе.

Взаимодействие между клиентом-браузером и веб-сервером осуществляется по правилам протокола http и состоит из запросов клиента и ответов сервера.
Запрос клиента разбивается на три части:

  • 1 строка — команда HTTP (метод GET или POST)
    • — URL-адрес запрашиваемого файла cgi-сценария
    • — номер версии протокола HTTP
  • 2 строка — заголовок запроса
  • 3 строка — тело запроса (собственно данные, посылаемые серверу)

Метод сообщает серверу о целях запроса. В протоколе http определены несколько методов, но для передачи формы в cgi-программу используются 2 метода GET и POST.
Метод GET. Данные формы пересылаются в составе URL-запроса, к которому присоединяются после символа «?».
Метод POST. Данные формы пересылаются в теле запроса.
Схема кодирования данных из формы одинакова для обоих методов и заключается в следующем:

  1. Для каждого элемента формы, имеющего имя, заданное параметром NAME, формируется пара NAME = value, где value — значение элемента, введенное пользователем или назначенное по умолчанию. При отсутствии значения, соответствующая пара имеет вид: NAME =. Для радиокнопок и переключателей используются значения только выбранных элементов.
  2. Все пары объединяются в строку через разделитель &. Символы, не допустимые в составе URL (русские символы, пробелы, служебные символы) заменяются последовательностью, состоящей из символа % и их 16-го ASCII кода. Символ пробела может заменяться либо на %20, либо знаком «+». Признак конца строки заменяется кодом%0D%0A. Этот процесс называется URL-кодированием.
  3. Закодированная информация передается серверу одним из методов (GET или POST).

На рис.1 показано отображение этой формы броузером (хорошо видны два поля ввода и кнопка отсылки введенных в эти поля данных на сервер).

Параметр ACTION описания формы определяет действие, выполняющееся над присланной на сервер информацией (в данном случае указан путь к программе CGI, которая будет выполнять обработку данных). Параметр METHOD выбирается один из двух методов передачи данных серверу WWW — при значении этого параметра GET указанная в параметре ACTION программа CGI получит данные из формы через переменную среды с именем QUERY_STRING, в случае METHOD=POST программа CGI получит данные из формы через стандартный поток ввода stdin.

С целью использования языков программирования, не поддерживающих (в явном виде) стандартных потоков ввода и вывода (например, Pascal) разработана спецификация WinCGI, согласно которой в передаче данных используются привычные для Windows инициализационные файлы [6].

Возможна прямая посылка серверу строки query-string в соответствие со следующим URL (через знак вопроса после имени обрабатывающей запрос CGI-программы указывается пересылаемая строка)

http://www.my_server.ru/cgi/search.exe?query-string

При использовании METHOD=GET данные формы поступают на сервер в виде значения переменной среды QUERY_STRING в следующем формате:

Имя1=Значение1&Имя2=Значение2&Имя3=Значение3

Здесь в качестве имен используются значения параметров NAME формы, вместо значений подставляются данные из соответствующих именам полей. Программа CGI должна просканировать содержимое текстовой строки переменной cреды QUERY_STRING и по имени поля найти нужное значение, введенное в это поле пользователем. Адрес заданной строки переменной среды в программе легко получить с помощью C-функции getenv

char * szQueryString;

szQueryString = getenv(«QUERY_STRING»);

Рис..1. Отображение простейшей формы броузером.

Передаваемая в переменной среды QUERY_STRING строка закодирована с использованием т.н. кодировки URL (символы пробелов заменяются на символ ‘+’, для представления кодов управляющих и некоторых других символов используется конструкция вида %xx, где хх — шестнадцатиричный код символа в виде двух ASCII-символов); CGI-программа должна выполнить обратную перекодировку.

При использовании METHOD=POST программа CGI получает данные из формы через стандартный поток ввода stdin (для чтения удобно использовать С-функции fread или scanf) в аналогичном методу GET формате, причем количество байт в stdin передается CGI-программе через переменную среды с именем CONTENT_LENGTH

Дата добавления: 2015-09-14 ; просмотров: 1311 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

Краткий обзор технологий для Интернет-приложений

Настоящая статья адресована главным образом пользователям Интернета; ее цель — осветить некоторые современные Интернет-технологии с точки зрения их потребителя. Впрочем, как показывает практика, знание подобных вопросов необходимо и некоторым начинающим разработчикам.

10-15 лет назад большинство Web-сайтов представляло собой набор статических HTML-страниц. Сегодня подобные сайты по-прежнему встречаются — нередко именно так выполнены небольшие персональные Web-сайты, а также сайты небольших компаний, не претендующие ни на что, кроме размещения относительно небольшого объема редко меняющейся информации. Отметим, однако, что в процессе превращения Интернета из набора информационных ресурсов в инструмент ведения бизнеса технологии создания сайтов существенно изменились — большинство Web-сайтов крупных компаний представляет собой набор приложений, обладающих интерактивностью, средствами персонализации, средствами взаимодействия с клиентами (вплоть до приема заказов и платежей) и партнерами, а нередко — и средствами интеграции с «внутренними» корпоративными приложениями компании. О средствах создания подобных Web-сайтов чуть более подробно будет рассказано в статье «Продукты для создания корпоративных Интернет-решений» в настоящем номере журнала. В данной статье мы лишь кратко осветим технологии, лежащие в основе современных Web-приложений. Пользователь, имеющий дело с Web-приложениями (а в последнее время — и с Web-сервисами), общается с ними посредством Интернет-клиентов (чаще всего браузеров, но не только их — существуют и другие типы клиентских приложений, например чат-клиенты). Поэтому уместно отдельно поговорить о том, что может применяться в клиентских приложениях, а что — на Web-серверах.

Технологии, применяемые в Web-клиентах

дним из направлений развития Web-приложений стало размещение некоторой части логики приложения (такой как проверка корректности вводимых данных) в самом Web-клиенте, например в Web-браузере. В частности, современные Web-браузеры способны интерпретировать код на скриптовых языках, выполнять Java-апплеты и элементы управления ActiveX, использовать другие дополнения, такие как Macromedia Flash Player. Рассмотрим все эти возможности браузеров подробнее.

Скриптовые языки

Большинство современных Web-браузеров способно интерпретировать код на скриптовых языках, таких как VBScript и JavaScript. Код на этих языках внедряется в Web-страницу и интерпретируется браузером. Типичный пример применения скриптовых языков — проверка корректности данных, вводимых пользователем в соответствующие поля HTML-формы, непосредственно в процессе ввода или после него, без обращения к Web-серверу. Подобные примеры применения скриптовых языков можно обнаружить при заполнении некоторых анкет и получении сообщений о том, что не заполнены обязательные поля (справедливости ради отметим, что далеко не все анкеты реализованы подобным образом).

Илон Маск рекомендует:  Dos fn 36h дать свободную память диска

Однако есть и другие примеры применения скриптовых языков, реализующие как чисто дизайнерские идеи, например кнопки, меняющие свой вид при наведении на них курсора, «бегущие строки», так и иную функциональность, например внедренные в Web-страницы средства обращения к поисковым системам, отображение диалоговых панелей, управление другими объектами, встроенными в Web-страницу (например, Java-апплетами или элементами управления ActiveX, о которых будет рассказано ниже).

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

Java-апплеты

Практически все современные браузеры способны отображать и выполнять Java-апплеты — специальные Java-приложения, которые пользователь получает в составе Web-страницы. Эти приложения нередко включаются в состав Web-страниц с целью добавления функциональности, которую сложно или невозможно реализовать с помощью скриптовых языков. Апплеты могут выполняться на всех платформах, для которых доступна виртуальная Java-машина.

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

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

Элементы управления ActiveX

Некоторые из современных браузеров (в частности, Microsoft Internet Explorer) могут служить контейнерами для элементов управления ActiveX — специальных COM-серверов, выполняющихся в адресном пространстве браузера и также получаемых в составе Web-страницы.

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

Естественно, Microsoft Internet Explorer обладает средствами ограничения возможностей выполнения элементов управления ActiveX, в том числе управления ими из кода на скриптовых языках. Однако для контроля безопасности их выполнения имеется еще одно средство, называемое электронной цифровой подписью. Цифровая подпись помещается внутрь элемента управления ActiveX, для чего требуется наличие соответствующего электронного сертификата. Электронная подпись, помимо сведений о фирме-производителе, содержит и другую полезную информацию. Так, например, если файл с элементом управления ActiveX после добавления электронной подписи был изменен, то об этом будет немедленно сообщено перед запуском такого элемента управления — при добавлении подписи к элементу управления ActiveX происходит вычисление контрольной суммы соответствующего файла. Отметим, однако, что в России в настоящее время нет авторизованных компаний, которые могли бы выдать электронный сертификат международного образца. Естественно, наличие электронного сертификата не гарантирует отсутствия потенциально опасного содержимого, но, по крайней мере, позволяет клиенту установить его источник.

Далее нам следует напомнить банальную истину, которая, как показывает практика, очевидна не для всех наших читателей. При работе с элементами управления ActiveX и Java-апплетами абсолютно бесполезно полагаться на антивирусное программное обеспечение (неважно, клиентское оно или серверное): признаков, характерных для вирусов (таких как способность внедряться внутрь исполняемых файлов и документов), подобные приложения, как правило, не содержат. Можно лишь запретить загрузку или выполнение соответствующего кода либо на уровне настроек браузера, либо на уровне корпоративных или персональных брандмауэров.

Приложения Macromedia Flash

Приложения Macromedia Flash являются сегодня наиболее популярным расширением функциональности Web-браузеров — с их помощью многие Web-дизайнеры придают своим сайтам интерактивность и оригинальность.

Модель безопасности приложений Flash основана на том, что Macromedia Flash Player, как и виртуальная Java-машина, выполняет приложения в ограниченном адресном пространстве, при этом выполняемые приложения не имеют доступа к файловой системе (кроме одного конкретного каталога, используемого Macromedia Flash Player для служебных целей) и другим ресурсам компьютера пользователя; исключение делается для микрофонов и видеокамер, однако пользователь должен дать разрешение на передачу данных, полученных с этих устройств. Доступ к сетевым ресурсам ограничивается доменом, с которого было получено приложение. Отметим, что приложения Flash также могут управляться с помощью кода JavaScript, присутствующего на той же странице. Сам Macromedia Flash Player для Microsoft Internet Explorer является элементом управления ActiveX и использует возможности элементов управления ActiveX для доступа к свойствам приложений Flash из скриптовых языков.

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

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

Технологии создания серверных частей Web-приложений

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

Common Gateway Interface (CGI) — это стандартный интерфейс, позволяющий выполнять серверные приложения, вызываемые через URL. Входной информацией для таких приложений служит содержимое HTTP-заголовка либо тело запроса, в зависимости от применяемого протокола. CGI-приложения генерируют HTML-код, который возвращается браузеру. Отметим, что в свое время широко использовался и термин «CGI-скрипт», происхождение которого объясняется тем, что подобные приложения писались на скриптовых языках типа Perl, выполняющихся, тем не менее, не в браузере, а на сервере. CGI-приложения можно создавать с помощью практически любого средства разработки, генерирующего консольные приложения для операционной системы, под управлением которой функционирует Web-сервер.

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

ISAPI и Apache DSO

Проблему ограниченной производительности Web-приложений, которые выполняются в отдельном адресном пространстве, можно решить, создав приложение в виде библиотеки, загружающейся в адресное пространство Web-сервера и при необходимости остающейся там для обработки последующих запросов от других клиентов; естественно, в этом случае Web-сервер должен поддерживать загрузку таких библиотек. Подобные приложения для Microsoft Internet Information Servise носят название ISAPI (Internet Server Application Program Interface), а для весьма популярного Web-сервера Apache такие библиотеки называются Apache DSO (Dynamic Shared Objects). Отметим, однако, что при создании как CGI-, так и ISAPI-приложений было довольно сложно отделить задачи Web-дизайна от задач, связанных с реализацией функциональности и логики приложений, — подобные приложения генерируют Web-страницы целиком, поэтому все данные, связанные с дизайном этих страниц, должны в общем случае содержаться внутри исполняемого файла.

ASP, JSP, PHP

Очередной шаг в развитии технологий создания Интернет-приложений — появление средств, позволяющих отделить задачи Web-дизайна от задач, связанных с реализацией функциональности приложений. Первой из таких технологий стала Active Server Pages (ASP), построенная на основе ISAPI-фильтра. Основная идея ASP заключается в создании Web-страниц с внедренными в них фрагментами кода на скриптовых языках. Однако, в отличие от рассмотренных выше средств применения скриптовых языков для расширения функциональности браузеров, указанные фрагменты кода интерпретируются не браузером, а сервером (точнее, предназначенной для этого ISAPI-библиотекой), и результат выполнения этих фрагментов кода замещает сам фрагмент кода в той версии страницы, которая передается в пользовательский браузер. Вскоре после ASP появились и другие технологии, реализующие идею размещения внутри Web-страницы кода, выполняемого Web-сервером. Наиболее известной из них сегодня является технология JSP (Java Server Pages), основная идея которой — однократная компиляция Java-кода (сервлета) при первом обращении к нему, выполнение методов этого сервлета и помещение результатов выполнения этих методов в набор данных, отправляемых в браузер. Еще одной популярной технологией подобного типа является PHP (Personal Home Pages), которая использует CGI-приложения, интерпретирующие внедренный в HTML-страницу код на скриптовом языке.

ASP .NET

Новейшей версией технологии Active Server Pages является ASP .NET, ключевая в архитектуре Microsoft .NET Framework. Основное отличие этой технологии от ASP с точки зрения архитектуры приложений заключается в том, что код, присутствующий на Web-странице, не интерпретируется, а компилируется и кэшируется, что, естественно, способствует повышению производительности приложений.

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

В общем случае клиентом Web-сервера может быть не только персональный компьютер, оснащенный обычными Web-клиентами (например, Web-браузером), но и мобильные устройства, отличающиеся ограниченным размером экрана, малым объемом памяти, а нередко и невозможностью отображения графики. Для этих устройств существуют свои протоколы передачи данных (Wireless Access Protocol, WAP) и соответствующие языки разметки (WML, Wireless MarkupLanguage, СHTML, Compact HTML и т.п.). При этом необходимо передавать данные на мобильное устройство в соответствующем формате, для чего нередко создаются специальные сайты (например, поддерживающие WAP и WML). Более удобным представляется создание приложений, которые способны генерировать тот или иной код в зависимости от типа клиента. Именно такой подход и реализован в Microsoft ASP .NET.

Несколько слов о серверах приложений

С ростом объема используемых данных и числа посетителей Web-сайтов возрастают требования к надежности, производительности и масштабируемости Web-приложений. Для удовлетворения этим требованиям бизнес-логика, реализованная в Web-приложении, а также сервисы обработки данных и реализации транзакций, отделяются от интерфейса приложений и переносятся на сервер приложений в виде бизнес-объектов. Серверы приложений и соответствующие бизнес-объекты могут быть различного типа (наиболее распространенными из них сегодня являются серверы, поддерживающие спецификацию Java2 Enterprise Edition, и серверы, базирующиеся на технологиях COM и Microsoft .NET). Впрочем, рассмотрение серверов приложений выходит за рамки данной статьи…

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

Web-сервисы

Говоря о серверных Web-технологиях, нельзя обойти вниманием такую важную, как Web-сервисы XML. На Web-сервисы XML в настоящее время нередко возлагается решение многих задач, связанных с интеграцией приложений, в том числе созданных на разных платформах. Создавать Web-сервисы можно и в виде исполняемых файлов, и в виде библиотек, и в виде интерпретируемого кода; существуют также средства представления бизнес-объектов в виде Web-сервисов. Методы Web-сервисов можно вызывать из обычных приложений, Web-приложений и других Web-сервисов, и, за редким исключением, конечные пользователи непосредственно с Web-сервисами дела не имеют. Тем не менее в последнее время отмечается массовое появление приложений, использующих Web-сервисы, в том числе и приложений, предназначенных для конечных пользователей.

Заключение

данной статье мы обсудили наиболее популярные технологии, применяемые при создании Web-приложений, а именно: средства расширения функциональности браузеров, такие как скриптовые языки, элементы управления ActiveX, Java-апплеты и приложения Macromedia Flash, а также технологии создания серверных Web-приложений, такие как CGI, ISAPI, ASP, JSP, PHP, ASP .NET.

Сервер интерфейса прикладного программирования Интернет — Internet Server Application Programming Interface

Программирование Internet Server Application Interface ( ISAPI ) представляет собой N-уровня API в Internet Information Services (IIS), Microsoft коллекции «s из Windows сервисов веб — сервера -На. Наиболее видным применение IIS и ISAPI является Microsoft, веб — сервер .

ISAPI также была реализована с помощью Apache «s mod_isapi модуль таким образом , чтобы веб — приложения на стороне сервера , написанные для IIS от Microsoft может использоваться с Apache и другие сторонние веб-серверы , как Zeus Web Server , интерфейсы предлагают ISAPI.

Microsoft веб — сервер приложений программного обеспечения «s называется Internet Information Services , которая состоит из ряда„вспомогательных приложений“и очень хорошо настраивается. ASP.NET является одним из таких ломтика IIS, позволяя программисту писать веб — приложения в выборе языка программирования ( VB.NET , C # , F # ) , который поддерживается Microsoft .NET CLR . ISAPI представляет собой систему программирования значительно ниже уровня, что дает гораздо более высокую производительность, за счет простоты.

содержание

ISAPI приложения

ISAPI состоит из двух компонентов: расширений и фильтров. Это единственные два типа приложений, которые могут быть разработаны с использованием ISAPI. Оба фильтры и расширения должны быть скомпилированы в DLL файлы, которые затем зарегистрированы в IIS для запуска на веб-сервере.

ISAPI приложения могут быть написаны на любом языке , который позволяет экспортировать стандартные функции C, например , C, C ++, Delphi. Есть несколько доступных библиотек , которые помогают облегчить разработку ISAPI — приложений, а также в Delphi Pascal компоненты IntraWeb для разработки веб-приложений. MFC включает в себя классы для разработки ISAPI — приложений. Кроме того, есть сервера ATL технология , которая включает в себя библиотеку C ++ , посвященную разработке ISAPI — приложений.

расширения

Расширения ISAPI истинные приложения , которые работают на IIS. Они имеют доступ ко всем функциональным возможностям, обеспечиваемой IIS. Расширения ISAPI реализуются как библиотеки DLL , которые загружаются в процесс , который управляется IIS. Клиенты могут получить доступ расширения ISAPI таким же образом , они получают доступ к статической HTML — страницы. Некоторые расширения файлов или полный каталог или сайт может быть сопоставлено быть обработано с помощью расширения ISAPI.

фильтры

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

Фильтры реализованы в виде библиотек DLL и могут быть зарегистрированы на сервере IIS на уровне сайта или глобальном уровне (то есть, они применяются ко всем узлам на сервере IIS). Фильтры инициализируются, когда рабочий процесс запущен и слушает все запросы к сайту, на котором он установлен.

Общие задачи, выполняемые ISAPI фильтры включают в себя:

  • Изменение данных запроса (URL или заголовки), отправленные клиентом
  • Контроллинг, какой физический файл будет отображен в URL
  • Управление имени пользователя и пароля, используемое с анонимной или базовой аутентификацией
  • Изменение или анализ запроса после завершения проверки подлинности
  • Изменение ответа, уходящий к клиенту
  • Выполнение пользовательской обработки на «отказано в доступе» ответы
  • Запуск обработки, когда запрос завершен
  • Выполнить обработку, когда соединение с клиентом закрывается
  • Выполнение специального протоколирования или анализа трафика.
  • Выполнение пользовательской аутентификации.
  • Обработка шифрования и сжатия.

Общие приложения ISAPI

Это список распространенных приложений ISAPI, реализованные в виде расширений ISAPI:

  • Активные серверные страницы (ASP), установленные в стандартной комплектации
  • ActiveVFP , Active Visual FoxPro установлен на IIS
  • ASP.NET , устанавливается как стандарт на IIS 6.0 года
  • ColdFusion , более поздние версии ColdFusion являются устанавливаемыми на IIS
  • Perl ISAPI (ака Perliis), можно бесплатно установить для
  • PHP , доступен для свободной установки, больше не поддерживается.

Разработка ISAPI

ISAPI приложение может быть разработано с помощью любого средства разработки , которые могут генерировать Windows , DLL. Мастера для создания каркасного ISAPI приложения были доступны в инструментальных средствах разработки Microsoft , так как Visual C ++ 4.0.

Серверные расширения CGI и ISAPI

Языки JavaScript, VBScript и PerlScript

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

С этой целью был разработан (фирма Netscape Communication Corp., первоначальное название LiveScript) язык JavaScript (не имеющий прямого отношения к Java), язык JavaScript является средством создания активных WEB-страниц непрофессионалами. Фирма MS реализовала в своем броузере MSIE поддержку языка JScript (весьма близкому к JavaScript), давняя приверженность главы MS к Basic’у привела к включению в упомянутый броузер поддержку языка VBScript (по возможностям близкого JavaScript). Так же как и Java, программы на JavaScript и VBScript позволяют не только создавать активные (изменяющиеся предсказанным образом в процессе работы) WEB-страницы, но и снижают поток данных между рабочей станцией и сервером WEB (что благоприятно сказывается на скорости реакции сервера).

Ниже показан HTML-сценарий с встроенным кодом на JavaScript

Динамическое создание WEB-страницы

JavaScript test

Здесь код на JavaScript заключен между тегами и вызывает метод write объекта document, причем метод (по умолчанию) вызывается при загрузке HTML-файла броузером, что приводит к генерации соответствующего текста (и, соответственно, индикации его в окне броузера).

Илон Маск рекомендует:  Определение наличия flash plugin'а средствами html

Язык JavaScript позволяет связать вызов конкретной функции с некоторым событием (загрузкой или выгрузкой файла, перемещением указателя ‘мыши’ над заданным участком окна броузера, щелчком кнопки ‘мыши’ над графическим объектом и др.), что позволяет придать WEB-странице определенную ‘интеллектуальность’.

Например, следующий фрагмент HTML-сценария связывает вызов JavaScript-процедуры MakeOnLoad с загрузкой файла в броузер, а процедуры MakeOnUnload — с выгрузкой (например, в связи с переходом к следующей странице).

Следующий пример сценария служит для выдачи окна запроса с двумя кнопками — ‘Ok’ и ‘Cancel’ (при щелчке левой кнопкой ‘мыши’ по выделенному словосочетанию-ссылке ‘Желаете выгрузить’) и совершения некоторого действия (в данном случае выгрузки файла OMD.RAR на компьютер клиента) при положительном ответе

if (confirm(‘Вы действительно желаете выгрузить на свой ‘ +

‘компьютер файл OMD.RAR размером аж 330 kb ?’))

Желаете выгрузить на Ваш компьютер пакет OMD ?

В языке JavaScript определены функции работы с числами, строками, массивами, определения типа броузера, анализа и изменения содержимого WEB-страниц, диалога с пользователем, обработки данных форм (перед отсылкой на сервер), взаимодействия с апплетами Java и др., поддерживается обьектно-ориентированный подход. Для отладки JavaScript-сценариев предлагается отладчик MS Script Debugger.

Язык VBScript в целом обладает сходными с JavaScript возможностями, но имеет Basic-подобный синтаксис и поддерживается только броузером MSIE.

Желающим более подробно ознакомиться с концепциями и языком JavaScript рекомендуются опубликованные работы и ресурсы Сети, некоторые (несложные) конструкции JavaScript можно выгрузить (в составе HTML-сценариев) с сайта автора http://pilger.mgapi.ru. Более серьезные примеры JavaScript-приложений можно получить с адресов

В отличие от Java, коды JavaScript и VBScript практически безопасны с точки зрения совершения несанкционированных действий на компьютере пользователя.

Некоторые WEB-броузеры (например, MSIE версий выше 4) способны интерпретировать встроенный в HTML-код язык PerlScript. Часто вместо создания полномасштабной CGI-программы возможно ограничиться внедрением текста на PerlScript в WEB-страницу (ниже приведен пример простейший HTML-страницы с выводом строки посредством PerlScript-кода).

My first PerlScript example

PerlScript example

Серверные расширения CGI и ISAPI

Серверные расширения CGI (Common Gateway Interface — стандартный шлюзовый интерфейс) и ISAPI (Internet Server API, также NSAPI — Netscape Server API) предназначены для запуска внешних программ под управление WEB-сервера; внешняя программа получает информацию через протокол HTTP от удаленного пользователя, обрабатывают ее (например, осуществляют SQL-запрос к базе данных) и возвращают результат обработки обратно в виде ссылки на существующий HTML-документ или в виде динамически созданной HTML-страницы.

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

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

· Данные поступают на сервер и обрабатываются (возможно, весьма изощренными) приложениями CGI или ISAPI.

· CGI/ISAPI-приложение генерирует (обычно динамически) HTML-документ (файл) и пересылает его обратно удаленному пользователю (где этот документ интерпретируется и визуализируется броузером).

Ниже приведен пример HTML-кода простой формы с двумя полями ввода (имена полей ‘text1’ и ‘text2’) и кнопкой для отсылки сообщений серверу

Образец простейшей формы

На рис.7.12 показано отображение этой формы броузером (хорошо видны два поля ввода и кнопка отсылки введенных в эти поля данных на сервер).

Параметр ACTION описания формы определяет действие, выполняющееся над присланной на сервер информацией (в данном случае указан путь к программе CGI, которая будет выполнять обработку данных). Параметром METHOD выбирается один из двух методов передачи данных серверу WWW — при значении этого параметра GET указанная в параметре ACTION программа CGI получит данные из формы через переменную среды с именем QUERY_STRING, в случае METHOD=POST программа CGI получит данные из формы через стандартный поток ввода stdin.

С целью использования языков программирования, не поддерживающих (в явном виде) стандартных потоков ввода и вывода (например, Pascal) разработана спецификация WinCGI, согласно которой в передаче данных используются привычные для Windows инициализационные файлы [5].

Возможна прямая посылка серверу строки QUERY-STRING в соответствие со следующим URL (через знак вопроса после имени обрабатывающей запрос CGI-программы указывается пересылаемая строка)

При использовании METHOD=GET данные формы поступают на сервер в виде значения переменной среды QUERY_STRING в следующем формате:

Имя1=Значение1&Имя2=Значение2&Имя3=Значение3

Здесь в качестве имен используются значения параметров NAME формы, вместо значений подставляются данные из соответствующих именам полей. Программа CGI должна просканировать содержимое текстовой строки переменной cреды QUERY_STRING и по имени поля найти нужное значение, введенное в это поле пользователем. Адрес заданной строки переменной среды в программе легко получить с помощью C-функции getenv

Передаваемая в переменной среды QUERY_STRING строка закодирована с использованием т.н. кодировки URL (символы пробелов заменяются на символ ‘+’, для представления кодов управляющих и некоторых других символов используется конструкция вида %xx, где хх — шестнадцатиричный код символа в виде двух ASCII-символов); CGI-программа должна выполнить обратную перекодировку.

Рисунок 7.12 — Отображение простейшей формы броузером.

При использовании METHOD=POST программа CGI получает данные из формы через стандартный поток ввода stdin (для чтения удобно использовать С-функции fread или scanf) в аналогичном методу GET формате, причем количество байт в stdin передается CGI-программе через переменную среды с именем CONTENT_LENGTH:

Size = atoi(getenv(«CONTENT_LENGTH»)); // получить длину строки

fread(szBuf, Size, 1, stdin); // прочитать полученные данные

Метод GET применяется относительно редко (длина строки QUERY_STRING ограничена), метод POST более предпочтителен.

Вне зависимости от примененного метода передачи данных (GET или POST) результат своей работы программа CGI должна направлять в стандартный поток вывода stdout (при этом WWW-сервер гарантирует возврат данных броузеру локального компьютера). Ниже приведен пример динамической генерации CGI-программой документа HTML и направления его на stdout

printf(«Content-type: text/html\n\n»); //упрощенный пролог HTML

My first dinamic HTML-page

Результаты обработки данных формы:

После получения возвращаемых HTML-данных они интерпретируются броузером. При нежелании генерировать сложный HTML-код подобным (весьма кропотливым) образом можно применить метод создания шаблона HTML-файла с последующей программной его модификацией и записью в stdout.

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

Заметим, что с помощью CGI-программ легко реализуются, например, счетчики числа посещений страниц; в качестве языка программирования CGI-программ часто используют интерпретатор языка Perl (Practical Extraction and Report Language, иногда в шутку Pathologically Eclectic Rubbish Lister, см. InterNet-адреса www.perl.com, http://www.cpan.org, http://orwant.www.media.mit.edu/the_perl_journal, http://www.tpj.com), хотя может быть применен практически любой язык программирования (особенно удо­бен C/C++).

Недостатком приложений CGI является то, что для обработки каждого запроса WWW-сервером он запускает новое CGI-приложение (новый процесс), а т.к. современные сервераодновременно могут обрабатывать много запросов, ресурсы машины-сервера (например, объем оперативной памяти) быстро истощаются (не говоря уже о снижении производительности сервера). От подобного недостатка свободен метод ISAPI, основанный на обработке запросов динамически загружаемыми (из DLL-библиотек) функциями (недостаток — т.к. ISAPI-расширение выполняется в том же адресном пространстве, что и сам WEB-сервер, критическая ошибка ISAPI-приложения обычно вызывает крах сервера). В отличие от CGI, ISAPI-приложение получает данные не из стандартного потока, а с помощью специально предназначенной для этого функции интерфейса ISAPI; вместо стандартного потока вывода также применяется специальная функция.

Некоторые сервера (например, Apache) содержат встроенный Perl, при этом для каждого поступающего CGI-запроса сервер создает новый поток (вместо нового процесса); это значительно ускоряет выполнение CGI-запросов указанным сервером. Для работы под Windows’NT разработаны (см. http://www.activeware.com) пакеты PerlScript (разработка сценариев ActiveX) и PerlIS (динамически вызываемая библиотека ISAPI-интерфейса.

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

При использования метода ISAPI имя соответствующего DLL-файла описывается в параметре ACTION формы (аналогично CGI), также описывается параметр METHOD, однако сами присланные на сервер данные могут быть получены с помощью специально зарезервированных функций GetServerVariable (чтение значений переменных среды) и ReadClient (собственно чтение присланных данных), отсылка же данных (как и при использовании CGI, обычно в виде динамически создаваемых HTML-файлов) производится функциями WriteClient и ServerSupportFunction.

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

Мощным средством для упрощения процесса реализации функциональности и расширения возможностей технологии CGI является язык PHP/FI (Персональные инструментальные средства для Домашней Страницы / Интерпретатор Форм), предложения которого встраиваются непосредственно в текст HTML-страницы и выполняются процессом, инициализированным сервером (обычно Apache). PHP существенно упрощает обработку запросов от форм и анализ SQL-запросов, допускает добавление пользовательских функций (обычно написанных на C). Использование PHP повышает эффективность обработки запросов (CGI-программа не стартует, PHP-код выполняется одним из серверных процессов), при этом повышается уровень защиты данных и конфигурируемость серверного ПО. Первым признаком того, что страница обрабатывается PHP, является добавление нижнего колонтитула с информацией о количестве обращений к данной странице (если программа скомпилирована с опцией регистрации доступа).

Windows 7 x64, IIS, ISAPI и DataSnap XE2 в картинках.

Сегодня решил немного побаловаться с DataSnap XE2, разработать небольшую ISAPI-dll и посмотреть как всё это будет работать под управлением моей Windows 7 x64. Надо сказать, что простейший примерчик такого приложения собрался и заработал почти без проблем. Как Вы наверняка знаете, наиболее часто для выполнения операций на сервере используется интерфейс CGI, CGI-скрипты и т.д. Однако компания Microsoft в свое время предложила свой вариант исполнения серверных программ, который называется ISAPI (Internet Server API). В первую очередь ISAPI предназначался для подключения к web-серверу Microsoft под названием Internet Information Server (IIS). Программы ISAPI представляют собой давно известные нам динамически загружаемые библиотеки DLL, которые вызываются Web-сервером, загружаются в память и становятся как бы частью этого Web-сервера, расширяя или изменяя его функциональность. Сейчас для сервера Apache (самого популярного web-сервера) имеется модуль mod_isapi.dll, который позволяет запускать ISAPI-dll. Вообще, если рассуждать о популярности того или иного веб-сервера, то лучше всего начать с посещения вот этого сайта, но мы сегодня не об этом и даже не о том кто круче/быстрее/удобнее IIS или Apache, а о том как написать программку, которая заработает под управлением IIS 7.5 в Windows 7 x64.

Содержание статьи:

Начнем с того, что настроим наш web-сервер IIS.

Установка и настройка IIS в Windows 7

проходит следующим образом: 1. Заходим в «Панель управления -> Программы и компоненты» и выбираем «Включение или отключение компонентов Windows»: 2. В открывшемся окне ищем «Службы IIS» и выбираем следующие необходимые компоненты для установки. Т.к. мне сегодня пришлось достаточно много экспериментировать с IIS, то мой список установленных компонентов оказался таким: 3. Жмем «Ok» и терпеливо ожидаем окончания установки. На этом шаге установка IIS завершена и можно приступать к настройке web-сервера, созданию и тестированию сайта. И здесь может проявиться то самое «почти» без которого я бы мог в начале поста сказать, что «примерчик такого приложения собрался и заработал почти без проблем«. Итак: 4. Заходим в «Панель управления -> Администрирование» и находим там «Диспетчер служб IIS«: Вот здесь и настраивается будущий сайт. По умолчанию, после установки компонентов у Вас на диске C:\\ появится дирректория c:\inetpub\ в которой будут храниться служебные файлы сервера и файлы сайта(-ов), с которыми вы будите работать. При установке в диспетчере уже будет находится один дефолтный сайт, но мы, для порядка создадим свой. 5. В дереве «Подключения» выбираем узел «Сайты», вызываем контекстное меню и выбираем «Добавить веб-сайт…»: 6. В открывшемся окне задаем настройки нашего сайта. На рисунке ниже показаны, которые практически не отличаются от дефолтных (различается только название сайта и его физическое расположение): Теперь в дереве подключений у Вас появился новый сайт «DataSnapSite» который по-идее должен бы запускаться с URL ‘http://localhost’, но, как оказалось, происходит это не всегда: Покопался по Сети в поисках ответа. Оказалось, что у кого-то сайт с такими настройками, как показано выше, работал без проблем, у других — через раз возникали проблемы с ASP.NET у кого-то, как и у меня, сайт вообще не открывался. Может причина в версии IIS, а может и нет, но для себя я нашел два возможных варианта решения этой проблемы: вариант 1: смотрим приложения, которые «слушают» 80-й порт — это могут быть Skype, TeamViewer и другие программки, работающие с сетью. Отключаем эти программы, перезагружаем IIS и снова пробуем зайти на сайт в браузере. вариант 2: если первый вариант не помог, то идем в IIS диспетчере в «Подключения», выбираем наш сайт и меняем ему привязку, на, например, вот такую: можете также, если необходимо, сменить и порт. После этого сайт должен заработать — можете бросить в корневую директорию сайта файлик index.html и посмотреть на него в браузере: Сайт заработал и на текущем этапе работы нам этого будет достаточно. Мы ещё вернемся к работе с диспетчером IIS и посмотрим, какие ещё возможные проблемы могут возникнуть, а пока идем в Delphi и создаем наше первое приложение ISAPI с DataSnap XE2.

Создаем заготовку ISAPI DLL

Запускаем Delphi и выбираем «File -> New -> Other -> DataSnap Server -> DataSnap WebBroker Application«: В первом шаге помощника выбираем третий пункт — «ISAPI dynamic link library» и жмем Next: На втором и третьем шаге можно оставить все установки по умолчанию. В итоге в менеджере проектов появится новый проект с таким содержанием: ServerMethodsUnit1, как уже понятно из названия будет содержать серверные методы, а модуль WebModule1 содержать компоненты, которые с помощью которых наша ISAPI-dll станет сервером DataSnap и модуль будет выглядеть вот так: Можно сказать, что уже то, что было сделано с использованием помощника — это уже готовая к использованию DLL. Но, пока не будем сильно спешить, а посмотрим на содержимое нашей DLL. Открываем исходный код библиотеки и видим, что наша DLL экспортирует три метода:

ISAPI DLL: их разработка и использование (ч.1)

Чаще всего для выполнения каких-либо операций на сервере используется интерфейс CGI и CGI-программы, либо CGI-скрипты. Компания Microsoft, как всегда, предложила свой вариант исполнения серверных программ, который называется стандарт ISAPI. И в первую очередь он предназначался для подключения к ведущему Web-серверу Microsoft — Internet Information Server. Программы, написанные по этому стандарту, представляют собой давно известные нам динамически загружаемые библиотеки DLL, которые вызываются Web-сервером, загружаются в память и становятся как бы частью этого Web-сервера, расширяя или изменяя его функциональность.

В ответ на вызов Microsoft компания Netscape разработала свой стандарт NSAPI для своего Web-сервера. Так что война броузеров теперь дополнилась войной серверов. Для программиста же нет принципиальной разницы под какой стандарт разрабатывать dll. Компилятор Delphi (а именно на разработку DLL в среде Delphi сделан акцент в этой статье) сам выполняет всю черновую работу за вас.

Откомпилированная dll помещается в тот же каталог скриптов (SCRIPTS или CGI-BIN) на Web-сервере, куда выкладываются обычно прочие серверные скрипты. Вызов на исполнение этой dll выглядит так же, как и вызов на исполнение любого другого серверного приложения/скрипта. Вот как, например, выглядит запрос на запуск некой программы format.dll:

Преимущества ISAPI — в скорости выполнения операций. Программа загружается всего один раз и остается в памяти до тех пор, пока ее не выгрузят насильно или пока не остановят Web-сервер. Поэтому ISAPI-dll работает быстрее, чем обычная CGI-программа (которая должна всякий раз загружаться и выгружаться) или скрипт (который сначала должен загружаться, потом обрабатываться интерпретатором, которому тоже нужно время загрузиться). Основные недостатки — трудности при отладке, незамеченная ошибка может привести к зависанию не только самой dll, но и Web-сервера, частью которого она является. Самый главный недостаток — непереносимость. Если Perl-скрипт может выполняться как на UNIX платформе, так и на Windows-платформе, то dll, сами понимаете, намертво привязана к Windows.

Впрочем некоторые из этих трудностей можно побороть.

Как ни странно, но ISAPI-dll может работать не только под IIS (для которого и затевался весь сыр-бор), но и под бесплатным сервером Apache. Хочется сразу предупредить о глюке, с которым вы можете столкнуться при разработке ISAPI-dll в среде Delphi.

Дело в том, что при запуске вашей dll Apache вызывает главную функцию GetExtensionVersion и проверяет ее выполнение на True/False в ожидании, что ему вернется значение 1 или 0. А в Delphi значение True выражается не 1, а -1. В результате ваша ISAPI-dll, будет прекрасно работать под IIS, но ни за что не заработает под Apache, выдавая сообщение:

No such file or directory: ISAPI GetExtensionVersion() failed

Решение таково: вам надо взять исходные тексты Apache и внести в них маленькое изменение в файле mod_isapi.c:

Строку заменить на

и заново скомпилировать Apache.

Не так все страшно, как кажется. Моих скромных навыков хватило, чтобы установить Visual C++ 6.0, открыть в нем проект, отыскать нужную строчку, перекомпилировать все и получить работающий Apache. Если это смог сделать я, сможете и вы. Если вы вообще не разбираетесь в С, попросите сделать это знакомого программиста.

Asp разработка производительных приложений isapi

Подобно CGI, спецификация ISAPI (Internet Server Application Programming Interface) определяет правила взаимодействия между Web-сервером и дополнительны­ми программами. Для того чтобы понять, зачем понадобился альтернативный подход к созданию программ, выполняющихся на сервере, поговорим о преимуществах и не­достатках стандарта CGI.

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

Илон Маск рекомендует:  Что такое код free pascal

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

Стремление повысить производительность и снизить затраты ресурсов привело к созданию корпоративных стандартов. Наиболее известными из них являются NSAPI и ISAPI.

Основное отличие ISAPI-программы от CGI-сценария состоит в том, что ISAPI-программа представляет собой не исполняемый файл, а динамическую библиотеку (DLL). Благодаря этому появилась возможность запускать программу не как отдель­ный процесс, а как поток, принадлежащий Web-серверу. Для выполнения потока тре­буется значительно меньше ресурсов, чем для работы независимого процесса. Поток использует адресное пространство породившего его процесса и работает намного бы­стрее, чем отдельный процесс.

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

Однако иногда преимущества ISAPI-программ оборачиваются недостатками. (Это не удивительно. Ведь если бы ISAPI-программы были свободны от недостатков, они бы быстро вытеснили CGI-сценарии.)

Если за универсальность CGI-сценариев пришлось платить недостаточной произ­водительностью, то в качестве платы за высокую производительность создатели ISAPI-программ жертвуют универсальностью. Арсенал языков, имеющихся в распо­ряжении разработчиков ISAPI-программ, значительно беднее, чем у их коллег, соз­дающих CGI-сценарии. По сути, тому, кто хочет быстро написать достаточно боль­шую ISAPI-программу, не остается иного выбора, кроме C++.

Второй недостаток ISAPI гораздо серьезнее первого. Поскольку программа данного типа выполняется как поток, порожденный сервером, она использует адресное про­странство сервера. Следовательно, ошибка ISAPI-программы может не только вызвать ее аварийное завершение, но и вывести из строя сервер.

Программы, использующие спецификацию ISAPI, делятся на две категории.

* Расширения. Функционально они мало чем отличаются от CGI-сценариев. По­добно CGI-сценариям, расширения реализуют дополнительные возможности Web-сервера, но строятся совершенно по-другому. Рассмотрению ISAPI-расширений посвящена данная глава.

* Фильтры. Это особый класс программ. Если расширения дополняют возможно­сти Web-сервера, то фильтры изменяют его поведение. Принцип работы и реа­лизация ISAPI-фильтров будут рассмотрены в следующей главе.

ISAPI-расширение представляет собой динамическую библиотеку (DLL), которая связывается с Web-сервером в процессе его работы. В данной библиотеке должны экспортироваться, т.е. быть доступными для вызова, две функции: GetExtensionVersion() и HttpExtensionProcf).

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

В отличие от расширения, которое вызывается лишь тогда, когда в запросе клиента явно указан URL программы, ISAPI-фильтр получает управление при каждом обра­щении клиента к серверу. Программа-фильтр загружается в память при запуске Web-сервера и остается резидентной в течение всего времени работы сервера.

Язык программирования Perl

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

Perl был создан в 1986 году как инструмент для администрирования и конфигурирования системных ресурсов сети, состоящей из Unix-компьютеров. Он сочетает в себе лучшие черты C, shell, sed и awk, поэтому для тех, кто знаком с ними, изучение Perl-а не представляет особого труда. Cинтаксис выражений Perl-а близок к синтаксису C. В отличие от большинства утилит ОС UNIX Perl не ставит ограничений на объем обрабатываемых данных и если хватает ресурсов, то весь файл обрабатывается как одна строка. Рекурсия может быть произвольной глубины. Хотя Perl приспособлен для сканирования текстовых файлов, он может обрабатывать так же двоичные данные и создавать .dbm файлы, подобные ассоциативным массивам. Perl позволяет использовать регулярные выражения, создавать объекты, вставлять в программу на С или C++ куски кода на Perl-е, а также позволяет осуществлять доступ к базам данных.

Язык Perl был создан для повышения эффективности обработки текстовых документов. Он ориентирован на обработку строк. В настоящее время язык получил большое распространение как инструмент создания исполняемых модулей WWW-сервера. Существующие пакеты расширения обеспечивают доступ к SQL-серверам непосредственно из Perl-программы. Это позволяет использовать его для решения всех задач, возникающих при обеспечении WWW-доступа к базам данных. Perl эффективен также при обработке произвольных структур данных: существующих отчетов, списков, карточек в электронном виде.

Хотя CGI-приложения можно писать практически на любом языке, Perl и CGI-программирование стали синонимами для многих програм­мистов. Как сказал Хасан Шрейдер (Hassan Shroeder), первый вебмастер Sun, «Perl — это артерия Интернета». Perl — самый широко исполь­зуемый язык для CGI-программирования, и для этого есть много веских причин:

• Perl легко выучить: его синтаксис напоминает другие языки (например С), потому что он «многое прощает», — при ошибке выда­ется подробное сообщение, помогающее быстро локализовать про­блему.

• Perl способствует быстрой разработке, так как это интерпретируе­мый язык; исходный код не надо компилировать перед запуском.

Asp разработка производительных приложений isapi

Работа добавлена: 2020-01-09

28​. Основные принципы построения web-приложений. Основные требования, предъявляемые к web-приложениям.

Web-приложения (веб-приложения, Web-application) — вспомогательные программные средства, предназначенные для автоматизированного выполнения действий на Web-серверах. Они используют в качестве пользовательских интерфейсов Web-браузеры. Обычно Web-приложения создаются в разных вариантах архитектуры клиент-сервер. К числу средств создания Web-приложений относятся ISAPI, CGI, ASP, JSP, WAP. За годы существования WWW состав Web-приложений, выполняемые ими функции, принципы и архитектура их построения претерпели значительные изменения — от простейших средств хранения HTML-страниц до решений, ориентированных на поддержку работы корпоративными информационных систем и их партнеров. Виды Веб-приложений и технологий их создания:

AJAX (AsynchronousJavaScriptand XML) — подход к построению пользовательских интерфейсов Web-приложений, при котором в ответ на каждое действие пользователя Web-страница на его браузере, не перезагружается полностью — с Web-сервера только догружаются нужные ему данные. Этим обеспечивается оперативная работа как одного, так и групп пользователей с приложениями. AJAX представляет собой не одну, а группу технологий и базируется на принципах использования DHTML для динамичного изменения содержания страницы и использования XMLHttpRequest для обращения к серверу (альтернативный вариант — динамическая подгрузкаJavaScript с использованием объектной модели документа — DOM). С учетом этих принципов можно создавать удобные Web-интерфейсы на тех страницах сайтов, где необходимо активное взаимодействие с пользователями. Популярность AJAX приобрела после того, как компания Google начала применять его при создании Gmail, Googlemaps, Googlesuggest.

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

CGI (CommonGatewayInterface, общий шлюзовой интерфейс) — программа поиска в удаленных БД, переадресации ссылок, использования графических меню, связи с базами данных (путем запуска программы преобразования форматов баз данных в формат языка HTML).

CRM (CustomerRelationshipManagement) — Web-приложения для автоматизации и повышения эффективности процессов, связанных с бизнесом (обработка заказов, маркетинг, обслуживание клиентов). CRM используются в специализированных операторских «контакт-центрах». Первая версия программного продукта Microsoft CRM появилась в 2002 году. Web-сервисы Microsoft CRM реализуются на основе использования SQL-сервера и предусматривают создание основного хранилища данных Microsoft CRM, БД метаданных, БД для построения отчетности и дистрибуционной БД, предназначенной для отслеживания взаимодействия автономных пользователей клиента Outlook с основной БД Microsoft CRM. Использование XML позволяет интегрировать Microsoft CRM с приложениями подобного назначения независимо от языка программирования и операционной системы, под управлением которой работает стороннее приложение (например, SAP R/3). Система предусматривает ограничения доступа и проверку прав доступа клиентов.

ERP (EnterpriseResourcePlanning) — Web-приложения, предназначенные для автоматизации процессов управления внутрихозяйственной деятельностью корпорации, включая управление производством, финансами, снабжением, персоналом.

ISAPI (InternetServerApplicationProgrammingInterface) — интерфейс к серверу Интернета фирмы Microsoft, предназначен для программного управления сервером. ISAPI поддерживается большинством производителей программных средств. ISAPI-программы представляют собой специальный вид приложений, обрабатывающих пользовательские запросы и отображающих их вывод в виде потока HTML, который поступает непосредственно в браузер клиента.

ITRP (IT ResourcesPlanning) — класс Web-приложений, предназначен для поддержки управления корпоративными ИТ-ресурсами и сервисами.

JSP (JavaServerPages) — технология создания Web-приложений, основанная на однократной компиляции Java-кода (сервлета) при первом обращении к нему с последующим выполнением методов этого сервлета и помещением полученных результатов в набор данных, которые отправляются в браузер.

OSS (OperationSupportSystems) — вид Web-приложений, предназначен для обеспечения работы операторов распределенных вычислительных сетей. OSS обеспечивает управление сетью, производительность, ликвидацию сбоев в работе, создание и учет сервисов, планирование сетевых ресурсов, мониторинг процессов, контроль за безопасностью, качество услуг и уровень обслуживания клиентов, сбором статистических данных. Разновидностью OSS является система поддержки бизнеса — BSS (BusinessSupportSystems). К ним относятся биллинговые системы, системы управления взаимоотношениями с клиентами, управления сетями, заказами, качеством услуг.

PHP (PersonalHomePage) — сценарный язык и программное средство для создания Web-страниц. В его состав входит CGI-интерфейс, интерпретатор языка и набор функций для доступа к базам данных и различным объектам WWW. PHP позволяет формировать страницы в режиме интерактивного взаимодействия в системах «клиент-сервер».

Обобщенная архитектура веб-приложения – это модель клиент-сервер, в которой компоненты приложения разделяются на клиентские и серверные, и взаимодействуют компоненты путем передачи и получения пакетов по протоколу HTTP. В качестве клиента выступает веб-браузер, а в качестве сервера – веб-сервер.

Обобщенная архитектура веб-приложения

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

Качество разрабатываемого приложения определяется тем, насколько оно соответствует тем требованиям, которые были заложены на стадии проектировании системы. Все требования к приложениям, в том числе и веб-приложениям, разделяют на функциональные и нефункциональные. Функциональные требования определяют ту функциональность системы, которую разработчики должны построить, чтобы пользователи смогли выполнить свои задачи в рамках своих бизнес-процессов. Нефункциональные требования представляют собой описание характеристик приложения, важных для пользователя при работе с системой. Рассмотрим, какие характеристики задают нефункциональные требования к системе:

  • надежность. Формально, надежность – это свойство приложения сохранять во времени в установленных пределах значения всех параметров, характеризующих способность выполнять требуемые функции в заданных режимах и условиях применения (ГОСТ 27.002-89). Т.е. требования к надежности приложения определяются условиями функционирования приложения (параметры сервера, максимальное количество пользователей приложения) и допустимыми показателями качества работы системы в этих условиях (время обработки запроса пользователя к системе, количество отказов системы). Таким образом, надежное веб-приложение должно обеспечивать доступ ко всем функциям для пользователя при любых условиях (т.е. все возможные условия для данного приложения должны быть рассмотрены и учтены при проектировании системы).
  • быстродействие приложения. Быстродействие определяется как среднее время обработки запроса пользователя к системе. Максимальным приемлемым временем отклика для веб-приложений считается 5 секунд.
  • безопасность. Требование безопасности веб-приложения включает в себя: разграничение прав доступа к функциям и данным каждого компонента веб- приложения может, контроль уровня доступа компонентов и/или пользователей, авторизация и верификация пользователей.
  • масштабируемость – это способность системы увеличивать свою производительность при повышенной нагрузке и добавлении ресурсов. Для пользователя масштабируемого веб-приложения должен оставаться незаметным момент (т.е. время отклика системы на запросы пользователя не должно заметно изменяться), когда возрастет нагрузка (например, к приложению получают доступ одновременно еще несколько пользователей), и при изменении конфигурации приложения (например, если на уровень бизнес-логики будет добавлен дополнительный компонент обработки данных).

ISAPI / NSAPI

Итак, что такое CGI? Что это такое, документацию, статьи вы можете найти в интернете. Для платформы WIN32 существует три вида CGI интерфейса, поддерживаемых Delphi.

  • ISAPI — Стандарт Internet Server API изначально был создан как Microsoft Information Server API, но в дольнейшем был предложен в качестве открытого стандарта.
  • NSAPI — Стандарт Netscape Server API используется для взаимодействия с серверами компании Netscape
  • CGI — Common Gateway Interface (стандартный интерфейс шлюза) был первой попыткой интеграции WWW-серверов и отдельных программ.
  • WinCGI — Windows вариант CGI

Поскольку компании Netscape приняла стандарт ISAPI, в данный момент реально существует единый формат для Internet Information Server (IIS) и серверов компании Netscape. Поэтому воспользуемся предоставляемым Delphi инструментарием для создания ISAPI DLL, которая будет отвечать на запросы клиентов.

Создание ISAPI библиотеки

Создание ISAPI DLL похоже на разработку любой стандартной DLL. Для этого необходимо загрузить Delphi, в меню File выбрать пункт New,

затем в диалоговом окне New Items выбрать пиктограмму Web Server Application и нажать кнопку OK. Появится диалоговое окно New Web Server Application.

Пункт ISAPI/NSAPI Dynamic Link Library выбран по умолчанию, поэтому нажимаем кнопку OK.

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

Если дважды щелкнуть мышкой на WebModule, появится Action Editor, предназначенное для создания и редактирования обработчиков событий ActionItem. Для создания ActionItem следует нажать кнопку Add New, при этом в окне Object Inspector отобразятся свойства и события созданного ActionItem.

Специальные компоненты, облегчающие создание динамических страниц расположены , также, на странице Internet палитры компонентов. Это — PageProduсer и ему подобные, предназначенные для генерации динамических HTML страниц.

Познакомимся с основными объектами и классами ISAPI поближе.

WebModule

WebModule — автоматически создаваемый модуль для приложений Web-сервера.

Когда новое Web приложение создано, оно автоматически содержит WebModule . Это дает возможность созданному Web приложению ответить на запрос HTTP, пропуская запрос и ответ к соответствующим обработчикам ActionItems . Приложение может содержать только один WebModule .

WebModule имеет два важных свойства Request и Response с которыми мы познакомимся немного позже, а также события:

OnCreate Происходит когда приложение создает WebModule . Следует использовать это событие для инициализации переменных и объектов, содержащихся в приложении. Например, если модуль содержит базу данных, приложение может установить подключение базы данных.
OnDestroy Происходит перед уничтожением WebModule . Используйте это событие для освобождения объектов, созданных динамически в приложении.
BeforeDispatch Происходит перед тем, как диспетчер устанавливает соответствие запроса HTTP с каким-либо ActionItems . Используйте обработчик события BeforeDispatch для предварительной обработки HTTP запроса.
AfterDispatch Происходит после того, как HTTP ответ был успешно сформирован ActionItems , но еще не передан клиенту. Используйте обработчик события AfterDispatch , например, для проверки сформированного HTTP ответа.

Request

Request — автоматически создаваемый объект WebModule .

Request представляет текущий HTTP запрос в удобной форме для обработки. Об отдельных свойствах этого компонента следует сказать особо.

ContentFields Педоставляет содержимое полей POST запроса. Используйте ContentFields , чтобы читать содержимое полей запроса HTTP, при использовании метода POST.
QueryFields Педоставляет параметры и их значение в случае передачи их запросом в URL документа. Используйте QueryFields , чтобы читать поля запроса HTTP, при использовании метода в котором параметры передаются в URL документа, например метод GET.

ContentFields и QueryFields возвращаю параметры передаваемые клиентом, это обьекты наследованные от класса TStrings , данные в них представлены в виде имя = значение.

Response

Response — также автоматически создаваемый объект WebModule.

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

Среди свойств объекта Response следует обратить внимание на:

ContentType Указывает тип содержимого HTTP ответа в соответствии со спецификацией MIME. Используйте ContentType , чтобы установить тип содержимого передаваемого клиенту, например, если вы передаете изображение в формате GIF, вы должны установить ContentType = ‘image/gif’ .
Content Содержит информацию, передаваемую клиенту в ответ на сообщение запроса HTTP. Используюте Content , чтобы передать требуемую информацию клиенту.
ContentStream Определяет Stream объект, который будет передан клиенту. Используйте ContentStream для передачи клиенту содержимого отличного от ContentType = ‘text/*’ , например при передаче бинарного файла. Если свойство ContentStream установлено, оно заменяет свойство Content .

Как это работает

В общем случае так. При выполнении HTTP запроса, веб сервер запускает на выполнение ваше ISAPI приложение.

Создается объект Application , порожденный от TISAPIApplication или TCGIApplication . TISAPIApplication и TCGIApplication в свою очеродь имеют общего предка TWebApplication и перекрывают все его виртуальные методы. Объект Application создается автоматически от нужного класса, в зависимости от того, какой тип (ISAPI или CGI) приложения Вы выбрали, об этом заботится визард Delphi.

Следующим автоматически создается объект WebModule , созданный от класса TWebModule , и генирируется событие TWebModule.OnCreate . Затем WebModule создает все обьекты ActionItems и генерирует событие TWebModule.BeforeDispatch . После обработки события BeforeDispatch назначается обьект ActionItem , котрый получает возможность обработать запрос. Обработку запроса и формирование ответа должны производить Вы, анализируя обьект Request и заполняя Response . Все это можно сделать на событии ActionItem.OnAction . В большинстве случаев, для того чтобы сформировать ответ необходимо заполнить свойство Content обьекта Response . После отработки собития OnAction обьекта (или обьектов) ActionItem происходит формирование HTTP ответа и генерируется событие TWebModule.AfterDispatch , затем ответ отсылается клиенту.

Следующим, последним, событием генерируется TWebModule.OnDestroy .

Внимание:В случае ISAPI приложения, объект WebModule может быть создан один раз и не создаваться при каждом запросе, следовательно не будут генерироваться события OnCreate и OnDestroy объекта WebModule.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL