Microsoft 信息保护 SDK - 观察者概念

MIP SDK 采用几乎完全异步的设计。 例如,导致网络或文件 IO 的任何操作都是异步执行的。 为了处理这些异步事件的事件通知,此 SDK 使用了观察者模式

实现概述

构造将执行异步操作的对象时,必须实现 Observer 类。 观察者将会接收与 MIP SDK 中各种异步操作相关的通知事件,并向调用方提供结果。

每个 Observer 类中的功能都是虚拟的,并且会用偏好的异步模式重写。 此 SDK 通过 std::promisestd::future 来实现事件通知观察者模式。

每个特定于类的观察者都包含一组成功和错误/失败功能,用于处理异步操作的结果。 “成功”功能会返回与操作关联的对象。 “错误”/“失败”功能会返回一个异常,其中包含有关操作失败原因的详细信息。

例如,FileProfile 支持以下两个操作:

  • 它可以通过 FileProfile::AddEngineAsync 向配置文件添加新引擎。
  • 它可以通过 FileProfile::UnloadEngineAsync 从配置文件中卸载引擎。

由于每个异步操作都会实现这两个 Observer 功能,因此可以假定有“四”个Observer 方法与 FileProfile 关联:

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

MIP SDK 观察者类

MIP 文件 SDK 包含两个观察者:

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

MIP 策略 SDK 只有一个观察者:

  • mip::Profile::Observer

MIP 保护 SDK 有三个观察者:

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

后续步骤

详细了解各种 SDK 如何实现和使用观察者: