Partilhar via


Subscrições

Os dados da subscrição residem no catálogo COM+ da subscrição. Uma assinatura pode ser criada usando a ferramenta administrativa Serviços de Componentes ou programaticamente usando a interfaceICOMAdminCatalog::InstallComponent.

A coleçãoSubscriptionsForComponent é usada para adicionar, excluir ou alterar informações referentes a assinaturas. A coleção SubscriptionsForComponent é uma coleção filho para um componente. Para adicionar uma assinatura, obtenha a coleção SubscriptionsForComponent do componente e use o método Add para adicionar uma entrada à coleção. Para configurar as várias propriedades do objeto de assinatura, use a propriedade Value. Para salvar as alterações, use SaveChanges no objeto de coleção SubscriptionsForComponent.

Você também pode usar a ferramenta de administração dos Serviços de Componentes para modificar algumas, mas não todas, as propriedades da assinatura. As subscrições especificam as seguintes informações:

  • Identidade e localização do assinante
  • Método de entrega
  • Métodos de entrega do evento
  • Objeto de classe de evento e propriedade PublisherID de um componente de classe de evento do qual o assinante deseja receber eventos

As assinaturas existem independentemente dos objetos de classe de evento. Você pode desabilitar uma assinatura definindo a propriedade Enabled como False. Uma assinatura desabilitada não é chamada pelo COM+ Events.

Os três tipos de subscrições são os seguintes:

Persistente

As assinaturas persistentes residem no catálogo COM+ e são independentes do tempo de vida do assinante. As subscrições persistentes sobrevivem a um reinício do sistema. Geralmente, uma assinatura persistente é criada quando um aplicativo é instalado no computador de um assinante e removido quando o aplicativo é removido. Depois que uma assinatura persistente é criada, o COM+ Events ativa o assinante sempre que um evento deve ser entregue a ele.

Quando um editor instancia e faz uma chamada em uma classe de evento objeto, o objeto procura todas as assinaturas persistentes no catálogo COM+ e cria uma nova instância de cada objeto. O processo de criação pode ser direto ou por meio de um apelido para componentes enfileirados. Especifique o objeto do assinante pela propriedade SubscriberMoniker da assinatura. Os objetos de assinante criados por uma assinatura persistente são sempre liberados após cada chamada de evento.

Transitório

Para assinaturas transitórias, você pode usar a coleçãoTransientSubscriptions, cujo objeto pai é o objeto de catálogo raiz. As assinaturas transitórias solicitam um evento para um objeto de assinante específico que já existe. As assinaturas transitórias são armazenadas no catálogo COM+, mas a assinatura é excluída se o sistema de eventos ou o sistema operacional for interrompido. Ao contrário das assinaturas persistentes, as assinaturas transitórias são vinculadas a um objeto específico e são armazenadas apenas no sistema de eventos. As assinaturas transitórias podem ser mais eficientes do que as persistentes, mas você deve gerenciar seus ciclos de vida de objeto. Para obter informações sobre como registrar uma assinatura transitória, consulte Registrando uma assinatura transitória.

Por utilizador

As subscrições por utilizador só podem apresentar eventos quando o subscritor tiver sessão iniciada no computador do sistema de eventos. Quando o assinante faz logon, o sistema de eventos habilita todas as assinaturas nas quais o sinalizador PerUser está definido como TRUE e UserName é definido como o nome do usuário que está conectado. Quando o assinante faz logoff, as assinaturas são desabilitadas.

As subscrições por Utilizador só são válidas quando o editor e o subscritor estão no mesmo computador. O logon e o logoff são detetados somente no computador do editor, não no computador no qual o objeto do assinante reside.

O sistema de eventos usa metaeventos para notificar os assinantes interessados sempre que objetos de classe de evento ou assinaturas são criados, modificados ou removidos. Para receber metaeventos do sistema de eventos, os aplicativos devem criar uma assinatura que resida no computador do sistema de eventos e que especifique o ID da interface de disparo (IID_IEventObjectChange).

Filtrando eventos em COM+

Publicação e realização de eventos em COM+

O objeto de classe de evento COM+

Usando eventos COM+ com componentes enfileirados COM+