Pool di connessioni rifattorizzato

Con il rilascio di Aspose.Email 19.3, il pool di connessioni è stato rifattorizzato. Nuovo EmailClient è stata introdotta una classe che alla fine sostituirà il CredentialsByHostClient classe. Il EmailClient la classe fornisce un ConnectionAsgmtMode proprietà che definisce il modo di allocazione della connessione in un ambiente multithread. EmailClient.ConnectionAsgmtMode è impostato usando il ConnectionAsgmtType enumerabile.

Tipi di connessioni

Esistono i seguenti tre tipi di connessione:

  • La connessione principale: è la connessione creata e eliminata insieme al client di posta. Non può essere creata o eliminata manualmente.
  • Connessione predefinita: l’utente può creare connessioni predefinite per i thread con CreateConnection metodo. Se la connessione predefinita esiste, tutti i metodi del client email eseguiti in un thread utilizzeranno implicitamente questa connessione. Solo una connessione predefinita può esistere per thread. Può essere creata manualmente o automaticamente. Dipende dalla proprietà EmailClient.ConnectionAsgmtMode. Queste connessioni possono essere create manualmente con EmailClient.CreateConnection(createAsDefaultConnection = true) metodo. Se la connessione predefinita non è usata (dipende dal tipo di allocazione della connessione), la connessione principale è usata implicitamente al suo posto.
  • Connessioni indipendenti: sono connessioni non collegate ai thread. Possono essere create manualmente e devono essere usate esplicitamente come parametro di un metodo. Queste connessioni possono essere create manualmente con EmailClient.CreateConnection() metodo o EmailClient.CreateConnection(createAsDefaultConnection = false) metodo.

Tipi di allocazione della connessione

Per configurare il EmailClient.ConnectionAsgmtMode proprietà, ConnectionAsgmtType enumerabile è usato. I tipi di allocazione forniti da ConnectionAsgmtType sono elencati di seguito.

  • ConnectionAsgmtType.UseMainOrDefault Questa modalità è usata di default nei client email. Il client email utilizza la connessione principale per tutte le operazioni da più thread se non è stata creata una connessione predefinita, o se una connessione non è stata passata esplicitamente come parametro del metodo. La connessione principale è una connessione creata allo stesso tempo del client email. L’utente può creare connessioni predefinite per i thread con CreateConnection metodo. Se la connessione predefinita per un thread è creata, viene usata implicitamente per tutti i metodi del client email invocati in questo thread. Se la connessione predefinita per un thread non è creata, la connessione principale è usata per tutti i metodi del client email invocati in questo thread. L’utente può anche creare connessioni non collegate ai thread (non predefinite) con il CreateConnection metodo. Se l’utente desidera utilizzare altre connessioni (non principale e non predefinita) deve passare esplicitamente questa connessione come parametro di un metodo che vuole usare. L’utente può inoltre creare un numero qualsiasi di connessioni. La connessione predefinita può essere solo una per thread. Si noti che le connessioni predefinite funzionano correttamente se l’utente utilizza oggetti Thread per la programmazione multitasking. Se l’utente utilizza ConnectionPool o oggetti Task per la programmazione multitasking, questa modalità può causare un comportamento errato dell’applicazione. Per evitare questo problema, l’utente deve eliminare manualmente la connessione predefinita (se la utilizza) alla fine dell’esecuzione del codice.
  • ConnectionAsgmtType.UseMain Il client email utilizza la connessione principale per tutte le operazioni da più thread. La connessione principale è una connessione creata contemporaneamente al client email. L’utente non può creare connessioni predefinite. L’utente può creare connessioni non collegate ai thread (non predefinite) con il CreateConnection metodo. Se l’utente vuole usare altre connessioni (non la principale e non la predefinita) deve passare esplicitamente questa connessione come parametro di un metodo che desidera utilizzare. 
  • ConnectionAsgmtType.UseDefault Il client email utilizza implicitamente solo le connessioni predefinite per tutte le operazioni da più thread. La connessione principale non è usata in questa modalità. Se la connessione predefinita non è stata creata per qualche thread (prima invocazione del metodo del client email), il client email crea implicitamente la connessione predefinita per il thread prima dell’esecuzione della prima operazione. L’utente non può creare connessioni predefinite per i thread con CreateConnectionmetodo perché vengono creati automaticamente. Quando una connessione predefinita per un thread è creata, viene usata implicitamente per tutti i metodi del client email invocati in questo thread. L’utente può anche creare connessioni non collegate ai thread (non predefinite) con il CreateConnectionmetodo. Se l’utente desidera utilizzare altre connessioni (non la principale e non quella predefinita) deve passare esplicitamente questa connessione come parametro di un metodo che intende utilizzare. L’utente può inoltre creare un numero qualsiasi di connessioni. Solo una connessione predefinita può essere usata per thread. Si noti che le connessioni predefinite funzionano correttamente se l’utente utilizza oggetti Thread per la programmazione multitasking. Se l’utente utilizza ConnectionPool o oggetti Task per la programmazione multitasking, questa modalità può causare un comportamento errato dell’applicazione. Per evitare questo problema, l’utente deve eliminare manualmente la connessione predefinita alla fine dell’esecuzione del codice.