Eventos en objetos COM y conectables
Cuando un programa detecta algo que ha sucedido, puede notificar a sus clientes. Por ejemplo, si un programa de tics de acciones detecta un cambio en el precio de una acción, puede notificar a todos los clientes del cambio. Este proceso de notificación se conoce como activación de un evento.
Con COM, los objetos de servidor pueden usar eventos COM para desencadenar eventos sin información sobre qué objetos se notificarán. Los objetos también pueden usar objetos conectables para mantener información detallada sobre los clientes que han solicitado notificaciones.
Los objetos conectables COM proporcionan interfaces salientes a sus clientes además de sus interfaces entrantes. Como resultado, los objetos y sus clientes pueden participar en la comunicación bidireccional. Las interfaces entrantes se implementan en un objeto y reciben llamadas de clientes externos de un objeto, mientras que las interfaces salientes se implementan en el receptor del cliente y reciben llamadas del objeto. El objeto define una interfaz que le gustaría usar y el cliente lo implementa.
Un objeto define sus interfaces entrantes y proporciona implementaciones de estas interfaces. Las interfaces entrantes están disponibles para los clientes a través del método IUnknown::QueryInterface del objeto. Los clientes llaman a los métodos de una interfaz entrante en el objeto y el objeto realiza acciones deseadas en nombre del cliente.
Las interfaces salientes también se definen mediante un objeto , pero el cliente proporciona las implementaciones de las interfaces salientes en un objeto receptor que crea el cliente. A continuación, el objeto llama a los métodos de la interfaz saliente en el objeto receptor para notificar al cliente los cambios en el objeto, desencadenar eventos en el cliente, solicitar algo del cliente o, de hecho, para cualquier propósito con el que aparezca el creador del objeto.
Un ejemplo de una interfaz saliente es una interfaz IButtonSink definida por un control de botón de inserción para notificar a sus clientes sus eventos. Por ejemplo, el objeto button llama a IButtonSink::OnClick en el objeto receptor del cliente cuando el usuario hace clic en el botón de la pantalla. El control de botón define la interfaz saliente. Para que un cliente del botón controle el evento, el cliente debe implementar esa interfaz saliente en un objeto receptor y, a continuación, conectar ese receptor al control de botón. A continuación, cuando se produzcan eventos en el botón, el botón llamará al receptor, en cuyo momento el cliente puede ejecutar cualquier acción que desee asignar a ese clic de botón.
Los objetos conectables proporcionan un mecanismo general para la comunicación de objetos a cliente. Cualquier objeto que desee exponer eventos o notificaciones de cualquier tipo puede usar esta tecnología. Además de la tecnología general de objetos conectables, COM proporciona muchas interfaces de sitio y receptor de propósito especial usadas por objetos para notificar a los clientes de eventos específicos de interés al cliente. Por ejemplo, los objetos IAdviseSink pueden usarse para notificar a los clientes los datos y ver los cambios en el objeto.
Para obtener más información, vea los temas siguientes: