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