Kết nối Pool Được Tái cấu trúc

Với việc phát hành Aspose.Email 19.3, pool kết nối đã được tái cấu trúc. Mới EmailClient lớp đã được giới thiệu sẽ cuối cùng thay thế CredentialsByHostClient lớp. EmailClient lớp cung cấp một ConnectionAsgmtMode thuộc tính xác định chế độ cấp phát kết nối trong môi trường đa luồng. EmailClient.ConnectionAsgmtMode được đặt bằng cách sử dụng ConnectionAsgmtType enumerable.

Các loại kết nối

Có ba loại kết nối sau:

  • The main connection: This is the connection created and disposed together with the mail client. It can’t be created or disposed manually.
  • Default connection: User can create default connections for threads with CreateConnection phương thức. Nếu kết nối mặc định tồn tại, tất cả các phương thức của client email thực thi trong một luồng sẽ ngầm sử dụng kết nối này. Chỉ một kết nối mặc định có thể tồn tại cho mỗi luồng. Nó có thể được tạo thủ công hoặc tự động. Điều này phụ thuộc vào thuộc tính EmailClient.ConnectionAsgmtMode. Các kết nối này có thể được tạo thủ công với EmailClient.CreateConnection(createAsDefaultConnection = true) phương thức. Nếu kết nối mặc định không được sử dụng (phụ thuộc vào chế độ cấp phát kết nối), kết nối chính sẽ được sử dụng ngầm thay thế cho nó.
  • Independent connections: These are connections that are not linked to threads. They can be created manually and have to be used explicitly as a method parameter. These connections can be created manually with EmailClient.CreateConnection() phương thức hoặc EmailClient.CreateConnection(createAsDefaultConnection = false) phương thức.

Các loại cấp phát kết nối

Để thiết lập EmailClient.ConnectionAsgmtMode thuộc tính, ConnectionAsgmtType enumerable được sử dụng. Các loại cấp phát được cung cấp bởi ConnectionAsgmtType được liệt kê dưới đây.

  • ConnectionAsgmtType.UseMainOrDefault: Chế độ này được sử dụng mặc định trong các máy khách email. Máy khách email sử dụng kết nối chính cho tất cả các hoạt động từ nhiều luồng nếu kết nối mặc định chưa được tạo, hoặc nếu không có kết nối nào được truyền vào tham số phương thức một cách rõ ràng. Kết nối chính là một kết nối được tạo đồng thời với máy khách email. Người dùng có thể tạo kết nối mặc định cho các luồng với CreateConnection phương thức. Nếu kết nối mặc định cho một luồng được tạo, nó sẽ được sử dụng ngầm cho tất cả các phương thức của client email được gọi trong luồng này. Nếu kết nối mặc định cho một luồng không được tạo, kết nối chính được sử dụng cho tất cả các phương thức của client email được gọi trong luồng này. Người dùng cũng có thể tạo các kết nối không liên kết với luồng (không phải kết nối mặc định) bằng CreateConnection phương thức. Nếu người dùng muốn sử dụng các kết nối khác (không phải chính và không phải mặc định) họ phải truyền kết nối này một cách rõ ràng như tham số của phương thức mà họ muốn sử dụng. Người dùng có thể tạo thêm bất kỳ số lượng kết nối nào. Kết nối mặc định có thể chỉ một cho mỗi luồng. Lưu ý rằng các kết nối mặc định hoạt động chính xác nếu người dùng sử dụng các đối tượng Thread cho lập trình đa nhiệm. Nếu người dùng sử dụng ConnectionPool hoặc các đối tượng Task cho lập trình đa nhiệm, chế độ này có thể dẫn đến hành vi sai của ứng dụng. Để tránh vấn đề này, người dùng phải tự tay giải phóng kết nối mặc định (nếu họ sử dụng nó) vào cuối quá trình thực thi mã.
  • ConnectionAsgmtType.UseMain: Máy khách email sử dụng kết nối chính cho tất cả các hoạt động từ nhiều luồng. Kết nối chính là một kết nối được tạo đồng thời với máy khách email. Người dùng không thể tạo kết nối mặc định. Người dùng có thể tạo các kết nối không gắn với luồng (không phải kết nối mặc định) bằng CreateConnection phương thức. Nếu người dùng muốn sử dụng các kết nối khác (không phải chính và không phải mặc định) họ phải truyền kết nối này một cách rõ ràng như tham số của phương thức mà họ muốn sử dụng. 
  • ConnectionAsgmtType.UseDefault: Máy khách email ngầm sử dụng chỉ các kết nối mặc định cho tất cả các hoạt động từ nhiều luồng. Kết nối chính không được sử dụng trong chế độ này. Nếu kết nối mặc định chưa được tạo cho một số luồng (lần gọi phương thức máy khách email đầu tiên), máy khách email sẽ tạo kết nối mặc định một cách ngầm cho luồng đó trước khi thực hiện thao tác đầu tiên. Người dùng không thể tạo kết nối mặc định cho các luồng với CreateConnectionphương thức vì chúng được tạo tự động. Khi kết nối mặc định cho một luồng được tạo, nó sẽ được sử dụng ngầm cho tất cả các phương thức của client email được gọi trong luồng này. Người dùng cũng có thể tạo các kết nối không liên kết với luồng (không phải kết nối mặc định) bằng CreateConnectionphương thức. Nếu người dùng muốn sử dụng các kết nối khác (không phải chính và không phải mặc định) họ phải truyền kết nối này một cách rõ ràng như tham số của phương thức mà họ muốn sử dụng. Người dùng có thể tạo thêm bất kỳ số lượng kết nối nào. Chỉ một kết nối mặc định có thể được sử dụng cho mỗi luồng. Lưu ý rằng các kết nối mặc định hoạt động chính xác nếu người dùng sử dụng các đối tượng Thread cho lập trình đa nhiệm. Nếu người dùng sử dụng ConnectionPool hoặc các đối tượng Task cho lập trình đa nhiệm, chế độ này có thể dẫn đến hành vi sai của ứng dụng. Để tránh vấn đề này, người dùng phải tự tay giải phóng kết nối mặc định vào cuối quá trình thực thi mã.