Assinaturas de notificação, eventos de caixa de correio e EWS no Exchange
Saiba mais sobre assinaturas de notificação e evento de caixa de correio do EWS no Exchange.
Você pode usar a API Gerenciada do EWS e os Serviços Web do Exchange (EWS) para assinar a fim de receber notificações quando ocorrerem eventos em uma caixa de correio ou em uma ou mais pastas de uma caixa de correio. Há três tipos de assinatura disponíveis: notificações de streaming, notificações por pull e notificações por push. Cada um desses tipos de assinatura usa técnicas diferentes para receber ou recuperar as notificações.
Obtendo notificações – quais são as minhas opções?
O EWS inclui três tipos de assinatura que funcionam independentemente para notificar o cliente sobre alterações no servidor. Não importa o tipo de assinatura que você escolher, você terá acesso aos mesmos eventos de notificação no final - é apenas uma questão de como você os obtém.
Tabela 1. Tipos de assinatura
Opção | Descrição | É ideal para mim? |
---|---|---|
Notificações de streaming |
Notificações enviadas pelo servidor por meio de uma conexão que permanece aberta por um determinado período de tempo. |
As notificações de streaming geralmente são recomendadas para a maioria dos aplicativos. Elas são semelhantes às notificações por push e pull e oferecem o melhor dos dois mundos. Depois de estabelecer sua assinatura de notificação, a conexão permanece aberta por até 30 minutos para permitir que o servidor envie notificações de volta para o cliente. Não há necessidade de solicitar atualizações, como faria com uma assinatura pull, e você não precisa criar um aplicativo ouvinte de serviço Web como faria com uma assinatura push. |
Notificações por pull |
Notificações que são solicitadas (ou extraídas) pelo cliente. |
As notificações por pull são geralmente mais apropriadas para clientes com acoplamento inflexível, onde o cliente não está conectado de forma confiável à rede. As notificações por pull podem criar tráfego excessivo entre o cliente e o servidor porque o cliente envia solicitações frequentes ao servidor para recuperar notificações e nem todas as solicitações resultam em notificações recuperadas. |
Notificações por push |
Notificações que são enviadas (ou empurradas) pelo servidor para um serviço Web do lado do cliente por meio de um endereço de retorno de chamada. |
Geralmente, as notificações por push fornecem latência de notificação menor do que as notificações por pull e são adequadas para clientes com acoplamento rígido aos quais o servidor tem acesso confiável e o cliente é endereçável por IP. No entanto, as notificações por push caíram em desuso desde o surgimento das notificações de streaming no Exchange 2010. Se possível, recomendamos que use as notificações de streaming em vez de notificações por push daqui para frente. As notificações por push exigem a criação de um aplicativo ouvinte, que é para onde as notificações são enviadas. Isso tem um pequeno benefício em relação às notificações por pull, pois reduz o tráfego de rede, mas adiciona sobrecarga ao exigir um aplicativo separado. |
Quais eventos do EWS posso assinar?
Os tipos de eventos do EWS que os clientes assinam são definidos pela enumeração EventType para a API gerenciada do EWS ou pelo elemento EventType para o EWS. Os seguintes eventos EWS estão disponíveis para assinatura:
NewMail – uma nova mensagem recebida na Caixa de Entrada.
Excluída — Uma mensagem foi excluída definitivamente da Caixa de entrada. Para saber mais sobre notificações de itens excluídos, consulte Exclusão de itens usando o EWS no Exchange e Notificações pull para eventos de caixa de correio relacionados à exclusão do EWS no Exchange.
Modificado — um item ou pasta foi alterado.
Movido — um item ou pasta foi movido.
Copiado — um item ou pasta foi copiado.
Criado — um item ou pasta foi criado.
FreeBusyChanged – a informação de disponibilidade de um usuário foi alterada.
Outro tipo de evento do EWS, o evento Status, é definido pelo elemento EventType, mas você não assina esse evento. Em vez disso, ele é enviado pelo servidor para verificar o status do cliente apenas para streaming e notificações por push. O cliente deve responder a este evento ou o cliente atingirá o tempo limite.
Uma única ação do usuário geralmente resulta na criação de várias notificações. Para ilustrar isso, a figura a seguir mostra alguns cenários comuns e as notificações criadas para cada um deles. As configurações do cliente têm um impacto nas notificações recebidas, então essa não é uma lista completa de todas as opções de configuração e notificações resultantes.
Figura 1. Tipos de eventos retornados por assinaturas de notificação
A Figura 1 simplifica o processo de notificação. Na verdade, várias notificações (até mesmo diversas notificações do mesmo tipo) podem ser criadas para uma única ação do usuário. Por exemplo, no caso de uma operação de movimentação de pasta, são criados três eventos de pasta: um para a pasta sendo modificada, um para a pasta pai antiga e outro para a nova pasta pai. Como vários eventos podem ser disparados em uma única operação, recomendamos que você compile o tempo de espera de alguns segundos em suas operações de sincronização, de modo que só sincronize quando a ação for concluída, em vez de no meio da operação.
Também é importante observar que as definições de configuração que cada usuário escolhe afetarão as notificações criadas. Por exemplo, os dados de disponibilidade de alguns usuários são atualizados automaticamente e o evento FreeBusyChanged é criado quando uma nova solicitação de reunião é recebida, mesmo antes de ler o item. Para outros usuários, os dados de disponibilidade não são atualizados e o evento FreeBusyChanged não é criado até que a reunião seja aceita. Essas configurações podem ter um impacto considerável nas notificações criadas pelo servidor.
Como funcionam as notificações do EWS?
As notificações do EWS são tratadas de acordo com a assinatura. Normalmente, há uma assinatura por caixa de correio e, na assinatura da caixa de correio, você pode assinar algumas ou todas as pastas. Você decide que tipo de notificação deseja assinar (streaming, pull ou push) e que tipo de eventos deseja receber (NewMail, Criado, Excluído, Modificado, etc.) e, em seguida, cria uma assinatura. Os eventos do EWS são então enviados de forma assíncrona do servidor de caixa de correio para o cliente. (Lição do histórico: os eventos são síncronos no Exchange 2007 - e os eventos são armazenados no servidor de Acesso para Cliente no Exchange 2010, mas não mais!).
Dependendo do tipo de assinatura que você possui, as formas como as notificações são enviadas ao cliente variam. Esta seção descreve como cada tipo de assinatura funciona com mais detalhes.
Notificações de streaming do EWS
As notificações de streaming dependem de uma solicitação get deslocada no servidor para manter uma conexão de assinatura de streaming aberta, de modo que quaisquer eventos que ocorram enquanto a conexão estiver ativa sejam transmitidos ao cliente imediatamente. Várias notificações podem ser enviadas durante uma conexão simples, e a conexão permanece aberta até que o intervalo expire ou por, no máximo, 30 minutos. Após a conexão expirar, o cliente envia a solicitação get deslocada novamente. A Figura 2 mostra como as assinaturas de streaming e as notificações de streaming funcionam.
Figura 2. Visão geral da notificação de streaming
Para saber mais sobre a criação de notificações de streaming, confira Transmitir notificações sobre eventos de caixa de correio usando o EWS no Exchange..
Notificações por pull do EWS
As notificações por pull dependem do cliente solicitar as notificações em um intervalo gerenciado pelo cliente. Isso pode resultar em respostas GetEvents sem notificações. A Figura 3 mostra como as assinaturas pull e as notificações por pull funcionam.
Figura 3. Visão geral da notificação por pull
Para saber mais sobre a criação de notificações por pull, confira Efetuar pull de notificações sobre eventos de caixa de correio usando o EWS no Exchange..
Notificações por push do EWS
As notificações por push contam com o servidor enviando notificações de volta ao cliente. Só há tráfego se houver uma notificação. A Figura 4 mostra como a assinatura push e as notificações por push funcionam.
Figura 4. Visão geral da notificação por push
Se você estiver usando as notificações por push com o Exchange 2010, considere atualizar seu aplicativo para usar notificações de streaming, para que você não precise de um aplicativo separado para receber os eventos.
Como assino as notificações?
Dependendo do tipo de assinatura que deseja criar, você tem várias opções de escolha para assinar as notificações.
Tabela 2. Operações e métodos para assinar notificações
Como obtenho os eventos do EWS?
Depois de criar a assinatura, a maneira como os eventos reais serão enviados ao cliente dependerá do tipo de assinatura.
Para notificações de streaming, uma conexão de assinatura de streaming deve ser criada e, em seguida, a assinatura será adicionada à conexão. Você pode ler mais sobre esse processo em Transmitir notificações sobre eventos de caixa de correio usando o EWS no Exchange.
Para notificações por pull, o objeto de assinatura foi inicializado quando a assinatura foi criada, então você só precisa chamar o método ou operação GetEvent para recuperar os eventos do servidor. Você pode ler mais sobre isso em Efetuar pull de notificações sobre eventos de caixa de correio usando o EWS no Exchange.
A tabela a seguir lista as operações e classes necessárias para recuperar eventos.
Tabela 3. Elementos e classes para criar uma conexão e obter eventos
Tipo de assinatura | Operação do EWS | Método da API Gerenciada do EWS | Função |
---|---|---|---|
Streaming |
Operação GetStreamingEvents |
Método StreamingSubscriptionConnection.AddSubscription method |
Cria uma solicitação get deslocada no servidor, que é respondida quando os eventos ocorrem. |
Efetuar pull |
Operação GetEvents |
Método PullSubscription.GetEvents |
Obtém eventos de notificação por pull do servidor. |
Enviar por push |
Não aplicável. |
Não aplicável. |
As notificações por push são enviadas automaticamente ao ouvinte do serviço Web (a URL de retorno de chamada especificada na solicitação da assinatura). Não é necessário chamar nenhum outro método ou operação. |
Como cancelo assinatura das notificações?
A tabela a seguir lista as maneiras pelas quais você pode cancelar assinatura de cada tipo de assinatura.
Tabela 4. Operações e métodos para cancelar assinatura das notificações
Tipo de assinatura | EWS | API Gerenciada do EWS |
---|---|---|
Streaming |
Operação de cancelamento de assinatura |
Método StreamingSubscription.BeginUnsubscribe Método StreamingSubscription.EndUnsubscribe Método StreamingSubscription.Unsubscribe |
Efetuar pull |
Operação de cancelamento de assinatura |
Método PullSubscription.BeginUnsubscribe Método PullSubscription.EndUnsubscribe Método PullSubscription.Unsubscribe |
Enviar por push |
Retornar Cancelar assinatura no elemento StatusFrequency do SendNotificationResponseMessage |
Não aplicável. Em vez disso, deixe a assinatura expirar. |
Como alternativa, você pode deixar cada uma das assinaturas expirar.
Tabela 5. Tempo limite da assinatura
Tipo de assinatura | Valor de tempo limite no EWS | Valor de tempo limite na API Gerenciada do EWS | Tratamento de tempo limite |
---|---|---|---|
Streaming |
Elemento ConnectionTimeout |
Parâmetro de tempo de vida do construtor StreamingSubscriptionConnection |
Para a API Gerenciada do EWS, depois que o valor de tempo limite expirar, o evento OnDisconnect será gerado. Se o método StreamingSubscriptionConnection.Open não for chamado, a conexão será fechada. Para o EWS, depois que o valor de tempo limite expira, a mensagem GetUserConfigurationResponse retorna um valor ConnectionStatus de fechado. |
Efetuar pull |
elemento tempo limite |
parâmetro de tempo limite do método SubscribeToPullNotification |
Após o valor de tempo limite expirar, o servidor excluirá a assinatura. |
Enviar por push |
elemento StatusFrequency |
parâmetro de frequência do método SubscribeToPushNotification |
Se o servidor não receber uma resposta a uma notificação por push ou ping de status, ele tentará enviar a notificação várias vezes antes de parar de enviar as notificações. Para obter mais informações, consulte StatusFrequency. |
Posso limitar as assinaturas?
Em uma implantação local, você pode limitar o número de assinaturas por usuário com o parâmetro de limitação EwsMaxSubscriptions da política de limitação. Essa política pode ser aplicada a todos os usuários ou apenas a usuários específicos. A política de limitação EwsMaxSubscriptions não é configurável para o Exchange Online.
Nesta seção
- Transmitir notificações sobre eventos de caixa de correio usando o EWS no Exchange
- Efetuar pull de notificações sobre eventos de caixa de correio usando o EWS no Exchange
- Manter afinidade entre um grupo de assinaturas e o servidor de caixa de correio no Exchange
- Manipulação de erros relacionados a notificações no EWS no Exchange