Microsoft Information Protection SDK - Concetti relativi agli osservatori
MIP SDK è progettato per essere quasi completamente asincrono. Ad esempio, qualsiasi operazione con conseguente I/O di rete o file viene eseguita in modo asincrono. Per gestire le notifiche degli eventi per questi eventi asincroni, l'SDK usa il modello observer.
Panoramica dell'implementazione
Quando si costruisce un oggetto che esegue un'operazione asincrona, è necessario implementare una Observer
classe . Gli osservatori riceveranno gli eventi di notifica correlati alle varie operazioni asincrone nell'SDK MIP e forniranno il risultato al chiamante.
Le funzioni in ogni Observer
classe sono virtuali e vengono sottoposte a override per il modello asincrono preferito. L'SDK implementa il modello observer di notifica eventi tramite std::promise
e std::future
.
Ogni osservatore specifico della classe contiene un set di funzioni di esito positivo e di errore/errore, per il risultato di un'operazione asincrona. Le funzioni success restituiscono l'oggetto associato all'operazione. Le funzioni di errore/ restituiscono un'eccezione che contiene informazioni dettagliate sul motivo per cui l'operazione non è riuscita.
Ad esempio, FileProfile
supporta le due operazioni seguenti:
- Può aggiungere un nuovo motore al profilo tramite
FileProfile::AddEngineAsync
. - Può scaricare un motore dal profilo tramite
FileProfile::UnloadEngineAsync
.
Poiché due Observer
funzioni vengono implementate per ogni operazione asincrona, si può presumere che siano presenti quattro Observer
metodi associati a FileProfile
:
FileProfileObserver::OnAddEngineSuccess()
FileProfileObserver::OnAddEngineError()
FileProfileObserver::OnUnloadEngineSuccess
FileProfileObserver::OnUnloadEngineError()
.
Classi observer di MIP SDK
MIP File SDK contiene due osservatori:
mip::FileProfile::Observer
mip::FileHandler::Observer
MIP Policy SDK ha un solo osservatore:
mip::Profile::Observer
MIP Protection SDK dispone di tre osservatori:
mip::ProtectionProfile::Observer
mip::ProtectionEngine::Observer
mip::ProtectionHandler::Observer
Passaggi successivi
Altre informazioni sul modo in cui gli osservatori vengono implementati e usati dai vari SDK: