Pool de Conexões Refatorado
Contents
[
Hide
]
Com o lançamento do Aspose.Email 19.3, o pool de conexões foi refatorado. Uma nova EmailClient classe foi introduzida, que eventualmente substituirá a CredentialsByHostClient classe. A classe EmailClient fornece uma propriedade ConnectionAsgmtMode que define o modo de alocação de conexão em um ambiente multithread. O EmailClient.ConnectionAsgmtMode é definido usando o enumerável ConnectionAsgmtType.
Tipos de Conexões
Existem os seguintes três tipos de conexão:
- A conexão principal: Esta é a conexão criada e descartada juntamente com o cliente de e-mail. Não pode ser criada ou descartada manualmente.
- Conexão padrão: O usuário pode criar conexões padrão para threads com o método
CreateConnection
. Se a conexão padrão existir, todos os métodos do cliente de e-mail executados em um thread usarão implicitamente essa conexão. Apenas uma conexão padrão pode existir por thread. Ela pode ser criada manualmente ou automaticamente. Depende da propriedadeEmailClient.ConnectionAsgmtMode
. Essas conexões podem ser criadas manualmente com o métodoEmailClient.CreateConnection(createAsDefaultConnection = true)
. Se a conexão padrão não for utilizada (depende do modo de alocação de conexão), a conexão principal é usada implicitamente em seu lugar. - Conexões independentes: Estas são conexões que não estão vinculadas a threads. Elas podem ser criadas manualmente e devem ser utilizadas explicitamente como um parâmetro de método. Essas conexões podem ser criadas manualmente com o método
EmailClient.CreateConnection()
ou com o métodoEmailClient.CreateConnection(createAsDefaultConnection = false)
.
Tipos de Alocação de Conexões
Para configurar a propriedade EmailClient.ConnectionAsgmtMode, é utilizado o enumerável ConnectionAsgmtType. Os tipos de alocação fornecidos pelo ConnectionAsgmtType são listados abaixo.
ConnectionAsgmtType.UseMainOrDefault
: Este modo é utilizado por padrão nos clientes de e-mail. O cliente de e-mail utiliza a conexão principal para todas as operações de múltiplas threads se a conexão padrão não tiver sido criada, ou se uma conexão não tiver sido passada como parâmetro de método explicitamente. A conexão principal é a conexão que é criada ao mesmo tempo que um cliente de e-mail. O usuário pode criar conexões padrão para threads com o métodoCreateConnection
. Se a conexão padrão para uma thread for criada, ela é usada implicitamente para todos os métodos do cliente de e-mail que são invocados nesta thread. Se a conexão padrão para uma thread não for criada, a conexão principal é usada para todos os métodos do cliente de e-mail que são invocados nesta thread. O usuário também pode criar conexões não vinculadas a threads (não conexões padrão) com o métodoCreateConnection
. Se o usuário quiser usar outras conexões (não principal e não padrão), ele deve passar essa conexão explicitamente como um parâmetro de um método que deseja usar. O usuário pode, adicionalmente, criar qualquer número de conexões. A conexão padrão pode ser apenas uma por thread. Observe que as conexões padrão funcionam corretamente se o usuário usar objetos Thread para programação multithreading. Se o usuário usar ConnectionPool ou usar objetos Task para programação multithreading, esse modo pode levar a um comportamento incorreto da aplicação. Para evitar esse problema, o usuário deve descartar manualmente a conexão padrão (se a estiver utilizando) no final da execução do código.ConnectionAsgmtType.UseMain
: O cliente de e-mail usa a conexão principal para todas as operações de múltiplas threads. A conexão principal é a conexão que é criada ao mesmo tempo que o cliente de e-mail. O usuário não pode criar conexões padrão. O usuário pode criar conexões não vinculadas a threads (não conexões padrão) com o método CreateConnection. Se o usuário quiser usar outras conexões (não principal e não padrão), ele deve passar essa conexão explicitamente como um parâmetro de um método que deseja usar.ConnectionAsgmtType.UseDefault
: O cliente de e-mail usa implicitamente apenas conexões padrão para todas as operações de múltiplas threads. A conexão principal não é utilizada neste modo. Se a conexão padrão não tiver sido criada para alguma thread (primeira invocação do método do cliente de e-mail), o cliente de e-mail cria implicitamente a conexão padrão para a thread antes da primeira operação ser executada. O usuário não pode criar conexões padrão para threads com o método CreateConnection porque são criadas automaticamente. Quando a conexão padrão para uma thread é criada, ela é utilizada implicitamente para todos os métodos do cliente de e-mail que são invocados nesta thread. O usuário também pode criar conexões que não estão vinculadas a threads (não conexões padrão) com o método CreateConnection. Se o usuário quiser usar outras conexões (não principal e não padrão), ele deve passar essa conexão explicitamente como um parâmetro de um método que deseja usar. O usuário pode, adicionalmente, criar qualquer número de conexões. Apenas uma conexão padrão pode ser usada por thread. Observe que as conexões padrão funcionam corretamente se o usuário usar objetos Thread para programação multithreading. Se o usuário usar ConnectionPool ou usar objetos Task para programação multithreading, esse modo pode levar a um comportamento incorreto da aplicação. Para evitar esse problema, o usuário deve descartar manualmente a conexão padrão no final da execução do código.