Поделиться через


Практическое руководство. Создание нового классификатора запросов

Дата последнего изменения: 9 марта 2015 г.

Применимо к: SharePoint Foundation 2010

В этом разделе описывается создание нового вида классификатора HTTP-запросов для расширения системы мониторинга производительности и регулирования запросов в Microsoft SharePoint Foundation.

Классы классификатора запросов

В Microsoft SharePoint Foundation есть несколько встроенных классификаторов запросов. Каждый из них классифицирует HTTP-запросы на основе определенного набора характеристик. В следующей таблице показаны классы и виды категорий запросов, которые могут определяться в этих классах

Тип

Категория

SPHttpFileExtensionThrottleClassifier

Запросы ресурсов с заданным расширением имени файла

SPHttpHeaderThrottleClassifier

Запросы, содержащие заданный заголовок или содержащие заданное значение для заданного заголовка

SPHttpUserAgentAndMethodClassifier

Запросы с заданным агентом пользователя или использующие указанный HTTP-метод

SPSearchCrawlingRequestClassifier

Запросы от программ-обходчиков

Вероятно, с использованием одного из этих классов можно создать объект классификатора любого необходимого вида. Но если ни один из классов не соответствует потребностям разработчика, можно создать производный класс классификатора запросов на основе класса SPRequestThrottleClassifier.

СоветСовет

Следует помнить, что не нужно создавать новый класс для каждого типа запроса, регулированием которого требуется управлять. Например, у SharePoint Foundation нет встроенных классов SPHttpDOCXThrottleClassifier для управления регулированием запросов DOCX-файлов и SPHttpSVCThrottleClassifier для управления запросами к службам REST. Вместо этого предлагается более общий класс SPHttpFileExtensionThrottleClassifier. Для конкретных расширений имен файлов могут создаваться конкретные объекты этого класса. Следовательно, достаточно создать производный класс от класса SPRequestThrottleClassifier, если существует категория характеристики запроса, для которой не нашлось подходящего встроенного класса, производного от SPRequestThrottleClassifier.

Создание нового производного класса

Существует как минимум две задачи создания нового класса классификатора и еще две задачи, которые требуется выполнять почти всегда. Минимально необходимыми задачами являются следующие:

  • Переопределение свойства ThrottleLevel, определяющего, на какой стадии регулирования, если оно существует, блокируются соответствующие запросы. Можно задать FirstStage (рабочий процесс в неисправном состоянии), SecondStage (рабочий процесс находился в неисправном состоянии как минимум 60 секунд) или Never. (Запросы, не соответствующие никакому классификатору, по умолчанию блокируются системой на первой стадии, поэтому для всех запросов, которые должны быть исключены из регулирования, необходимо создать объект классификатора с уровнем регулирования Never.) Свойство ThrottleLevel доступно только для чтения. Если у всех объектов созданного класса всегда должен быть одинаковый уровень регулирования, реализуйте это свойство так, чтобы всегда возвращался этот уровень. В противном случае, реализуйте это свойство так, чтобы возвращалось значение резервного свойства, которое задается конструктором класса и может быть значением по умолчанию.

  • Переопределение метода Match(HttpRequest). Этот метод содержит логику, определяющую, считает ли объект классификатора HTTP-запрос соответствием. Таким образом, он фактически определяет "категорию" классификатора в смысле, который имелся в виду в таблице, приведенной ранее в этой статье. Например, см. методы Match четырех классов в таблице.

Ниже приведены две дополнительные задачи, которые требуются почти всегда:

  • Добавление дополнительных свойств и вспомогательных методов, необходимых для логики, реализуемой в переопределении метода Match(HttpRequest). См. примеры в таблице классов.

  • Добавление конструктора для класса. Обычно понадобится, чтобы конструктор задавал значение свойства ThrottleLevel и, возможно, также значения других свойств класса.

См. также

Задачи

Практическое руководство. Создание и регистрация или отмена регистрации классификатора запросов

Концепции

Регулирование запросов