Microsoft 信息保护 SDK - 观察者概念
MIP SDK 采用几乎完全异步的设计。 例如,导致网络或文件 IO 的任何操作都是异步执行的。 为了处理这些异步事件的事件通知,此 SDK 使用了观察者模式。
实现概述
构造将执行异步操作的对象时,必须实现 Observer
类。 观察者将会接收与 MIP SDK 中各种异步操作相关的通知事件,并向调用方提供结果。
每个 Observer
类中的功能都是虚拟的,并且会用偏好的异步模式重写。 此 SDK 通过 std::promise
和 std::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 如何实现和使用观察者: