연결 풀 리팩터링
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 객체를 사용하여 멀티태스킹 프로그래밍을 할 경우, 이 모드가 애플리케이션의 잘못된 동작을 초래할 수 있습니다. 이 문제를 피하려면 사용자는 코드 실행이 끝난 후 기본 연결을 수동으로 해제해야 합니다.