Пул за връзки преработен
Contents
[
Hide
]
С издаването на 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 за многозадачно програмиране, този режим може да доведе до неправилно поведение на приложението. За да се избегне този проблем, потребителят трябва ръчно да освободи подразбиращата се връзка в края на изпълнението на кода.