Przebudowa puli połączeń
Contents
[
Hide
]
Wraz z wydaniem Aspose.Email 19.3, pula połączeń została przebudowana. Nowe EmailClient klasa została wprowadzona, która ostatecznie zastąpi CredentialsByHostClient klasa. Ta EmailClient klasa zapewnia ConnectionAsgmtMode właściwości, która określa tryb alokacji połączeń w środowisku wielowątkowym. EmailClient.ConnectionAsgmtMode jest ustawiane przy użyciu ConnectionAsgmtType enumerable.
Typy połączeń
Istnieją następujące trzy typy połączeń:
- Główne połączenie: Jest to połączenie tworzone i zwalniane razem z klientem poczty. Nie może być tworzone ani zwalniane ręcznie.
- Połączenie domyślne: Użytkownik może tworzyć domyślne połączenia dla wątków przy użyciu CreateConnection metoda. Jeśli domyślne połączenie istnieje, wszystkie metody klienta e‑mail wykonywane w wątku będą domyślnie używać tego połączenia. Tylko jedno domyślne połączenie może istnieć na wątek. Może być tworzone ręcznie lub automatycznie. Zależy to od właściwości EmailClient.ConnectionAsgmtMode. Te połączenia mogą być tworzone ręcznie przy użyciu EmailClient.CreateConnection(createAsDefaultConnection = true) metoda. Jeśli domyślne połączenie nie jest używane (zależnie od trybu alokacji połączeń), zamiast niego używane jest domyślnie główne połączenie.
- Połączenia niezależne: Są to połączenia, które nie są powiązane z wątkami. Mogą być tworzone ręcznie i muszą być używane wyraźnie jako parametr metody. Te połączenia mogą być tworzone ręcznie przy użyciu EmailClient.CreateConnection() metodę lub EmailClient.CreateConnection(createAsDefaultConnection = false) metoda.
Typy alokacji połączeń
Aby skonfigurować EmailClient.ConnectionAsgmtMode właściwość, ConnectionAsgmtType enumerable jest używany. Typy alokacji dostarczane przez ConnectionAsgmtType są wymienione poniżej.
- ConnectionAsgmtType.UseMainOrDefault Ten tryb jest używany domyślnie w klientach e‑mail. Klient e‑mail używa głównego połączenia we wszystkich operacjach z wielu wątków, jeśli domyślne połączenie nie zostało utworzone lub jeśli połączenie nie zostało przekazane jawnie jako parametr metody. Główne połączenie jest tworzone w tym samym czasie co klient e‑mail. Użytkownik może tworzyć domyślne połączenia dla wątków przy użyciu CreateConnection metoda. Jeśli domyślne połączenie dla wątku zostanie utworzone, jest ono używane domyślnie we wszystkich metodach klienta e‑mail wywoływanych w tym wątku. Jeśli domyślne połączenie dla wątku nie zostanie utworzone, główne połączenie jest używane we wszystkich metodach klienta e‑mail wywoływanych w tym wątku. Użytkownik może również tworzyć połączenia niepowiązane z wątkami (nie domyślne połączenia) przy użyciu CreateConnection metoda. Jeśli użytkownik chce używać innych połączeń (nie głównego i nie domyślnego), musi przekazać to połączenie jawnie jako parametr metody, którą chce użyć. Użytkownik może dodatkowo utworzyć dowolną liczbę połączeń. Domyślne połączenie może być tylko jedno na wątek. Należy zauważyć, że domyślne połączenia działają poprawnie, jeśli użytkownik używa obiektów Thread do programowania współbieżnego. Jeśli użytkownik używa ConnectionPool lub obiektów Task do programowania współbieżnego, tryb ten może prowadzić do nieprawidłowego zachowania aplikacji. Aby uniknąć tego problemu, użytkownik musi ręcznie zwolnić domyślne połączenie (jeśli je używa) na końcu wykonywania kodu.
- ConnectionAsgmtType.UseMain Klient e‑mail używa głównego połączenia we wszystkich operacjach z wielu wątków. Główne połączenie jest tworzony w tym samym czasie co klient e‑mail. Użytkownik nie może tworzyć domyślnych połączeń. Użytkownik może tworzyć połączenia niepowiązane z wątkami (nie domyślne połączenia) przy użyciu CreateConnection metoda. Jeśli użytkownik chce używać innych połączeń (nie głównego i nie domyślnego), musi przekazać to połączenie jawnie jako parametr metody, którą chce użyć.
- ConnectionAsgmtType.UseDefault Klient e‑mail używa domyślnie wyłącznie domyślnych połączeń we wszystkich operacjach z wielu wątków. Główne połączenie nie jest używane w tym trybie. Jeśli domyślne połączenie nie zostało utworzone dla danego wątku (pierwsze wywołanie metody klienta e‑mail), klient e‑mail tworzy domyślne połączenie implicitnie dla wątku przed wykonaniem pierwszej operacji. Użytkownik nie może tworzyć domyślnych połączeń dla wątków przy użyciu CreateConnectionmetoda, ponieważ są tworzone automatycznie. Gdy domyślne połączenie dla wątku jest tworzone, jest ono używane domyślnie we wszystkich metodach klienta e‑mail wywoływanych w tym wątku. Użytkownik może również tworzyć połączenia, które nie są powiązane z wątkami (nie domyślne połączenia) przy użyciu CreateConnectionmetoda. Jeśli użytkownik chce używać innych połączeń (nie głównego i nie domyślnego), musi przekazać to połączenie jawnie jako parametr metody, którą chce użyć. Użytkownik może dodatkowo utworzyć dowolną liczbę połączeń. Tylko jedno domyślne połączenie może być używane na wątek. Należy zauważyć, że domyślne połączenia działają poprawnie, jeśli użytkownik używa obiektów Thread do programowania współbieżnego. Jeśli użytkownik używa ConnectionPool lub obiektów Task do programowania współbieżnego, tryb ten może prowadzić do nieprawidłowego zachowania aplikacji. Aby uniknąć tego problemu, użytkownik musi ręcznie zwolnić domyślne połączenie na końcu wykonywania kodu.