Conexión Pool Refactorizada

Con el lanzamiento de Aspose.Email 19.3, el pool de conexiones ha sido refactorizado. Se ha introducido la 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 mediante 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 o eliminar manualmente.
  • Conexión predeterminada: El usuario puede crear conexiones predeterminadas para hilos con el método CreateConnection. Si existe una conexión predeterminada, 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), se utiliza la conexión principal 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 del 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 Conexiones

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

  • 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 desde múltiples hilos si no se ha creado una conexión predeterminada, o si no se ha pasado una conexión como parámetro de método explícitamente. La conexión principal es una conexión que se crea al mismo tiempo que el 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 de un método que desea utilizar. El usuario puede crear adicionalmente cualquier número de conexiones. La conexión predeterminada puede ser solo una por hilo. Tenga en cuenta que las conexiones predeterminadas funcionan correctamente si el usuario utiliza objetos de hilo para la programación multitarea. Si el usuario utiliza ConnectionPool o utiliza objetos de tareas para la programación multitarea, este modo puede llevar a un comportamiento incorrecto de la aplicación. Para evitar este problema, el usuario tiene que eliminar manualmente la conexión predeterminada (si la está utilizando) al final de la ejecución del código.
  • ConnectionAsgmtType.UseMain: El cliente de correo utiliza la conexión principal para todas las operaciones desde múltiples hilos. La conexión principal es una conexión 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 de un método que desea utilizar. 
  • ConnectionAsgmtType.UseDefault: El cliente de correo utiliza implícitamente solo conexiones predeterminadas para todas las operaciones desde 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 de un método que desea utilizar. El usuario puede crear adicionalmente 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 de hilo para la programación multitarea. Si el usuario utiliza ConnectionPool o utiliza objetos de tareas para la programación multitarea, este modo puede llevar a un comportamiento incorrecto de la aplicación. Para evitar este problema, el usuario tiene que eliminar manualmente la conexión predeterminada al final de la ejecución del código.