ATL Server

ATL Server — технология, разработанная фирмой Microsoft для создания веб-приложений. Она использует движок замены тегов, написанный на C++, для генерации веб-страниц. Она основывается на уже существующих технологиях, как ISAPI и Microsoft Active Template Library, и содержит библиотеку шаблонов, разработанную для использования при создании веб-приложений.

ATL Server впервые был представлен в Visual Studio .NET 2003. Он также был включён в Visual Studio 2005, но больше не поддерживается, начиная с выпуска Visual Studio 2008. Большая часть кода ATL Server была выложена как открытый проект на сайте CodePlex, веб-сайте фирмы Microsoft для публикации исходников.

Типичное приложение на базе ATL server содержит по крайней мере одно ISAPI расширение DLL, а также один или несколько файлов ответов сервера (Server Response Files, расширение .srf) и файлы динамических библиотек ассоциированных приложений, которые и реализуют функциональность приложения.

SRF-файлы

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

Один SRF-файл может вызывать код из нескольких DLL приложения. Аналогично, одна DLL приложения может служить нескольким SRF-файлам.

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

{{handler ATLServerHelloWorld.dll/Default}}
<html>
<body>
{{HelloWorld}}
</body>
</html>

Первая строчка файла:

{{handler ATLServerHelloWorld.dll/Default}}

используется для идентификации DLL и класса, который будет вызван SRF-файлом.

Далее в файле вызовы функций выглядят примерно так:

{{HelloWorld}}

В приведённом выше случае, ATLServerHelloWorld.dll DLL содержит определение класса по умолчанию "Default" как показано ниже:

[request_handler("Default")]
class CDefault
{
  ...
  [tag_name(name="HelloWorld")]
  HTTP_CODE OnHelloWorld(void)
  {
    m_HttpResponse << "Hello World!";
    return HTTP_SUCCESS;
  }
};

Нужно пояснить, что атрибут request_handler используется в классе для идентификации класса как класса по умолчанию "Default", а также атрибут tag_name используется для идентификации метода "HelloWorld".

Ссылки

Дополнительные источники