Microsoft Information Protection SDK - Waarnemersconcepten
De MIP SDK is ontworpen om bijna volledig asynchroon te zijn. Elke bewerking die resulteert in netwerk- of bestands-IO wordt bijvoorbeeld asynchroon uitgevoerd. Voor het afhandelen van de gebeurtenismeldingen voor deze asynchrone gebeurtenissen maakt de SDK gebruik van het waarnemerspatroon.
Implementatieoverzicht
Bij het maken van een object dat een asynchrone bewerking uitvoert, moet een Observer
klasse worden geïmplementeerd. Waarnemers ontvangen de meldingsevenementen met betrekking tot de verschillende asynchrone bewerkingen in de MIP SDK en geven het resultaat aan de aanroeper.
Functies in elke Observer
klasse zijn virtueel en worden overschreven voor het gewenste asynchrone patroon. De SDK implementeert het waarnemerspatroon voor gebeurtenismeldingen via std::promise
en std::future
.
Elke klassespecifieke waarnemer bevat een set succes- en fout-/foutfuncties voor het resultaat van een asynchrone bewerking. Succesfuncties retourneren het object dat is gekoppeld aan de bewerking. Foutfoutfuncties/ retourneren een uitzondering die details bevat over waarom de bewerking is mislukt.
Ondersteunt bijvoorbeeld FileProfile
de volgende twee bewerkingen:
- Er kan een nieuwe engine aan het profiel worden toegevoegd via
FileProfile::AddEngineAsync
. - Het kan een engine uit het profiel verwijderen via
FileProfile::UnloadEngineAsync
.
Omdat twee Observer
functies per asynchrone bewerking worden geïmplementeerd, kan worden aangenomen dat er vier Observer
methoden zijn gekoppeld aanFileProfile
:
FileProfileObserver::OnAddEngineSuccess()
FileProfileObserver::OnAddEngineError()
FileProfileObserver::OnUnloadEngineSuccess
FileProfileObserver::OnUnloadEngineError()
.
MiP SDK-waarnemerklassen
De MIP File SDK bevat twee waarnemers:
mip::FileProfile::Observer
mip::FileHandler::Observer
De MIP Policy SDK heeft slechts één waarnemer:
mip::Profile::Observer
De MIP Protection SDK heeft drie waarnemers:
mip::ProtectionProfile::Observer
mip::ProtectionEngine::Observer
mip::ProtectionHandler::Observer
Volgende stappen
Meer informatie over hoe waarnemers worden geïmplementeerd en gebruikt door de verschillende SDK's: