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 classe EmailClient foi introduzida, que eventualmente substituirá a classe CredentialsByHostClient. A classe EmailClient fornece uma propriedade ConnectionAsgmtMode que define o modo de alocação de conexão em um ambiente multithread. EmailClient.ConnectionAsgmtMode é configurado usando o enumerável ConnectionAsgmtType.
Tipos de Conexões
Existem três tipos de conexões a seguir:
- Conexão principal: Esta é a conexão criada e descartada junto 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 uma thread usarão implicitamente esta conexão. Apenas uma conexão padrão pode existir por thread. Pode ser criada manual ou automaticamente. Isso 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 é utilizada implicitamente em vez dela. - Conexões independentes: Estas são conexões que não estão vinculadas a threads. Podem ser criadas manualmente e devem ser usadas explicitamente como um parâmetro de método. Essas conexões podem ser criadas manualmente com o método
EmailClient.CreateConnection()
ouEmailClient.CreateConnection(createAsDefaultConnection = false)
.
Tipos de Alocação de Conexão
Para configurar a propriedade EmailClient.ConnectionAsgmtMode, utiliza-se o enumerável ConnectionAsgmtType. Os tipos de alocação fornecidos por 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 foi criada, ou se uma conexão não foi passada como parâmetro de método explicitamente. A conexão principal é uma conexão que é criada ao mesmo tempo que o 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 é utilizada 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 é utilizada 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 principais e não padrão), deve passar essa conexão explicitamente como um parâmetro de um método que deseja usar. O usuário pode ainda 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 multitarefa. Se o usuário usar ConnectionPool ou objetos Task para programação multitarefa, 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) ao final da execução do código.ConnectionAsgmtType.UseMain
: O cliente de e-mail utiliza a conexão principal para todas as operações de múltiplas threads. A conexão principal é uma 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 principais e não padrão), deve passar essa conexão explicitamente como um parâmetro de um método que deseja usar.ConnectionAsgmtType.UseDefault
: O cliente de e-mail utiliza 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 foi criada para alguma thread (primeira invocação de método do cliente de e-mail), o cliente de e-mail cria a conexão padrão implicitamente para a thread antes que a primeira operação seja executada. O usuário não pode criar conexões padrão para threads com o método CreateConnection porque elas 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 pode também 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 principais e não padrão), deve passar essa conexão explicitamente como um parâmetro de um método que deseja usar. O usuário pode ainda criar qualquer número de conexões. Apenas uma conexão padrão pode ser utilizada por thread. Observe que as conexões padrão funcionam corretamente se o usuário usar objetos Thread para programação multitarefa. Se o usuário usar ConnectionPool ou objetos Task para programação multitarefa, 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 ao final da execução do código.