Pool de Conexões Refatorado
Contents
[
Hide
]
Com o lançamento do Aspose.Email 19.3, o pool de conexões foi refatorado. Novo EmailClient classe foi introduzida e eventualmente substituirá o CredentialsByHostClient classe. O EmailClient classe fornece um ConnectionAsgmtMode propriedade que define o modo de alocação de conexão em um ambiente multithread. EmailClient.ConnectionAsgmtMode é definido usando o ConnectionAsgmtType enumerável.
Tipos de Conexões
Existem os seguintes três tipos de conexão:
- A conexão principal: é 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 CreateConnection método. Se a conexão padrão existir, todos os métodos do cliente de e‑mail executados em uma thread usarão essa conexão implicitamente. Apenas uma conexão padrão pode existir por thread. Ela pode ser criada manualmente ou automaticamente. Depende da propriedade EmailClient.ConnectionAsgmtMode. Essas conexões podem ser criadas manualmente com EmailClient.CreateConnection(createAsDefaultConnection = true) método. Se a conexão padrão não for usada (depende do modo de alocação de conexão), a conexão principal será usada implicitamente em seu lugar.
- Conexões independentes: são conexões que não estão vinculadas a threads. Elas podem ser criadas manualmente e precisam ser usadas explicitamente como parâmetro de método. Essas conexões podem ser criadas manualmente com EmailClient.CreateConnection() método ou EmailClient.CreateConnection(createAsDefaultConnection = false) método.
Tipos de Alocação de Conexão
Para configurar o EmailClient.ConnectionAsgmtMode propriedade, ConnectionAsgmtType enumerável é usado. Os tipos de alocação fornecidos por ConnectionAsgmtType estão listados abaixo.
- ConnectionAsgmtType.UseMainOrDefault Este modo é usado por padrão nos clientes de e‑mail. O cliente de e‑mail usa 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 nenhuma conexão foi passada explicitamente como parâmetro de método. A conexão principal é uma conexão criada ao mesmo tempo que o cliente de e‑mail. O usuário pode criar conexões padrão para threads com CreateConnection método. Se a conexão padrão para uma thread for criada, ela é usada implicitamente por todos os métodos do cliente de e‑mail que são invocados nessa thread. Se a conexão padrão para uma thread não for criada, a conexão principal é usada por todos os métodos do cliente de e‑mail que são invocados nessa 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 CreateConnection método. Se o usuário quiser usar outras conexões (não a principal e não a padrão), ele deve passar essa conexão explicitamente como parâmetro de um método que pretenda usar. O usuário pode ainda criar quantas conexões quiser. A conexão padrão pode ser apenas uma por thread. Observe que 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 ao comportamento incorreto da aplicação. Para evitar esse problema, o usuário deve descartar manualmente a conexão padrão (se a estiver usando) ao 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 é uma conexão 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 que não estão vinculadas a threads (não conexões padrão) com o CreateConnection método. Se o usuário quiser usar outras conexões (não a principal e não a padrão), ele deve passar essa conexão explicitamente como parâmetro de um método que pretenda 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 é usada neste modo. Se a conexão padrão não foi criada para alguma thread (primeira invocação de um método do cliente de e‑mail), o cliente cria a conexão padrão implicitamente para a thread antes da primeira operação ser executada. O usuário não pode criar conexões padrão para threads com CreateConnectionmétodo porque são criados automaticamente. Quando a conexão padrão para uma thread é criada, ela é usada implicitamente por todos os métodos do cliente de e‑mail que são invocados nessa 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 CreateConnectionmétodo. Se o usuário desejar usar outras conexões (não a principal e não a padrão), ele deve passar essa conexão explicitamente como parâmetro de um método que pretenda usar. O usuário pode ainda criar quantas conexões quiser. Apenas uma conexão padrão pode ser usada por thread. Observe que conexões padrão funcionam corretamente se o usuário usar objetos Thread para programação multitarefa. Se o usuário utilizar ConnectionPool ou objetos Task para programação multitarefa, esse modo pode causar 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.