Eventi in OGGETTI COM e Connessione able
Quando un programma rileva qualcosa che si è verificato, può notificare ai client. Ad esempio, se un programma ticker azionario rileva una modifica del prezzo di un titolo, può notificare a tutti i clienti la modifica. Questo processo di notifica viene definito generazione di un evento.
Con COM, gli oggetti server possono utilizzare eventi COM per generare eventi senza alcuna informazione sugli oggetti che verranno notificati. Gli oggetti possono anche usare oggetti connettibili per mantenere informazioni dettagliate sui client che hanno richiesto notifiche.
Gli oggetti collegabili COM forniscono interfacce in uscita ai client oltre alle interfacce in ingresso. Di conseguenza, gli oggetti e i relativi client possono interagire con la comunicazione bidirezionale. Le interfacce in ingresso vengono implementate in un oggetto e ricevono chiamate da client esterni di un oggetto, mentre le interfacce in uscita vengono implementate nel sink del client e ricevono chiamate dall'oggetto . L'oggetto definisce un'interfaccia da usare e il client lo implementa.
Un oggetto definisce le interfacce in ingresso e fornisce implementazioni di queste interfacce. Le interfacce in ingresso sono disponibili per i client tramite il metodo IUnknown::QueryInterface dell'oggetto. I client chiamano i metodi di un'interfaccia in ingresso sull'oggetto e l'oggetto esegue azioni desiderate per conto del client.
Le interfacce in uscita sono definite anche da un oggetto , ma il client fornisce le implementazioni delle interfacce in uscita in un oggetto sink creato dal client. L'oggetto chiama quindi i metodi dell'interfaccia in uscita sull'oggetto sink per notificare al client le modifiche apportate all'oggetto, attivare gli eventi nel client, richiedere qualcosa dal client o, in effetti, per qualsiasi scopo con cui l'autore dell'oggetto viene fornito.
Un esempio di interfaccia in uscita è un'interfaccia IButtonSink definita da un controllo pulsante di scelta per notificare ai client i relativi eventi. Ad esempio, l'oggetto pulsante chiama IButtonSink::OnClick sull'oggetto sink del client quando l'utente fa clic sul pulsante sullo schermo. Il controllo pulsante definisce l'interfaccia in uscita. Affinché un client del pulsante gestisca l'evento, il client deve implementare tale interfaccia in uscita in un oggetto sink e quindi connettere tale sink al controllo pulsante. Quindi, quando si verificano eventi nel pulsante, il pulsante chiamerà il sink, al momento in cui il client può eseguire qualsiasi azione che desidera assegnare a tale pulsante.
gli oggetti Connessione able forniscono un meccanismo generale per la comunicazione da oggetto a client. Qualsiasi oggetto che desidera esporre eventi o notifiche di qualsiasi tipo può usare questa tecnologia. Oltre alla tecnologia a oggetti connettibile generale, COM fornisce molte interfacce di sink e sito speciali usate dagli oggetti per notificare ai client eventi specifici di interesse per il client. Ad esempio, IAdviseSink può essere usato dagli oggetti per notificare ai client le modifiche ai dati e visualizzare le modifiche nell'oggetto.
Per ulteriori informazioni, vedi gli argomenti seguenti: