Suscripciones de notificación, eventos de buzón, y EWS en Exchange

Descubre las suscripciones de notificación y los eventos de buzón en EWS in Exchange.

Puedes utilizar tanto la API administrada de EWS como los servicios Web Exchange (EWS) para suscribirte y recibir notificaciones cuando los eventos se produzcan en un buzón de correo, o en una o más de las carpetas de un buzón. Hay tres tipos de suscripción disponibles: notificaciones de transmisión, notificaciones de extracción y notificaciones de inserción. Cada uno de estos tipos de suscripción utiliza diferentes técnicas para recibir o recuperar las notificaciones.

Recibir notificaciones: ¿qué opciones tengo?

EWS incluye tres tipos de suscripción que funcionan de forma independiente para notificar al cliente los cambios en el servidor. No importa qué tipo de suscripción elijas, al final tendrás acceso a todas las notificaciones de los mismos eventos, sólo depende de cómo se consiguen.

Tabla 1. Tipos de suscripción

Opción Descripción ¿Es adecuado para mí?
Notificaciones de transmisión
Notificaciones que son enviadas por el servidor a través de una conexión que permanece abierta durante un período de tiempo determinado.
Por lo general, se recomiendan las notificaciones de transmisión para la mayoría de las aplicaciones. Son similares a las notificaciones de extracción e inserción, y ofrecen las ventajas de las dos. Después de establecer la suscripción de notificación, la conexión permanece abierta hasta 30 minutos para permitir que el servidor devuelva las notificaciones al cliente. No es necesario solicitar actualizaciones, como lo harías con una suscripción de extracción, y no tienes que crear una aplicación de escucha de servicio web como lo harías con una suscripción de inserción.
Notificaciones de extracción
Notificaciones que son solicitadas (o extraídas) por el cliente.
Las notificaciones de extracción son por lo general más apropiadas para los clientes de conexión débil, en los que el cliente no está conectado de forma fiable a la red. Las notificaciones de extracción pueden crear un exceso de tráfico entre el cliente y el servidor porque el cliente está enviando frecuentes solicitudes al servidor para recuperar las notificaciones, y no todas las solicitudes resultan en la recuperación de las notificaciones.
Notificaciones de inserción
Notificaciones que son enviadas (o insertadas) por el servidor a un servicio web por parte del cliente a través de una dirección de devolución de llamada.
Por lo general, las notificaciones de inserción proporcionan una latencia de notificación menor que las notificaciones de extracción y son adecuadas para clientes estrechamente acoplados a los que el servidor tiene un acceso fiable y el cliente es accesible por IP. Sin embargo, las notificaciones de inserción han caído en desuso desde la llegada de las notificaciones de transmisión en Exchange 2010. En la medida de lo posible, te recomendamos que utilices las notificaciones por transmisión en lugar de las notificaciones de inserción en el futuro. Las notificaciones de inserción requieren que escribas una aplicación de escucha, que es donde se insertan las notificaciones. Esto tiene un ligero beneficio sobre las notificaciones de extracción ya que reduce el tráfico en la red, pero añade gastos generales al requerir una aplicación separada.

¿A qué eventos de EWS puedo suscribirme?

Los tipos de eventos EWS a los que se suscriben los clientes se definen mediante la enumeración EventType para la API administrada de EWS o el elemento EventType para EWS. Es posible suscribirse a los siguientes eventos de EWS:

Otro tipo de evento EWS, el evento Estado, está definido por el elemento EventType pero no estás suscrito a este evento. En su lugar, es enviado por el servidor para comprobar el estado del cliente para las notificaciones de transmisión e inserción solamente. El cliente tiene que responder a este evento o de lo contrario el cliente se quedará sin tiempo.

Una acción de un solo usuario suele dar lugar a la creación de múltiples notificaciones. Para ilustrar esto, el siguiente gráfico muestra algunos escenarios comunes y las notificaciones creadas para cada uno de ellos. La configuración del cliente tiene un impacto en las notificaciones recibidas, por lo que esta no es una lista exhaustiva de todas las opciones de configuración y notificaciones resultantes.

Figura 1. Tipos de eventos devueltos por las suscripciones de notificación

Tabla que muestra las notificaciones enviadas en escenarios de usuario comunes, como recibir nuevo correo, crear una nueva carpeta, mover una carpeta, etc.

El gráfico 1 simplifica el proceso de notificación. En realidad, se pueden crear múltiples notificaciones (incluso múltiples notificaciones del mismo tipo) para una sola acción del usuario. Por ejemplo, en el caso de una operación de traslado de una carpeta, se crean tres eventos de carpeta: uno para la carpeta que se está modificando, otro para la antigua carpeta principal y otro para la nueva carpeta principal. Dado que se pueden desencadenar numerosos eventos para una sola operación, se recomienda incorporar un tiempo de espera de unos pocos segundos en las operaciones de sincronización, de modo que sólo se sincronice cuando la acción se haya completado, en lugar de a mitad de la operación.

También es importante tener en cuenta que los ajustes de configuración que cada usuario elija afectarán a las notificaciones que se creen. Por ejemplo, los datos de disponibilidad de algunos usuarios se actualizan automáticamente y el evento FreeBusyChanged se crea cuando se recibe una nueva solicitud de reunión, incluso antes de que hayan leído el artículo. Para otros usuarios, los datos de disponibilidad no se actualizan y el evento FreeBusyChanged no se crea hasta después de que la reunión haya sido aceptada. Estos ajustes pueden tener un impacto considerable en las notificaciones creadas por el servidor.

¿Cómo funcionan las notificaciones de EWS?

Las notificaciones de EWS se administran por suscripción. Normalmente hay una suscripción por buzón, y dentro de la suscripción del buzón puedes suscribirte a algunas o a todas las carpetas. Puedes decidir a qué tipo de notificación suscribirte (de transmisión, de extracción o de inserción) y qué tipo de eventos te gustaría recibir (NewMail, Creado, Eliminado, Modificado, etc.), y luego puedes crear una suscripción. Los eventos de EWS se envían asincrónicamente desde el servidor del buzón al cliente. (Lección de historia: los eventos están sincronizados en Exchange 2007 - y los eventos se almacenan en el servidor de Acceso de Clientes en Exchange 2010, pero ya no).

Dependiendo del tipo de suscripción que tengas, las formas en que se envían las notificaciones al cliente pueden variar. En esta sección se describe con más detalle cómo funciona cada tipo de suscripción.

Notificaciones de transmisión EWS

Las notificaciones de transmisión se basan en una solicitud de colgado en el servidor para mantener abierta una conexión de suscripción de transmisión, de modo que cualquier evento que ocurra mientras la conexión está activa se transmita al cliente inmediatamente. Se pueden enviar múltiples notificaciones en el curso de una sola conexión, y la conexión se mantiene abierta hasta que el intervalo caduque, o durante un máximo de 30 minutos. Después de que la conexión caduque, el cliente envía la solicitud de colgado de nuevo. En el gráfico 2 se muestra cómo funcionan las suscripciones y las notificaciones de transmisión.

Figura 2. Información general sobre las notificaciones de streaming

Ilustración que muestra cómo funcionan las notificaciones de streaming. Para configurar las notificaciones de streaming: 1. Suscribirse, 2. Abrir conexión, 3. Esperar eventos, 4. Recibir eventos, repetir 3 y 4, 5. Cerrar o mantener conexión, 6. Cancelar suscripción o agotar tiempo de espera.

Para obtener información sobre la creación de notificaciones de transmisión consulta Notificaciones de transmisión de eventos de buzón de correo mediante el uso de EWS en Exchange.

Notificaciones de extracción EWS

Las notificaciones de extracción dependen de que el cliente pida las notificaciones en un intervalo de tiempo que el cliente administre. Esto puede dar lugar a respuestas de GetEvents sin notificaciones. En el gráfico 3 se muestra cómo funcionan las suscripciones y las notificaciones de extracción e inserción.

Figura 3. Introducción a las notificaciones de incorporación de cambios

Ilustración que muestra cómo funcionan las notificaciones de extracción. Para configurar las notificaciones de extracción: 1. Suscribirse, 2. Enviar GetEvents, 3. Recibir respuesta, repetir 2 y 3, 4. Cerrar o mantener conexión, 5. Cancelar suscripción o agotar tiempo de espera.

Para obtener información sobre la creación de notificaciones de extracción consulta Notificaciones de extracción de eventos de buzón de correo mediante el uso de EWS en Exchange.

Notificaciones de inserción EWS

Las notificaciones de inserción se basan en que el servidor devuelva las notificaciones al cliente. Sólo hay tráfico si hay una notificación. En el gráfico 4 se muestra cómo funcionan las suscripciones y las notificaciones de inserción.

Figura 4. Introducción a las notificaciones push

Ilustración que muestra cómo funcionan las notificaciones de inserción. Para configurar las notificaciones de inserción: 1. Crear agente de escucha, 2. Suscribirse, 3. Esperar eventos, 4. Recibir eventos, 5. Enviar respuesta

Si estás usando notificaciones de inserción con Exchange 2010 considera la posibilidad de actualizar tu aplicación para usar las notificaciones de transmisión, de modo que no necesites una aplicación separada para recibir los eventos.

¿Cómo me suscribo a las notificaciones?

Según el tipo de suscripción que quieras crear, tienes varias opciones para elegir para suscribirte a las notificaciones.

Tabla 2. Operaciones y métodos para suscribirse a notificaciones

Tipo de suscripción Operación de EWS Métodos de administración de la API de EWS Lo que hace
Transmisión
Operación de suscripción
ExchangeService.BeginSubscribeToStreamingNotifications method
ExchangeService.BeginSubscribeToStreamingNotificationsOnAllFolders method
ExchangeService.SubscribeToStreamingNotificationsOnAllFolders method
Crea una solicitud para suscribirse a las notificaciones de transmisión
Extracción
Operación de suscripción
ExchangeService.BeginSubscribeToPullNotifications method
ExchangeService.BeginSubscribeToPullNotificationsOnAllFolders method
ExchangeService.SubscribeToPullNotifications method
ExchangeService.SubscribeToPullNotificationsOnAllFolders method
Crea una solicitud para suscribirse a las notificaciones de extracción
Inserción
Operación de suscripción
ExchangeService.BeginSubscribeToPushNotifications overloaded method
ExchangeService.BeginSubscribeToPushNotificationsOnAllFolders overload method
ExchangeService.SubscribeToPushNotifications overloaded method
ExchangeService.SubscribeToPushNotificationsOnAllFolders overloaded method
Crea una solicitud para suscribirse a las notificaciones de inserción

¿Cómo consigo eventos de EWS?

Una vez creada la suscripción, la forma en que se envían los eventos actuales al cliente depende del tipo de suscripción.

Para las notificaciones de transmisión, debe crearse una conexión de suscripción de transmisión y luego la suscripción se agrega a la conexión. Puedes leer más sobre este proceso en Notificaciones de transmisión de eventos de buzón usando EWS en Exchange.

En el caso de las notificaciones de extracción, el objeto de la suscripción se inicializó cuando se creó la suscripción, por lo que sólo hay que llamar al método u operación GetEvent para recuperar los eventos del servidor. Puedes leer más acerca de esto en Notificaciones sobre eventos de buzón de correo usando EWS en Exchange.

La siguiente tabla enumera las operaciones y clases necesarias para recuperar los eventos.

Tabla 3. Elementos y clases para crear una conexión y obtener eventos

Tipo de suscripción Operación de EWS Método de la API administrada de EWS Lo que hace
Transmisión
Operación GetStreamingEvents
StreamingSubscriptionConnection.AddSubscription method
Crea una solicitud de colgado en el servidor, a la que se responde cuando se producen los eventos.
Extracción
Operación GetEvents
PullSubscription.GetEvents method
Obtiene los eventos de notificación de extracción del servidor.
Inserción
No procede.
No procede.
Las notificaciones de inserción se envían automáticamente al receptor del servicio web (la URL de devolución de llamada especificada en la solicitud de suscripción). No es necesario recurrir a métodos u operaciones adicionales.

¿Cómo puedo darme de baja de las notificaciones?

En el siguiente cuadro se enumeran las formas en que puede darse de baja de cada tipo de suscripción.

Tabla 4. Operaciones y métodos para cancelar la suscripción a las notificaciones

Tipo de suscripción EWS API administrada EWS
Transmisión
Operación Darse de baja
StreamingSubscription.BeginUnsubscribe method
StreamingSubscription.EndUnsubscribe method
StreamingSubscription.Unsubscribe method
Extracción
Operación Darse de baja
PullSubscription.BeginUnsubscribe method
PullSubscription.EndUnsubscribe method
PullSubscription.Unsubscribe method
Inserción
Devolver Darse de baja en el elemento StatusFrequency del SendNotificationResponseMessage
No procede. En vez de eso, deja que la suscripción caduque.

Otra posibilidad es dejar que cada una de las suscripciones caduquen.

Tabla 5. Tiempos de espera de suscripción

Tipo de suscripción Valor de caducidad en el EWS Valor de caducidad en la API administrada de EWS Gestión de la caducidad
Transmisión
ConnectionTimeout elemento
parámetro lifetime del constructor StreamingSubscriptionConnection
Para la API administrada de EWS, después de que el valor de caducidad haya terminado el evento OnDisconnect se aumenta. Si no se recurre al método StreamingSubscriptionConnection.Openla conexión se cierra.
Para EWS, después de que el valor de caducidad haya pasado, el mensaje GetUserConfigurationResponse devuelve un valor de ConnectionStatus de Closed.
Extracción
Caducidad elemento
parámetro timeout del método SubscribeToPullNotification
Una vez que el valor de caducidad haya transcurrido, el servidor borra la suscripción.
Inserción
StatusFrequency elemento
parámetro frequency del método SubscribeToPushNotification
Si el servidor no recibe una respuesta a una notificación de inserción o a un ping de estado, vuelve a intentar enviar la notificación varias veces antes de dejar de enviar las notificaciones. Para obtener más información, vea: StatusFrequency

¿Puedo limitar las suscripciones?

En un despliegue local, se puede limitar el número de suscripciones por usuario con el parámetro de limitación de EwsMaxSubscriptions. de la directiva de limitación. Esa directiva puede aplicarse a todos los usuarios o sólo a usuarios específicos. La directiva de limitación de EwsMaxSubscriptions no es configurable para Exchange Online.

En esta sección

Vea también