Иллюстрированный самоучитель по Architecture .NET

Web-узлы и Web-службы, работающие на основе ATL Server

  • История технологий, работающих с динамическим содержимым Web

    Создавать Web-приложения и Web-службы можно несколькими способами. Один из них – это использовать технологию ASP.NET. Такой подход поддерживается в разной степени большинством языков платформы NET. Есть и другой подход, поддерживаемый только языком Visual C++.
  • Приложения на основе ATL Server

    ATL Server (ATL-сервер) – это технология, использующая неуправляемый C++ и позволяющая в процессе разработки эффективно и без проблем применять интерфейс прикладного программирования Internet-сервера (ISAPI) [Библиотека шаблонных классов ATL в использовании удобнее, чем традиционный интерфейс прикладного программирования Internet-сервера (ISAPI), хотя и не может сравниться по удобству с ASP NET].
  • ATL Server основан на интерфейсе прикладного программирования Internet-сервера (ISAPI). Архитектура приложения, использующего ATL server.

    Чтобы разобраться в ATL Server, очень важно вначале хорошо разобраться в теоретических основах интерфейса прикладного программирования Internet-сервера (ISAPI).
  • Создание проекта ATL Server Project (Проект на основе ATL Server)

    Чтобы с помощью ATL Server Project Wizard (Мастер создания проектов на основе ATL Server) создать проект ATL Server Project (Проект на основе ATL Server), нужно соблюдать определенную последовательность действий.
  • Динамически подключаемая библиотека (DLL) расширения интерфейса прикладного программирования Internet-сервера (ISAPI)

    В Solution Explorer (Поиск решения) откройте узел проекта ATLServerAppIsapi. Затем откройте файл ATLServerAppIsapi.def. Обратите внимание, что этот проект экспортирует три стандартные функции из динамически подключаемой библиотеки (DLL) расширения интерфейса прикладного программирования Internet-сервера (ISAPI). Вот эти функции.
  • Динамически подключаемая библиотека (DLL) Web-приложения

    Если в проекте динамически подключаемой библиотеки (DLL) Web-приложения вы откроете заголовочный файл ATLServerApp.h, то увидите определение класса CATLServerAppHandler. Атрибут request_handler (обработчик запросов) говорит о том, что класс будет открыт как обработчик запросов на основе ATL Server.
  • Создание и запуск проекта на основе ATL Server

    Проект на основе библиотеки шаблонных классов ATL создается обычным способом. Во время создания окно вывода показывает, как происходит размещение проекта ATL-ServerApp. При этом размещении ATLServerApp.srf, ATLServerApp.dll и ATLServerAppIsapi.dll копируются в каталог \inetpub\wwwroot\ATLServerApp\. На рис.
  • Добавление в сервер еще одного обработчика

    Обработчик запросов, сгенерированный мастером ATL Server Wizard, предназначался только для того, чтобы показать вам, как можно писать свои собственные обработчики запросов. Проанализируйте следующий код. Он может служить простым примером добавления новых возможностей.
  • Добавление на сервер обработки управляющей структуры if-else-endif

    В файле if_else_endif.srf содержится управляющая структура if-else-endif (если-иначе-конец если). Аналогичный обработчик добавляется в динамически подключаемую библиотеку (DLL) Web-приложения. Обратите внимание, что если количество секунд четное, то возвращаемым значением является HTTP_SUCCESS (success – "успех"), а если нечетное, то возвращается HTTP_S_FALSE (false – "ложь").
  • Добавление на сервер обработки управляющей структуры while-endwhile

    Следующий пример показывает использование цикла с условием окончания 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-запроса.
  • Службы сеанса. Создание проекта Web-службы на основе ATL Server (ATL Server Web Service Project).

    Вы, возможно, помните рис 12 4, где показана страница Server Options (Параметры сервера). Мастера создания проектов на основе ATL Server (ATL Server Project Wizard). На этой странице имеется флажок Session services (Службы сеанса).
  • Код Web-службы на основе ATL Server: ATLServerWebService.h

    Главное, чем генерация Web-приложения отличается от генерации Web-службы, – это файл ATLServerWebService.h. В обоих случаях в этом файле определяется, хотя и с небольшим количеством отличий, класс обработчика запросов на основе ATL Server.
  • Создание клиентской программы, обращающейся к Web-службе

    Клиентская программа, которая обращается к Web-службе, может быть бого вида Сейчас мы создадим простую консольную клиентскую программу для тестирования только что созданной Web-службы на основе библиот шаблонных классов ATL [Эта клиентская программа имеется в каталоге ATLServerWebClient].
  • Добавление функций в Web-службу на основе ATL Server

    Вы, может быть, помните пример SimpleWebService из главы 11 "Web службы", в котором выполнялось сложение двух чисел. Похожие возможности мы сейчас добавим в проект ATLServerWeb, только что созданный в этой главе. Итак, мы добавим метод, который принимает два целых параметра и возвращает их сумму.
  • Изменение клиентской программы, работающей с Web-службой

    Теперь вам, возможно, захочется с помощью клиентской программы протестировать метод Add (Сложить). Для этого выполните указанную последовательность действий: | Откройте уже созданный проект ATLServerWebClient.sin | Снова добавьте в проект Web-ссылку http://localhost/ATLServerWeb/ATLServerWeb.disco.
  • Передача структур в качестве входных и выходных параметров. Резюме.

    Вот простой пример того, как метод Web-службы может использовать структуры в качестве входных и выходных параметров. В исходный файл ATLServerWeb.h была добавлена структура MyStructure (Моя структура), содержащая два элемента типа int.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.