(57)【要約】【課題】テレメトリデータの一般的な収集および送達方法を提供すること。【解決手段】テレメトリ構成要素１２２は、アプリケーション１０２〜１０４からアクセス可能な共通のテレメトリインターフェース１２１を介して、アプリケーション１０２〜１０４からテレメトリデータ１１６を受け取る。受け取られたテレメトリデータは、テレメトリデータベース１２３に既存のテレメトリデータがあればそれと共に集約される。テレメトリ構成要素１２２は、検出されたイベントに応答して、テレメトリデータを対応するテレメトリストリームを介してテレメトリサービス１３２に送る。テレメトリサービス１２３は、テレメトリメッセージを対応するテレメトリストリームを介してテレメトリ構成要素１２２から受け取る。テレメトリサービス１２３は、テレメトリデータを抽出し、そのテレメトリデータ用に登録されている１つ以上のプラグ可能なテレメトリハンドラを識別する。【選択図】図１
2006252561.tif 000002
【特許請求の範囲】
【請求項１】
テレメトリ構成要素、テレメトリデータベース、および複数のアプリケーションを含むコンピュータシステムにおいてテレメトリデータを送達する方法であって、
該コンピュータシステム内のアプリケーションから前記テレメトリ構成要素がテレメトリデータを受け取る動作であって、前記複数のアプリケーションからアクセス可能な共通のテレメトリインターフェースを介して前記テレメトリデータを受け取る動作、
該受取られたテレメトリデータを前記テレメトリデータベース中に既存のテレメトリデータがあればそれと共に集約する動作、
該集約されたテレメトリデータの適当な部分をテレメトリメッセージに含める動作、
送信テレメトリイベントを検出する動作、
該検出された送信テレメトリイベントに応答して、テレメトリストリームを前記テレメトリメッセージを介してテレメトリサービスに送る動作、および、
該テレメトリサービスから、該テレメトリサービスが前記テレメトリメッセージを受け取ったことを示す受信確認通知を受け取る動作
を含むことを特徴とする方法。
【請求項２】
前記テレメトリデータを受け取る動作は、スナップショットテレメトリデータを受け取る動作を含むことを特徴とする請求項１の方法。
【請求項３】
前記テレメトリデータを受け取る動作は、少なくとも１つの名前／値の対を受け取る動作を含むことを特徴とする請求項１の方法。
【請求項４】
前記検出する動作は、タイマの有効期限を検出する動作を含むことを特徴とする請求項１の方法。
【請求項５】
前記含める動作は、ＸＭＬ命令を前記テレメトリメッセージに含める動作を含むことを特徴とする請求項１の方法。
【請求項６】
前記含める動作は、少なくとも１つの名前／値の対を前記テレメトリメッセージに含める動作を含むことを特徴とする請求項１の方法。
【請求項７】
前記含める動作は、カスタムテレメトリデータを前記テレメトリメッセージに含める動作を含むことを特徴とする請求項１の方法。
【請求項８】
前記送る動作は、少なくとも１つの名前／値の対を送る動作を含むことを特徴とする請求項１の方法。
【請求項９】
前記送る動作は、生のテレメトリデータを送る動作を含むことを特徴とする請求項１の方法。
【請求項１０】
前記受信確認通知を受け取る動作は、ターゲットとされるメッセージ応答を含む受信確認通知メッセージを受け取る動作を含むことを特徴とする請求項１の方法。
【請求項１１】
ターゲットとされるメッセージ要求を前記テレメトリメッセージにピギーバックする動作をさらに含むことを特徴とする請求項１の方法。
【請求項１２】
テレメトリサービスを含むコンピュータシステムにおいて、テレメトリデータをディスパッチする方法であって、
前記テレメトリサービスがテレメトリストリームを、対応するテレメトリメッセージを介してテレメトリ構成要素から受け取る動作、
指定されたタイプのテレメトリデータを前記テレメトリメッセージから抽出する動作、
前記指定されたタイプのテレメトリデータ用に登録されている１つまたは複数のプラグ可能なテレメトリハンドラを識別する動作、
前記抽出されたテレメトリデータを、前記識別された１つまたは複数のプラグ可能なテレメトリハンドラにディスパッチする動作、および、
前記テレメトリ構成要素に受信確認通知を送る動作であって、該通知が、前記テレメトリサービスが前記テレメトリメッセージを受け取ったことおよび前記テレメトリサービスが前記テレメトリメッセージの部分部分を処理することが可能であったかどうかを示す動作
を含むことを特徴とする方法。
【請求項１３】
前記テレメトリサービスが前記１つまたは複数のプラグ可能なテレメトリハンドラから登録を受け取る動作であって、該登録が、前記１つまたは複数のプラグ可能なテレメトリハンドラが前記指定されたタイプのテレメトリデータに関心があることを示す動作をさらに含むことを特徴とする請求項１２の方法。
【請求項１４】
前記受け取る動作は、１つまたは複数の名前／値の対を受け取る動作を含むことを特徴とする請求項１２の方法。
【請求項１５】
前記受け取る動作は、生のテレメトリデータを受け取る動作を含むことを特徴とする請求項１２の方法。
【請求項１６】
前記受け取る動作は、ターゲットとされるメッセージ要求を含むテレメトリメッセージを受け取る動作を含むことを特徴とする請求項１２の方法。
【請求項１７】
前記受け取る動作は、前記テレメトリストリームにテレメトリデータを提出する利用可能なテレメトリ構成要素のサブセットをサンプリングする動作を含むことを特徴とする請求項１２の方法。
【請求項１８】
前記抽出する動作は、前記テレメトリメッセージから１つまたは複数の名前／値の対を抽出する動作を含むことを特徴とする請求項１２の方法。
【請求項１９】
前記抽出する動作は、ＸＭＬ属性を抽出する動作を含むことを特徴とする請求項１２の方法。
【請求項２０】
ターゲットとされるメッセージ応答を前記受信確認通知にピギーバックする動作をさらに含むことを特徴とする請求項１２の方法。
【請求項２１】
テレメトリサービスを含むコンピュータシステムで使用され、テレメトリデータをディスパッチする方法を実施するためのコンピュータプログラムであって、プロセッサによって実行されたとき、コンピュータシステムに、
テレメトリストリームを、対応するテレメトリメッセージを介してテレメトリ構成要素から受け取る動作、
指定されたタイプのテレメトリデータを前記テレメトリメッセージから抽出する動作、
前記指定されたタイプのテレメトリデータ用に登録されている１つまたは複数のプラグ可能なテレメトリハンドラを識別する動作、
前記抽出されたテレメトリデータを、前記識別された１つまたは複数のプラグ可能なテレメトリハンドラにディスパッチする動作、および、
前記テレメトリサービスが前記テレメトリメッセージを受け取ったことおよび前記テレメトリサービスが前記テレメトリメッセージの部分部分を処理することが可能であったかどうかを示す受信確認通知を送る動作
を実行させるコンピュータ実行可能命令を記憶している１つまたは複数のコンピュータ読取り可能媒体を含むことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ診断情報を集めることに関し、より詳細には、テレメトリデータの一般的収集および送達に関する。
【背景技術】
【０００２】
コンピュータシステムおよびその関連技術は、社会の多くの面に影響を与える。実際、コンピュータシステムの情報処理能力は、我々の生活と仕事の仕方をすっかり変えてしまった。例えば、コンピュータシステムは一般に、コンピュータシステムが出現する前は手で行っていた多くの仕事（例えばワードプロセッシング、スケジューリング、およびデータベース管理）を行うためのソフトウェアアプリケーションを含んでいる。コンピュータシステムはまた、コンピュータシステムが適切な動作状態を維持する、或いはそれに戻され得ることを保証する助けとなる、保守、診断およびセキュリティアプリケーション（例えば、バックアップアプリケーション、ヘルスチェッカ、アンチウィルスアプリケーション、ファイアウォールなど）を含むこともできる。例えば、アンチウィルスアプリケーションは、コンピュータシステムが何も被害を受けないうちに、コンピュータウィルスを検出し排除することができる。
【０００３】
多くのコンピュータシステムは一般に、コンピュータシステムおよび他の電子装置がそれを介して電子データを転送することができる有線および無線両方のコンピュータネットワークを形成するために、相互にかつ他の電子装置に結合することもできる。その結果、コンピュータシステムで行われる多くのタスク（例えば、音声通信、電子メールアクセス、ホームエレクトロニクス制御、Ｗｅｂブラウジング、および書類印刷）は、有線および／または無線のコンピュータネットワークを介した、幾つかのコンピュータシステムおよび／またはその他の電子装置の間での電子メッセージの交換を含む。
【０００４】
ネットワークは、実際、非常に豊富になってきたので、単一のネットワーク接続可能コンピューティングシステムが、しばしば「インターネット」と呼ばれるネットワークの集まりを介して、全世界に広がっている何百万もの他のコンピューティングシステムのどの１つとでも通信することができる。このようなコンピューティングシステムには、デスクトップ、ラップトップまたはタブレットパーソナルコンピュータ、携帯情報端末（ＰＤＡ）、電話、或いは、デジタルネットワークを介して通信可能なその他のどんなコンピュータまたは装置も含まれ得る。
【０００５】
少なくとも部分的には、このネットワークコンピューティングの急増のため、多くのソフトウェアベンダは、自社のアプリケーションに対するネットワークベースの更新情報を提供している。これによって、多くのユーザは、費用効果の高い方法で（例えばＣＤを製作し出荷するのではなく）更新情報を入手することができる。例えば、ベンダは、インターネット上の会社のＷｅｂサイトに、自社のアプリケーションの最新版および／または更新版を含めることができる。したがって、（インターネットアクセスしている）ユーザは誰でも、そのＷｅｂサイトにアクセスし、更新情報を自分のコンピュータシステムにダウンロードすることができる。次いで、ダウンロードした更新情報をそのコンピュータシステムにインストールすることができる。
【０００６】
ネットワークベースの更新機能を自社のアプリケーションに組み込むベンダもある。例えば、アプリケーションは、選択されたとき、既知のネットワークロケーションに接続し更新情報があるか確かめる「更新」制御を備えることができる。さらに、「更新」制御の選択を必要とすることなく、自動的に更新情報があるか確認するアプリケーションもある。とにかく、次いで、これらのアプリケーションは、（更新情報がダウンロードされる前でも後でも）利用可能な更新情報のリストを選択のためにユーザに提示することができる。次いで、選択されたどんな更新情報も、適切であれば、コンピュータシステムにダウンロードしインストールすることができる。
【０００７】
限定されたアプリケーション特有のデータを、分析のためにソフトウェアベンダに（しばしばユーザの承認に応答して）送り返すこともできるアプリケーション、具体的には、保守、診断およびセキュリティアプリケーションもある。例えば、アンチウィルスアプリケーションは、コンピュータシステムで検出され、かつ／または除去されてきたウィルスのリストを、そのアンチウィルスアプリケーションのベンダに送ることができる。同様に、スパム遮断アプリケーションは、電子メールアドレスのリストを、遮断リストに含めるためにベンダに送ることができる。ベンダは、アプリケーション特有のデータに基づいて、自社のアプリケーションがどのように動作しているかに関する何らかの洞察を得ることができる。また、ベンダがより完全な更新情報を提供し、自社のアプリケーションの識別された脆弱性に対してより迅速に対応することができる可能性もある。
【０００８】
しかし、各アプリケーションは一般に、アプリケーション特有のデータをベンダに送り返すための独自の機構（例えば、独自のインターフェース、独自のプロトコルなど）を含んでいる。したがって、一般に、あるベンダによって開発されたアプリケーションは、アプリケーション特有のデータを他の様々なベンダに送ることはできない。あるアプリケーションからのアプリケーション特有のデータは、他のアプリケーションに関する問題を解決し、他のアプリケーションに更新情報を提供するのに有益であり得るので、これは残念なことである。例えば、ファイアウォールの特定の版の構成が不適切なため、普通なら使用されないポートを介した電子メールメッセージの転送ができるようになる可能性があることを知ることは、スパム遮断アプリケーションのベンダには有益であり得る。
【０００９】
しかし、アプリケーション特有のデータを送るためのスパム遮断アプリケーションベンダ独自の機構は、ファイアウォールベンダ独自の機構と互換性がないので、ファイアウォール特有のデータをスパム遮断アプリケーションベンダに転送するための効率的な方法はない可能性がある。これもまた、新しい製品がいずれかのベンダによって開発されるたびに、ソフトウェア開発者はそのベンダ独自の機構の特異性を学ばなければならないので、残念なことである。さらに、アプリケーションの１つの構成要素からアップロードされたデータを複数のデータシンクに入れるための簡単で一般的な機構であって、様々なデータシンクがそこでデータを分析するためのそれぞれ異なる理由、方法および基準を有することができる機構もない。
【００１０】
さらに、個々のベンダによって個々の目的または用途のためにアプリケーション特有のデータをフィルタするための効率的な方法は何もない。例えば、ファイアウォール特有のデータをスパム遮断アプリケーションベンダに送達できたとしても、一般に、そのファイアウォール特有のデータを電子メール関係のデータに縮小する機構は何もない。すなわち、このファイアウォール特有のデータは、スパム遮断アプリケーションベンダにとっては、たとえあったにしてもわずかしか意味のない、Ｗｅｂベースの通信、ファイル転送などに関するデータも含んでいるはずである。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
したがって、テレメトリデータの一般的な収集および送達のためのシステム、方法、およびコンピュータプログラムがあれば、有利なはずである。
【課題を解決するための手段】
【００１２】
従来の技術に関する上記の問題は、テレメトリデータの一般的な収集および送達のための方法、システム、およびコンピュータプログラム（computer program product）を対象とする本発明の原理によって克服される。テレメトリ構成要素は、アプリケーションの複数の構成要素または複数のアプリケーションからアクセス可能な共通のテレメトリインターフェースを介して、コンピュータシステム内のアプリケーションからテレメトリデータを受け取る。テレメトリ構成要素は、受け取ったテレメトリデータを、テレメトリデータベース中に既存のテレメトリデータがあればそれと一緒に集約する。
【００１３】
テレメトリ構成要素は、送信テレメトリイベントを検出する。コンピュータシステムは、テレメトリメッセージ中の集約されたテレメトリデータの適切な部分を含む。テレメトリ構成要素は、検出された送信テレメトリイベントに応答して、テレメトリメッセージを介して、テレメトリストリームをテレメトリサービスに送る。テレメトリサービスは、テレメトリ構成要素から、テレメトリメッセージを介して、テレメトリストリームを受け取る。テレメトリサービスは、テレメトリメッセージから指定されたタイプのテレメトリデータを抽出する。
【００１４】
テレメトリサービスは、指定されたタイプのテレメトリデータ用に登録された１つまたは複数のプラグ可能なテレメトリハンドラを識別する。テレメトリサービスは、抽出されたテレメトリデータを識別された１つまたは複数のプラグ可能なテレメトリハンドラにディスパッチする。テレメトリサービスは、受信確認通知（acknowledgment）をテレメトリ構成要素に送る。この受信確認通知は、テレメトリサービスがテレメトリメッセージを受け取ったこと、或いは、エラー状態では、テレメトリメッセージのどの部分が受け取られ再送する必要がないか、およびどの部分が受け取られず、適切であれば、再送すべきかを示す。テレメトリ構成要素は、テレメトリサービスから受信確認通知を受け取る。
【００１５】
本発明のこれらおよびその他の目的並びに特徴は、以下の説明および特許請求の範囲からより完全に明らかになり、或いは、以下に説明する本発明の実施例によって知ることができる。
【発明を実施するための最良の形態】
【００１６】
本発明の上記およびその他の利点並びに特徴をさらに明らかにするために、添付の図面に示す本発明の具体的な実施形態の参照により、本発明のより詳しい説明を行う。これらの図面は本発明の典型的な実施形態を示すものにすぎず、したがって、本発明の範囲を限定するものとみなすべきではないことが理解される。本発明を、添付の図面を使用してさらに具体的かつ詳細に記述し説明する。
【００１７】
従来の技術に関する上記の問題は、テレメトリデータの一般的な収集および送達のためのシステム、方法、およびコンピュータプログラム（computer program product）を対象とする本発明の原理によって克服される。テレメトリ構成要素は、コンピュータシステム内のアプリケーションから、アプリケーションの複数の構成要素または複数のアプリケーションからアクセス可能な共通のテレメトリインターフェースを介してテレメトリデータを受け取る。テレメトリ構成要素は、受け取ったテレメトリデータを、テレメトリデータベース中に既存のテレメトリデータがあればそれと一緒に集約する。
【００１８】
テレメトリ構成要素は、送信テレメトリイベントを検出する。コンピュータシステムは、テレメトリメッセージ中の集約されたテレメトリデータの適切な部分を含む。テレメトリ構成要素は、検出された送信テレメトリイベントに応答して、テレメトリメッセージを介して、テレメトリストリームをテレメトリサービスに送る。テレメトリサービスは、テレメトリ構成要素から、テレメトリメッセージを介して、テレメトリストリームを受け取る。テレメトリサービスは、テレメトリメッセージから指定されたタイプのテレメトリデータを抽出する。
【００１９】
テレメトリサービスは、指定されたタイプのテレメトリデータ用に登録された１つまたは複数のプラグ可能なテレメトリハンドラを識別する。テレメトリサービスは、抽出されたテレメトリデータを識別された１つまたは複数のプラグ可能なテレメトリハンドラにディスパッチする。テレメトリサービスは、受信確認通知をテレメトリ構成要素に送る。この受信確認通知は、テレメトリサービスがテレメトリメッセージを受け取ったこと、或いは、エラー状態では、テレメトリメッセージのどの部分が受け取られ再送する必要がないか、および、どの部分が受け取られず、適切であれば、再送すべきかを示す。テレメトリ構成要素は、テレメトリサービスから受信確認通知を受け取る。
【００２０】
本発明の範囲内の諸実施形態は、コンピュータ実行可能命令またはデータ構造をそこに保持するまたは記憶しておくためのコンピュータ読取り可能媒体を含む。そのようなコンピュータ読取り可能媒体は、汎用または専用コンピュータシステムによってアクセスできる利用可能などんな媒体でもよい。限定ではなく例を挙げると、そのようなコンピュータ読取り可能媒体には、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＣＤ−ＲＯＭまたはその他の光ディスク記憶装置、磁気ディスク記憶装置またはその他の磁気記憶装置、固体型（solid state）記憶装置、或いは、所望のプログラムコード手段をコンピュータ実行可能命令、コンピュータ読取り可能命令またはデータ構造の形で保持または記憶するために使用することができ、汎用または専用コンピュータシステムがアクセスできる、その他のどんな媒体も含まれる。
【００２１】
本明細書および特許請求の範囲では、「ネットワーク」は、コンピュータシステムおよび／またはモジュールの間での電子データの転送を可能にする１つまたは複数のデータリンクと定義される。情報が（有線、無線、或いは、有線と無線の組合せの）ネットワークまたは別の通信接続を介してコンピュータシステムに転送または提供される場合、その接続は当然コンピュータ読取り可能媒体とみなされる。したがって、そのような接続はどれも、当然、コンピュータ読取り可能媒体と呼ばれる。上記のものの組合せも、コンピュータ読取り可能媒体の範囲内に含まれるべきである。コンピュータ実行可能命令は、例えば、汎用コンピュータシステムまたは専用コンピュータシステムに、ある種の機能または機能の集まりを実行させる命令およびデータを備える。このコンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間形式命令、さらにはソースコードでもよい。
【００２２】
本明細書および特許請求の範囲では、「コンピュータシステム」は、電子データに対して協働して操作を行う１つまたは複数のソフトウェアモジュール、１つまたは複数のハードウェアモジュール、或いはそれらの組合せと定義される。例えば、コンピュータシステムの定義は、パーソナルコンピュータのハードウェア構成要素、および、パーソナルコンピュータのオペレーティングシステムなどのソフトウェアモジュールを含む。モジュールの物理的配置は重要ではない。コンピュータシステムは、ネットワークを介して結合された１台または複数のコンピュータを含むことができる。同様に、コンピュータシステムは、（メモリおよびプロセッサなどの）内部モジュールがそこで電子データに対して協働して操作を行う（移動電話または携帯情報端末「ＰＤＡ」など）単一の物理的装置を含むことができる。
【００２３】
本発明は、パーソナルコンピュータ、ラップトップコンピュータ、ハンドへルド装置、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラマブルなコンシューマエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、移動電話、ＰＤＡ、ページャなどを含めた、多くのタイプのコンピュータシステム構成を備えたネットワークコンピューティング環境で実施することができることを当業者は理解するであろう。本発明はまた、ネットワークを介して、（有線データリンク、無線データリンク、または有線および無線データリンクの組合せのどれかによって）リンクされたローカルコンピュータシステムとリモートコンピュータシステムの両方がタスクを実行する、分散システム環境ででも実施することができる。分散システム環境では、プログラムモジュールをローカルメモリ記憶装置とリモートメモリ記憶装置の両方に配置することができる。
【００２４】
図１は、共通のインターフェースを用いたテレメトリデータの一般的な収集および送達を容易にするコンピュータアーキテクチャ１００の例を示す。そこに示されているように、コンピュータアーキテクチャ１００は、コンピュータシステム１０１、１２４、１２６、１２７および１３１を含む。コンピュータシステム１２４、１０１および１２６の前、間、および後にある一連の縦の３つの点（縦の省略符号）は、他のコンピュータシステムもコンピュータアーキテクチャ１００に含むことができることを示す。コンピュータシステム１０１、１２４、１２６、１２７および１３１を、例えば、ローカルエリアネットワーク（「ＬＡＮ」）、広域ネットワーク（「ＷＡＮ」）、さらにはインターネットなどのネットワークに接続することができる。したがって、コンピュータシステム１０１、１２４、１２６、１２７および１３１は、互いに、また他のネットワーク接続されたコンピュータシステム（図示せず）との間でデータを送受することができる。例えば、コンピュータシステム１０１、１２４、１２６、１２７および１３１、並びに他のネットワーク接続されたコンピュータシステムは、メッセージ関係データを作成し、ネットワークを介してメッセージに関係するデータ（例えば、「ＩＰ」（インターネットプロトコル）データグラム、および、「ＴＣＰ」（伝送制御プロトコル）、「ＨＴＴＰ」（ハイパーテキスト転送プロトコル）、「ＳＭＴＰ」（簡易メール転送プロトコル）などＩＰデータグラムを利用するその他のより上層のプロトコル）を交換することができる。例えば、コンピュータシステム１０１、１２４、１２６、１２７および１３１は、ＳＯＡＰエンベロープを作成し、対応するネットワークを介してＳＯＡＰエンベロープを交換することができる。
【００２５】
コンピュータシステム１０１はテレメトリ構成要素１２２、アプリケーション１０２、１０３および１０４、並びにテレメトリデータベース１２３を含む。一般に、テレメトリ構成要素１２２は、アプリケーションからテレメトリデータを集め、集めたテレメトリデータをテレメトリデータベース１２３に記憶するように構成される。テレメトリ構成要素１２２は、テレメトリデータを受け取るためにアプリケーション（およびその他のソフトウェア構成要素）とのインターフェースをとるテレメトリインターフェース１２１を含む。テレメトリインターフェース１２１は、アプリケーション開発者が利用できる共通のテレメトリインターフェースでよい。
【００２６】
したがって、アプリケーション開発者は、対応する互換性のあるテレメトリインターフェースを開発したアプリケーションに含めることができる。例えば、アプリケーション１０２、１０３および１０４は、それぞれテレメトリインターフェース１１２、１１３および１１４を含む。テレメトリインターフェース１１２、１１３および１１４は、テレメトリインターフェース１２１との互換性を有するように開発されたテレメトリインターフェースとすることができる。したがって、各アプリケーション１０２、１０３および１０４は、テレメトリデータをテレメトリ構成要素１２２に送るように互換性をもって構成することができる。
【００２７】
アプリケーションは、１つまたは複数の異なるタイプのテレメトリデータを生成するように構成することができる。テレメトリデータには、例えば、「ＱｏＳ」（クオリティオブサービス）テレメトリデータ、ブートタイムテレメトリデータ、コンピュータシステムヘルステレメトリデータ、破局的障害テレメトリデータなど、様々な異なるタイプのより全般的なテレメトリデータが含まれ得る。より全般的なテレメトリデータは、様々な異なるアプリケーション開発者／ベンダにとっての関心事となり得る。例えば、アンチウィルスアプリケーションベンダ、ファイアウォールベンダおよびバックアップアプリケーションベンダはすべて、そのアプリケーションをよりロバストなものにする際に使用するために、破局的障害データに関心をもつ可能性がある。
【００２８】
テレメトリデータにはまた、例えば、アンチウィルステレメトリデータ、ファイアウォールテレメトリデータ、スパム遮断テレメトリデータ、バックアップテレメトリデータなど、様々な異なるタイプのよりカスタマイズされたテレメトリデータも含まれ得る。カスタマイズされたテレメトリデータは、少数のアプリケーションまたはただ１つのアプリケーションの開発者／ベンダには興味がある可能性がある。例えば、検出されたウィルスの日付／時刻を示すテレメトリデータは、アンチウィルスアプリケーションの開発者／ベンダにしか興味がない可能性がある。
【００２９】
テレメトリデータは、カウントテレメトリデータを含むことができる。例えば、カウントテレメトリデータは、コンピュータシステム１０１でウィルスが幾つ検出されたか、または、コンピュータシステム１０１が指定された期間に何回リブートされたかのカウントを含むことができる。テレメトリデータはまた、状況を示すスナップショットテレメトリデータをも含むことができる。例えば、スナップショットテレメトリデータは、具体的な時刻（例えば「スナップショット」が撮られたとき）に利用可能なシステム資源を含むことができる。
【００３０】
テレメトリ構成要素１２２は、異なるタイプのテレメトリデータを識別し、テレメトリデータをテレメトリデータベース１２３にタイプ別に記憶（またはエンキュー）することができる。例えば、テレメトリ構成要素は、アプリケーション１０２、１０３および１０４から受け取ったＱｏＳデータを識別し、受け取ったＱｏＳデータを予め記憶してあったＱｏＳデータと一緒に集約することができる。その他のタイプのより全般的なテレメトリデータおよび様々なタイプのカスタマイズされたテレメトリデータを、同様にテレメトリデータベース１２３中に集約することができる。
【００３１】
例えば、タイマの有効期限、テレメトリサービスからの要求、破局的障害の検出などのイベントに応答して、テレメトリ構成要素１２２は、テレメトリデータをテレメトリサービス１３２に送る（またはデキューする）ことができる。テレメトリデータは、様々な異なるテレメトリストリームに入れて転送することができる。例えば、テレメトリ構成要素１２２は、第１タイプのテレメトリデータ（例えばブート時間テレメトリデータ）をストリーム１４１に入れて送り、第２タイプのテレメトリデータ（例えばバックアップテレメトリデータ）をストリーム１４３に入れて送ることができる。
【００３２】
明示的には示していないが、コンピュータシステム１２４および１２６、並びにその他のどんなネットワーク接続コンピュータシステムも、それぞれ、コンピュータシステム１０１と類似の構成にすることができると理解されたい。すなわち、コンピュータシステム１２４および１２６、並びにその他のネットワーク接続コンピュータシステムは、テレメトリデータを共通のテレメトリインターフェースを介してテレメトリ構成要素に送る１つまたは複数のアプリケーションを含むことができる。テレメトリ構成要素は、様々なタイプのテレメトリデータを識別し、そのテレメトリデータを、対応するテレメトリデータベースに適切に記憶することができる。テレメトリ構成要素は、何らかのイベントに応答して、テレメトリデータを（例えば適切なテレメトリストリームに入れて）送ることができる。例えば、コンピュータシステム１０１、１２４および１２６は、ＱｏＳテレメトリデータを、対応するＱｏＳテレメトリストリームを介してテレメトリサービス１３２に送り、ブート時間テレメトリデータを、対応するブート時間テレメトリストリームを介してテレメトリサービス１３２に送るなどすることができる。
【００３３】
コンピュータシステム１３１は、テレメトリサービス１３２、テレメトリコンシューマ登録データベース１３３、並びにバックエンド構成要素１３４、１３６および１３７を含む。図１は、バックエンド構成要素１３４、１３６および１３７がコンピュータシステム１３１に含まれているものとして示しているが、バックエンド構成要素１３４、１３６および１３７は、複数のコンピュータシステムに分散することができることを理解されたい。例えば、バックエンド構成要素１３４、１３６および１３７は、一部はコンピュータシステム１０１に配置し、一部はコンピュータアーキテクチャ１００内の他の１つまたは複数のコンピュータシステムに配置することができる。一般に、テレメトリサービス１３２は、１つまたは複数のコンピュータシステム（例えば、コンピュータシステム１２４、１０１および１２６）からテレメトリメッセージを受け取るように構成される。例えば、テレメトリサービスは、テレメトリメッセージを、テレメトリストリーム１４１および１４３を介して、コンピュータシステム１２４および１２６からの対応するストリームを介して、また、その他のネットワーク接続コンピュータシステムからの対応するストリームを介して、受け取ることができる。
【００３４】
例えば、バックエンド構成要素１３４、１３６、１３７などのバックエンド構成要素を、１つまたは複数の様々なタイプ（例えば、ＱｏＳ、ブート時間、保守など）のテレメトリデータ用に登録することができる。テレメトリサービス１３２は、登録を受け取り、その登録をテレメトリコンシューマ登録データベース１３３に記憶することができる。テレメトリサービス１３２は、テレメトリメッセージを受け取ったとき、そのテレメトリメッセージに含まれているテレメトリデータのタイプを識別する。次いで、テレメトリサービス１３２は、識別されたタイプのテレメトリデータ用に登録されているバックエンド構成要素があるかテレメトリコンシューマ登録データベース１３３を検査する。次いで、テレメトリサービス１３２は、含まれているテレメトリデータを、登録されているバックエンド構成要素に分配する。テレメトリメッセージの適切な受取りに応答して、テレメトリサービス１３２は、テレメトリメッセージを提出したテレメトリ構成要素に受信確認通知を送り返すことができる。
【００３５】
バックエンド構成要素は、後で使用するためにテレメトリデータを記憶することができる。例えば、ＱｏＳバックエンド構成要素はＱｏＳテレメトリデータをＱｏＳデータベースに記憶し、ブート時間分析データベースはブート時間テレメトリデータをブート時間分析データベースに記憶し、ファイアウォールバックエンドはファイアウォールテレメトリデータをファイアウォールデータベースに記憶する、などすることができる。バックエンド構成要素は、記憶する代わりに、或いは、記憶と組み合わせて、電子メッセージを開発者／ベンダに送ることができる。例えば、以前は不明であったウィルスの複数の検出に応答して、アンチウィルスバックエンド構成要素は、アンチウィルスアプリケーションベンダにアラートを送ることができる。
【００３６】
したがって、一般に、テレメトリサービスは、他の複数のネットワーク接続コンピュータシステムにあるテレメトリ構成要素からテレメトリデータを受け取るための中心的受信点となり得る。テレメトリサービスとテレメトリ構成要素の間の通信は、双方向認証および署名付きメッセージを使用して保護することができる。例えば、テレメトリ構成要素１２２とテレメトリサービス１３２の間の通信は、「ＳＳＬ」（安全ソケット層）プロトコルを介した双方向認証を使用して保護することができる。テレメトリサービスはまた、管理可能な（かつ構成可能な）数のサンプルが処理されるように、テレメトリストリーム毎のテレメトリデータの受取りを（例えば、利用可能なテレメトリ構成要素のサブセットをサンプリングすることによって）絞る（throttle）こともできる。例えば、テレメトリサービス１３２は、管理できる１組のＱｏＳテレメトリデータを維持するために、１時間毎に、指定された数（例えば、利用可能なすべてのテレメトリ構成要素より少ない幾つかの数）のテレメトリ構成要素を、ＱｏＳテレメトリデータを求めてサンプリングすることができる。したがって、サンプリングによって、コンピュータシステム１３１のかなり多くの資源が、ＱｏＳテレメトリデータを処理するために消費される可能性を（或いは、その他のどんなタイプのテレメトリデータを処理するために消費される可能性も）減らすことができる。
【００３７】
テレメトリデータは、一連の名前／値（name/value）の対を含むことができる。幾つかの実施形態では、名前／値の対は、名前／値の対を生成するアプリケーションおよび対応するバックエンド構成要素にとって理解可能である。例えば、アプリケーション１０２およびバックエンド構成要素１３４は、テレメトリメッセージ１５１に含まれている１つまたは複数の名前／値の対を理解することができる。しかし、テレメトリ構成要素１２２およびテレメトリサービス１３２は、その１つまたは複数の名前／値の対を理解することが（或いは気付くことも）できない。
【００３８】
幾つかの実施形態では、テレメトリメッセージは特定のコンピュータシステムに向けられる。例えば、テレメトリ構成要素１２２はテレメトリメッセージ１５６をテレメトリサービス１２８に送ることができる。テレメトリメッセージ１５６は、コンピュータシステム１０１内の問題を診断する際にコンピュータシステム１２７のユーザにとって有用となり得るテレメトリデータ（例えば名前／値の対）を含むことができる。ターゲットとされるメッセージ（targeted message）１５６の受取りに応答して、テレメトリサービス１２８はＡＣＫ１５７（ターゲットとされるメッセージ１５６を受け取ったとの受信確認通知）をテレメトリ構成要素１２２に送ることができる。テレメトリメッセージ１５６がコンピュータシステム１０１からのものであることに基づいて、（コンピュータシステム１２７の別の構成要素からのものである可能性もある）ターゲットとされるメッセージをＡＣＫ１５７上にピギーバック（piggy back）することができる。テレメトリサービス１２８はまた、受信したテレメトリデータをユーザインターフェースに提示することもできる。
【００３９】
図２は、共通のインターフェースを用いたテレメトリデータの一般的な収集および送達のための方法２００の例示的フローチャートである。以下に、方法２００を、コンピュータアーキテクチャ１００中の構成要素およびデータに関連して説明する。
【００４０】
方法２００は、テレメトリデータをアプリケーションから共通のテレメトリインターフェースを介して受け取る動作（動作２０１）を含む。例えば、テレメトリ構成要素１２２は、テレメトリデータ１１６を、テレメトリインターフェース１２１を介して受け取ることができる。テレメトリデータ１１６を、１つまたは複数のアプリケーション１０２、１０３および１０４で生成し、それぞれ共通のテレメトリインターフェース１１２、１１３および１１４を介して送ることができる。したがって、テレメトリデータ１１６は、名前／値の対、名前／値のカウンタ、カスタムテレメトリデータ、および／または様々なタイプのテレメトリデータを表す生のデータを含むことができる。テレメトリデータは、「ＸＭＬ」（拡張可能マークアップ言語）形式で表すことができる、或いは、例えば、名前／値の対の場合、テレメトリインターフェースを実装する機能に対するストリングパラメータとして表すことができる。
【００４１】
方法２００は、受け取ったテレメトリデータを、テレメトリデータベース中に既存のテレメトリデータがあればそれと一緒に集約する動作（動作２０２）を含む。例えば、テレメトリ構成要素１２２は、テレメトリデータ１１６をテレメトリデータベース１２３に集約することができる。テレメトリデータ１１６を、テレメトリデータタイプに応じて集約することができる。例えば、テレメトリデータ１１６には、既存のＱｏＳテレメトリデータと一緒に集約することができる部分もあり、既存のブート時間テレメトリデータと一緒に集約することができる部分もあり、既存のバックアップテレメトリデータと一緒に集約することができる部分もある、など。テレメトリデータの集約は、カウンタテレメトリデータの更新およびスナップショットデータの置換えを含むことができる。例えば、新しいウィルスが検出されたとき、検出済みウィルスの数を増やすことができる。同様に、システム資源の新しいスナップショットが撮られたとき、システム資源の古いスナップショットを置き換えることができる。
【００４２】
方法２００は、送信テレメトリイベントを検出する動作（動作２０３）を含む。例えば、テレメトリ構成要素１２２は、テレメトリデータベース１２３中のテレメトリデータに対応する送信テレメトリイベントを検出することができる。送信テレメトリイベントは、例えば、タイマの期限切れ、テレメトリサービスからの要求、破局的障害などでもよい。
【００４３】
方法２００は、集約されたテレメトリデータの適切な部分をテレメトリメッセージに含める動作（動作２０４）を含む。集約されたテレメトリデータの適切な部分は、送信テレメトリイベントに応答する、かつ／またはそれによって指定された、テレメトリデータでよい。例えば、テレメトリ構成要素１２２は、テレメトリデータベース１２３からのテレメトリデータの一部をテレメトリメッセージ１５１に含めることができる。含められるテレメトリデータは、例えば、ＱｏＳテレメトリデータ、ブート時間テレメトリデータ、スナップショットテレメトリデータ、カスタムテレメトリデータなど指定されたタイプのものでよい。指定されたタイプのテレメトリデータを、検出された送信テレメトリイベントに応答してテレメトリメッセージ１５１に含めることができる。例えば、テレメトリサービス１３２からのＱｏＳテレメトリデータの要求に応答して、テレメトリ構成要素１２２は、ＱｏＳテレメトリデータをテレメトリメッセージ１５１に含めることができる。
【００４４】
テレメトリデータをスキーマに従ってフォーマットすることができる。以下の、ターゲットとされるメッセージング要求／テレメトリアップロードＸＭＬスキーマ定義（「ＸＳＤ」）ドキュメントは、メッセージング要求および送信テレメトリデータのための例示的フォーマットを定義する。
【００４５】
【表１】
2006252561.tif 000003
【００４６】
第３行と第３４行の間のデータ定義は、テレメトリ要素を定義する。第７行と第２０行の間の定義は、テレメトリ要素中に含むことができるストリーム要素を定義する。第１０行は、そのストリーム要素に含むことができる属性要素を定義し、そのストリーム要素にゼロまたは１つ以上の属性要素を含むことができることを示す。第１２〜１４行は、それぞれ、属性要素の名前、値、およびタイムスタンプの属性を定義する。第１８行はストリーム要素のためのＩＤ属性を定義する。
【００４７】
第２１行と第２６行の間のデータ定義は、StreamRaw要素を定義する。第２３行および第２４行は、それぞれ、StreamRaw要素のためのＩＤ属性、およびTimestamp属性を定義する。第６行は、１つまたは複数のStream要素および／または１つまたは複数のStreamRaw要素をTelemetry要素中に含めることができることを表す。第２９〜３２行は、Telemetry要素を定義するために使用することができるTelemetry要素属性（版、タイムスタンプ、およびＧＵＩＤ）を定義する。
【００４８】
第３５〜３７行は、追加のターゲットとされるメッセージング要求フォーマットを定義することもできることを表す。これらのターゲットとされるメッセージング要求フォーマットは、アップロードされたテレメトリデータと共にピギーバックされるターゲットとされるメッセージ要求(targeted message request)をフォーマットするために使用することができる。例えば、テレメトリメッセージ１５６は、テレメトリデータを、テレメトリサービス１２８に、含まれるテレメトリデータを分析することを要求する、ターゲットとされるメッセージ要求と共に含むことができる。テレメトリメッセージ１５１および／または１５３はまた、コンピュータシステム１３１内のモジュールを対象としたターゲットとされるメッセージ要求を含むこともできる。したがって、その他の関係のないテレメトリモジュール用のデータをテレメトリＡＣＫメッセージに含め、それによって、データを別のメッセージで送る必要をなくすことができる。このピギーバッキングによってネットワーク帯域幅が節約されることが潜在的に可能である。
【００４９】
テレメトリ構成要素１２２は、ターゲットとされるメッセージ要求をテレメトリメッセージに適当な形で含めるように構成することができる。テレメトリサービス１３２および１２８は、どのターゲットとされるメッセージ要求も適切なモジュールにディスパッチするように構成することができる。
【００５０】
したがって、テレメトリメッセージ（例えばＳＯＡＰメッセージ）は、１つまたは複数のStream要素、１つまたは複数のStreamRaw要素、および１つまたは複数のターゲットとされるメッセージ要求を含むTelemetry要素を含むことができる。以下のＸＭＬ部分は、ターゲットとされるメッセージング要求／テレメトリアップロードＸＳＤドキュメント中の例示的フォーマットに従ってフォーマットされた例示的テレメトリメッセージを表す。
【００５１】
【表２】
2006252561.tif 000004
【００５２】
第４０から５５行までは、Telemetry要素を表す。属性および対応する属性の値cver="1" pver="1" timestamp="" telemetryGUID=""は、Telemetry要素を識別するために使用することができる。上記のＸＭＬ部分には明示的に示されていないが、タイムスタンプおよびtelemetryGUIDの属性は、対応する値を有する。さらに、cverおよびpverの属性の“１”の値は、例示的な値であり、cverおよびpverの値が異なると、クライアントの版およびプロトコルの版は変わる可能性がある。
【００５３】
第４１〜４４行はStream要素を表す。属性および対応する値ID="<string>"は、Stream要素に含まれるテレメトリデータに関連する指定されたストリーム（例えばストリーム１４１またはストリーム１４３）を識別する。第４２行は属性要素を表す。属性および対応する値Name=" " Value=" "はそれぞれ、名前／値の対を識別する。属性および対応する値timestamp=""は名前／値の対が得られた時刻を示す。第４３行は、第４１〜４４行に示されたStream要素に少なくとも１つの他のProperty要素を含むことができることを表す。
【００５４】
第４５〜４７行は、StreamRaw要素を表す。属性および対応する値D="<string>"およびtimestamp=""はそれぞれ、StreamRaw要素中に含まれるテレメトリデータに関連する指定されたストリーム（例えばストリーム１４１またはストリーム１４３）を識別し、StreamRaw要素に含まれているテレメトリデータが得られた時刻を示す。第４６行は一般に、例えばバルクＸＭＬまたはバイナリデータなど生のテレメトリデータがStreamRaw要素に含まれていることを表す。バイナリデータは、例えばベース６４ストリングにエンコードすることができる。
【００５５】
StreamRaw要素を、Custom Telemetryを送るために使用することもできる。第４８〜５４行は、別のStreamRaw要素を表す。属性および対応する値ID="CustomTelemetry" timestamp=""は、StreamRaw要素に含まれているテレメトリデータに関連するカスタムテレメトリストリーム（例えばストリーム１４１またはストリーム１４３）を識別し、StreamRaw要素に含まれているテレメトリデータが入手された時刻を示す。第４９〜５３行はSession要素を示す。Session要素は、カスタムテレメトリデータを生成するアプリケーション（例えばアプリケーション１０２）およびカスタムテレメトリデータを受け取る対応するバックエンド構成要素（バックエンド構成要素１３４）にとって意味がある可能性がある。しかし、Session要素は、カスタムテレメトリデータ（例えばテレメトリ構成要素１２２およびテレメトリサービス１３２）を転送する中間モジュールにとっては何の意味もない可能性がある。
【００５６】
属性および対応する値Stream="PortUpdate" Provider="Firewall" timestamp=""は、カスタムテレメトリがファイアウォールプロバイダのPortUpdateストリームに、より具体的に関連していることを示し、Session要素に含まれているカスタムテレメトリデータが得られた時刻を示す。第５０行および第５１行は、番号が１０２４〜１０４８の範囲のポートが更新されたことを表す。
【００５７】
第５６行から第５８行までは、TargetedMessageRequestを表す。第５７行は、第４０〜５５行内のテレメトリデータと共にテレメトリメッセージにピギーバックすることができるメッセージ要求データを表す。
【００５８】
方法２００は、テレメトリストリームを、テレメトリメッセージを介してテレメトリサービスに送る動作（動作２０５）を含む。例えば、テレメトリ構成要素１２２は、ストリーム１４１を、テレメトリメッセージ１５１を介してテレメトリサービス１３２に送ることができる。同様に、テレメトリ構成要素１２２は、ストリーム１４３を、テレメトリメッセージ１５３を介してテレメトリサービス１３２に送ることができる。テレメトリメッセージ１５２および１５３はそれぞれ、それぞれストリーム１４１および１４３に対応する１つまたは複数のStreamおよび／またはStreamRaw要素を含むことができる。
【００５９】
方法２００は、テレメトリストリームを、テレメトリメッセージを介して、テレメトリ構成要素から受け取る動作（動作２０７）を含む。例えば、テレメトリサービス１３２は、ストリーム１４１を、テレメトリメッセージ１５２を介して、テレメトリ構成要素１２２から受け取ることができる。同様に、テレメトリサービス１３２は、ストリーム１４３を、テレメトリメッセージ１５３を介して、テレメトリ構成要素１２２から受け取ることができる。
【００６０】
方法２００は、指定されたタイプのテレメトリデータをテレメトリメッセージから抽出する動作（動作２０８）を含む。例えば、テレメトリサービス１３２は、ＱｏＳテレメトリデータをテレメトリメッセージ１５１から抽出することができる。同様に、テレメトリサービス１３２は、カスタムファイアウォールテレメトリデータをテレメトリメッセージ１５３から抽出する可能性もある。
【００６１】
方法２００は、１つまたは複数のプラグ可能なテレメトリハンドラを識別する動作（動作２０９）を含む。例えば、テレメトリサービス１３２は、バックエンド構成要素１３４および１３７がＱｏＳテレメトリデータ用に登録されていることを識別することができる。同様にテレメトリサービス１３２は、バックエンド構成要素１３６がカスタムファイアウォールテレメトリデータ用に登録されていることを識別することができる。一般に、バックエンド構成要素は、そのバックエンド構成要素が登録されている指定されたタイプのテレメトリデータにアクセスするための、インターフェースを含むことができる。バックエンド構成要素はまた、名前／値の対にアクセスするための専用インターフェースを含むこともできる。
【００６２】
幾つかの実施形態では、テレメトリサービス１３２は、テレメトリコンシューマ登録データベース１３３に含まれている予め受け取ってあった登録を検査する。時々、バックエンド構成要素は、例えば、ストリームＩＤ値をテレメトリサービス１３２に示すことによって、指定されたテレメトリストリームからのテレメトリデータに対する関心（an interest in telemetry data）を登録することができる。テレメトリサービス１３２は、登録をテレメトリコンシューマ登録データベース１３３に記録することができる。テレメトリデータが受け取られたとき、テレメトリサービス１３２は、受け取ったテレメトリデータのストリームＩＤ値（例えば"<string>"portion of ID="<string>"）を登録済みのストリームＩＤ値と比較することができる。一致が識別されたとき、テレメトリデータはその登録を提出したバックエンド構成要素に送られる。
【００６３】
方法２００は、テレメトリデータを１つまたは複数のハンドラにディスパッチする動作（動作２１０）を含む。例えば、テレメトリサービス１３２は、テレメトリメッセージ１５１に含まれているＱｏＳテレメトリデータをバックエンド構成要素１３４および１３７にディスパッチすることができる。同様に、テレメトリサービス１３２は、カスタムファイアウォールテレメトリデータをバックエンド構成要素１３６にディスパッチすることができる。
【００６４】
方法２００は、テレメトリデータの受取りを示す受信確認通知を送る動作（動作２１１）を含む。例えば、テレメトリサービス１３２は、テレメトリメッセージ１５１に含まれているテレメトリデータの受取りを示すＡＣＫ１５２を送ることができる。同様に、テレメトリサービス１３２は、テレメトリメッセージ１５３に含まれているテレメトリデータの受取りを示すＡＣＫ１５４を送ることができる。或いは、例えば、エラー状態では、テレメトリサービス１３２は、テレメトリデータのどの部分が受け取られ再送する必要がないか、および、どの部分が受け取られず、適切であれば、再送すべきかの示唆を送ることができる。ＡＣＫ１５４はまた、テレメトリサービス１３２がテレメトリメッセージ１５１の部分部分を処理することが可能であったか可能でなかったかを示すこともできる。
【００６５】
受信確認通知をスキーマに従ってフォーマットすることができる。以下のターゲットとされるメッセージ応答／テレメトリ受信確認通知ＸＳＤドキュメントは、テレメトリ受信確認通知を送るための例示的フォーマットを定義する。
【００６６】
【表３】
2006252561.tif 000005
【００６７】
第６２行と第９１行の間のデータ定義は、TelemetryResponse要素を定義する。第６５行と第８３行の間のデータ定義は、TelemetryResponse要素に含むことができるStreamAcks要素を定義する。第６８〜７３行は、ストリームを介したテレメトリデータの受取りを確認通知するために使用することができるStreamAck要素を定義する。第７０行および第７１行は、それぞれStreamAck要素のＩＤ属性および応答属性を定義する。第７４〜８０行は、生ストリームを介したテレメトリデータの受取りを確認通知するために使用することができるRawStreamAck要素を定義する。第７６〜７８行は、それぞれRawStreamAck要素のＩＤ属性、応答属性、およびタイムスタンプ属性を定義する。
【００６８】
第９２〜９４行は、追加のターゲットとされるメッセージング応答フォーマットを定義することもできることを表す。これらのターゲットとされるメッセージング応答フォーマットは、テレメトリ受信確認通知と共にピギーバックされるターゲットとされるメッセージ応答(targeted massage response)をフォーマットするために使用することができる。例えば、ＡＣＫ１５７は、（テレメトリメッセージ１５６中のテレメトリデータの）テレメトリ受信確認通知を、（テレメトリサービス１２８によって）テレメトリデータを分析した結果を示すターゲットとされるメッセージ応答と共に含むことができる。ＡＣＫ１５２および／またはＡＣＫ１５４も、コンピュータシステム１０１内のモジュールを対象としたターゲットとされるメッセージ応答を含むことができる。したがって、その他の関係のないテレメトリモジュール用のデータをＡＣＫに含め、それによって、そのデータを別のメッセージとして送る必要をなくすことができる。このピギーバッキングによってネットワーク帯域幅が節約されることが潜在的に可能である。
【００６９】
テレメトリサービス１３２および１２８は、ターゲットとされるメッセージ応答をＡＣＫに適当な形で含めるように構成することができる。テレメトリ構成要素１２２は、どんなターゲットとされるメッセージ応答も適切なモジュールにディスパッチするように構成することができる。
【００７０】
したがって、テレメトリ受信確認通知（例えばＳＯＡＰメッセージ）は、１つまたは複数のStreamAck要素、１つまたは複数のStreamRawAck要素、および１つまたは複数のターゲットメッセージ応答が入ったTelemetryResponse要素を含むことができる。以下のＸＭＬ部分は、ターゲットとされるメッセージ応答／テレメトリ受信確認通知ＸＳＤドキュメント内の例示的フォーマットに従ってフォーマットされた例示的ＡＣＫを表す。
【００７１】
【表４】
2006252561.tif 000006
【００７２】
第１００〜１０５行は、TelemetryResponse要素を表す。属性および対応する属性値ver="1"telemetryGUlD=""は、TelemetryResponse要素を識別するために使用することができる。
【００７３】
第１０１〜１０４行は、StreamAcks要素を表す。第１０２行は、StreamAck要素を表す。（第１０２行の)属性および対応する値ID="<string>"およびResponse="OK/Retry"は、指定されたストリーム（例えばストリーム１４１またはストリーム１４３）を識別し、ストリームを介して受け取られたデータがＯＫか、それとも再送されるべきかを示す。第１０３行は、RawStreamAck要素を示す。（第１０２行の)属性および対応する値ID="<string>"およびResponse="OK/Retry"は、指定された生のストリーム（例えばストリーム１４１またはストリーム１４３）を識別し、その生ストリームがＯＫかそれとも再送されるべきかを示す。（第１０３行の）属性および対応する値timestamp=""は、その応答が作成された時刻を示す。
【００７４】
第１０６〜１０８行は、TargetedMessageResponseを表す。第１０７行は、第１００〜１０５行のテレメトリ応答データと共にＡＣＫにピギーバックすることができるメッセージ応答データを示す。
【００７５】
方法２００は、テレメトリメッセージを受け取ったことを示す受信確認通知を受け取る動作（動作２０６）を含む。例えば、テレメトリ構成要素１２２は、ＡＣＫ１５２および／またはＡＣＫ１５４を受け取ることができる。或いは、例えば、エラー状態があるときは、テレメトリ構成要素１２２は、テレメトリデータのどの部分が受け取られ再送する必要がないか、また、どの部分が受け取られず、適切であれば、再送すべきかの示唆を受け取ることができる。
【００７６】
したがって、本発明の諸実施形態は、テレメトリデータの一般的な収集および送達を容易にする。アプリケーションは、テレメトリデータを共通のテレメトリインターフェースを介してテレメトリ構成要素に送ることができ、テレメトリ構成要素はそのテレメトリデータをテレメトリデータベースに記憶する。プラグ可能なバックエンド構成要素は、適切なテレメトリデータを受け取るために、関心があるテレメトリデータ（telemetry data of interest）用に登録され、テレメトリサービスとのインターフェースをとる。ネットワーク帯域幅が節約されるように、ターゲットとされるメッセージをテレメトリメッセージおよび受信確認通知の中にピギーバックすることができる。
【００７７】
図３は本発明の原理に適した動作環境を示す。図３および以下の議論は、本発明を実装することができる適切なコンピューティング環境の簡単な全般的説明を提供する。必ずしも必要ではないが、本発明は、コンピュータシステムによって実行されるプログラムモジュールなどコンピュータ実行可能命令の一般的コンテキストで記述する。一般に、プログラムモジュールは、特定のタスクを実行する、或いは特定の抽象データタイプを実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、本明細書中に開示された方法の動作を実行するためのプログラムコード手段の例を表す。
【００７８】
図３を参照すると、本発明を実装するための例示的システムは、処理ユニット３２１、システムメモリ３２２、および、システムメモリ３２２を含めて様々なシステム構成要素を処理ユニット３２１に結合するシステムバス３２３を含むコンピュータシステム３２０の形での、汎用コンピューティング装置を含んでいる。処理ユニット３２１は、本発明の特徴を含めて、コンピュータシステム３２０の特徴を実装するように設計されたコンピュータ実行可能命令を実行することができる。システムバス３２３は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのどれかを使用するローカルバスを含めて、幾つかのタイプのバス構造のどれでもよい。システムメモリは、「ＲＯＭ」（読出し専用メモリ）３２４および「ＲＡＭ」（ランダムアクセスメモリ）３２５を含む。コンピュータシステム３２０の中の要素間で起動中などに情報を転送する助けとなる基本ルーチンを含む「ＢＩＯＳ」（基本入出力システム）３２６が、ＲＯＭ３２４に記憶されていてよい。
【００７９】
コンピュータシステム３２０はまた、磁気ハードディスク３３９との間で読み書きするための磁気ハードディスクドライブ３２７、取外し可能な磁気ディスク３２９との間で読み書きするための磁気ディスクドライブ３２８、および、例えばＣＤ−ＲＯＭまたはその他の光媒体など取外し可能な光ディスク３３１との間で読み書きするための光ディスクドライブ３３０を含むこともできる。磁気ハードディスクドライブ３２７、磁気ディスクドライブ３２８、および光ディスクドライブ３３０は、それぞれ、ハードディスクドライブインターフェース３３２、磁気ディスクドライブインターフェース３３３、および光ディスクドライブインターフェース３３４によって、システムバス３２３に接続される。これらのドライブおよびそれらに関連したコンピュータ読取り可能媒体によって、コンピュータシステム３２０用のコンピュータ実行可能命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性記憶が実現される。本明細書に記載された例示的環境では、磁気ハードディスク３３９、取外し可能な磁気ディスク３２９および取外し可能な光ディスク３３１を利用しているが、磁気カセット、フラッシュメモリカード、デジタル多目的ディスク、ベルヌイカートリッジ、ＲＡＭ、ＲＯＭなどを含めて、データを記憶するためのその他のタイプのコンピュータ読取り可能媒体を使用することもできる。
【００８０】
オペレーティングシステム３３５、１つまたは複数のアプリケーションプログラム３３６、その他のプログラムモジュール３３７、およびプログラムデータ３３８を含めて、１つまたは複数のプログラムモジュールを含むプログラムコード手段を、ハードディスク３３９、磁気ディスク３２９、光ディスク３３１、ＲＯＭ３２４またはＲＡＭ３２５上に記憶することができる。ユーザは、コマンドおよび情報を、キーボード３４０、ポインティング装置３４２、または、例えば、マイクロフォン、ジョイスティック、ゲームパッド、スキャナなどその他の入力装置（図示せず）を用いて、コンピュータシステム３２０に入力することができる。これらおよびその他の入力装置は、システムバス３２３に結合されている入出力インターフェース３４６を介して処理ユニット３２１に接続することができる。入出力インターフェース３４６は、論理的に、例えば、シリアルポートインターフェース、ＰＳ／２インターフェース、パラレルポートインターフェース、「ＵＳＢ」（ユニバーサルシリアルバス）インターフェース、または「ＩＥＥＥ」（電気電子技術者協会）１３９４インターフェース（すなわちFireWireインターフェース）など様々な異なるインターフェースのどれをも表し、さらには、論理的に、異なるインターフェースの組合せを表すこともできる。
【００８１】
モニタ３４７またはその他の表示装置も、ビデオインターフェース３４８を介してシステムバス３２３に接続されている。例えば、スピーカやプリンタなどその他の周辺出力装置（図示せず）も、コンピュータシステム３２０に接続することができる。
【００８２】
コンピュータシステム３２０は、例えばオフィス全体または事業体全体のコンピュータネットワーク、ホームネットワーク、イントラネット、および／またはインターネットなどのネットワークに接続可能である。コンピュータシステム３２０は、そのようなネットワークを介して、例えばリモートコンピュータシステム、リモートアプリケーション、および／またはリモートデータベースなどの外部資源とデータを交換することができる。
【００８３】
コンピュータシステム３２０は、コンピュータシステム３２０が、それを介して、外部資源からデータを受け取り、かつ／または、外部資源にデータを伝送するネットワークインターフェース３５３を含んでいる。図３に示されているように、ネットワークインターフェース３５３は、リンク３５１を介したリモートコンピュータシステム３８３とのデータ交換を容易にする。ネットワークインターフェース３５３は、論理的に、例えば、ネットワークインターフェースカードおよび対応する「ＮＤＩＳ」（ネットワークドライバインターフェース規約）スタックなど１つまたは複数のソフトウェアおよび／またはハードウェアモジュールを表すことができる。リンク３５１は、ネットワークの一部（例えばイーサネット（登録商標）セグメント）を表し、リモートコンピュータシステム３８３は、そのネットワークのノードを表す。
【００８４】
同様に、コンピュータシステム３２０は、コンピュータシステム３２０が、それを介して外部資源からデータを受け取り、かつ／または、外部資源にデータを伝送する入出力インターフェース３４６を含む。入出力インターフェース３４６は、リンクを介してモデム３５４（例えば、標準モデム、ケーブルモデム、または「ＤＳＬ」（デジタル加入者回線）モデム）に結合され、このモデム３５４を介してコンピュータシステム３２０は外部資源との間でデータを送受信する。図３に示されているように、入出力インターフェース３４６およびモデム３５４は、リンク３５２を介したリモートコンピュータシステム３９３とのデータの交換を容易にする。リンク３５２はネットワークの一部を表し、リモートコンピュータシステム３９３は、そのネットワークのノードを表す。
【００８５】
図３は本発明の適切な動作環境を表すが、本発明の原理は、必要に応じて適切な変更を加えて、本発明の原理を実装することがきるどんなシステムにも利用することができる。図３に示した環境は、例示的なものにすぎず、決して、本発明の原理を実装することができる多種多様な環境の小部分を表すものでもない。
【００８６】
本発明によれば、アプリケーション、テレメトリインターフェース、テレメトリ構成要素、テレメトリサービス、およびバックエンド構成要素、並びに、テレメトリデータ、テレメトリメッセージ、ターゲットとされるメッセージ、および受信確認通知を含めた関連データは、コンピュータシステム３２０に関連したコンピュータ読取り可能媒体のどれにも記憶し、それらのどれからもアクセスすることができる。例えば、そのようなモジュールの部分部分、および関連したプログラムデータの部分部分を、システムメモリ３２２に記憶するために、オペレーティングシステム３３５、アプリケーションプログラム３３６、プログラムモジュール３３７、および／またはプログラムデータ３３８に含めることができる。
【００８７】
例えば、磁気ハードディスク３３９などの大容量記憶装置がコンピュータシステム３２０に結合されている場合、そのようなモジュールおよび関連したプログラムデータを、その大容量記憶装置に記憶することもできる。ネットワーク接続環境では、コンピュータシステム３２０またはその部分部分に関連して示したプログラムモジュールを、リモートコンピュータシステム３８３および／またはリモートコンピュータシステム３９３に関連したシステムメモリおよび／または大容量記憶装置などのリモートメモリ記憶装置に記憶することができる。そのようなモジュールの実行は、前述したような分散環境で行うこともできる。
【００８８】
本発明は、本発明の趣旨または本質的特徴から逸脱することなく、その他の具体的な形で実施することもできる。ここで説明した実施形態は、あらゆる点で例示的なものにすぎず、限定的ではないと看做すべきである。したがって、本発明の範囲は、上記の記述によってではなく、特許請求の範囲によって示される。本特許請求の範囲の同等物の意味および範囲に含まれる変更はすべて、本特許請求の範囲に包含されるものである。
【図面の簡単な説明】
【００８９】
【図１】共通のインターフェースを用いたテレメトリデータの一般的な収集および送達を容易にするコンピュータアーキテクチャの例を示す図である。
【図２】共通のインターフェースを用いたテレメトリデータの一般的な収集および送達の方法の例示的なフローチャートである。
【図３】本発明の原理のための適切な動作環境を示す図である。
【符号の説明】
【００９０】
１０１  コンピュータシステム
１０２，１０３，１０４  アプリケーション
１１２，１１３，１１４，１２１  テレメトリインターフェース
１１６  テレメトリデータ
１２２  テレメトリ構成要素
１２３  テレメトリデータベース
１２４，１２６，１２７，１３１  コンピュータシステム
１２８，１３２  テレメトリサービス
１３３  テレメトリコンシューマ登録データベース
１３４，１３６，１３７  バックエンド構成要素
１４１，１４３  ストリーム
１５１，１５３，１５６  テレメトリメッセージ
【図１】
2006252561.tif 000007
【図２】
2006252561.tif 000008
【図３】
2006252561.tif 000009