Проект на основе библиотеки шаблонных классов ATL создается обычным способом. Во время создания окно вывода показывает, как происходит размещение проекта ATL-ServerApp. При этом размещении ATLServerApp. srf, ATLServerApp.dll и ATL-ServerAppIsapi.dll копируются в каталог \inetpub\wwwroot\ATLServerApp\. На Рисунок 12.7 показано приложение ATLServerApp сразу же после его размещения на информационном сервере Internet (IIS).
Затем можно посмотреть, что же получилось в результате Для этого следует запустить решение обычным способом в среде Visual Studio.NET или просто перейти в Web-броузере по адресу http:7/localhost/ATLServerApp/ATLServerApp.srf. Результат показан на Рисунок 12.8
Полезно с помощью отладчика понаблюдать, что же происходит в динамически подключаемой библиотеке (DLL) Web-приложения. Вы обнаружите, что в ATLServerAp-plsapi.dll сперва вызывается функция HttpExtensionProc с параметром EXTENSION_CONTROL_BLOCK, который содержит структуры, описанные в табл. 12.1. Содержимое этих элементов берется по адресу, определяемому унифицированным указателем информационного ресурса (URL), который указан в Web-броузере
Следующей вызывается функция ValidateAndExchange [На самом же деле для DLL_PROCESS_ATTACH следующей вызывается функция DllMain из ATLServerApp.dll При обработке Web-запросов DllMain вызывается несколько раз, и в настоящем контексте она будет игнорироваться Впрочем, обратите внимание, — этот первый вызов DllMain происходит потому, что динамически подключаемая библиотека DLL расширения интерфейса прикладного программирования Internet-сервера (1SAPI), ATLServerAppIsapi. dll, для обработки Web-запроса динамически загружает динамически подключаемую библиотеку (DLL) Web-приложения, ATLServerApp.dll ]. Она просто отправляет в HTTP-ответ, определенное значение, которое указывает тип содержимого (text/html) Кроме того, эта функция полезна тогда, когда инициализацию и проверку надо проводить перед обработкой запроса.
И, наконец, в динамически подключаемой библиотеке (DLL) Web-приложения вызывается метод OnHello класса CATLServerAppHandler. Этот метод отправляет в HTTP-ответ текст "Hello World!" ("Здравствуй, мир!"). Получившиеся в результате данные, которые передаются на броузер, можно увидеть, просматривая исходный текст HTML []. Комментарии вида <!— комментарий —> вставлены для удобства — Прим ред
<html>
<head>
</head>
<body> <!-- тело -->
This is a test: Hello World!<br>
<!-- Это - испытание: Привет, мир! -->
</body> <!-- тело -->
</html>