Refaktorování fondu připojení

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 se ve výchozím nastavení používá v e‑mailových klientech. E‑mailový klient používá hlavní připojení pro všechny operace z více vláken, pokud nebylo vytvořeno výchozí připojení, nebo pokud nebylo připojení explicitně předáno jako parametr metody. Hlavní připojení je připojení, které je vytvořeno ve stejnou dobu jako e‑mailový klient. Uživatel může vytvářet výchozí připojení pro vlákna s 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í připojení pro všechny operace z více vláken. Hlavní připojení je připojení, které je vytvořeno ve stejnou dobu jako e‑mailový klient. Uživatel nemůže vytvářet výchozí připojení. Uživatel může vytvářet připojení nespojená s vlákny (nejsou výchozí připojení) 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í připojení pro všechny operace z více vláken. Hlavní připojení v tomto režimu není použito. Pokud výchozí připojení nebylo vytvořeno pro nějaké vlákno (první volání metody e‑mailového klienta), e‑mailový klient vytvoří výchozí připojení implicitně pro vlákno před provedením první operace. Uživateli není umožněno vytvářet výchozí připojení pro vlákna s 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í.