Connection‑pool geherstructureerd
Contents
[
Hide
]
Met de release van Aspose.Email 19.3 is de connection‑pool geherstructureerd. Nieuwe EmailClient klasse is geïntroduceerd die uiteindelijk de CredentialsByHostClient klasse. De EmailClient klasse biedt een ConnectionAsgmtMode eigenschap die de modus van connection‑allocation definieert in een multithreaded‑omgeving. EmailClient.ConnectionAsgmtMode wordt ingesteld met de ConnectionAsgmtType enumerable.
Verbindingstypen
Er zijn de volgende drie verbindingstypen:
- De hoofdverbinding: dit is de verbinding die wordt aangemaakt en vrijgegeven samen met de mailclient. Deze kan niet handmatig worden aangemaakt of vrijgegeven.
- Standaardverbinding: gebruiker kan standaardverbindingen voor threads maken met CreateConnection methode. Als de standaardverbinding bestaat, zullen alle methoden van de e‑mailclient die in een thread worden uitgevoerd impliciet deze verbinding gebruiken. Per thread kan slechts één standaardverbinding bestaan. Deze kan handmatig of automatisch worden aangemaakt. Dit hangt af van de eigenschap EmailClient.ConnectionAsgmtMode. Deze verbindingen kunnen handmatig worden aangemaakt met EmailClient.CreateConnection(createAsDefaultConnection = true) methode. Als de standaardverbinding niet wordt gebruikt (afhankelijk van de modus van connection‑allocation), wordt de hoofdverbinding impliciet in plaats daarvan gebruikt.
- Onafhankelijke verbindingen: dit zijn verbindingen die niet aan threads zijn gekoppeld. Ze kunnen handmatig worden aangemaakt en moeten expliciet worden gebruikt als een methode‑parameter. Deze verbindingen kunnen handmatig worden aangemaakt met EmailClient.CreateConnection() methode of EmailClient.CreateConnection(createAsDefaultConnection = false) methode.
Connection‑toewijzingstypen
Om de EmailClient.ConnectionAsgmtMode eigenschap, ConnectionAsgmtType enumerable wordt gebruikt. De toewijzingstypen die worden verstrekt door ConnectionAsgmtType worden hieronder vermeld.
- ConnectionAsgmtType.UseMainOrDefault Deze modus wordt standaard gebruikt in e‑mailclients. De e‑mailclient gebruikt de hoofdverbinding voor alle bewerkingen vanaf meerdere threads als er geen standaardverbinding is aangemaakt, of als er geen verbinding expliciet als methode‑parameter is doorgegeven. De hoofdverbinding is een verbinding die tegelijkertijd met een e‑mailclient wordt gecreëerd. De gebruiker kan standaardverbindingen aanmaken voor threads met CreateConnection methode. Als de standaardverbinding voor een thread is aangemaakt, wordt deze impliciet gebruikt voor alle methoden van de e‑mailclient die in deze thread worden aangeroepen. Als er geen standaardverbinding voor een thread is aangemaakt, wordt de hoofdverbinding gebruikt voor alle methoden van de e‑mailclient die in deze thread worden aangeroepen. De gebruiker kan ook verbindingen maken die niet aan threads gekoppeld zijn (geen standaardverbindingen) met de CreateConnection methode. Als de gebruiker andere verbindingen wil gebruiken (niet de hoofd‑ en niet de standaardverbinding) moet hij deze verbinding expliciet doorgeven als parameter van de methode die hij wil gebruiken. De gebruiker kan daarnaast een onbeperkt aantal verbindingen maken. Standaardverbinding kan slechts één per thread zijn. Houd er rekening mee dat standaardverbindingen correct werken als de gebruiker Thread‑objecten gebruikt voor multitasking. Als de gebruiker ConnectionPool of Task‑objecten gebruikt voor multitasking, kan deze modus leiden tot het verkeerde gedrag van de applicatie. Om dit probleem te voorkomen moet de gebruiker de standaardverbinding handmatig vrijgeven (indien hij deze gebruikt) aan het einde van de code‑uitvoering.
- ConnectionAsgmtType.UseMain E‑mailclient gebruikt de hoofdverbinding voor alle bewerkingen vanaf meerdere threads. De hoofdverbinding is een verbinding die tegelijkertijd met de e‑mailclient wordt gecreëerd. De gebruiker kan geen standaardverbindingen aanmaken. De gebruiker kan verbindingen maken die niet gekoppeld zijn aan threads (geen standaardverbindingen) met de CreateConnection methode. Als de gebruiker andere verbindingen wil gebruiken (niet de hoofd‑ en niet de standaardverbinding) moet hij deze verbinding expliciet doorgeven als parameter van de methode die hij wil gebruiken.
- ConnectionAsgmtType.UseDefault E‑mailclient gebruikt impliciet alleen standaardverbindingen voor alle bewerkingen vanaf meerdere threads. De hoofdverbinding wordt in deze modus niet gebruikt. Als er voor een thread geen standaardverbinding is aangemaakt (bij de eerste aanroep van een e‑mailclient‑methode), maakt de e‑mailclient impliciet een standaardverbinding voor die thread voordat de eerste bewerking wordt uitgevoerd. De gebruiker kan geen standaardverbindingen maken voor threads met CreateConnectionmethode omdat ze automatisch worden aangemaakt. Wanneer de standaardverbinding voor een thread wordt aangemaakt, wordt deze impliciet gebruikt voor alle methoden van de e‑mailclient die in die thread worden aangeroepen. De gebruiker kan ook verbindingen creëren die niet aan threads gekoppeld zijn (geen standaardverbindingen) met de CreateConnectionmethode. Als de gebruiker andere verbindingen wil gebruiken (niet de hoofd‑ en niet de standaardverbinding) moet hij deze verbinding expliciet doorgeven als parameter van de methode die hij wil gebruiken. De gebruiker kan daarnaast een onbeperkt aantal verbindingen maken. Per thread kan slechts één standaardverbinding worden gebruikt. Houd er rekening mee dat standaardverbindingen correct werken als de gebruiker Thread‑objecten gebruikt voor multitasking. Als de gebruiker ConnectionPool of Task‑objecten gebruikt voor multitasking, kan deze modus leiden tot verkeerd gedrag van de applicatie. Om dit probleem te voorkomen moet de gebruiker de standaardverbinding handmatig vrijgeven aan het einde van de code‑uitvoering.