Pool de conexiones refactorizado

Con el lanzamiento de Aspose.Email 19.3, el pool de conexiones ha sido refactorizado. Nuevo EmailClient clase ha sido introducida y eventualmente reemplazará el CredentialsByHostClient clase. El EmailClient clase proporciona un ConnectionAsgmtMode propiedad que define el modo de asignación de conexión en un entorno multihilo. EmailClient.ConnectionAsgmtMode se establece usando el ConnectionAsgmtType enumerable.

Tipos de conexiones

Existen los siguientes tres tipos de conexión:

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

Tipos de asignación de conexión

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

  • ConnectionAsgmtType.UseMainOrDefault Este modo se usa por defecto en los clientes de correo. El cliente de correo usa la conexión principal para todas las operaciones desde múltiples hilos si no se ha creado una conexión predeterminada, o si una conexión no ha sido pasada explícitamente como parámetro del método. 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 CreateConnection método. Si la conexión predeterminada para un hilo está creada, se usa implícitamente para todos los métodos del cliente de correo que se invocan en ese hilo. Si la conexión predeterminada para un hilo no está creada, se usa la conexión principal para todos los métodos del cliente de correo que se invocan en ese hilo. El usuario también puede crear conexiones que no estén vinculadas a hilos (no son conexiones predeterminadas) con el CreateConnection método. Si el usuario desea usar otras conexiones (que no sean la principal ni la predeterminada) debe pasar esta conexión explícitamente como parámetro del método que desea utilizar. El usuario también puede crear 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 usa objetos Thread para programación multitarea. Si el usuario usa ConnectionPool o emplea objetos Task para programación multitarea, este modo puede provocar un comportamiento incorrecto de la aplicación. Para evitar este problema, el usuario debe disponer manualmente de la conexión predeterminada (si la usa) al final de la ejecución del código.
  • ConnectionAsgmtType.UseMain El cliente de correo usa 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 que no están vinculadas a hilos (no son conexiones predeterminadas) con el CreateConnection método. Si el usuario desea usar otras conexiones (que no sean la principal ni la predeterminada) debe pasar esta conexión explícitamente como parámetro del método que quiere usar. 
  • ConnectionAsgmtType.UseDefault El cliente de correo usa implícitamente sólo conexiones predeterminadas para todas las operaciones desde múltiples hilos. La conexión principal no se utiliza en este modo. Si la conexión predeterminada no se ha creado para algún hilo (primera invocación del método del cliente de correo), el cliente crea la conexión predeterminada implícitamente para el hilo antes de ejecutar la primera operación. El usuario no puede crear conexiones predeterminadas para hilos con CreateConnectionmétodo porque se crean automáticamente. Cuando se crea una conexión predeterminada para un hilo, se usa implícitamente para todos los métodos del cliente de correo que se invocan en ese hilo. El usuario también puede crear conexiones que no están vinculadas a hilos (no son conexiones predeterminadas) con el CreateConnectionmétodo. Si el usuario desea usar otras conexiones (que no sean la principal ni la predeterminada) debe pasar esta conexión explícitamente como parámetro del método que desea utilizar. El usuario también puede crear cualquier número de conexiones. Sólo una conexión predeterminada puede usarse por hilo. Tenga en cuenta que las conexiones predeterminadas funcionan correctamente si el usuario usa objetos Thread para programación multitarea. Si el usuario utiliza ConnectionPool o usa objetos Task para programación multitarea, este modo puede provocar un comportamiento incorrecto de la aplicación. Para evitar este problema, el usuario debe disponer manualmente la conexión predeterminada al final de la ejecución del código.