Compartilhar via


Assinaturas

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

A coleção SubscriptionsForComponent é 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 da coleção SubscriptionsForComponent.

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

  • Identidade e localização do assinante
  • Método de entrega
  • Métodos de entrega de eventos
  • 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 assinaturas são os seguintes:

Persistente

As assinaturas persistentes residem no catálogo COM+ e são independentes do tempo de vida do assinante. As assinaturas persistentes sobrevivem a uma reinicialização do sistema. Geralmente, uma assinatura persistente é criada quando um aplicativo é instalado no computador de um assinante e removida 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 um objeto de classe de evento, 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 de 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ção TransientSubscriptions , 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 usuário

As assinaturas por usuário podem entregar eventos somente quando o assinante está conectado ao computador do sistema de eventos. Quando o assinante faz logon, o sistema de eventos habilita todas as assinaturas nas quais o sinalizador PerUser é 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 assinaturas por usuário são efetivas somente quando o editor e o assinante estão no mesmo computador. O logon e o logoff são detectados 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 a ID da interface de disparo (IID_IEventObjectChange).

Filtrando eventos no COM+

Publicação e entrega de eventos em COM+

O objeto de classe de evento COM+

Usando eventos COM+ com componentes em fila COM+