Microsoft Information Protection SDK – Observatörskoncept

MIP SDK är utformat för att vara nästan helt asynkront. Till exempel utförs alla åtgärder som resulterar i nätverks- eller fil-I/O asynkront. För att hantera händelsemeddelanden för dessa asynkrona händelser använder SDK:t övervakningsmönstret.

Översikt över implementering

När du skapar ett objekt som ska utföra en asynkron åtgärd måste en Observer klass implementeras. Observatörer kommer att ta emot aviseringshändelser relaterade till de olika asynkrona åtgärderna i MIP SDK och ge resultatet till anroparen.

Metoder i varje Observer-klass är virtuella och åsidosätts enligt det önskade asynkrona mönstret. SDK implementerar mönstret för händelsemeddelandeobservatör via std::promise och std::future.

Varje klasspecifik observatör innehåller en uppsättning funktioner för lyckat resultat och fel/misslyckanden för utfallet av en asynkron operation. Framgångsfunktioner returnerar objektet som är associerat med åtgärden. Felfunktionerna/ returnerar ett undantag som innehåller information om varför åtgärden misslyckades.

Till exempel FileProfile stöder följande två åtgärder:

  • Den kan lägga till en ny motor i profilen via FileProfile::AddEngineAsync.
  • Den kan avlasta en motor från profilen via FileProfile::UnloadEngineAsync.

Eftersom två Observer funktioner implementeras per asynkron operation, kan man anta att det finns fyraObserver metoder som är associerade med FileProfile:

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

MIP SDK-observatörsklasser

MIP File SDK innehåller två observatörer:

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

MIP Policy SDK har bara en enda observatör:

  • mip::Profile::Observer

MIP Protection SDK har tre observatörer:

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

Nästa steg

Läs mer om hur observatörer implementeras och används av de olika SDK:erna: