Пул за връзки преработен

С издаването на Aspose.Email 19.3, пулът за връзки е преработен. Нов EmailClient класът е въведен, който в бъдеще ще замени CredentialsByHostClient клас. Този EmailClient класът предоставя ConnectionAsgmtMode свойството, което определя режима за разпределяне на връзките в многонитова среда. EmailClient.ConnectionAsgmtMode се задава чрез ConnectionAsgmtType изброим.

Типове връзки

Съществуват следните три типа връзки:

  • Главната връзка: Това е връзката, създадена и освободена заедно с пощенския клиент. Тя не може да бъде създадена или освободена ръчно.
  • Подразбираща се връзка: Потребителят може да създава подразбиращи се връзки за нишки с CreateConnection метод. Ако съществува подразбираща се връзка, всички методи на имейл клиента, изпълнявани в нишка, ще я използват неявно. Само една подразбираща се връзка може да съществува за нишка. Тя може да бъде създадена ръчно или автоматично. Това зависи от свойството EmailClient.ConnectionAsgmtMode. Тези връзки могат да бъдат създадени ръчно с EmailClient.CreateConnection(createAsDefaultConnection = true) метод. Ако подразбиращата се връзка не се използва (зависи от режима за разпределяне на връзките), главната връзка се използва неявно вместо нея.
  • Независими връзки: Това са връзки, които не са свързани с нишки. Те могат да бъдат създадени ръчно и трябва да се използват явно като параметър на метод. Тези връзки могат да бъдат създадени ръчно с EmailClient.CreateConnection() метод или EmailClient.CreateConnection(createAsDefaultConnection = false) метод.

Типове за разпределяне на връзки

За да настроите EmailClient.ConnectionAsgmtMode свойството, ConnectionAsgmtType изброимият тип се използва. Типовете за разпределяне, предоставени от ConnectionAsgmtType са изброени по-долу.

  • ConnectionAsgmtType.UseMainOrDefault - този режим се използва по подразбиране в имейл клиентите. Имейл клиентът използва основната връзка за всички операции от множество нишки, ако не е създадена подразбираща се връзка, или ако връзка не е предадена като параметър на метода изрично. Основната връзка е връзка, създадена едновременно с имейл клиента. Потребителят може да създава подразбиращи се връзки за нишки с CreateConnection метод. Ако за нишка е създадена подразбираща се връзка, тя се използва неявно за всички методи на имейл клиента, които се извикват в тази нишка. Ако за нишка не е създадена подразбираща се връзка, главната връзка се използва за всички методи на имейл клиента, които се извикват в тази нишка. Потребителят също може да създава връзки, които не са свързани с нишки (не подразбиращи се връзки) с CreateConnection метод. Ако потребителят иска да използва други връзки (не главната и не подразбиращата се), той трябва да подаде тази връзка явно като параметър на метода, който иска да използва. Потребителят може допълнително да създава неограничен брой връзки. Подразбиращата се връзка може да е само една за нишка. Моля, имайте предвид, че подразбиращите се връзки работят правилно, ако потребителят използва обекти Thread за многозадачно програмиране. Ако потребителят използва ConnectionPool или обекти Task за многозадачно програмиране, този режим може да доведе до неправилно поведение на приложението. За да се избегне този проблем, потребителят трябва ръчно да освободи подразбиращата се връзка (ако я използва) в края на изпълнението на кода.
  • ConnectionAsgmtType.UseMain - имейл клиентът използва основната връзка за всички операции от множество нишки. Основната връзка е връзка, създадена едновременно със самия имейл клиент. Потребителят не може да създава подразбиращи се връзки. Потребителят може да създава връзки, които не са свързани с нишки (не подразбиращи се връзки), с CreateConnection метод. Ако потребителят иска да използва други връзки (не главната и не подразбиращата се), той трябва да подаде тази връзка явно като параметър на метода, който желае да използва. 
  • ConnectionAsgmtType.UseDefault - имейл клиентът използва имплицитно само подразбиращи се връзки за всички операции от множество нишки. Основната връзка не се използва в този режим. Ако подразбиращата се връзка не е създадена за някоя нишка (първо извикване на метод на имейл клиента), имейл клиентът създава подразбираща се връзка имплицитно за нишката преди да се изпълни първата операция. Потребителят не може да създава подразбиращи се връзки за нишки с CreateConnectionметод, защото се създават автоматично. Когато се създаде подразбираща се връзка за нишка, тя се използва неявно за всички методи на имейл клиента, които се извикват в тази нишка. Потребителят може също да създава връзки, които не са свързани с нишки (не подразбиращи се връзки) с CreateConnectionметод. Ако потребителят иска да използва други връзки (не главната и не подразбиращата се), той трябва да подаде тази връзка явно като параметър на метода, който иска да използва. Потребителят може допълнително да създава неограничен брой връзки. Само една подразбираща се връзка може да се използва за нишка. Моля, обърнете внимание, че подразбиращите се връзки работят коректно, ако потребителят използва обекти Thread за многозадачно програмиране. Ако потребителят използва ConnectionPool или обекти Task за многозадачно програмиране, този режим може да доведе до неправилно поведение на приложението. За да се избегне този проблем, потребителят трябва ръчно да освободи подразбиращата се връзка в края на изпълнението на кода.