Verbindungs‑Pool überarbeitet
Contents
[
Hide
]
Mit der Veröffentlichung von Aspose.Email 19.3 wurde der Verbindungs‑Pool überarbeitet. Neu EmailClient Klasse wurde eingeführt, die schließlich die CredentialsByHostClient Klasse. Die EmailClient Klasse stellt ein ConnectionAsgmtMode Eigenschaft, die den Modus der Verbindungszuweisung in einer Mehrthread‑Umgebung definiert. EmailClient.ConnectionAsgmtMode wird festgelegt mit ConnectionAsgmtType Aufzählung.
Verbindungstypen
Es gibt die folgenden drei Verbindungstypen:
- Die Hauptverbindung: Diese Verbindung wird zusammen mit dem Mail‑Client erstellt und freigegeben. Sie kann nicht manuell erstellt oder freigegeben werden.
- Standardverbindung: Der Benutzer kann Standardverbindungen für Threads erstellen mit CreateConnection Methode. Wenn die Standardverbindung existiert, werden alle in einem Thread ausgeführten Methoden des E‑Mail‑Clients implizit diese Verbindung nutzen. Pro Thread kann nur eine Standardverbindung existieren. Sie kann manuell oder automatisch erstellt werden. Das hängt von der Eigenschaft EmailClient.ConnectionAsgmtMode ab. Diese Verbindungen können manuell erstellt werden mit EmailClient.CreateConnection(createAsDefaultConnection = true) Methode. Wenn die Standardverbindung nicht verwendet wird (abhängig vom Zuweisungsmodus), wird stattdessen implizit die Hauptverbindung genutzt.
- Unabhängige Verbindungen: Dies sind Verbindungen, die nicht an Threads gebunden sind. Sie können manuell erstellt werden und müssen explizit als Methodenparameter verwendet werden. Diese Verbindungen können manuell erstellt werden mit EmailClient.CreateConnection() Methode oder EmailClient.CreateConnection(createAsDefaultConnection = false) Methode.
Verbindung‑Zuweisungs‑Typen
Um die EmailClient.ConnectionAsgmtMode Eigenschaft, ConnectionAsgmtType Aufzählung wird verwendet. Die Zuweisungstypen, die bereitgestellt werden von ConnectionAsgmtType sind unten aufgeführt.
- ConnectionAsgmtType.UseMainOrDefault – Dieser Modus wird standardmäßig in E‑Mail‑Clients verwendet. Der E‑Mail‑Client nutzt die Hauptverbindung für alle Vorgänge aus mehreren Threads, wenn keine Standardverbindung erstellt wurde oder wenn keine Verbindung explizit als Methodenparameter übergeben wurde. Die Hauptverbindung wird gleichzeitig mit dem E‑Mail‑Client erstellt. Der Benutzer kann Standardverbindungen für Threads mit CreateConnection Methode. Wenn für einen Thread eine Standardverbindung erstellt wird, wird sie implizit für alle Methoden des E‑Mail‑Clients verwendet, die in diesem Thread aufgerufen werden. Wird keine Standardverbindung für einen Thread erstellt, wird die Hauptverbindung für alle Methoden des E‑Mail‑Clients verwendet, die in diesem Thread aufgerufen werden. Der Benutzer kann außerdem Verbindungen, die nicht an Threads gebunden sind (keine Standardverbindungen), erstellen mit dem CreateConnection Methode. Wenn der Benutzer andere Verbindungen (nicht die Haupt‑ und nicht die Standard‑Verbindung) verwenden möchte, muss er diese Verbindung explizit als Parameter einer gewünschten Methode übergeben. Der Benutzer kann zudem beliebig viele Verbindungen erstellen. Es kann pro Thread nur eine Standardverbindung geben. Bitte beachten Sie, dass Standardverbindungen korrekt funktionieren, wenn der Benutzer Thread‑Objekte für die Multitasking‑Programmierung verwendet. Verwendet der Benutzer jedoch ConnectionPool oder Task‑Objekte für Multitasking, kann dieser Modus zu Fehlverhalten der Anwendung führen. Um dieses Problem zu vermeiden, muss der Benutzer die Standardverbindung (falls er sie nutzt) am Ende der Codeausführung manuell freigeben.
- ConnectionAsgmtType.UseMain – Der E‑Mail‑Client verwendet die Hauptverbindung für alle Vorgänge aus mehreren Threads. Die Hauptverbindung ist eine Verbindung, die gleichzeitig mit dem E‑Mail‑Client erstellt wird. Der Benutzer kann keine Standardverbindungen erstellen. Der Benutzer kann jedoch Verbindungen, die nicht an Threads gebunden sind (keine Standardverbindungen), mit der CreateConnection Methode. Wenn der Benutzer andere Verbindungen (nicht die Haupt‑ und nicht die Standard‑Verbindung) verwenden möchte, muss er diese Verbindung explizit als Parameter einer Methode übergeben, die er verwenden will.
- ConnectionAsgmtType.UseDefault – Der E‑Mail‑Client verwendet implizit nur Standardverbindungen für alle Vorgänge aus mehreren Threads. Die Hauptverbindung wird in diesem Modus nicht verwendet. Wenn für einen Thread (erste Aufruf der E‑Mail‑Client‑Methode) noch keine Standardverbindung erstellt wurde, erzeugt der E‑Mail‑Client implizit eine Standardverbindung für den Thread, bevor die erste Operation ausgeführt wird. Der Benutzer kann keine Standardverbindungen für Threads mit CreateConnectionMethode, da sie automatisch erstellt werden. Wenn für einen Thread eine Standardverbindung erstellt wird, wird sie implizit für alle Methoden des E‑Mail‑Clients verwendet, die in diesem Thread aufgerufen werden. Der Benutzer kann außerdem Verbindungen, die nicht an Threads gebunden sind (keine Standardverbindungen), mit dem CreateConnectionMethode. Wenn der Benutzer andere Verbindungen (nicht die Haupt‑ und nicht die Standard‑Verbindung) verwenden möchte, muss er diese Verbindung explizit als Parameter einer gewünschten Methode übergeben. Der Benutzer kann zudem beliebig viele Verbindungen erstellen. Pro Thread kann nur eine Standardverbindung verwendet werden. Bitte beachten Sie, dass Standardverbindungen korrekt funktionieren, wenn der Benutzer Thread‑Objekte für die Multitasking‑Programmierung verwendet. Verwendet der Benutzer jedoch ConnectionPool oder Task‑Objekte für Multitasking, kann dieser Modus zu Fehlverhalten der Anwendung führen. Um dieses Problem zu vermeiden, muss der Benutzer die Standardverbindung am Ende der Code‑Ausführung manuell freigeben.