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

Передача параметров серверному обработчику

Квадрат параметра отображается соответствующим файлом pass_parameter.srf.

{{handler ATLServerApp.dll/pass_parameter}}
{{SquareOfParameter(10)}}

Результат можно увидеть, перейдя по адресу http://localhost/ATLServerApp/pass_parameter.srf. Что получается при этом переходе, показано на рис. 12.13.

Иллюстрированный самоучитель по Architecture .NET › Web-узлы и Web-службы, работающие на основе ATL Server › Передача параметров серверному обработчику
Рис. 12.13. Просмотр pass_parameter srf

Кроме того, из файла .srf в обработчик запросов Web-приложения можно передавать несколько параметров различных типов. Для этого надо определить структуру с элементами, которые должны соответствовать передаваемым параметрам. Следующий пример демонстрирует, как из .srf-файла передаются два параметра. Первый из них является числом, а второй – строкой. Функция грамматического разбора выделяет указанные два параметра из одной строки и "укладывает" их в пользовательскую структуру, которая называется PARAMETER_DATA (данные параметров). Эта функция с помощью простых приемов грамматического разбора разбивает строку-параметр на лексемы и приводит тип каждого из параметров к тому типу, который должен быть у соответствующего элемента структуры Затем структура передается методу замены как один составной параметр.

Данный пример также демонстрирует, как с помощью второго приема связать функцию грамматического разбора с указанным выше методом управления заменой. В соответствии с этим приемом имя метода этического разбора явно указывается с помощью параметра parse_func в атрибуте tag_name метода замены.

// Обработчик, который принимает два параметра
[request_handler("pass_two_parameters")]
class C_pass_two_parameters_ATLServerAppHandler
{
protected: // защищенный
// пользовательская структура для того,
// чтобы сохранять преобразованные параметры
typedef struct
{
short index; // короткий индекс
char string[100]; // строка символов
} PARAMETER_DATA;
// метод синтаксического анализа преобразовывает
// два параметра из строки
HTTP_CODE parseTwoParametersFunction(
IlAtlMemMgr* pMemoryManager,
LPCSTR szArgumentData,
PARAMETER_DATA** ppArgument)
{
// распределить память для параметров,
// которые будут переданы
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.