(57)【要約】      （修正有）【課題】高速度でデータを電子的にルーティングするためのシステム及び方法を提供する。【解決手段】データハブ１０６は、データソース（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）から電子通信を受け取るインターフェースモジュール１１０を備える。この電子通信には、所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）に関連付けられた宛先識別子と、データソースに関連付けられたソース識別子と、コマンドに関連付けられたコマンド識別子と、コマンドに関連付けられたデータを含むペイロードとが含まれる。データハブ１０６は更に、宛先識別子に基づいて所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）を決定し、所望の宛先にルーティングするルーティングモジュール１１６を備える。【選択図】図１
2010124465.tif 000002
【特許請求の範囲】
【請求項１】
データを電子的にルーティングするためのデータハブ（１０６）であって、前記データハブ（１０６）が、
データソース（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）から電子通信（３００）を受信するように動作可能なインターフェースモジュール（１１０）を備え、前記電子通信（３００）が、
前記通信（３００）用の所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）に関連付けられた宛先識別子（３０２）と、
前記通信（３００）に含まれるコマンド（３０８）に関連付けられたコマンド識別子（３０６）と、
前記コマンド（３０８）に関連付けられたデータ（３１０）を含むペイロードと、  
（ｉ）少なくとも部分的に前記宛先識別子（３０２）に基づいて前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）を決定し、（ｉｉ）前記電子通信（３００）を前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）にルーティングするように動作可能なルーティングモジュール（１１６）と
を備えるデータハブ。
【請求項２】
前記コマンド（３０８）は、前記データハブ（１０６）に関連付けられたコマンドセットに含まれる複数のコマンドの１つである、請求項１に記載のデータハブ（１０６）。
【請求項３】
前記コマンドセットに関連付けられた情報は、前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）に関連付けられた宛先インターフェースモジュール（１１２ａ〜ｎ、１１４ａ〜ｎ）によってアクセス可能な少なくとも１つの記憶域に記憶され、前記宛先インターフェースモジュール（１１２ａ〜ｎ、１１４ａ〜ｎ）は前記コマンド（３０８）を識別するために前記少なくとも１つの記憶域にアクセスするように動作可能である、請求項２に記載のデータハブ（１０６）。
【請求項４】
前記ルーティングモジュール（１１６）は、（ｉ）複数の宛先に関連付けられたルーティングテーブル（２００）にアクセスし、（ｉｉ）前記受信された宛先識別子（３０２）と、前記ルーティングテーブル（２００）に含まれる複数の記憶された宛先識別子とを比較し、（ｉｉｉ）前記受信された宛先識別子（３０２）と、前記ルーティングテーブル（２００）に含まれる前記記憶された複数の宛先に識別子（３０２）の１つとの適合を識別することによって、前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）を決定するように動作可能である、請求項１乃至３のいずれか１項に記載のデータハブ（１０６）
【請求項５】
前記データソース（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）は１つ又は複数のデータハブプラグイン（１０４ａ〜ｎ、１２２、１２４）を備える、請求項１乃至４のいずれか１項に記載のデータハブ（１０６）。
【請求項６】
前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）は、コンピュータ（１０８）で実行されるクライアントアプリケーション、前記コンピュータ（１０８）に関連付けられたデータ記憶アプリケーション、又は前記コンピュータ（１０８）に関連付けられたデータ収集ハードウエアへのインターフェースの１つを含む、請求項１乃至５のいずれか１項に記載のデータハブ（１０６）。
【請求項７】
前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）は、コンピュータ（１０８）とは遠隔位置にあり、
前記データハブ（１０６）は更に、前記電子通信（３００）の電子ルーティングを促進するため、前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ）に関連付けられた遠隔データハブ（１３０）と通信するように動作可能な、請求項１乃至６のいずれか１項に記載のデータハブ（１０６）。
【請求項８】
前記ルーティングモジュール（１１６）による前記電子通信（３００）の前記ルーティングは、前記データソース（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）と前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）との間の逐次ルーティングである、請求項１乃至７のいずれか１項に記載のデータハブ（１０６）。
【請求項９】
前記コマンド（３０８）に関連付けられた前記データ（３１０）はデータオブジェクトを含み、前記データオブジェクトは、
前記データオブジェクトに含まれるデータ値（５１０）に関連するそれぞれのデータタイプを定義する複数の整数（５０５）を含む第１のデータ配列と、
前記データ値（５１０）を含む第２のデータ配列とを含む、請求項１乃至８のいずれか１項に記載のデータハブ（１０６）。
【請求項１０】
前記データオブジェクトは、異なる複数のデータタイプの格納を促進する汎用データ構造（５００）を含む、請求項９に記載のデータハブ（１０６）。
【請求項１１】
データを電子的にルーティングする方法（４００）であって、前記方法（４００）は、
データソース（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）から電子通信（３００）を受信するステップ（４０５）を含み、前記電子通信（３００）が、
前記通信（３００）用の所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）に関連付けられた宛先識別子（３０２）と、
前記通信（３００）に含まれるコマンド（３０８）に関連付けられたコマンド識別子と、
前記コマンド（３０８）に関連付けられたデータ（３１０）を含むペイロードと、を含み、
且つ、少なくとも部分的に前記宛先識別子（３０２）に基づいて前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）を決定するステップ（４１０）と、
前記電子通信（３００）を前記所望の宛先にルーティングするステップ（４２０）とを含む方法。
【請求項１２】
前記コマンド（３０８）は、前記電子通信の前記ルーティング（４２０）を促進するソフトウエアモジュール（１０６）に関連付けられたコマンドセットに含まれる複数のコマンドの１つである、請求項１１に記載の方法（４００）。
【請求項１３】
前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）に関連付けられた宛先インターフェースモジュール（１１２ａ〜ｎ、１１４ａ〜ｎ）によってアクセス可能な少なくとも１つの記憶域内のコマンドセットに関連付けられた情報を記憶するステップと、
前記コマンド（３０８）を識別するために、前記宛先インターフェースモジュール（１１２ａ〜ｎ、１１４ａ〜ｎ）によって前記少なくとも１つの記憶域にアクセスするステップとを含む、請求項１２に記載の方法（４００）。
【請求項１４】
前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）を決定するステップは、
複数の宛先に関連付けられたルーティングテーブル（２００）にアクセスするステップと、
前記受信された宛先識別子（３０２）と、前記ルーティングテーブル（２００）に含まれる複数の記憶された宛先識別子とを比較するステップと、
前記受信された宛先識別子（３０２）と、前記ルーティングテーブル（２００）に含まれる前記記憶された複数の宛先に識別子（３０２）の１つとの適合を識別することによって、前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）を決定するステップとを含む、請求項１１乃至１３のいずれか１項に記載の方法（４００）。
【請求項１５】
前記データソース（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）は１つ又は複数のデータハブプラグイン（１０４ａ〜ｎ、１２２、１２４）を備える、請求項１１に記載の方法（４００）。
【請求項１６】
前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）は、コンピュータ（１０８）で実行されるクライアントアプリケーション、前記コンピュータ（１０８）に関連するデータ記憶アプリケーション、又は前記コンピュータ（１０８）に関連するデータ収集ハードウエアへのインターフェースの１つを含む、請求項１１乃至１５のいずれか１項に記載の方法（４００）。
【請求項１７】
前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）は、コンピュータ（１０８）とは遠隔位置にあり、
更に、前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）への前記電子通信（３００）の電子ルーティング（４２０）を促進するため、前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ）に関連付けられた遠隔データハブ（１３０）と通信するステップを含む、請求項１１乃至１６のいずれか１項に記載の方法（４００）。
【請求項１８】
前記電子通信（３００）の前記ルーティング（４２０）は、前記データソース（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）と前記所望の宛先（１０２ａ〜ｎ、１０４ａ〜ｎ、１２２、１２４）との間の逐次ルーティングを促進する、請求項１１乃至１７のいずれか１項に記載の方法（４００）。
【請求項１９】
前記コマンド（３０８）に関連付けられた前記データ（３１０）はデータオブジェクトを含み、前記データオブジェクトは、
前記データオブジェクトに含まれるデータ値（５１０）に関連付けられたそれぞれのデータタイプを定義する複数の整数（５０５）を含む第１のデータ配列と、
前記データ値（５１０）を含む第２のデータ配列とを含む、請求項１１乃至１８のいずれか１項に記載の方法（４００）。
【請求項２０】
前記データオブジェクトは、異なる複数のデータタイプの格納を促進する汎用データ構造（５００）を含む、請求項１９に記載の方法（４００）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してデータ通信に関し、特に、データを電子的にルーティングするシステム及び方法に関する。
【背景技術】
【０００２】
データ通信ネットワークは、異なるデバイスとソフトウエアコンポーネントとの間の高速通信を必要とする用途において、費用効果の高い伝送媒体である。従来のデータ通信ネットワークの基本的機能は、デバイス又はソフトウエアを通信ネットワークに接続することによって様々なデバイス又はソフトウエアコンポーネント間の通信を容易にすることである。
【０００３】
典型的なコンピュータシステムでは、コンピュータシステム内のコンポーネントは通常は密結合されている。従って、これらのコンポーネントのいずれかのどのような変更（例えば交換、追加又は除去）もコンピュータシステム内のその他のコンポーネントに影響（例えばそれらの間の通信の中断）を及ぼすことがある。従って、既存の通信機構は効率的でないことがある。
【０００４】
分散型コンポーネントオブジェクトモデル（ＤＣＯＭ）等のテクノロジーにより、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、又はインターネット等を介して接続できる異なるコンピュータシステムのオブジェクトの間での通信をサポートするためのコンポーネントオブジェクトモデル（ＣＯＭ）が得られる。従って、オブジェクト間の通信を可能にするようにファイヤーウォール及び／又はポートを構成する必要がある。更に、ＤＣＯＭを利用する通信の場合のコードは通常は修正不能である。加えて、デバイスは独自のインターフェースを有していることがあり、従ってデバイスとの通信を再利用できない。更に、デバイスのハードウエアの進展に伴い、これらのデバイスと通信するには新たなプロトコルが必要になることがある。
【０００５】
サービス指向アーキテクチャ（ＳＯＡ）及びエンタープライスサービスバス（ＥＳＢ）等のソフトウエアアーキテクチャは、例えばユニバーサルシリアルバス（ＵＳＢ）等の通信バスのソフトウエアバージョンとして動作する。ＳＯＡは、ビジネスプロセス及びユーザーの要求をサポートするために疎結合サービスを利用するアーキテクチャである。同様に、ＥＳＢは、ソフトウエアアーキテクチャの構成要素のことであり、イベントドリブン及び標準ベースのメッセージングエンジン（すなわち通信バス）を介して複雑なアーキテクチャ向けの基本サービスを提供する。しかし、これらのアーキテクチャはデータ終端の情報を有していない。これらのアーキテクチャは、バスにプラグ接続するコンポーネントとして機能し、そのアーキテクチャにとって重要なメッセージを受け取るだけである。その上、これらのアーキテクチャは、受信することが想定されていない宛先（１つ又は複数）にデータを送信することがある。
【０００６】
更に、１つ又は複数のデータネットワークにおいて、ハードウエアデバイスは異なる通信インターフェースを有しているので、関連付けられた全ての異なるインターフェースの情報を有している必要がある。更に、ハードウエアデバイスが異なると、異なる言語又はプロトコルで解釈又は通信が行われることがある。例えば、１つのハードウエアデバイスはＴＣＰ／ＩＰプロトコルで通信し、別のハードウエアデバイスはブルートゥースを介して通信することがある等々である。その上、データソースから、異なるタイプのデータが、異なるタイプの宛先に送信されることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従って、比較的高速度でデータを電子的にルーティングするシステム及び方法が求められている。加えて、データの電子ルーティング中にデータ終端情報を提供し、異なるハードウエアデバイス及び／又はソフトウエアコンポーネント間で、様々な言語との互換性の問題を解決するシステム及び方法が求められている。
【課題を解決するための手段】
【０００８】
本発明の一実施形態において、コンピュータ内で、又は、異なるコンピュータ間でデータを電子的にルーティングするためのデータハブを開示する。データハブは、データソースから電子通信（電子コミュニケーション）を受け取るインターフェースモジュールを含んでいる。電子通信は、通信の所望の宛先に関連付けられた宛先識別子、通信に含まれるコマンドに関連付けられたコマンド識別子、及びコマンドに関連付けられたデータを含むペイロードを含んでいてもよい。更に、データハブは、少なくとも部分的に宛先識別子に基づいて所望の宛先を決定するルーティングモジュールを含んでいてもよい。
【０００９】
ルーティングモジュールは更に、電子通信を所望の宛先にルーティングする。
【００１０】
本発明の別の実施形態において、コンピュータ内で、又は、異なるコンピュータ間でデータを電子的にルーティングする方法を開示する。この方法は、データソースから電子通信を受け取るステップを含んでいる。電子通信は、通信の所望の宛先に関連付けられた宛先識別子、通信に含まれるコマンドに関連付けられたコマンド識別子、及びコマンドに関連付けられたデータを含むペイロードを含んでいてもよい。この方法は更に、少なくとも部分的に宛先識別子に基づいて所望の宛先を決定するステップと、電子通信を所望の宛先にルーティングするステップを含んでいてもよい。
【００１１】
本発明のその他の実施形態、態様及び特徴は、当業者には以下の詳細な説明、添付図面及び添付の特許請求の範囲から明らかになろう。
【００１２】
以上、本発明を大まかに説明してきたが、次に添付図面について説明する。なお、これらの図面は必ずしも縮尺通りではない。
【図面の簡単な説明】
【００１３】
【図１】本発明の例示的実施形態によるデータハブシステムの一例のブロック図である。
【図２】本発明の様々な実施形態によるデータハブが利用できるルーティングテーブルの一例を示す図である。
【図３】本発明の様々な実施形態による、データハブを通して通信され得るトランスポートパケットの一例を示す図である。
【図４】本発明の例示的実施形態による、データハブを通してデータをルーティングするための方法の一例を示すフローチャートである。
【図５】本発明の様々な実施形態による、データハブを通して通信し得る汎用データ構造の一例を示す図である。
【図６】本発明の例示的実施形態による、汎用データ構造を形成する方法の一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
これより、添付図面を参照しながら、本発明の例示的な実施形態を詳細に説明するが、本発明の実施形態はこれらに限られない。本発明は、法的要件を満たしながら、様々な態様において実施可能であるので、本明細書に記載の実施形態に限定されない。なお、添付図面において、同様の構成要素には同様の参照符号が付与されている。
【００１５】
コンピュータ内でデータを電子的にルーティングするための方法及びシステムを開示する。このシステムは、高速度でデータを通信するためのデータハブを含んでいる。データハブは、データソースから電子通信を受信するインターフェースモジュールを含んでいる。本発明の一実施形態において、電子通信は通信の所望の宛先に関連付けられた宛先識別子、通信に含まれるコマンドに関連付けられたコマンド識別子、及びコマンドに関連付けられたデータを含むペイロードを含んでいてもよい。本発明のその他様々な実施形態において、データソースは１つ又は複数のデータハブプラグイン（ＤＨＰ）又はクライアントでよく、所望の宛先は１つ又は複数のデータハブプラグイン（ＤＨＰ）及び／又はクライアントでよい。更に、データハブは、宛先識別子に基づいて所望の宛先を決定し、電子通信を所望の宛先にルーティングするルーティングモジュールを含んでいてもよい。
【００１６】
図１は、本発明の例示的実施形態によるデータハブシステム１００の一実施例のブロック図である。図１は、クライアント１０２ａ〜ｎ等の任意の数のクライアント及び／又はＤＨＰ１０４ａ〜ｎ等の任意の数のＤＨＰの間でのデータハブ１０６を介したデータ通信用のソフトウエアアーキテクチャの実施例を示す。説明の便宜上、クライアント１０２ａ〜ｎを集約的にモジュールと称することがある。本発明による態様のソフトウエアアーキテクチャにより、データを比較的高速で交換又は通信可能にするプロトコルに基づく汎用コマンドセットが得られる。比較的高速でデータ通信を行えるよう、ソフトウエアアーキテクチャはポイントツーポイントアーキテクチャでよく、すなわち、データハブ１０６は、ソースからのデータを１つ又は複数の所望の宛先に逐次的に送ってもよい。従って、データハブシステム１００内のデータを得ることが想定されていないモジュールには影響がない。データハブ１０６はコンピュータシステム１０８に統合され、又はその他の方法でこれと通信するソフトウエアモジュールでよく、データハブ１０６は、コンピュータシステム１０８内の異なるコンポーネント（又はモジュール）間の通信又はデータ伝送を容易にすることによって、コンピュータシステム１０８用のルータとしての役割を果たすことができる。コンピュータシステム１０８の様々なコンポーネント又はモジュールはソフトウエア及び／又はハードウエアのコンポーネント又はモジュールを含んでいてもよい。
【００１７】
更に、本発明の態様として、ＤＨＰ１０４ａ〜ｎはコンピュータシステム１０８に関連付けられた疎結合プラグインモジュールであってもよい。これらのモジュールの疎結合によって、データバスシステム１００内の既存のモジュールに影響を及ぼさずにプラグインモジュールを追加、交換及び／又は除去し易くなる。本発明の一実施形態において、ＤＨＰ１０４ａ〜ｎ等の各ＤＨＰは、データハブ１０６を介したＤＨＰ１０４及び／又はクライアント１０２間の様々な通信で受信され且つ／又は送信されるコマンドの処理を容易にするプロセス、プログラム、記憶域、（例えばハードウエアデバイスへの）メモリデバイスインターフェースであってよい。更に、クライアントはデータの収集及び／又はデータのデータ処理を容易にするコンピュータシステム内のソフトウエアモジュールであってもよい。例えば、クライアントは、コンピュータシステム１０８のユーザーが設定値を設定し、且つ／又はデータをグラフィック表現で表示できるようにするグラフィカルユーザーインターフェース（ＧＵＩ）を含んでいてもよい。別の実施形態として、クライアントはカーネルプロセス、ユーザーアプリケーション等のコンピュータシステム１０８で実行され、様々なデータを処理するソフトウエアアプリケーションを含んでいてもよい。
【００１８】
本発明の態様において、ＤＨＰ１０４ａ〜ｎの少なくとも１つ、又はクライアント１０２ａ〜ｎの１つは、データはａ〜ｎブ１０６から宛先にルーティングされるコマンド及び／又はデータのソースとしての機能を果たしてもよい。同様に、クライアント１０２ａ〜ｎ及び／又はＤＨＰａ〜ｎはルーティングされるコマンド及び／又はデータの所望の宛先としての機能を果たしてもよい。説明の便宜上、「データソース」という用語は、データハブシステム１００内の別のモジュール又はコンポーネントであってよい１つ又は複数の所望の宛先にデータコマンド又は要求を送信するモジュール又はコンポーネントのことを意味する。本発明の例示的実施形態では、クライアント１０２ａ等のクライアントはデータ要求を宛先としてＤＨＰ１０４ａ等のＤＨＰに送信してもよい。ＤＨＰ１０４ａｇａデータ要求を処理し、要求されたデータに応答してもよい。本発明の態様によれば、宛先はコンピュータシステム１０８で実行されるクライアントアプリケーション（例えばグラフィカルユーザーインターフェース（ＧＵＩ）の設定、データの視覚化ＧＵＩ等）、コンピュータシステム１０８でのデータ記憶アプリケーション（例えばデータベース又はその他のソフトウエアベースのデータ記憶アプリケーション）、データ記憶デバイスへのインターフェース（例えばハードドライブ、ディスクドライブ、又はその他の記憶デバイス）、又はコンピュータシステム１０８でのデータ収集ハードウエアのいずれかでよい。加えて、データ要求はデータハブ１０６を介してルーティングされるコマンドとして記載されているが、本発明の様々な実施形態で必要な異なる多様なコマンドをデータハブ１０によってルーティングしてもよい。
【００１９】
本発明の態様において、データハブ１０６は、データソース（例えばクライアント１０２ａ又はＤＨＰ１１２ａ〜ｎ）からのデータ要求等の電子通信を受信するインターフェースとして機能するインターフェースモジュール１１０を含んでいてもよい。加えて、様々なクライアント１０２ａ〜１０２ｎは各々、クライアントインターフェース１１２ａ〜ｎを含んでいてもよい。クライアントインターフェース１１２ａ〜ｎは、データハブ１０６への、又データハブ１０６からに電子通信の送受信を容易にするインターフェースとして動作してもよい。同様に、様々なＤＨＰ１０４ａ〜ｎは各々、それぞれのＤＨＰインターフェース１１４ａ〜ｎを含んでいてもよい。これらのＤＨＰインターフェース１１４ａ〜ｎは、データハブ１０６への、又データハブ１０６からに電子通信の送受信を容易にするインターフェースとして動作してもよい。本発明の様々な実施形態で必要な場合は、クライアントインターフェース１１２ａ〜ｎ及び／又はＤＨＰインターフェース１１４ａ〜ｎはデータハブ１０６からデータ要求（１つ又は複数）及び／又はその他のコマンドを受信してもよい。加えて、本発明の様々な実施形態で必要な場合は、クライアントインターフェース１１４ａ〜ｎ及び／又はＤＨＰインターフェース１１４ａ〜ｎは受信したデータハブ１０６データ要求（１つ又は複数）及び／又はその他のコマンドに対する応答をデータハブ１０６に通信してもよい。その上、本発明の様々な実施形態では、任意の数のクライアントインターフェース１１２ａ〜ｎ、及び／又はＤＨＰインターフェース１１４ａ〜ｎは、所望の１つ又は複数の宛先に関連付けられた宛先インターフェースであってよい。
【００２０】
データハブシステム１００は更に、データハブ１０６のコンポーネントとして、又はその他の態様でデータハブ１０６と通信するルーティングモジュール１１６を含んでいてもよい。本発明の態様によれば、ルーティングモジュール１１６は通信の所望の１つ又は複数の宛先を決定することができる。或る実施形態では、ルーティングモジュール１１６に関連付けられた１つ又は複数の適宜のルーティングテーブルを使用することによって１つ又は複数の宛先の決定が容易になる。１つ又は複数の宛先の決定の後、ルーティングモジュール１１０はデータハブ１０６のインターフェースモジュール１１０で受信された電子通信を１つ又は複数の所望の宛先にルーティングすることができる。本発明の一実施形態では、クライアント１０２ｂ等のクライアントは、ＤＨＰ１０４ｂ等のＤＨＰ向けのインターフェースモジュール１１０に要求を送信することができる。ルーティングモジュール１１６はインターフェースモジュール１１０を宛先ＤＨＰ１０４ｂにルーティングすることができる。本発明の態様によれば、ルーティングモジュール１１６は、データソースから受信した電子通信を逐次的に、又はポイントツーポイント方式で所望の宛先にルーティングすることができる。
【００２１】
上記のデータ通信は単一のコンピュータ（すなわちコンピュータシステム１０８）内でのデータルーティングについて記載したものである。しかし、データルーティングは単一のコンピュータに限定されるものではなく、複数のコンピュータ及び／又はコンピュータをベースにしたデバイス又はシステムに拡張してもよい。データハブ１０６の設計とアーキテクチャはこれを様々なコンピュータ間での遠隔通信用に使用できるフレキシブルなモジュールにする。例えば、図１に示すように、データハブ１０６は、１つ又は複数の適宜のネットワーク１２０を介してコンピュータシステム１０８と通信する第２のコンピュータシステム１１８を含んでいてもよい。第２のコンピュータシステム１１８はコンピュータシステム１０８から離れた位置にあってもよく、従ってコンピュータシステム１１８を遠隔コンピュータシステム１１８と称することがある。図１には単一の遠隔コンピュータ１１８だけが示されているが、本発明の様々な実施形態では必要に応じて任意の数の遠隔コンピュータ１１８を使用してもよい。加えて、１つ又は複数の適宜のネットワーク１２０は、ローカルエリアネットワーク、ワイドエリアネットワーク等の２つ以上のコンピュータシステムを接続するどのような有線及び／又は無線ネットワークでもよい。コンピュータシステム１０８と遠隔コンピュータシステム１１８との間の通信は、例えば伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）等、本発明の様々な実施形態で必要ないずれかの適宜の通信プロトコルを介して行ってもよい。
【００２２】
コンピュータシステム１０８と遠隔コンピュータシステム１１８との通信を容易にするため、コンピュータシステム１０８と遠隔コンピュータシステム１１８との間で遠隔通信ＤＨＰを使用してもよい。例えば、図１に示すように、コンピュータシステム１０８に第１の遠隔通信ＤＨＰ１２２を含めてもよく、遠隔コンピュータシステム１１８内で第２の遠隔通信ＤＨＰ１２４を使用してもよい。第１の遠隔通信ＤＨＰ１２２は、１つ又は複数の適宜のネットワークインターフェースデバイス１２６を介してデータハブ１０６及び１つ又は複数のネットワークに接続されるプラグインモジュールであってよい。１つ又は複数の適宜のネットワークインターフェースデバイスは各々、１つ又は複数のネットワーク１２０の少なくとも１つを介してデータを送受信することができる。第１の遠隔通信ＤＨＰ１２２は、遠隔コンピュータシステム１１８に、又遠隔コンピュータシステム１１８からデータを受信するように動作可能なインターフェース（図１には図示せず）を含んでいてもよい。同様に、第２の遠隔通信ＤＨＰ１２４は、コンピュータシステム１０８への、又コンピュータシステム１０８からのデータを受信するように動作可能なインターフェース（図１には図示せず）を含んでいてもよい。第１の遠隔通信ＤＨＰ１２２（又は第２の遠隔通信ＤＨＰ１２４）及びそのインターフェースの機能は、ＤＨＰ１０４ａ〜ｎ及びそのそれぞれのインターフェース１１４ａ〜ｎの機能と同じでよい。
【００２３】
更に、図１に示すように、第２の遠隔通信ＤＨＰ１２４は、１つ又は複数の適宜のネットワーク１２０を介してデータを送受信することができる遠隔ネットワークインターフェースデバイス１２８との通信状態にあってもよい。本発明の或る実施形態では、ネットワークインターフェースデバイス１２６及び遠隔ネットワークインターフェースデバイス１２８は、関連するソフトウエアを有するハードウエアコンポーネントであってもよい。ネットワークインターフェースデバイス１２６（又はネットワークインターフェースデバイス１２８）の一例はイーサーネットカードである。
【００２４】
本発明の実施形態は、各コンピュータシステム１０８及び１１８内に少なくとも１つのデータハブを含んでいてもよい。例えば、図１に示すように、コンピュータシステム１０８はデータハブ１０６を含んでいてもよく、遠隔コンピュータシステム１１８は、第１の遠隔通信ＤＨＰ１２２を介してデータをコンピュータシステム１０８から送受信するために第２の遠隔通信システム１１８とインターフェースする遠隔データハブ１３０を含んでいてもよい。本発明の様々な実施形態によれば、各ＤＨＰはこれに対応するデータハブを登録することができる。更に、データハブ１０６等のデータハブは、データハブ１０６との直接的な通信、又は遠隔データハブ１３０を介したデータハブ１０６との間接的な通信でクライアント及び／又はＤＨＰのクライアント及び／又はＤＨＰアドレスにアクセスすることができる。一例として、第１の遠隔通信ＤＨＰ１２２は、遠隔データハブ１３０と通信するＤＨＰを識別するために第２の遠隔通信ＤＨＰ１２４と通信することができる。次いでデータハブ１０６及び／又は、第１の遠隔通信ＤＨＰ１２２が、識別されたＤＨＰに一意的なＤＨＰアドレスを割り当てることができ、一意的なＤＨＰアドレスを第２の遠隔通信ＤＨＰ１２４と遠隔データハブ１３０とに通信することができる。次いで遠隔コンピュータシステム１１８上の全てのＤＨＰアドレスを有する遠隔データハブ１３０を遠隔通信ＤＨＰ１２４に登録することができる。従って、遠隔データハブ１３０は、データハブ１０６自体によって、及びこれに接続されたいずれかのコンポーネントによって割り当てられる一意的な識別子を有し得る。本発明の例示的実施形態では、第２の遠隔通信ＤＨＰ１２４が第１の遠隔通信ＤＨＰ１２２からのメッセージを受信すると、第２の遠隔通信ＤＨＰ１２４及び／又は遠隔データハブ１３０は、どのコンピュータシステム（すなわち、この場合はコンピュータシステム１０８）と、どの遠隔通信ＤＨＰ（すなわち、この場合は第１の遠隔通信ＤＨＰ１２２）がこのメッセージを送信したのかを識別することができる。第２の遠隔通信ＤＨＰ１２４及び／又は遠隔データハブ１３０は次いでそのメッセージの１つ又は複数の必要な宛先を決定し、遠隔データハブ１３０はこのメッセージをルーティングすることができる。
【００２５】
遠隔通信ＤＨＰ１２２及び１２４は登録されたモジュールであるため、図１に示したソフトウエアアーキテクチャは遠隔位置にあるコンピュータシステム１０８と１１８との間で容易に安全な通信を行うことができる。従って、第１の遠隔通信ＤＨＰ１２２は、コンピュータシステム１０８内での調整の単一のポイントとして機能し、遠隔コンピュータシステム１１８との通信が容易になる。同様に、第２の遠隔通信ＤＨＰ１２４はコンピュータシステム１１８内での調整の単一のポイントとして機能し、コンピュータシステム１０８との通信が容易になる。本発明の例示的実施形態では、データハブ１０６（又は遠隔データハブ１３０）に接続されたどのＤＨＰ１０４ａ〜ｎ（又は遠隔通信ＤＨＰ１２２又は１２４）を交換し、又は除去してもよい。更に、本発明の一実施形態では、追加のＤＨＰ（１つ又は複数）をデータハブシステム１００に追加してもよい。
【００２６】
図２は、本発明の様々な実施形態によるデータハブが使用できるルーティングテーブル２００の一例を示す。ルーティングテーブル２００は、図１に示したデータハブ１０６等のデータハブに接続された様々なモジュールに関連する情報を含んでいてもよい。本発明の実施形態では、これらの様々なモジュールはデータハブ１０６を介してデータを交換することができる。例えば、図２に示すように、ルーティングテーブル２００は、全てがデータハブ１０６に接続されているモジュールＤＨＰ  Ａ、ＤＨＰ  Ｂ、クライアントＡ及びクライアントＢに関連する情報を含んでいてもよい。ルーティングテーブル２００は更に、これらの各モジュールのエンティティ識別子（ＩＤ）をも定義してもよい。本発明の一実施形態では、各モジュールにそれぞれの一意的なエンティティＩＤを備えてもよい。例えば、図２に示すように、モジュールＤＨＰ  Ａ、ＤＨＰ  Ｂ、クライアントＡ及びクライアントＢは一意的なエンティティＩＤ  ００１、００２、００３及び１０４をそれぞれ有している。本発明の例示的実施形態では、エンティティＩＤ  ００１、００２、００３及び００４は格納されたソース／宛先識別子であってもよい。
【００２７】
本発明の態様によれば、図１に示したルーティングモジュール１１６等のデータハブ１０６に関連付けられたルーティングモジュールは、ルーティングテーブル２００にアクセスすることによって（データソースから受信した）データ要求等のコマンドが送信される１つ又は複数の所望の宛先を決定することができる。本発明の実施形態では、データ要求は所望の宛先の一意的なＩＤである宛先識別子を含んでいてもよい。データソースからデータ要求を受信すると、データハブ１０６はデータ要求で受信された宛先識別子をルーティングテーブル２００に含まれる格納された宛先識別子と比較する。本発明の一実施形態では、ＤＨＰ  Ａ１０４ａ（データソース）は、宛先ＩＤが００３であるクライアントＡ１０２ａ（所望の宛先）に宛てたデータ要求をデータハブ１０６に送信することができる。その後、ルーティングモジュール１１６は、受信された宛先識別子（すなわち、この場合は００３）とルーティングテーブル２００に含まれる格納された宛先識別子とを比較することによって所望の宛先を決定することができる。本発明の態様によれば、双方が適合することが判明すると、適合した宛先識別子に関連付けられた宛先を所望の宛先であると決定することができる。従って、ルーティングモジュール１１６は、データ要求にあるコマンドを所望の宛先にルーティングすることができる。
【００２８】
上記の実施例は、クライアントを所望の宛先とし、ＤＨＰをデータソースとしているが、データハブシステム又は遠隔データハブシステムのソフトウエアコンポーネントのどのモジュールも、本発明の様々な実施形態において必要なデータソース又は所望の宛先となり得る。加えて、本発明の態様によれば、ルーティングテーブル２００はコンピュータシステム１０８内のモジュール用の、又はコンピュータ１０８とは遠隔位置にあるモジュール、例えば遠隔コンピュータ１１８に関連付けられたモジュール用の識別子を含んでいてもよい。これに伴い、宛先の位置にかかわらず、データソースと宛先との間の通信が容易になる。データソースが宛先を遠隔位置の宛先として識別する必要はない。宛先が一意的なＩＤによって識別されるものとすると、データハブ１０６はコマンドをルーティングする。従って、複数のプラットフォームにわたるコマンドのルーティングが容易になる。本発明の或る実施形態では、必要に応じて１つ以上のルーティングテーブルを使用してもよい。
【００２９】
図３は、本発明の様々な実施形態による図１に示したデータハブ１０６などのデータハブを介して通信できるトランスポートパケット３００の一実施例を示す。前述のように、データソースはコマンドをデータハブ１０６に送信することによってデータ要求等のコマンドを１つ又は複数の所望の宛先に通信することができる。本発明の様々な実施形態では、コマンドは図３に示したトランスポートパケット３００と同様のデータパケットを含んでいてもよい。トランスポートパケット３００は、トランスポートパケット３００が送信される１つ又は複数の宛先のそれぞれの一意的な識別子（ＩＤ）を表す１つ又は複数の宛先識別子、トランスポートパケット３００の送信元であるデータソースの一意的なＩＤを表すソース識別子３０４、トランスポートパケット３００内で送信され、実行されるコマンド３０８を識別するコマンド識別子（又はシーケンスＩＤ）、及びコマンド３０８に関連付けられたペイロード又はデータを含んでいてもよい。本発明の一実施形態によれば、データソースは一度に１つのコマンドを発することができる。
【００３０】
本発明の例示的実施形態では、図１に示したデータハブ１０６等のデータハブはデータソースからのトランスポートパケット３００を受信することができ、データハブ１０６は、トランスポートパケット３００内で受信された１つ又は複数の宛先識別子３０２を、図２に示したルーティングテーブル２００等の１つ又は複数のルーティングテーブル内に格納された宛先識別子と比較することによって、１つ又は複数の所望の宛先を決定することができる。格納された宛先識別子のリストで宛先識別子３０２の適合が判明した場合は、データハブ１０６は適合した宛先識別子３０２に関連付けられた宛先にトランスポートパケット３００をルーティングすることができる。
【００３１】
本発明の実施形態では、データハブ１０６は、ＤＨＰ又はクライアントから発信されたデータを均一なフォーマットにフォーマットするデータ標準化のコンセプトを用いてもよい。データの標準化はデータの冗長性を低減し、除去するために役立つ。本発明の態様によれば、データハブ１０６によってコマンドセットが定義され、サポートされてもよい。本発明の態様によるコマンドセットにより、データハブ１０６に接続されたＤＨＰ及び／又はクライアントの発見及び管理が容易になるコマンドが得られる。コマンドセットは、データ取得、データ送信及びデータの更新等を含むがこれらに限定されないコマンドのリスト又は一連のコマンドである。
【００３２】
本発明の態様によれば、データソースから所望の宛先へと（データハブ１０６を介して）電子通信で送られたコマンドは、データハブ１０６によって規定され、サポートされるコマンドの一部であってもよい。本発明の別の態様によれば、コマンドセットに関連付けられた情報は、所望の宛先に関連付けられた宛先インターフェースモジュールによってアクセス可能な１つ又は複数の記憶域に記憶されてもよい。本発明の例示的実施形態では、ＤＨＰ１０４ａ等のＤＨＰでのインターフェースは記憶域（１つ又は複数）にアクセスして、電子通信で送られるコマンドを識別することができる。更に、各ＤＨＰ及び／又はクライアントは、本発明の様々な実施形態により、１つ又は複数のコマンドセットをサポートすることができる。
【００３３】
コマンドセットを標準化すると、より標準化され予測可能なＤＨＰ及び／又はクライアント間のインタラクションが容易になる。従って、ポイントツーポイントデータを通信するデータハブ１０６は、インターフェースが標準化されているため、これらのソース（すなわちＤＨＰの）いずれかからデータを引き出し、これらと通信することができる。従来のシステムでは、コンピュータシステムの異なるハードウエアデバイスは異なる通信インターフェースを有している場合が多い。本発明の態様によれば、異なる通信インターフェースを有するハードウエアデバイス及び／又はソフトウエアコンポーネントの全てからのデータを標準化するようにコマンドセットを作成することができる。コマンドセットは、コンピュータシステム内のコンポーネントが異なるインターフェースを有するコンポーネントと通信できるようにデータを標準化する。更に、コマンドセットの作成によって、データハブを介したデータソースと宛先との高速のデータルーティングが可能になる。
【００３４】
本発明により、様々な実施形態において、様々なＤＨＰ及び／又はクライアント間のプロトコルに互換性が生じる。ＤＨＰ及び／又はクライアントは典型的には異なる通信プロトコルを使用するが、図１に関連して前述したようにデータハブシステム１００を使用して様々なＤＨＰ及び／又はクライアント間の通信を促進することができる。ＤＨＰインターフェース、クライアントインターフェース及びデータハブはコマンドの標準化を促進することができ、従って、典型的には異なるプロトコルが様々なデバイス及び／又はソフトウエアコンポーネントが使用される場合でも、様々なデバイス及び／又はソフトウエアコンポーネント間の通信が容易になる。
【００３５】
データハブ１０６等のデータハブを介してルーティングされるデータ通信にとって必要な異なるタイプのデータソース（例えばＤＨＰ）を使用してもよい。これらの各々のデータソースは、データ通信を促進するため相互に組み合わせられた様々な機能性を有することができる。本発明の実施形態では、使用される通信層は、データ通信が行われるシステム内にあるモジュールに影響を及ぼさずにデータソースを交換できるように抽象化されてもよい。本発明の態様によれば、データハブを介してデータソースから所望の宛先に送信されたデータパケットは、コマンドセットデータ及び汎用データを含むがそれらに限定されない情報を含んでいてもよい。コマンドセット及び汎用データをデータパケットへと組み立て、あるポイントから別のポイントにデータを移動する方法を提供するためにトランスポート機構を使用してもよい。本発明の実施形態によれば、各クライアントとデータハブ１０６との間、及び各ＤＨＰとデータハブ１０６との間に通信リンクが存在してもよい。その場合、データハブ１０６があるポイントから別のポイントへのデータのルーティング及び／又は伝送を管理することができる。
【００３６】
本発明の例示的実施形態では、ＤＨＰ１０４ａ等のＤＨＰは接続コマンド等のコマンドをデータハブ１０６に送ることができる。本発明の例示的実施形態によれば、接続コマンドは、ルーティングテーブル２００へのキーとして無作為に作成された汎用一意識別子（ＵＵＩＤ）を用いてデータハブ１０６との接続を確立する。本発明の例示的実施形態では、クライアント１０２ａ等のクライアントは無作為に作成されたＵＵＩＤを有する接続コマンドをデータハブ１０６に送ることができる。本発明の別の実施形態では、接続コマンドはルーティングテーブル２００へのキーとして提供されたＵＵＩＤを用いてデータハブ１０６との接続を確立する。本発明の例示的実施形態では、クライアント１０２ａ等のクライアント及び／又はＤＨＰ１０４ａ等のＤＨＰは、関連付けられた一意的なＩＤを有するデータハブ１０６を登録するように、提供されたＵＵＩＤを有する接続コマンドを送ることができる。本発明の更に別の実施形態によれば、接続コマンドはルーティングテーブル２００へのキーとしてモジュールのエンティティＩＤを使用してデータハブ１０６との接続を確立する。図２に関連して前述したように、エンティティＩＤは例えば格納されたソース／宛先識別子であってよく、例えば００１はクライアントＡの宛先ＩＤでよく、００２はＤＨＰ  ＡのソースＩＤでよく、以下同様である。本発明の例示的実施形態では、ＤＨＰ１０４ａ等のＤＨＰは、ＤＨＰ１０４のエンティティＩＤを有するデータハブ１０６を登録するようにエンティティＩＤを有する接続コマンドを送ることができる。本発明の実施形態では、エンティティＩＤはコマンドセット内に指定されてもよい。
【００３７】
更に、各々のコマンドごとにソースのＩＤが割り当てられ、宛先に送られる。本発明の態様によれば、データハブ１０６はデータハブ１０６で受信されたメッセージの１つ又は複数の宛先をチェックし、次いでデータハブ１０６は受信されたメッセージをルーティングすることができる。しかし、データハブ１０６はメッセージの発信元であるソース端をチェックする必要がないことがある。ＤＨＰ等の所望の宛先がデータハブ１０６からメッセージを受信した後で、受信されたメッセージに含まれるコマンドをチェックしてもよい。
【００３８】
本発明の実施形態では、コンピュータシステム１０８内の各々のＤＨＰ及び／又はクライアントによってコマンドセットのライブラリにアクセスされてもよい。このコマンドセットは様々なコマンドに関連付けられたコマンドセット実施情報を含んでいてもよい。これに関しては、クライアント及び／又はＤＨＰからのデータの送信及び／又は受信を促進するため、コマンドセットの仕様を設け、それに従うようにしてもよい。更に、本発明の一実施形態によれば、ＤＨＰがコンピュータシステムにプラグインされた際に全てのＤＨＰが適正に動作することを確実にするため、全てのＤＨＰを認証するための規則をデータハブに組み込んでもよい。本発明の例示的実施形態では、データハブ１０６とのデータ交換を開始する前に、ＤＨＰ１０４ｂ等のＤＨＰは一意的なＩＤをエンティティＩＤ「Ｘ」を用いてデータハブ１０６等のデータハブを登録してもよい。従って、データハブ１０６がエンティティＩＤ「Ｘ」からのデータ要求を受信すると、データハブ１０６は、データ要求の送信者がすでに登録されていることを認識し、ひいては送信者を認証する。
【００３９】
本発明の実施形態では、データ標準化の一部としてデータハブアーキテクチャはデータモデルを使用してもよく、これには実行され、ルーティングされ且つ／又は処理されることができる様々なコマンドに関連付けられた別個の情報が含まれる。コマンドセットは実行可能な動作を指定することができ、データモデルを利用してコマンドの処理、及び処理から戻されたデータに関連付けられたデータを記憶することができる。
【００４０】
更に、標準化の一部として、データハブに接続されたプロキシコンポーネントはデータソースと１つ又は複数の所望の宛先との間で交換されるデータのシリアル化及び／又は逆シリアル化を実行してもよい。シリアル化とはオブジェクトをバイトストリームへと変換することである。データハブを介してデータモデルを移動させるためにデータモデルをシリアル化してもよい。この点に関して、データハブはデータハブ、コマンド及びコマンドに関連付けられたペイロードを含むバイトストリームを通信パケットとしてルーティングしてもよい。シリアル化はプラットフォーム間の相互運用性をも促進し得る。例えば、データがＤＨＰからＣ＋＋フォーマットで発信され、．ＮＥＴクライアントにルーティングされてもよい。更に、各データモデルを用いてプロキシコンポーネントがデータをバイトストリームへと分解し、次いでそのストリームから逆シリアル化してもよい。
【００４１】
図４は本発明の例示的実施形態によるデータハブ１０６等のデータハブを介してデータをルーティングする例示的方法４００を示すフローチャートである。本発明の様々な実施形態によれば、データはデータハブを介して高速度でルーティングされる。
【００４２】
方法４００はブロック４０５で開始され、そこでデータハブ１０６は電子通信又はデータをデータソースから受信することができる。データソースはクライアント又はＤＨＰであってよい。本発明の実施形態によれば、データソースは１つ又は複数の所望の宛先からのデータ要求等のコマンドをデータハブ１０６に通信することができる。本発明の様々な実施形態によれば、コマンドはトランスポートパケット又はデータパケットに含まれていてもよい。図３に示したトランスポートパケット３００等のトランスポートパケットは、トランスポートパケットが送られる宛先の一意的なＩＤを表す宛先識別子、トランスポートパケットの送信元であるデータソースの一意的なＩＤを表すソース識別子、トランスポートパケット内で送信され、実行されるコマンドを記述するコマンド識別子（又はシーケンスＩＤ）、及びコマンドに関連付けられたペイロード又はデータを含んでいてもよい。本発明の一実施形態では、所望の宛先が複数ある場合は、これらの宛先に関連付けられた複数の宛先識別子が存在する。電子通信は単一のコンピュータ内で行われてもよく、遠隔位置にある複数のコンピュータ間で行われてもよい。
【００４３】
ブロック４０５の後にブロック４１０が続き、そこでデータハブ１０６はデータソースから受信された電子通信の１つ又は複数の宛先を決定することができる。データハブはデータハブに関連して格納された１つ又は複数のルーティングテーブルを使用して所望の宛先（１つ又は複数）を決定することができる。ルーティングテーブルは、データハブ１０６と通信するＤＨＰ及び／又はクライアント等のモジュールに関連する情報を含み、更にこれらの各モジュールに一意的なエンティティＩＤを含んでいてもよい。データソースから電子通信を受信すると、データハブ１０６は電子通信で受信された宛先識別子（１つ又は複数）をルーティングテーブルに格納された宛先識別子（すなわちエンティティＩＤ）と比較する。本発明の一実施形態では、ＤＨＰ  Ａ（データソース）は宛先ＩＤが００１であるクライアントＡにあてたデータ要求をデータハブ１０６に送ることができる。データハブは、受信された宛先識別子（すなわち、この場合は００１）とデータハブ１０６と通信するモジュールに関連付けられた格納された宛先識別子（例えば００１及び００２）とを比較することによって所望の宛先を決定することができる。
【００４４】
ブロック１０４の後に決定ブロック４１５が続き、そこでデータハブ１０６は、受信された電子通信の宛先ＩＤが１つ又は複数のルーティングテーブルに格納された宛先ＩＤの中にあるか否かをチェックすることができる。それによってデータハブは１つ又は複数の宛先モジュールを認証することができる。
【００４５】
受信された電子通信の宛先ＩＤがブロック４１５で１つ又は複数のルーティングテーブルに格納されている宛先ＩＤの中にあることが判明した場合は、動作はブロック４２０で継続される。ブロック４２０で、データハブ１０６は所望の宛先（１つ又は複数）を認証し、電子通信又は電子通信にあるコマンドを所望の宛先（１つ又は複数）にルーティングすることができる。本発明の態様によれば、データハブ１０６はデータソースから受信された電子通信を逐次的に所望の宛先（１つ又は複数）にルーティングすることができる。
【００４６】
あるいは、受信された電子通信の宛先ＩＤがブロック４１５で１つ又は複数のルーティングテーブルに格納されている宛先ＩＤの中にないことが判明した場合は、動作はブロック４２５で継続される。ブロック４２５で、データハブ１０６は、電子通信をルーティングできないことを示すエラーメッセージをデータソースに送信する。本発明の実施形態では、エラーメッセージは、（データソースによって）電子通信で指定された宛先ＩＤが正しくないことを示すことができる。本発明の例示的実施形態では、データソースはエラーメッセージの受信後に電子通信を再送信してもよい。本発明の一実施形態によれば、電子通信を再送信するプロセスは、電子通信のデータソースによって以前送信されたシーケンスＩＤと同じシーケンスＩＤを有する（データハブからの）応答コマンドをデータソースが受信するまで繰り返すことができる。
【００４７】
更に、宛先がデータハブ１０６からコマンドを受信すると、宛先はコマンドを処理することができる。本発明の例示的実施形態では、宛先はデータハブを介して応答コマンドをデータソースに返送することができる。この実施例では、シーケンスＩＤは、データハブ１０６によって宛先にルーティングされたコマンドの宛先によって受信されたシーケンスＩＤと同じである。例えば、本発明の一実施形態では、宛先はデータハブ１０６を介して同じ、又は異なるデータソースによってデータ要求を連続して３回受信することができる。この実施例では、シーケンスＩＤをこれらのデータ要求ごとに規定してもよい。従って、宛先は、応答コマンド内で指定されたシーケンスＩＤを有する各データ要求についてデータハブを介してデータソースに応答することができる。これらのシーケンスＩＤは、データハブからの３つのデータ要求中に宛先で受信されたシーケンスＩＤと同じでよい。
【００４８】
図４に示した方法の動作はブロック４２０又はブロック４２４の後で終了してもよい。
【００４９】
図４の方法４００に記載の動作は、必ずしも図４に記載の順序で実行される必要はなく、いずれかの適切な順序で実行されればよい。加えて、本発明の或る実施形態では、図４に記載の全ての要素又は動作よりも多い、又はそれよりも少ない要素又は動作を実行してもよい。
【００５０】
本発明の実施形態は、データハブ上に設定されたどのコマンドをも変更せずに、データハブを介したデータ通信を促進することができる。更に、データを拡張できるようにデータを通信してもよく、本発明の様々な実施形態で必要な異なるタイプのデータを通信してもよい。
【００５１】
本発明の様々な実施形態では、データハブ１０６を介して広範な異なるタイプのデータ及び／又はデータタイプの組み合わせを通信できる。本発明の例示的実施形態では、データソースと１つ又は複数の所望の宛先との間のデータの通信又はルーティングを促進するために汎用データ構造を利用してもよい。汎用データ構造は、含まれるデータの比較的高速度のルーティングを促進するように、任意の数のタイプのデータを汎用データ構造に含めることを促進する。図５は、本発明の様々な実施形態によりデータハブ１０６を介して通信できる汎用データ構造の一例を示す。本発明の態様によれば、電子通信としてデータソースから（データハブを介して）所望の宛先に送られるコマンドに関連付けられたデータは、データオブジェクトを含んでいてもよい。本発明の或る実施形態では、データオブジェクトは、必要に応じて任意の数のタイプのデータを格納する汎用データ構造５００でよい。汎用データ構造５００は、比較的高速での通信が容易になるようにデータを編成するデータモデルでよい。汎用データ構造５００は、汎用データ構造に含まれるデータタイプを識別するためにそれぞれのタイプのＩＤを規定する１つ又は複数の整数を含む第１の整数データ配列を含んでいてもよい。加えて、汎用データ構造５００は、データ自体を含む第２のデータ配列５１０を含んでいてもよい。本発明の態様によれば、データはデータ値の配列５１０でよい。本発明の態様によれば、本発明の様々な実施形態での必要に応じてどのタイプのデータを汎用データ構造５００に含めてもよい。データタイプの例には、整数、ブール値、浮動小数点数、ストリング等の標準的なデータタイプが含まれてもよい。データタイプの例には更に、ユーザー指定配列、ユーザー指定記録等のより複雑なデータタイプが含まれていてもよい。
【００５２】
例えば、図５に示すように、１つの汎用データ構造では、０４、４０、５５、８０、１２、２００８、４及び１７等のデータ値を、データハブ１０６を介してルーティングできる汎用データ構造５００のデータ配列５１０内のデータとして含めてもよい。更に、データ値は同じネーティブ型のものでも異なるネーティブ型のものでもよい。日、分、秒、ミリ秒、月、年、週、及び時に関連するデータパラメータの場合、パラメータに関連するデータ対応は、データ配列５１０内の対応する整数によって識別することができる。例えば、各々のデータタイプは整数でよい。この例では、整数データタイプに関連する整数値は、汎用データ構造５００のデータタイプ配列５０５に含まれよう。例えば、図５に示すように、データタイプ配列５０５は各データタイプについて「０１」の値を含み、「０１」は整数のデータタイプを表す。別の例では、汎用データ構造５００に別のデータタイプを含めてもよい。例えば、曜日のデータタイプはストリングデータタイプでよい（例えば「月曜」「火曜」、「水曜」等）。この例では、汎用データ構造５００のデータタイプ配列５１０は、曜日に関連するデータタイプ配列のセル又はブロック内のストリングデータタイプに関連する整数値を含んでいてもよい。例えば、ストリングデータタイプを表すために整数「３」を用いてもよく、曜日のパラメータをストリングとして識別するために整数「０３」をデータタイプ配列０に含めてもよい。前述のように、本発明の様々な実施形態での必要に応じてタイプのデータを汎用データ構造５００に含めてもよく、様々なデータタイプの各々をデータタイプに関連するそれぞれの整数値によって識別してもよい。加えて、本発明の様々な実施形態での必要に応じて、任意の数の数字をデータタイプ配列５０５に格納された整数に用いてもよい。
【００５３】
汎用データ構造５００内のデータは、例えばデータハブ１０６等のデータハブを介して様々なモジュール（例えばクライアント又はＤＨＰ）間で通信することができる。本発明の例示的実施形態では、汎用データ構造５００は構成情報、履歴データ、現在のデータ、アラーム状態、要求パラメータ等を送ることができる。汎用データ構造５００は、任意の量のデータをデータペイロードに含めることを促進することができる。これに関連して、含められるデータ量を必要に応じて縮小・拡大可能にすることができる。更に、汎用データ構造５００のデータタイプの配列５０５により、汎用データ構造５００に含まれるデータの識別が容易になる。これに関連して、汎用データ構造５００は自己記述的なものでもよい。汎用データ構造５００の所望の宛先又はその他の受信者は、汎用データ構造５００に含まれるデータタイプを、ひいては汎用データ構造５００に含まれるデータの各項目に割り当てられたバイト数を識別するためにデータタイプ配列５０５を利用してもよい。これに関連して、汎用データ構造５００をシリアル化されたデータの流れとして宛先にルーティングし、それが受信された後で様々なコンポーネントへと容易に選り分けることができる。
【００５４】
本発明の一実施形態では、全ての通信を可能にするために汎用データ構造５００を利用できる。例えば、データハブ１０６は、汎用データ構造５００に関連するコマンドを処理する所望の宛先に汎用構造５００の例を通信してもよい。汎用データ構造の例として以下のようなものがある。
GenericDataStructure
{
INT[] DataParameterType;
OBJECT[] DataValue;
}
データパラメータのタイプにより、対応するデータ値が示すものが特定され、オブジェクトタイプは、いかなるタイプのネイティブデータ又は複雑なタイプのデータをも保持し得る汎用タイプである。
【００５５】
以下は汎用データ構造を使用するための疑似コードの例である。
stTimeStructure
{
int Millisecond;
int Second;
int Minute;
int Hour;
int Day;
int DayOfWeek;
int Month;
int Year;
}
100 - TYPE_MILLISECOND
101 - TYPE _SECOND
102 - TYPE_MINUTE
103 - TYPE_HOUR
104 - TYPE_DAY
105 - TYPE_DAY_OF_WEEK
106 - TYPE_MONTH
107 - TYPE_YEAR
1:26:34.324PM June 15, 2007
stTimeStructure object;
object.Millisecond = 324;
object.Second = 34;
object.Minute = 26;
object.Hour = 13;
object.Day = 15;
object.DayOfWeek = 5;
object.Month = 6;
object.Year = 2007;
SetTime (stTimeStructure);
GenericDataStructure object;
object.DataParameterType = new INT[8];
object.DataValue = new OBJECT[8];
object.DataParameterType[0] = TYPE_MILLISECOND;
object.DataParameterType[1] = TYPE_SECOND;
object.DataParameterType[2] = TYPE_MINUTE;
object.DataParameterType[3] = TYPE_HOUR;
object.DataParameterType[4] = TYPE_DAY;
object.DataParameterType[5] = TYPE_DAY_OF_WEEK;
object.DataParameterType[6] = TYPE_MONTH;
object.DataParameterType[7] = TYPE_YEAR;
object.DataValue[0] = (INT)324;
object.DataValue[1] = (INT)34;
object.DataValue[2] = (INT)26;
object.DataValue[3] = (INT)13;
object.DataValue[4] = (INT)15;
object.DataValue[5] = (INT)5;
object.DataValue[6] = (INT)6;
object.DataValue[7] = (INT)2007;
SetTime(GenericDataStructure);
汎用データ構造の上記の例では、Ｓｅｔ  Ｔｉｍｅコマンドを利用して、要求された時間を含む汎用データ構造に戻ってもよい。例えばＧｅｔ  Ｔｉｍｅコマンド等のデータを要求するコマンドに応答して、コマンド及び関連データを要求モジュールに返送してもよい。この例では、宛先は要求モジュールへの応答として１：２６：３４．３２４ＰＭ、２００７年６月１５日を返送してもよい。返送された汎用データ構造に含まれるデータ値は、３２４、３４、２６、１３、１５、５、６及び２００７を含み、それらに対応するタイプはミリ秒、秒、分、時、曜日、月及び年をそれぞれ含んでいてもよい。汎用データ構造のデータタイプ配列は、様々なデータタイプの識別子として整数値１００、１０１、１０２、１０３、１０４、１０５、１０６及び１０７を含んでいてもよい。この例に示される整数は、図５を参照して前述した例で記載したデータの全ての整数値について共通のデータタイプを利用するのとは対照的に、様々なデータタイプに特有な整数である。例示的な汎用データ構造での必要に応じて、両方のアプローチ、アプローチの組み合わせ、又はその他のアプローチを利用してもよい。
【００５６】
本発明の態様によれば、関連する汎用データ構造が自己記述的なデータ構造であるため、機能は汎用なものになる。送受信されるデータが自己記述的なデータである場合は、データコマンドを促進するために幾つかの機能を利用する代わり、単一の機能を利用してもよい。本発明の例示的実施形態によれば、汎用データ構造は複雑なデータでも処理することができる。汎用データ構造を利用して複雑なデータを処理する例は以下の通りである。
Object.DataParameterType = new int[8];
Object.DataParameterType[0] = TYPE_DATA_TYPE;
Object.DataParameterType[1] = TYPE_2D_ARRAY_OF_TIMESTAMPS;
Object.DataParameterType[2] = TYPE_ARRAY_OF_NODE_IDS;
Object.DataParameterType[3] = TYPE_2D_ARRAY_OF_MODE_VALUES;
Object.DataParameterType[4] = TYPE_2D_ARRAY_OF_DATA_STATUS;
Object.DataParameterType[5] = TYPE_2D_ARRAY_OF_WAVEFORM_VALUES;
Object.DataParameterType[6] = TYPE_2D_ARRAY_OF_RPM;
Object.DataParameterType[7] = TYPE_2D_ARRAY_OF_KPH_HIT_INDICES;
Object.Data = new Object[8];
Object.DataValue[0] = (ENUM)DYNAMIC_DATA;
Object.DataValue[1] = new (DATE[])[n]; （タイムスタンプの二次元配列）
Object.DataValue[1][0] = new Date[x]; （２００の場合のタイムスタンプ配列）
Object.DataValue[1][0][0] = (DATE)Now;
Object.DataValue[1][0][1] = (DATE)Now-5;
Object.DataValue[1][0][x] = (Date)Now - 1;
Object.DataValue[1][1] = new Date[y]; (２０１の場合のタイムスタンプ配列)
Object.DataValue[1][1][0] = (DATE)Now;
Object.DataValue[1][1][1] = (DATE)Now-5;
Object.DataValue[1][1][y] = (Date)Now - 1;
Object.DataValue[1][n] = new Date[z]; （２０２の場合のタイムスタンプ配列）
Object.DataValue[1][n][0] = (DATE)Now;
Object.DataValue[1][n][1] = (DATE)Now-5;
Object.DataValue[1][n][z] = (Date)Now - 1;
Object.DataValue[2] = new Int[n];（ノードIDsの配列）
Object.DataValue[2][0] = (int)200;
Object.DataValue[2][1] = (int)201;
Object.DataValue[2][n] = (int)202;
Object.DataValue[3] = new (Int32[])[n];（モード値の二次元配列）
Object.DataValue[3][0] = new Int32[x];（２００の場合のモード値の配列）
Object.DataValue[3][0][0] = (int)8; （モード８＝同期）
Object.DataValue[3][0][1] = (int)8;（モード８＝同期）
Object.DataValue[3][0][x] = (int)0;（モード０＝時間ベース)
Object.DataValue[3][1] = new Int32[y];（２０１の場合のモード値配列）
Object.DataValue[3][1][0] = (int)8;（モード８＝同期）
Object.DataValue[3][1][1] = (int)8;（モード８＝同期）
Object.DataValue[3][1][y] = (int)0;（モード０＝時間ベース)
Object.DataValue[3][n] = new Int32[z];（２０２の場合のモード値配列）
Object.DataValue[3][n][0] = (int)8;（モード８＝同期）
Object.DataValue[3][n][1] = (int)8;（モード８＝同期）
Object.DataValue[3][n][z] = (int)0;（モード０＝時間ベース)
Object.DataValue[4] = new (Int32[])[n];（データステータスの二次元配列）
Object.DataValue[4][0] = new Int32[x];（２００の場合のデータステータス配列）
Object.DataValue[4][0][0] = (int32)OK;（２００の場合のステータスデータ）
Object.DataValue[4][0][1] = (int32)NOT_OK;（２００の場合のステータスデータ）
Object.DataValue[4][0][x] = (int32)OK;（２００の場合のステータスデータ）
Object.DataValue[4][1] = new Int32[y];（２０１の場合のデータステータス配列）
Object.DataValue[4][1][0] = (int32)OK;（２００の場合のステータスデータ）
Object.DataValue[4][1][1] = (int32)NOT_OK;（２０１の場合のステータスデータ）
Object.DataValue[4][1][y] = (int32)OK;（２００の場合のステータスデータ）
Object.DataValue[4][n] = new Int32[z];（２０２の場合のデータステータス配列）
Object.DataValue[4][n][0] = (int32)OK;（２００の場合のステータスデータ）
Object.DataValue[4][n][1] = (int32)NOT_OK;（２００の場合のステータスデータ）
Object.DataValue[4][n][z] = (int32)OK;（２００の場合のステータスデータ）
Object.DataValue[5] = new (Int32[][])[n];（サンプルの三次元配列）
Object.DataValue[5][0] = new (Int32[])[x];（２００の場合のサンプルの二次元配列）
Object.DataValue[5][0][0] = new Int32[1024];（タイムスタンプ１でのwfサンプルの配列)
Object.DataValue[5][0][0][0] = (int32)｛タイムスタンプ１での２００の場合のサンプル１の値｝
Object.DataValue[5][0][0][1] = (int32)｛タイムスタンプ１での２００の場合のサンプル２の値｝
Object.DataValue[6] = new (Float[][])[n];（RPMの三次元配列）
Object.DataValue[7] = new (Int32[][])[n];（２００の場合のKPHヒット指数の三次元配列）
汎用データ構造の上記の例では、汎用データ構造に含まれるデータを定義するデータタイプ配列に８つの整数値を含めることができる。定義される各データタイプは、汎用データ構造のデータ値配列に格納される配列でよい。これらの配列は一次元、二次元又は三次元配列のいずれでもよい。更に、汎用データ構造のデータ値配列に格納される様々な配列のセルについてデータ値を定義してもよい。
【００５７】
図６は、本発明の例示的実施形態による汎用データ構造を構成する１つの例示的な方法のフローチャートである。方法６００はブロック６０５で開始され、そこで汎用データ構造に含まれるべきデータタイプを決定し、又はそれ以外の方法で識別する。本発明の例示的実施形態では、データタイプは時、分、秒及びミリ秒でよい。
【００５８】
ブロック６０５の後のブロック６１０が続き、そこで汎用データ構造の場合の定義された配列を作成できる。データタイプ配列とも言われる定義された配列は、汎用データ構造に含まれるデータタイプ（又はデータ値）を識別することができる。本発明の態様によれば、定義された配列は、汎用データ構造内に含まれるそれぞれのデータタイプに関連する整数値であってよい。返送された汎用データ構造に含まれるデータ値は３２４、３４、２６、１３、１５、５、６及び２００７を含み、それらに対応するタイプはミリ秒、時、曜日、月及び年をそれぞれ含んでいる。汎用データ構造のデータタイプ配列は、様々なデータタイプの識別子として整数値１００、１０１、１０２、１０３、１０４、１０５、１０６及び１０７を含んでいてもよい。
【００５９】
ブロック６１０の後にブロック６１５が続き、そこで汎用データ構造のデータ配列を作成することができる。データ配列は、汎用データ構造に含まれる各データタイプに関連するデータを含むことができる。時、分、秒及びミリ秒のデータタイプを含む上記の例では、作成されたデータ配列は４つのデータ値の配列でよい。本発明の例示的実施形態では、対応する時、分、秒及びミリ秒のデータ値は１７、４５、３０及び２００でよい。
【００６０】
図６の方法６００に記載の動作は、必ずしも図６に記載の順序で実行される必要はなく、いずれかの適切な順序で実行されればよい。加えて、本発明の或る実施形態では、図６に記載の全ての要素又は動作よりも多い、又はそれよりも少ない要素又は動作を実行してもよい。
【００６１】
本発明のデータハブアーキテクチャは、単一のコンピュータ内及び／又は複数のコンピュータ間での比較的高速度のデータ伝送を促進することができる。加えて、データハブアーキテクチャはデータ終端情報を提供し、異なるハードウエアデバイス間での互換性の問題を解決することができる。
【００６２】
本発明の技術的な効果は、本発明の様々な実施形態に開示されているデータハブを使用して、単一のコンピュータ内で、又は複数のコンピュータ間でデータハブを介して異なるモジュール間でデータを高速度で通信できることにある。更には、異なるプロトコルを理解するモジュールは、データハブを使用してデータを相互に交換することができる。加えて、既存のモジュール間でのデータ交換に影響を及ぼさずに追加、除去及び／又は交換することができる。
【００６３】
本発明の実施形態をブロック図、及び本発明の実施形態による方法及びシステムの概略的な図示を参照して説明してきた。各ブロック図及び図中のブロックの組み合わせをコンピュータ命令によって実施できることが理解されよう。これらのコンピュータプログラム命令は、１つ又は複数の汎用コンピュータ、専用コンピュータ、又は機械を製造するその他のプログラム可能なデータ処理装置にロードすることができ、それによってコンピュータ又はその他のプログラム可能なデータ処理装置で実行される命令は１つ又は複数のブロックで指定された機能を実行する手段を作ることができる。このようなコンピュータプログラム命令はコンピュータ読み取り可能メモリに記憶しておくこともでき、これは、コンピュータ又はその他のプログラム可能なデータ処理装置に対して特定の態様で機能するように命令して、コンピュータ読み取り可能メモリ内に記憶された命令が、１つの又は複数のブロックで指定される機能を実行する命令手段を含む製造製品を産出するようにできる。
【００６４】
本発明の或る実施形態では、電子データのルーティングに使用されるどのデバイスにも応用可能である。このようなデバイスの幾つかの例には、コンピュータ内のネットワークルーティングデバイス、他のタイプのルータ、ネットワークスイッチ、サーバー等が含まれるが、これらに限定されない。上述の明細書に記載のどの実施例も説明目的で提示したに過ぎず、決して本発明の範囲を限定するものではないことは明白であろう。
【００６５】
以上、現時点で最も実用的と思われる種々の実施形態に関連して本発明を説明してきたが、本発明の実施形態は本明細書に記載のものに限らず、それらに様々な改変及び等価の措置を加えた形態も添付の特許請求の範囲に含まれるものとする。
本明細書では、最良の態様も含めた例示を用いて本発明の実施形態を開示した。これを利用して、当業者は、装置又はシステムを作製すること、及びそれに付随する方法の実施を含めて本発明を実施することができよう。本発明の特許可能な範囲は、添付の特許請求の範囲に記載されており、特許請求の範囲には、当業者に想起可能なその他の実施形態も含まれるものとする。かかるその他の実施形態は、特許請求の範囲に記載の文言と相違ない構成要素を有する限り、又は、特許請求の範囲に記載の文言と本質的に同等の構成要素を有する限り、本発明の特許請求の範囲に含まれるものとする。
【符号の説明】
【００６６】
１００  データハブシステム
１００ａ−ｎ  クライアント
１０４ａ−ｎ  ＤＨＰ
１０６  データハブ
１０８  コンピュータシステム
１１０  インターフェースモジュール
１１２ａ−ｎ  クライアントインターフェース
１１４ａ−ｎ  ＤＨＰインターフェース
１１６  ルーティングモジュール
１１８  遠隔コンピュータシステム
１２０  ネットワーク
１２２  遠隔通信ＤＨＰ
１２４  遠隔通信ＤＨＰ
１２６  ネットワークインターフェースデバイス
１２８  ネットワークインターフェースデバイス
１３０  遠隔データハブ
２００  ルーティングテーブル
３００  トランスポートパケット
３０２  宛先識別子
３０４  ソース識別子
３０６  シーケンスＩＤ／コマンドＩＤ
３０８  コマンド
３１０  データ
４００  ブロック
４０５  ブロック
４１０  ブロック
４１５  ブロック
４２０  ブロック
４２５  ブロック
５００  汎用データ構造
５０５  データタイプ配列
５１０  データ値配列
６００  ブロック
６０５  ブロック
６１０  ブロック
６１５  ブロック
【図１】
2010124465.tif 000003
【図２】
2010124465.tif 000004
【図３】
2010124465.tif 000005
【図４】
2010124465.tif 000006
【図５】
2010124465.tif 000007
【図６】
2010124465.tif 000008