Microsoft Information Protection SDK — pojęcia dotyczące obserwatora
Zestaw MIP SDK został zaprojektowany tak, aby był niemal całkowicie asynchroniczny. Na przykład każda operacja powodująca asynchroniczne wykonywanie operacji we/wy sieci lub plików. Aby obsługiwać powiadomienia o zdarzeniach dla tych zdarzeń asynchronicznych, zestaw SDK korzysta ze wzorca obserwatora.
Omówienie implementacji
Podczas konstruowania obiektu, który będzie wykonywać operację asynchroniczną, należy zaimplementować klasę Observer
. Obserwatorzy otrzymają zdarzenia powiadomień związane z różnymi operacjami asynchronicznymi w zestawie MIP SDK i dostarczają wynik wywołujący.
Funkcje w każdej Observer
klasie są wirtualne i są zastępowane dla preferowanego wzorca asynchronicznego. Zestaw SDK implementuje wzorzec obserwatora powiadomień o zdarzeniach za pomocą poleceń std::promise
i std::future
.
Każdy obserwator specyficzny dla klasy zawiera zestaw funkcji powodzenia i błędu/niepowodzenia dla wyniku operacji asynchronicznych. Funkcje powodzenia zwracają obiekt skojarzony z operacją. Funkcje błędów/ zwracają wyjątek zawierający szczegółowe informacje o tym, dlaczego operacja zakończyła się niepowodzeniem.
Na przykład FileProfile
obsługuje następujące dwie operacje:
- Może dodać nowy aparat do profilu za pomocą polecenia
FileProfile::AddEngineAsync
. - Może zwolnić aparat z profilu za pomocą polecenia
FileProfile::UnloadEngineAsync
.
Ponieważ dwie Observer
funkcje są implementowane na operację asynchroniczną, można założyć, że istnieją cztery Observer
metody skojarzone z FileProfile
:
FileProfileObserver::OnAddEngineSuccess()
FileProfileObserver::OnAddEngineError()
FileProfileObserver::OnUnloadEngineSuccess
FileProfileObserver::OnUnloadEngineError()
.
Klasy obserwatorów zestawu MIP SDK
Zestaw SDK pliku MIP zawiera dwóch obserwatorów:
mip::FileProfile::Observer
mip::FileHandler::Observer
Zestaw SDK zasad miP ma tylko jednego obserwatora:
mip::Profile::Observer
Zestaw MIP Protection SDK ma trzech obserwatorów:
mip::ProtectionProfile::Observer
mip::ProtectionEngine::Observer
mip::ProtectionHandler::Observer
Następne kroki
Dowiedz się więcej o tym, jak obserwatorzy są implementowane i używane przez różne zestawy SDK: