NotificationTransport オブジェクト
このオブジェクトは、通知を送信するための高性能な HTTP トランスポート エンジンを提供します。
プロパティ
DestinationUrl プロパティ | 使用する .NET Alerts ルーティング エンジンの URL を指定します。 |
IdleConnectionTimeout プロパティ | アイドル状態の接続が閉じるまでの秒数を指定します。 |
MaxConnections プロパティ | 許可されている接続の最大数を指定します。 |
MaxQueueSize プロパティ | 送信のためにキューに格納できる送信通知の最大数を指定します。 |
Proxy プロパティ | HTTP プロキシを指定します。 |
メソッド
SendNotification メソッド | MsnNotification オブジェクトを .NET Alerts ルーティング エンジンに送信します。 |
DrainNotifications メソッド | 送信キューから通知を排出します。 |
イベント
OnCompletion | このイベントは、非同期操作にのみ使用されます。Visual Basic では、非同期のトランスポート操作はサポートされていません。 |
解説
NotificationTransport オブジェクトを使用して通知を送信すると、プロパティは読み取り専用になります。SendNotification メソッドを呼び出した後で NotificationTransport オブジェクトのプロパティを設定しようとすると、致命的な Component Object Model (COM) エラーが発生します。
NotificationTransport オブジェクトは、通知送信機能が必要とされる限り持続するよう設計されており、たいていの場合、通知を送信するよう設計されているプログラムの実行時と同じです。通知送信機能が不要になるか、トランスポート オブジェクトの読み取り専用のプロパティを変更する必要がある場合以外は、トランスポート オブジェクトを破棄したり再作成したりしないでください。
プログラムのアドレス空間に存在できるトランスポート オブジェクトは 1 つだけです。トランスポート オブジェクトが既に存在しているときに別のトランスポート オブジェクトを作成しようとすると、致命的な COM エラーが発生します。
NotificationTransport クラスは、複数のスレッドから SendNotification 呼び出しをサポートするように設計されています。
パフォーマンスを向上させるために、トランスポート オブジェクトは .NET Alerts ルーティング エンジンに対して開いている接続のプールを保持します。開いている接続の最大数は、MaxConnections プロパティで指定します。 IdleConnectionTimeout プロパティで指定した時間 (秒) 内に使用されなかった接続は、リソースを節約するために閉じられます。また、トランスポート オブジェクトは、.NET Alerts ルーティング エンジンに送信するための通知のキューも保持します。このキューに格納できる通知の最大数は、MaxQueueSize プロパティで指定します。トランスポートは、MaxConnections で指定した数までのパラレル接続を使用して、キューに入っている通知をできるだけ早く送信しようとします。
トランスポートは、非同期と同期の 2 つの操作モードに対応しています。詳細については、「NotificationTransport.SendNotification メソッド」を参照してください。非同期モードでは、SendNotification の呼び出しは、通知をトランスポート オブジェクトの送信キューに入れてすぐに復帰します。キューに入っている通知の数が MaxQueueSize で指定した数よりも少ない場合、呼び出しは正常に行われ、通知は送信のためにキューに格納されます。そうでない場合は、例外が発生します。
同期モードでは、SendNotification の呼び出しは、復帰する前に、通知が送信されるまで待機します。接続プールにアイドル状態の接続がある場合、トランスポートはその接続を使用して通知を送信します。開いているアイドル状態の接続がない場合は、開いている接続の数が MaxConnections よりも少なければ、トランスポートは新しい接続を開きます。SendNotification を呼び出すスレッドの数が MaxConnections よりも多い場合、トランスポートは通知を送信するための新しい接続を開くことはできません。この場合、トランスポートは送信キューに通知を格納しようとします。キューに入っている通知の数が MaxQueueSize よりも少なければ、通知は送信キューに格納され、呼び出しは通知が送信された後で復帰します。そうでない場合は、例外が発生します。例外は、SendNotification を呼び出すスレッドの数が MaxQueueSize および MaxConnections よりも多い場合に発生する可能性があります。
.NET Alerts ルーティング エンジンへの接続の待機時間に従って、SendNotification を呼び出すスレッドの数と、MaxConnection および MaxQueueSize の値を調整する必要があります。接続の待機時間が短い場合は、リソースへの影響を最少限にして開いている接続をすぐに再使用できるため、最大接続数を少なくしておく必要があります。接続の待機時間が長い場合は、最大接続数を多くして、キューが過度に行われないようにする必要があります。同期モードでは、通知を送信するスレッドの数よりも最大接続数を多く設定しても意味がありません。例外の処理は手間がかかるため、送信キューのオーバーフローによる例外が発生しないように、または最小限に抑えるようにコードを作成する必要があります。同期モードでは、SendNotification を呼び出すスレッドの数を MaxQueueSize と MaxConnections の合計数以下にすれば、キューのオーバーフローによる例外が発生しないようにできます。DrainNotifications メソッドを使用すると、トランスポートを照会して、キューに入っている通知の数を調べることができます。詳細については、「NotificationTransport.DrainNotifications メソッド」を参照してください。
.NET Alerts クライアント ライブラリは、NotificationTransport オブジェクトが作成または破棄されるたびに、情報ログ エントリを Microsoft® Windows® のアプリケーション イベント ログに書き出します。イベント ビューアを使用すると、アプリケーション イベント ログに含まれるこれらのエントリを調べることができます。
オブジェクト情報
ストックされている実装 | msnotify.dll |
最小限のオペレーティング システム | Microsoft Windows 2000 |
|