Pool de connexion refactorisé

Avec la version 19.3 d’Aspose.Email, le pool de connexions a été refactorisé. Nouveau EmailClient une classe a été introduite qui remplacera éventuellement le CredentialsByHostClient classe. Le EmailClient la classe fournit un ConnectionAsgmtMode propriété qui définit le mode d’allocation des connexions dans un environnement multithread. EmailClient.ConnectionAsgmtMode est défini à l’aide du ConnectionAsgmtType énumérable.

Types de connexions

Il existe les trois types de connexion suivants :

  • Connexion principale : C’est la connexion créée et libérée avec le client de messagerie. Elle ne peut pas être créée ou libérée manuellement.
  • Connexion par défaut : L’utilisateur peut créer des connexions par défaut pour les threads avec CreateConnection méthode. Si la connexion par défaut existe, toutes les méthodes du client de messagerie exécutées dans un thread utiliseront implicitement cette connexion. Une seule connexion par défaut peut exister par thread. Elle peut être créée manuellement ou automatiquement. Cela dépend de la propriété EmailClient.ConnectionAsgmtMode. Ces connexions peuvent être créées manuellement avec EmailClient.CreateConnection(createAsDefaultConnection = true) méthode. Si la connexion par défaut n’est pas utilisée (en fonction du mode d’allocation des connexions), la connexion principale est utilisée implicitement à sa place.
  • Connexions indépendantes : Ce sont des connexions qui ne sont pas liées aux threads. Elles peuvent être créées manuellement et doivent être utilisées explicitement comme paramètre de méthode. Ces connexions peuvent être créées manuellement avec EmailClient.CreateConnection() méthode ou EmailClient.CreateConnection(createAsDefaultConnection = false) méthode.

Types d’allocation de connexion

Pour configurer le EmailClient.ConnectionAsgmtMode propriété, ConnectionAsgmtType l’énumérable est utilisé. Les types d’allocation fournis par ConnectionAsgmtType sont listés ci-dessous.

  • ConnectionAsgmtType.UseMainOrDefault Ce mode est utilisé par défaut dans les clients de messagerie. Le client de messagerie utilise la connexion principale pour toutes les opérations provenant de plusieurs threads si aucune connexion par défaut n’a été créée, ou si aucune connexion n’a été passée explicitement en paramètre de méthode. La connexion principale est une connexion créée en même temps que le client de messagerie. L’utilisateur peut créer des connexions par défaut pour les threads avec CreateConnection méthode. Si une connexion par défaut pour un thread est créée, elle est utilisée implicitement pour toutes les méthodes du client de messagerie invoquées dans ce thread. Si aucune connexion par défaut n’est créée pour un thread, la connexion principale est utilisée pour toutes les méthodes du client de messagerie invoquées dans ce thread. L’utilisateur peut également créer des connexions qui ne sont pas liées aux threads (pas de connexions par défaut) avec le CreateConnection méthode. Si l’utilisateur veut utiliser d’autres connexions (ni principales ni par défaut), il doit transmettre cette connexion explicitement comme paramètre d’une méthode qu’il souhaite appeler. L’utilisateur peut également créer un nombre quelconque de connexions. La connexion par défaut ne peut être qu’une seule par thread. Veuillez noter que les connexions par défaut fonctionnent correctement si l’utilisateur utilise des objets Thread pour la programmation multitâche. Si l’utilisateur utilise ConnectionPool ou des objets Task pour la programmation multitâches, ce mode peut conduire à un comportement incorrect de l’application. Pour éviter ce problème, l’utilisateur doit libérer manuellement la connexion par défaut (s’il l’utilise) à la fin de l’exécution du code.
  • ConnectionAsgmtType.UseMain Le client de messagerie utilise la connexion principale pour toutes les opérations provenant de plusieurs threads. La connexion principale est une connexion créée en même temps que le client de messagerie. L’utilisateur ne peut pas créer de connexions par défaut. L’utilisateur peut créer des connexions qui ne sont pas liées aux threads (pas de connexions par défaut) avec le CreateConnection méthode. Si l’utilisateur veut utiliser d’autres connexions (ni principales ni par défaut), il doit transmettre cette connexion explicitement comme paramètre d’une méthode qu’il souhaite appeler. 
  • ConnectionAsgmtType.UseDefault Le client de messagerie utilise implicitement uniquement les connexions par défaut pour toutes les opérations provenant de plusieurs threads. La connexion principale n’est pas utilisée dans ce mode. Si aucune connexion par défaut n’a été créée pour un thread (première invocation d’une méthode du client de messagerie), le client de messagerie crée implicitement une connexion par défaut pour le thread avant que la première opération ne soit exécutée. L’utilisateur ne peut pas créer de connexions par défaut pour les threads avec CreateConnectionméthode car elles sont créées automatiquement. Lorsque la connexion par défaut pour un thread est créée, elle est utilisée implicitement pour toutes les méthodes du client de messagerie invoquées dans ce thread. L’utilisateur peut également créer des connexions qui ne sont pas liées aux threads (pas de connexions par défaut) avec le CreateConnectionméthode. Si l’utilisateur souhaite utiliser d’autres connexions (ni principales ni par défaut), il doit transmettre cette connexion explicitement comme paramètre d’une méthode qu’il souhaite appeler. L’utilisateur peut également créer un nombre quelconque de connexions. Une seule connexion par défaut peut être utilisée par thread. Veuillez noter que les connexions par défaut fonctionnent correctement si l’utilisateur utilise des objets Thread pour la programmation multitâche. Si l’utilisateur utilise ConnectionPool ou des objets Task pour la programmation multitâche, ce mode peut entraîner un comportement incorrect de l’application. Pour éviter ce problème, l’utilisateur doit libérer manuellement la connexion par défaut à la fin de l’exécution du code.