Conexión de Pool Refactorizada

Con el lanzamiento de Aspose.Email 19.3, el pool de conexiones ha sido refactorizado. Se ha introducido una nueva clase EmailClient que eventualmente reemplazará la clase CredentialsByHostClient. La clase EmailClient proporciona una propiedad ConnectionAsgmtMode que define el modo de asignación de conexiones en un entorno multihilo. EmailClient.ConnectionAsgmtMode se establece utilizando el enumerable ConnectionAsgmtType.

Tipos de Conexiones

Existen los siguientes tres tipos de conexiones:

  • La conexión principal: Esta es la conexión creada y eliminada junto con el cliente de correo. No se puede crear ni eliminar manualmente.
  • Conexión predeterminada: El usuario puede crear conexiones predeterminadas para hilos con el método CreateConnection. Si la conexión predeterminada existe, todos los métodos del cliente de correo que se ejecuten en un hilo utilizarán implícitamente esta conexión. Solo puede existir una conexión predeterminada por hilo. Puede ser creada manual o automáticamente. Depende de la propiedad EmailClient.ConnectionAsgmtMode. Estas conexiones pueden ser creadas manualmente con el método EmailClient.CreateConnection(createAsDefaultConnection = true). Si no se utiliza la conexión predeterminada (depende del modo de asignación de conexiones), la conexión principal se utiliza implícitamente en su lugar.
  • Conexiones independientes: Estas son conexiones que no están vinculadas a hilos. Pueden ser creadas manualmente y deben ser utilizadas explícitamente como un parámetro de método. Estas conexiones pueden ser creadas manualmente con el método EmailClient.CreateConnection() o con el método EmailClient.CreateConnection(createAsDefaultConnection = false).

Tipos de Asignación de Conexión

Para configurar la propiedad EmailClient.ConnectionAsgmtMode, se utiliza el enumerable ConnectionAsgmtType. A continuación se enumeran los tipos de asignación proporcionados por ConnectionAsgmtType.

  • ConnectionAsgmtType.UseMainOrDefault: Este modo se utiliza por defecto en los clientes de correo. El cliente de correo utiliza la conexión principal para todas las operaciones de múltiples hilos si no se ha creado una conexión predeterminada, o si no se ha pasado explícitamente una conexión como parámetro de método. La conexión principal es aquella que se crea al mismo tiempo que un cliente de correo. El usuario puede crear conexiones predeterminadas para hilos con el método CreateConnection. Si se crea una conexión predeterminada para un hilo, se utiliza implícitamente para todos los métodos del cliente de correo que se invoquen en este hilo. Si no se crea una conexión predeterminada para un hilo, se utiliza la conexión principal para todos los métodos del cliente de correo que se invoquen en este hilo. El usuario también puede crear conexiones no vinculadas a hilos (no conexiones predeterminadas) con el método CreateConnection. Si el usuario desea utilizar otras conexiones (no principales y no predeterminadas), debe pasar esta conexión explícitamente como un parámetro a un método que desee utilizar. El usuario puede crear además cualquier número de conexiones. Solo puede haber una conexión predeterminada por hilo. Tenga en cuenta que las conexiones predeterminadas funcionan correctamente si el usuario utiliza objetos Thread para la programación multitarea. Si el usuario utiliza ConnectionPool o utiliza objetos Task para la programación multitarea, este modo puede llevar a un comportamiento incorrecto de la aplicación. Para evitar este problema, el usuario debe eliminar manualmente la conexión predeterminada (si la utiliza) al final de la ejecución del código.
  • ConnectionAsgmtType.UseMain: El cliente de correo utiliza la conexión principal para todas las operaciones de múltiples hilos. La conexión principal es aquella que se crea al mismo tiempo que el cliente de correo. El usuario no puede crear conexiones predeterminadas. El usuario puede crear conexiones no vinculadas a hilos (no conexiones predeterminadas) con el método CreateConnection. Si el usuario desea utilizar otras conexiones (no principales y no predeterminadas), debe pasar esta conexión explícitamente como un parámetro a un método que desee utilizar. 
  • ConnectionAsgmtType.UseDefault: El cliente de correo utiliza implícitamente solo conexiones predeterminadas para todas las operaciones de múltiples hilos. La conexión principal no se utiliza en este modo. Si no se ha creado una conexión predeterminada para algún hilo (primera invocación del método del cliente de correo), el cliente de correo crea una conexión predeterminada implícitamente para el hilo antes de que se ejecute la primera operación. El usuario no puede crear conexiones predeterminadas para hilos con el método CreateConnection porque se crean automáticamente. Cuando se crea una conexión predeterminada para un hilo, se utiliza implícitamente para todos los métodos del cliente de correo que se invoquen en este hilo. El usuario también puede crear conexiones que no están vinculadas a hilos (no conexiones predeterminadas) con el método CreateConnection. Si el usuario desea utilizar otras conexiones (no principales y no predeterminadas), debe pasar esta conexión explícitamente como un parámetro a un método que desee utilizar. El usuario puede crear además cualquier número de conexiones. Solo se puede utilizar una conexión predeterminada por hilo. Tenga en cuenta que las conexiones predeterminadas funcionan correctamente si el usuario utiliza objetos Thread para la programación multitarea. Si el usuario utiliza ConnectionPool o utiliza objetos Task para la programación multitarea, este modo puede llevar a un comportamiento incorrecto de la aplicación. Para evitar este problema, el usuario debe eliminar manualmente la conexión predeterminada al final de la ejecución del código.