接続プールのリファクタリング
Contents
[
Hide
]
Aspose.Email 19.3 のリリースに伴い、接続プールがリファクタリングされました。新しい EmailClient クラスが導入され、最終的に以下のものに置き換わります。 CredentialsByHostClient クラス。 EmailClient クラスは以下を提供します。 ConnectionAsgmtMode マルチスレッド環境での接続割り当てモードを定義するプロパティです。 EmailClient.ConnectionAsgmtMode は以下を使用して設定されます。 ConnectionAsgmtType 列挙可能です。
接続タイプ
次の 3 種類の接続があります:
- メイン接続: これはメールクライアントと共に作成および破棄される接続です。手動で作成または破棄することはできません。
- デフォルト接続: ユーザーは以下でスレッド用のデフォルト接続を作成できます。 CreateConnection メソッドです。デフォルト接続が存在する場合、スレッド内で実行されるメールクライアントのすべてのメソッドは暗黙的にこの接続を使用します。スレッドあたりデフォルト接続は 1 つだけ存在できます。手動または自動で作成でき、EmailClient.ConnectionAsgmtMode プロパティに依存します。これらの接続は以下で手動作成できます。 EmailClient.CreateConnection(createAsDefaultConnection = true) メソッドです。デフォルト接続が使用されていない場合(接続割り当てモードに依存)、メイン接続が暗黙的に代わりに使用されます。
- 独立接続: これらはスレッドに紐付かない接続です。手動で作成でき、メソッドのパラメータとして明示的に使用する必要があります。これらの接続は以下で手動作成できます。 EmailClient.CreateConnection() メソッドまたは EmailClient.CreateConnection(createAsDefaultConnection = false) メソッド。
接続割り当てタイプ
設定するには EmailClient.ConnectionAsgmtMode プロパティ、 ConnectionAsgmtType 列挙可能が使用されます。割り当てタイプは以下によって提供されます。 ConnectionAsgmtType は以下に一覧示します。
- ConnectionAsgmtType.UseMainOrDefault このモードはメールクライアントでデフォルトで使用されます。デフォルト接続が作成されていない、またはメソッドパラメータとして接続が明示的に渡されていない場合、メールクライアントは複数スレッドからのすべての操作でメイン接続を使用します。メイン接続はメールクライアントと同時に作成される接続です。ユーザーは以下でスレッド用のデフォルト接続を作成できます。 CreateConnection メソッドです。スレッド用のデフォルト接続が作成されると、そのスレッド内で呼び出されるメールクライアントのすべてのメソッドで暗黙的に使用されます。スレッド用のデフォルト接続が作成されていない場合、メイン接続がそのスレッドで呼び出されるメールクライアントのすべてのメソッドで使用されます。ユーザーは以下でスレッドに紐付かない接続(デフォルト接続ではない)を作成できます。 CreateConnection メソッドです。ユーザーがメインでもデフォルトでもない他の接続を使用したい場合は、使用したいメソッドのパラメータとしてこの接続を明示的に渡す必要があります。ユーザーはさらに任意の数の接続を作成できます。デフォルト接続はスレッドあたり 1 つだけです。デフォルト接続は、Thread オブジェクトを使用したマルチスレッドプログラミングで正しく動作します。ConnectionPool を使用するか、Task オブジェクトでマルチスレッドプログラミングを行う場合、このモードはアプリケーションの誤動作につながる可能性があります。この問題を回避するには、コード実行の最後でデフォルト接続(使用している場合)を手動で破棄する必要があります。
- ConnectionAsgmtType.UseMain メールクライアントは、複数スレッドからのすべての操作でメイン接続を使用します。メイン接続はメールクライアントと同時に作成される接続です。ユーザーはデフォルト接続を作成できません。ユーザーはスレッドに紐付かない接続(デフォルト接続ではない)を以下で作成できます。 CreateConnection メソッドです。ユーザーがメインでもデフォルトでもない他の接続を使用したい場合は、使用したいメソッドのパラメータとしてこの接続を明示的に渡す必要があります。
- ConnectionAsgmtType.UseDefault メールクライアントは、複数スレッドからのすべての操作で暗黙的にデフォルト接続のみを使用します。このモードではメイン接続は使用されません。あるスレッドでデフォルト接続が作成されていない場合(メールクライアントメソッドが初めて呼び出されるとき)、メールクライアントは最初の操作が実行される前にそのスレッド用のデフォルト接続を暗黙的に作成します。ユーザーは以下でスレッド用のデフォルト接続を作成できません。 CreateConnectionメソッドは自動的に作成されます。スレッド用のデフォルト接続が作成されると、そのスレッド内で呼び出されるメールクライアントのすべてのメソッドで暗黙的に使用されます。ユーザーはスレッドに紐付かない接続(デフォルトではない接続)も、以下の … で作成できます。 CreateConnectionメソッドです。ユーザーが他の接続(メインでもデフォルトでもない)を使用したい場合は、使用したいメソッドのパラメータとしてこの接続を明示的に渡す必要があります。ユーザーは追加で任意の数の接続を作成できます。スレッドあたりデフォルト接続は 1 つだけ使用可能です。デフォルト接続は、マルチスレッドプログラミングで Thread オブジェクトを使用する場合に正しく動作します。ConnectionPool を使用するか、Task オブジェクトでマルチスレッドプログラミングを行う場合、このモードはアプリケーションの誤動作につながる可能性があります。この問題を回避するには、コード実行の最後でデフォルト接続を手動で破棄する必要があります。