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