Microsoft Information Protection SDK – Koncepty pozorovatelů
Sada MIP SDK je navržená tak, aby byla téměř úplně asynchronní. Například jakákoli operace, která má za následek vstupně-výstupní operace v síti nebo souboru, se provádí asynchronně. K zpracování oznámení událostí pro tyto asynchronní události využívá sada SDK vzor pozorovatele.
Přehled implementace
Při vytváření objektu, který provede asynchronní operaci, musí být implementována Observer
třída. Pozorovatelé obdrží události oznámení související s různými asynchronními operacemi v sadě MIP SDK a poskytnou výsledek volajícímu.
Funkce v každé Observer
třídě jsou virtuální a přepíše se pro preferovaný asynchronní vzor. Sada SDK implementuje vzor pozorovatele oznámení událostí prostřednictvím std::promise
a std::future
.
Každý pozorovatel specifický pro třídu obsahuje sadu funkcí úspěchu a chyb/selhání pro výsledek asynchronní operace. Funkce úspěchu vrátí objekt přidružený k operaci. Funkce selhání chyby/vrací výjimku, která obsahuje podrobnosti o tom, proč operace nebyla úspěšná.
FileProfile
Například podporuje následující dvě operace:
- Může přidat nový modul do profilu prostřednictvím
FileProfile::AddEngineAsync
. - Může uvolnit modul z profilu prostřednictvím
FileProfile::UnloadEngineAsync
.
Vzhledem k tomu, že jsou na asynchronní operaci implementovány dvě Observer
funkce, lze předpokládat, že existují čtyři Observer
metody přidružené FileProfile
k :
FileProfileObserver::OnAddEngineSuccess()
FileProfileObserver::OnAddEngineError()
FileProfileObserver::OnUnloadEngineSuccess
FileProfileObserver::OnUnloadEngineError()
.
Třídy pozorovatele sady MIP SDK
Sada SDK pro soubory MIP obsahuje dva pozorovatele:
mip::FileProfile::Observer
mip::FileHandler::Observer
Sada MIP Policy SDK má pouze jednoho pozorovatele:
mip::Profile::Observer
Sada MIP Protection SDK má tři pozorovatele:
mip::ProtectionProfile::Observer
mip::ProtectionEngine::Observer
mip::ProtectionHandler::Observer
Další kroky
Přečtěte si další informace o tom, jak se pozorovatelé implementují a používají pomocí různých sad SDK: