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:
NewMail - Un nuevo mensaje llegó a la bandeja de entrada.
Borrado - Un mensaje fue borrado por completo de la bandeja de entrada. Para obtener más información sobre las notificaciones de elementos eliminados, consulta Eliminación de elementos mediante el uso de EWS en Exchange y Notificaciones de extracción para eventos de buzón de correo relacionados con la eliminación de EWS en Exchange.
Modificado: se ha cambiado un elemento o una carpeta.
Trasladado: se ha trasladado un elemento o una carpeta.
Copiado: se ha copiado un elemento o una carpeta.
Creado: se ha creado un elemento o una carpeta.
FreeBusyChanged: se ha cambiado la información disponibilidad de un usuario.
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
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
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
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
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
¿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
- Notificaciones de transmisión de eventos de buzón usando EWS en Exchange
- Notificaciones de extracción de eventos de buzón utilizando EWS en Exchange
- Mantener la afinidad entre un grupo de suscripciones y el servidor del buzón de Exchange
- Manejo de errores relacionados con la notificación en EWS in Exchange