Microsoft Information Protection SDK — концепции наблюдателя

Пакет SDK MIP почти полностью асинхронен. Например, пакет SDK выполняет любую операцию, которая приводит к асинхронной работе сети или ввода-вывода файлов. Для обработки уведомлений о событиях для этих асинхронных событий пакет SDK использует шаблон наблюдателя.

Обзор реализации

При создании объекта, выполняющего асинхронную операцию, реализуйте Observer класс. Наблюдатели получают события уведомлений, связанные с различными асинхронными операциями в MIP SDK, и передают результат вызывающему коду.

Виртуальные функции можно переопределить в каждом Observer классе для предпочтительного асинхронного шаблона. Пакет SDK реализует шаблон наблюдателя уведомлений о событиях с помощью std::promise и std::future.

Каждый наблюдатель, зависящий от класса, содержит набор функций успешности и ошибки или сбоя для результата асинхронной операции. Функции успешного выполнения возвращают объект, связанный с операцией. Функции ошибки/ возвращают исключение, содержащее сведения о том, почему операция была неудачной.

Например, FileProfile поддерживает следующие две операции:

  • Можно добавить в профиль новый движок с помощью FileProfile::AddEngineAsync.
  • Можно выгрузить модуль из профиля с помощью FileProfile::UnloadEngineAsync.

Так как пакет SDK реализует две Observer функции для каждой асинхронной операции, можно предположить, что четыреObserver метода связаны с FileProfile:

  • FileProfileObserver::OnAddEngineSuccess()
  • FileProfileObserver::OnAddEngineError()
  • FileProfileObserver::OnUnloadEngineSuccess
  • FileProfileObserver::OnUnloadEngineError()

Классы наблюдателя пакета SDK для MIP

Пакет SDK для файлов MIP содержит два наблюдателя:

  • mip::FileProfile::Observer
  • mip::FileHandler::Observer

Пакет SDK политики MIP имеет одного наблюдателя:

  • mip::Profile::Observer

Пакет SDK защиты MIP включает трех наблюдателей.

  • mip::ProtectionProfile::Observer
  • mip::ProtectionEngine::Observer
  • mip::ProtectionHandler::Observer

Дальнейшие действия

Узнайте больше о том, как различные пакеты SDK реализуют и используют наблюдателей: