-
Создавать Web-приложения и Web-службы можно несколькими способами. Один из них – это использовать технологию ASP.NET. Такой подход поддерживается в разной степени большинством языков платформы NET. Есть и другой подход, поддерживаемый только языком Visual C++.
-
ATL Server (ATL-сервер) – это технология, использующая неуправляемый C++ и позволяющая в процессе разработки эффективно и без проблем применять интерфейс прикладного программирования Internet-сервера (ISAPI) [Библиотека шаблонных классов ATL в использовании удобнее, чем традиционный интерфейс прикладного программирования Internet-сервера (ISAPI), хотя и не может сравниться по удобству с ASP NET].
-
Чтобы разобраться в ATL Server, очень важно вначале хорошо разобраться в теоретических основах интерфейса прикладного программирования Internet-сервера (ISAPI).
-
Чтобы с помощью ATL Server Project Wizard (Мастер создания проектов на основе ATL Server) создать проект ATL Server Project (Проект на основе ATL Server), нужно соблюдать определенную последовательность действий.
-
В Solution Explorer (Поиск решения) откройте узел проекта ATLServerAppIsapi. Затем откройте файл ATLServerAppIsapi.def. Обратите внимание, что этот проект экспортирует три стандартные функции из динамически подключаемой библиотеки (DLL) расширения интерфейса прикладного программирования Internet-сервера (ISAPI). Вот эти функции.
-
Если в проекте динамически подключаемой библиотеки (DLL) Web-приложения вы откроете заголовочный файл ATLServerApp.h, то увидите определение класса CATLServerAppHandler. Атрибут request_handler (обработчик запросов) говорит о том, что класс будет открыт как обработчик запросов на основе ATL Server.
-
Проект на основе библиотеки шаблонных классов ATL создается обычным способом. Во время создания окно вывода показывает, как происходит размещение проекта ATL-ServerApp. При этом размещении ATLServerApp.srf, ATLServerApp.dll и ATLServerAppIsapi.dll копируются в каталог \inetpub\wwwroot\ATLServerApp\. На рис.
-
Обработчик запросов, сгенерированный мастером ATL Server Wizard, предназначался только для того, чтобы показать вам, как можно писать свои собственные обработчики запросов. Проанализируйте следующий код. Он может служить простым примером добавления новых возможностей.
-
В файле if_else_endif.srf содержится управляющая структура if-else-endif (если-иначе-конец если). Аналогичный обработчик добавляется в динамически подключаемую библиотеку (DLL) Web-приложения. Обратите внимание, что если количество секунд четное, то возвращаемым значением является HTTP_SUCCESS (success – "успех"), а если нечетное, то возвращается HTTP_S_FALSE (false – "ложь").
-
Следующий пример показывает использование цикла с условием окончания while-endwhile в соответствующем файле while_endwhile.srf. Чтобы сохранить количество выполнений цикла, был добавлен компонент данных типа int, называемый count (счетчик).
-
Файл pass_parameter.srf показывает, как можно передавать параметры методу замены обработчика запросов Web-приложения (pass parameter как раз и означает "передать параметр").
-
Протокол передачи гипертекстовых файлов HTTP – это протокол без установления соединения. Впрочем, ATL Server имеет возможность поддерживать для каждого клиента состояние сеанса между следующими друг за другом HTTP-запросами Это достигается с помощью cookie-файлов, предназначенных для сохранения данных о каждом клиентском сеансе.
-
В этом примере показано, как получать доступ к серверной переменной HTTP_USER_AGENT (пользовательский HTTP-агент). Имеется еще несколько переменных сервера, которые вы также можете использовать.
-
В данном примере к ATLserverApp.h добавляется класс обработчика запросов, называемый C_process_post_AppHandler. В этом классе имеется метод ProcessPost, который получает доступ к переменной, переданной из формы с помощью объекта HTTP-запроса.
-
Вы, возможно, помните рис 12 4, где показана страница Server Options (Параметры сервера). Мастера создания проектов на основе ATL Server (ATL Server Project Wizard). На этой странице имеется флажок Session services (Службы сеанса).
-
Главное, чем генерация Web-приложения отличается от генерации Web-службы, – это файл ATLServerWebService.h. В обоих случаях в этом файле определяется, хотя и с небольшим количеством отличий, класс обработчика запросов на основе ATL Server.
-
Клиентская программа, которая обращается к Web-службе, может быть бого вида Сейчас мы создадим простую консольную клиентскую программу для тестирования только что созданной Web-службы на основе библиот шаблонных классов ATL [Эта клиентская программа имеется в каталоге ATLServerWebClient].
-
Вы, может быть, помните пример SimpleWebService из главы 11 "Web службы", в котором выполнялось сложение двух чисел. Похожие возможности мы сейчас добавим в проект ATLServerWeb, только что созданный в этой главе. Итак, мы добавим метод, который принимает два целых параметра и возвращает их сумму.
-
Теперь вам, возможно, захочется с помощью клиентской программы протестировать метод Add (Сложить). Для этого выполните указанную последовательность действий: | Откройте уже созданный проект ATLServerWebClient.sin | Снова добавьте в проект Web-ссылку http://localhost/ATLServerWeb/ATLServerWeb.disco.
-
Вот простой пример того, как метод Web-службы может использовать структуры в качестве входных и выходных параметров. В исходный файл ATLServerWeb.h была добавлена структура MyStructure (Моя структура), содержащая два элемента типа int.