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".

Ссылки

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