Refaktorování fondu připojení
Contents
[
Hide
]
S vydáním Aspose.Email 19.3 byl refaktorován pool spojení. Nový EmailClient třída byla zavedena, která nakonec nahradí CredentialsByHostClient třída. The EmailClient třída poskytuje ConnectionAsgmtMode vlastnosti, která definuje režim alokace spojení ve vícevláknovém prostředí. EmailClient.ConnectionAsgmtMode je nastaveno pomocí ConnectionAsgmtType enumerable.
Typy spojení
Existují následující tři typy spojení:
- Hlavní spojení: Jedná se o spojení vytvořené a uvolněné společně s poštovním klientem. Nelze jej vytvořit ani uvolnit ručně.
- Výchozí spojení: Uživatel může vytvářet výchozí spojení pro vlákna pomocí CreateConnection metoda. Pokud výchozí spojení existuje, všechny metody e‑mailového klienta spouštěné ve vlákně budou implicitně používat toto spojení. Na jedno vlákno může existovat jen jedno výchozí spojení. Může být vytvořeno ručně nebo automaticky. Záleží na vlastnosti EmailClient.ConnectionAsgmtMode. Tato spojení lze vytvořit ručně pomocí EmailClient.CreateConnection(createAsDefaultConnection = true) metoda. Pokud není výchozí spojení použito (závisí na režimu alokace spojení), hlavní spojení je použito implicitně místo něj.
- Nezávislá spojení: Jedná se o spojení, která nejsou svázána s vlákny. Mohou být vytvořena ručně a musí být použita explicitně jako parametr metody. Tato spojení lze vytvořit ručně pomocí EmailClient.CreateConnection() metoda nebo EmailClient.CreateConnection(createAsDefaultConnection = false) metoda.
Typy alokace spojení
Pro nastavení EmailClient.ConnectionAsgmtMode vlastností, ConnectionAsgmtType enumerable je použito. Typy alokací poskytované ConnectionAsgmtType jsou uvedeny níže.
- ConnectionAsgmtType.UseMainOrDefault Tento režim je ve výchozím nastavení používán v e‑mailových klientech. E‑mailový klient používá hlavní spojení pro všechny operace z více vláken, pokud výchozí spojení nebylo vytvořeno, nebo pokud spojení nebylo explicitně předáno jako parametr metody. Hlavní spojení je spojení, které je vytvořeno současně s e‑mailovým klientem. Uživatel může vytvářet výchozí spojení pro vlákna pomocí CreateConnection metoda. Pokud je pro vlákno vytvořeno výchozí spojení, je implicitně používáno pro všechny metody e‑mailového klienta, které jsou v tomto vlákně volány. Pokud výchozí spojení pro vlákno není vytvořeno, hlavní spojení je používáno pro všechny metody e‑mailového klienta, které jsou v tomto vlákně volány. Uživatel také může vytvářet spojení, která nejsou svázána s vlákny (nejsou výchozí spojení), pomocí CreateConnection metoda. Pokud uživatel chce použít jiné spojení (ne hlavní a ne výchozí), musí toto spojení předat explicitně jako parametr metody, kterou chce použít. Uživatel může navíc vytvořit libovolný počet spojení. Výchozí spojení může být jen jedno na vlákno. Všimněte si, že výchozí spojení fungují správně, pokud uživatel používá objekty Thread pro vícevláknové programování. Pokud uživatel používá ConnectionPool nebo objekty Task pro vícevláknové programování, může tento režim vést k nesprávnému chování aplikace. Aby se tomuto problému předešlo, musí uživatel na konci provádění kódu ručně uvolnit výchozí spojení (pokud jej používá).
- ConnectionAsgmtType.UseMain E‑mailový klient používá hlavní spojení pro všechny operace z více vláken. Hlavní spojení je spojení, které je vytvořeno současně s e‑mailovým klientem. Uživatel nemůže vytvářet výchozí spojení. Uživatel může vytvářet spojení, která nejsou svázána s vlákny (nejsou výchozí spojení), pomocí CreateConnection metoda. Pokud uživatel chce použít jiné spojení (ne hlavní a ne výchozí), musí toto spojení předat explicitně jako parametr metody, kterou chce použít.
- ConnectionAsgmtType.UseDefault E‑mailový klient implicitně používá pouze výchozí spojení pro všechny operace z více vláken. Hlavní spojení není v tomto režimu používáno. Pokud pro některé vlákno (při prvním volání metody e‑mailového klienta) nebylo vytvořeno výchozí spojení, e‑mailový klient vytvoří výchozí spojení implicitně pro vlákno před provedením první operace. Uživatel nemůže vytvářet výchozí spojení pro vlákna pomocí CreateConnectionmetoda, protože jsou vytvářeny automaticky. Když je pro vlákno vytvořeno výchozí spojení, je implicitně používáno pro všechny metody e‑mailového klienta, které jsou v tomto vlákně volány. Uživatel může také vytvářet spojení, která nejsou svázána s vlákny (nejsou výchozí spojení), pomocí CreateConnectionmetoda. Pokud uživatel chce použít jiné spojení (ne hlavní a ne výchozí), musí toto spojení předat explicitně jako parametr metody, kterou chce použít. Uživatel může navíc vytvořit libovolný počet spojení. Na jeden vláknu může být použito pouze jedno výchozí spojení. Všimněte si, že výchozí spojení fungují správně, pokud uživatel používá objekty Thread pro vícevláknové programování. Pokud uživatel používá ConnectionPool nebo objekty Task pro vícevláknové programování, může tento režim vést k nesprávnému chování aplikace. Aby se tomuto problému předešlo, musí uživatel na konci provádění kódu ručně uvolnit výchozí spojení.