本発明の多様な実施形態が、以下に図面を参照して説明され、ここで、同様の参照番号は、同じ又は機能的に同様の要素を示す。この図の中で一般的に記述され且つ例示されるような、本発明の実施形態は、多様な異なる構成で変更及び設計することができる。従って、これらの図の中で表されているような、本発明のいくつかの例示的な実施形態についてのより詳細な説明は、主張されるように、本発明の範囲を限定する意図ではなく、単に本発明の実施形態の見本である。
「典型的な」という用語は、この中では、もっぱら「実施例、事例、又は例証の役目をする」ことを意味するために用いられる。この中で、「典型的な」ものとして説明される如何なる実施形態も、必ずしも他の実施形態よりも好ましい、又は有利だと解釈されるわけではない。実施形態の多様な態様が図面の中で提供されるが、これらの図面は特に示さない限りは必ずしも縮尺どおりに描かれているわけではない。
この中で開示される実施形態の多くの特徴は、コンピュータソフトウエア、電子的なハードウエア、又は両者の組み合わせとして実施されてもよい。ハードウエアとソフトウエアのこの互換性を明確に説明するために、さまざまなコンポーネントが機能性の観点から一般的に記述されるで。このような機能性がハードウエアとソフトウエアのどちらで実施されるかは、特定のアプリケーション及びシステム全体に課せられた設計上の制約によって決まる。当業者ならば、各アプリケーションに対して、説明された機能性を多様な方法で実施するであろうが、このような実施の決定は、本発明の範囲からの離脱を起こすものと解釈されるべきではない。
説明される機能性がコンピュータソフトウエアとして実装される場合、このようなソフトウエアは、メモリデバイスの内部にあるか及び/又はシステムバス若しくはネットワーク上で電子的な信号として送信される、任意のコンピュータ命令若しくはコンピュータで実行可能なコードの任意のタイプを含んでもよい。この中で説明されるコンポーネントに関連する機能性を実行するソフトウエアは、単一の命令、又は多くの命令を含んでもよく、また、いくつかの異なるコードセグメントにわたって、異なるプログラムの間に、及びいくつかのメモリデバイスにわたって、分散されてもよい。
図1は、ネットワーク100内の2つの介在アクセスノードを例示しているネットワークブロック図である。プロバイダ102は、ネットワーク100と電気的に通信している。図1のネットワーク実施形態100は、ネットワーク100と電気的に通信している2つのリクエスタ104を含んでいる。介在アクセスノード106が、同様にネットワーク100上に存在している。ネットワーク100上には、より多くのノードがあっても良い。
介在アクセスノード106は、ネットワーク100に機能及びサービスを提供するネットワークノードである。介在アクセスノード106は、さまざまな仕方で用いられても良い。例えば、介在アクセスノード106は、ネットワーク100上に存在してネットワーク100上のコンピュータ、アプリケーション、及び/又はオブジェクトにサービスを提供しても良い。介在アクセスノード106はまた、プロトコルコンバータを提供するために用いられても良い。介在アクセスノード106は組み込まれてもよく、又は介在アクセスノード106は大規模なトラフィックを扱うほどに十分に大きくても良い。
介在アクセスノード106が含んでもよい1つの機能は、オブジェクトの洗練化に関連する。オブジェクトの洗練化とは、介在アクセスノード106がオブジェクトの代わりに自らを配置し、同じインターフェースについての様々な実施例を提供するという状況のことである。これは、とりわけ、インターフェースの実施における問題を、このインターフェースの実際の末端提供者を変更することなく解決することを可能にさせる。
介在アクセスノード106の更なる特徴は、オブジェクトの拡大化の機能である。オブジェクトの拡大化のために、介在アクセスノード106は、オブジェクトに対して上記の末端提供者がサポートしない新たなインターフェースを追加する。
現在の設計においては、介在アクセスノード106はクライアントとデバイスとの間を区別しておらず、従って、追加される如何なるサービスも任意の(認証された)接続エンティティすなわちノードに利用可能である。
図1に示すようなネットワーク100は、ウエブサービスの多くの機能を受け継いでいる。ウェブサービスは、普通HTTP及びSOAPのウェブプロトコルを用いてアクセスされる。このアーキテクチャはネットワーキングのピアツーピアパラダイムに基づいている。
互いに通信し合う複数の介在アクセスノード106は、介在アクセスノードネットワーク110を形成する。リクエスタ104及び/又はプロバイダ102にとって、介在アクセスノードネットワーク110の1つ以上の介在アクセスノード106は、単一の介在アクセスノード106として見える。介在アクセスノードネットワーク110の中に含まれる規模すなわち数は、プロバイダ102及び/又はリクエスタ104にとっては透過的である。
プロバイダ102は、サービス108の提供元である、ネットワーク100上の1ノードである。リクエスタ104は、サービス108の利用者である、ネットワーク100上の1ノードである。リクエスタ104は、直接、サービス108を発見してこれを制御又はこれと相互交流しても良い、ノード上に実装されたソフトウエアエンティティである。
サービス108は、コンピュータデバイスによって提供されてもよい、任意の種類のサービスであってもよい。サービス108の可能な例としては、或る場所からの温度データの提供、監視データの提供、気象情報の提供、オーディオストリームの提供、ビデオストリームの提供等が含まれる。多くの、異なる種類のサービス及び/又はデータを、プロバイダ102からコンピュータネットワーク100を通して提供しても良い。
サービス108は、1つ以上のバインディング112を介してアクセスされる。バインディング112は、オブジェクト識別子114及びインターフェース識別子116を含んでいる。通常、オブジェクト識別子114及びインターフェース識別子116はペアになっている。プロバイダ102は、複数のバインディング112を提供することができる。複数のプロバイダ102が同じサービス108、バインディング112、オブジェクト識別子114、又はインターフェース識別子116を提供しているということも可能である。
プロバイダ102は、埋め込みプロバイダであってもよい。埋め込みプロバイダは、埋め込みデバイス上に実装されているプロバイダ102である。埋め込みデバイスは、コンピュータデバイスの1種であるが、典型的なデスクトップコンピュータに用いられる全ての同じコンポーネントは含まない。例えば、一部の埋め込みデバイスは、モニタを含まず、他はキーボード又はマウスを含まず、また一部の埋め込みデバイスはモニタもキーボード/マウスも含まない。多くの埋め込みデバイスは、マイクロコントローラベースのデバイスであり、すなわち、この埋め込みデバイスのための中央プロセッサはマイクロコントローラである。
リクエスタ及びプロバイダの役割は、介在アクセスノード106に接続されたデバイス及びソフトウエアノードが担ってもよい。加えて、介在アクセスノード106は、リクエスタ及び/又はプロバイダであっても良い。例えば、介在アクセスノード106は、介在アクセスノード106間の通信を開設するときは、リクエスタ/プロバイダであってもよい。介在アクセスノード106は、これ106が他の介在アクセスノード106に接続する際にプロバイダについての情報を要求するときにリクエスタとして働く。介在アクセスノード106は、他のプロバイダについての情報を他の介在アクセスノード106に提供しているときに、プロバイダとして働く。
ここで用いられるような、「ネットワーク」という用語は、内部で一連のノードが通信経路により相互接続されている、システムを示す。ノードは、他のノードと通信する物理的なコンピュータデバイスである。ノードの特定の動作は、これが実行するアプリケーション又はソフトウエアにより決定される。ネットワークのノード上で実行されるアプリケーションは、プロトコル、すなわちネットワークを通してどのようにデータを送信するかに対する形式化された規則を実施するソフトウエアモジュールを介して、互いに通信する。いくつかのプロトコルは、データ送信のタイミング、シーケンス、及びエラーチェックを取り扱う。他は、更にどのようにデータがフォーマットされるか、及びノードが交換するコマンド及び応答を取り扱う。共に動作する1式のプロトコルは、プロトコルスタックと呼ばれ、それぞれのプロトコルは他のレイヤの最上位に構築された、スタック内の1レイヤとして振舞う。プロトコルスタックのこの最上位レイヤは、アプリケーションによって用いられ、中間レイヤはノード間でデータの転送グループ(パケット及びフレーム)を取り扱い、及び最下位レイヤはデータを転送するネットワーキングハードウエアを直接取り扱う。
物理的ネットワークは、ある種の物理的媒体(例えば、電気配線、光ファイバ、空気等)によって接続されるノードから成る。この物理的接続は、時々、リンクと呼ばれる。2つのノードに限定された物理的ネットワークは、ポイント・ツー・ポイントと呼んでもよく、一方、3つ以上のノードをサポートする物理的ネットワークはマルチアクセスと呼んでもよい。マルチアクセスネットワーク上の各ノードは、ネットワーク上の他のノードと自身を区別するために用いられる物理的アドレスを有している。
論理的ネットワークが、ノードの固有のグループを特定するために、物理的ネットワークの上に付加されてもよい。論理的ネットワーク内の各ノードは、プロトコルによりこのノードの物理的アドレスへとマッピングされる論理アドレスを有している。サブネットワーク、又はサブネットは、サブネット番号により識別される、物理的に又は論理的に独立したネットワークの一部である。
殆どの物理的ネットワークの問題に対しては、すでに多くの良く定義された実施例が有るため、殆どのプロトコルは論理的ネットワークを取り扱っており、新たな物理層を定義する必要はない。論理的ネットワークはまた、物理的ネットワークから隔離されるという利点を有し、従って、より広い有用性がある。例えば、TCP/IPは、論理的ネットワーク(IP)の最上位で定義される。IPは、多くの物理的ネットワーク(イーサネット(登録商標)、シリアル、ワイヤレス等)上で作動することができる。これはTCP/IPを、これが一部の特定の物理的ネットワークに関してのみ定義されるのに比べて、より包括的な解決策にしている。
任意の数の介在アクセスノード106を、コンピュータネットワーク100の中で用いてもよい。図2は、示されているように、多数の介在アクセスノード206を含むネットワーク200を例示している。3つのリクエスタ204、205が介在アクセスノード206と電気的に通信している。図2に示すネットワーク実施形態200の中では、3つのリクエスタ204、205が全て、プロバイダ202、205、206eから提供されているサービス208、228、248を要求する。サービス208、228、248からのデータは、介在アクセスノードネットワーク210を通して送信される。
図2の介在アクセスノードネットワーク210は、図1の介在アクセスノードネットワーク110と同様に動作する。典型的な動作の中では、リクエスタ104、204、205、及びプロバイダ102、202、205、206eは、図1の介在アクセスノードネットワーク110と図2の介在アクセスノードネットワーク210間を区別しないであろう。図2はまた、例示されたリクエスタ/プロバイダ205により示すように、1つのノードがリクエスタ及びプロバイダの両方として働いてもよいということを、例示している。このリクエスタ/プロバイダ205は、サービス228及びバインディング232を提供する。図2はまた、サービス/バインディングが、介在アクセスノード206eによって提供されるということを例示している。
上に示すように、ネットワーク上で利用可能な多くのサービス及び多くのバインディングがあっても良い。これらのサービスを、常に提供するというよりはむしろ、「シグナリングして」バインディングを提供することができるようにすることは、有益であろう。加えて、プロバイダ102と介在アクセスノードネットワーク110との間で用いられる接続が一時的な場合、確立されている接続はもはや必要ないのかどうか、又は確立されていない接続がいつ必要とされるのかをプロバイダ102に信号を伝える方法を提供することは、有益である可能性がある。ここで開示されるシステム及び方法を通して、この接続の中の2つのループを考慮に入れれば、要求が効率的なやり方でネットワークを通して伝播することを可能とし、また同様に多くの数の無関心なプロバイダ(接続されていなくてもよいプロバイダ又は現在バインディング112を提供していなくてもよいプロバイダを意味している)を可能とする。
介在アクセスノード106、206は、ループを含む任意の方法で接続されてもよい。図1及び2の中には、リクエスタ104、204、205及びプロバイダ102、202、205、206eが例示されている。リクエスタ及びプロバイダは、個別のノードでもよいし、介在アクセスノードの中に共存していても良い。介在アクセスノードネットワーク110により用いられる方法は、リクエスタ104、204、205がプロバイダ102、202、205、206eによるバインディング112の追加及び削除を感知することを可能にする。これらはまた、コンピュータネットワーク100上でのバインディング112の利用可能性についての問い合わせを可能にする。介在アクセスノードネットワークについての更なる詳細は、以下の同時係属の特許出願、すなわち、米国特許出願番号第11/302,306号、題名「分散ルーティング環境におけるフェールオーバを取り扱うためのシステム及び方法」、2005年12月13日出願、発明者ブライアント・イーサム(Bryant Eastham)及びトム・ミリガン(Tom Milligan)と、米国特許出願番号第11/292,944号、題名「分散ルーティング環境における効率的な電子通信のためのシステム及び方法」2005年12月2日出願、発明者ブライアント・イーサム及びトム・ミリガンの中に記述されている。本発明の譲受人に譲渡されているこれらの同時係属の米国特許出願は、ここに参照することにより全体として本出願に組み込まれる。
バインディング112に関するノードによる問い合わせは、TCP/IPのような接続指向のプロトコルを用いるか、又はUDP/IPのようなコネクションレスプロトコルを通してなされてもよい。コネクションレスプロトコルの使用による利点には、要求される接続がより少ないために介在アクセスノード106、206へのオーバーヘッドがより低くなることが含まれる。
図3は、リクエスタ304及びプロバイダ302を伴う介在アクセスノードネットワーク310の実施形態のブロック図である。上で論じたように、リクエスタ304は、プロバイダ及びリクエスタの両方として動作しても良い。本実施形態の中では、リクエスタ304はバインディング320を提供することにより、またプロバイダ302のサービス108を介在アクセスノードネットワーク310を通して利用することにより、プロバイダ及びリクエスタとして動く。
リクエスタ304により提供されるバインディングは、ステイオンライン(stay online)バインディング320である。ステイオンラインバインディング320は、プロバイダ102が提供しているサービス108を望んでいるネットワーク310にリクエスタ304が接続されているということを、要求されるサービス108を提供する全てのプロバイダ102に通知する目的を果たしてもよい。この場合、ステイオンラインバインディング320のオブジェクトID314bは、サービス108により提供されるオブジェクト114の少なくとも1つと同じである。
ステイオンラインバインディング320は、これが典型的にはオブジェクトID314b及びインターフェースID322aを含んでいることから、正規のバインディング112と類似している。ステイオンラインバインディング320は、介在アクセスノードネットワーク110を通して送信される任意の他のバインディング112の中に含まれてもよいものと同じ又は類似した情報を含んでもよいことから、任意の他のバインディング112のように扱ってもよい。
プロバイダ302もまた、上述のように、プロバイダ及びリクエスタの両方として行動しても良い。本実施形態の中では、プロバイダ302は、バインディング312を提供することにより、またリクエスタ304から介在アクセスノードネットワーク310を通して送信される可能性のあるステイオンラインバインディング320を待つことによって、プロバイダ及びリクエスタの両方としての役割を果たす。
プロバイダ302から提供されるバインディング312は、オブジェクトID314a及びインターフェースID316aを含んでもよい。ステイオンラインバインディング320とは異なり、本実施形態のバインディング312は所望のサービス108と相互交流するために用いられるインターフェースを識別しても良い。
図4は、ネットワーク内のプロバイダ402とリクエスタ404間の通信を確立するための方法を例示しているタイミング図400である。時間軸401が示されている。リクエスタ404は、ネットワーク100上で、サービス108の検索をしていてもよい。ネットワーク100に接続した後のどこかの時点(時間t1)で、リクエスタ404はステイオンラインバインディング320を提供410しても良い。ステイオンラインバインディング320は、リクエスタ404が互換性のあるバインディング312の任意のプロバイダに対して、接続の確立と、このプロバイダのバインディング112の提供と、オンラインのままでいることとを依頼する方法である。互換性のあるバインディング312とは、ステイオンラインバインディング320のオブジェクトID314bが、プロバイダ402を介してサービス108により提供されるバインディング312のオブジェクト314aと等しいバインディング312のことである。本実施形態の中では、ネットワーク100に接続した後のどこかの時点(時間t2)で、プロバイダ402はバインディング312を提供420しても良い。代替的な実施形態の中では、プロバイダ402は、リクエスタ404がこれのステイオンラインバインディング320を提供する410前にバインディング312を提供420しても良い。
プロバイダ402は、ネットワーク100の中にバインディング312を追加する。バインディング312を送った420後のある時点、時間t3で、リクエスタ404はステイオンラインバインディング320を削除430しても良い。この削除430は、プロバイダ402に伝わってもよい。プロバイダ402が削除430を感知した後の時間t4において、プロバイダ402はバインディング312を削除440しても良い。
図5は、介在アクセスノード506の一実施形態のブロック図である。介在アクセスノード506は、ステイオンラインバインディング320を例えば、プロバイダ102に転送すべきかどうかを判断することを、介在アクセスノード506に可能とさせるために必要な情報を含んでもよい。同様に、介在アクセスノード506はまた、バインディング112を例えば、リクエスタ104に転送すべきかどうかを判断することを、介在アクセスノード506に可能とさせるために必要な情報を含んでもよい。
介在アクセスノード506は、自身が認識しているネットワーク110上の全てのバインディング112を含んでもよい、バインディング526のデータベースを含んでもよい。これらバインディング526は、バインディング512とステイオンラインバインディング520を含み、それぞれのバインディングは同様にオブジェクトID114とインターフェースID116とを含んでいる。ネットワーク内の各ノードは、このバインディング112に対するプロバイダ102の総数は知らないかもしれないとはいえ、特定のバインディング112、320が存在するかどうかを知っていてもよい。特定のバインディング112を提供する複数のプロバイダ102が存在する場合には、あるノードの観点からすれば、全てのプロバイダ102がネットワーク100との接続を切るか又はこれらのバインディング112を削除するまでは、バインディング112は消滅することはないであろう。バインディングのデータベース526は、プロバイダ102により、TCP/IPのような接続指向のプロトコル又はUDP/IPのようなコネクションレスプロトコルの双方を介して問い合わせ(クエリ)しても良い。このクエリは、存在している任意のバインディング112、320に対してであってもよい。このデータベースを同様に、プロバイダ102によって監視して、内容の変更が割り出されるようにしても良い。
図6は、1つ以上の介在アクセスノードと、同じバインディング812を提供しているプロバイダ2つの802a、802bを含む、介在アクセスノードネットワーク810のブロック図800である。バインディング112は、これらのオブジェクトID114が同じで、且つこれらのインターフェース116が同じであれば、同じとみなされる。プロバイダ802が接続及び切断するとき、ネットワーク810は、どのプロバイダ802を使用するかを判断しても良い。プロバイダA802aは、第1のバインディング812aを含んでもよい。プロバイダB802bは第1のバインディング812bを含んでもよい。このようにして、両プロバイダ802が同じバインディング、すなわち第1のバインディング812を提供しても良い。ネットワーク810及びプロバイダ802a、802bは、交渉して、どのプロバイダ802がバインディング112を提供してよいか、及び、必要ならどれを、後でバインディング112を提供するために留保しておくかを決定しても良い。この状況は、一般的には、2つ以上のプロバイダ102が殆ど同じ時間に介在アクセスノードネットワーク810に接続し、自身たちのバインディング112を既に公示した後になるまで、それぞれのプロバイダ102が他のプロバイダ102に気づかないかもしれないようにするときに、発生する。本実施形態の中では、この論理をステイオンラインバインディング320に適用することにより、最後のプロバイダ802が接続を切断するか又はバインディング812を削除するまでは、ステイオンラインバインディング320がネットワークの中に存在するということを確実にしても良い。
さて、図7を参照すると、特定のバインディング112がリクエスタ904により要求される場合、リクエスタ904はこれのステイオンラインバインディング920a、920bを、第1のステイオンラインバインディングA920aと第2のステイオンラインバインディングB920bとを介在アクセスノードネットワーク110に加えることによって、提供しても良い。第1のステイオンラインバインディングA920aは、このバインディング920aを受信するものには誰でも、オブジェクトID914aを伴うバインディング112が求められているということを通知しても良い。本実施形態のステイオンラインバインディングA920aは、オブジェクトIDA914aとインターフェースIDステイオンライン922とを含んでもよい。このステイオンライン識別子は、プロバイダ102にマッチングオブジェクトID114を用いて、プロバイダ102がこれのバインディング112を提供し、オンラインを維持するべきだということを通知しても良い。第2のステイオンラインバインディングB920bは、このバインディングを受信するものには誰でも、オブジェクトID914bを伴うバインディング112が求められているということを通知しても良い。
図8は、2つのバインディング1012a、1012bを提供するプロバイダ1002のブロック図である。プロバイダ1002が介在アクセスノードネットワーク110に接続するとき、ステイオンラインバインディングA920a及びステイオンラインバインディングB920bの存在を判断しても良い。代替的な実施形態の中では、プロバイダ1002は接続することなしにネットワーク110に問い合わせて、適用可能なステイオンラインバインディング520の存在を判断し、適用可能なステイオンラインバインディング520が検出された場合のみ接続を確立する。
ステイオンラインバインディング920を感知し、接続を確立した後で、プロバイダ1002は、自身のバインディング1012a、1012bを、第1のバインディングA1012a及び第2のバインディングB1012bを加えることにより、追加しても良い。第1のバインディングA1012aを追加することにより、これを受信するものには誰でも、第1のバインディングA1012aが利用可能だということが通知される。第2のバインディングB1012bを追加することにより、これを受信するものが誰であれ、第2のバインディングB1012bが利用可能だということが通知される。この情報を用いて、リクエスタ104は、プロバイダ1002からのバインディング1012a、1012bを用いることができる。
図9は、介在アクセスノードネットワーク110に接続しても良い、プロバイダ102及び2つのリクエスタ104a、104bのブロック図である。リクエスタA104aはステイオンラインバインディングA1120aを提供しても良い。リクエスタB104bは、ステイオンラインバインディングB1120bを提供しても良い。プロバイダ102は、ステイオンラインバインディングA1120a及び/又はステイオンラインバインディングB1120bを受信しても良い。プロバイダ102がステイオンラインバインディング1120a、1120bのどちらかを受信し続ける場合は、プロバイダ102は、自身の利用可能なバインディング1112、すなわちバインディングA1112a及びバインディングB1112bを提供しても良い。プロバイダ102が自身の利用可能なバインディング1112を追加した後、リクエスタ104a、104bはこれらの所望のバインディング1112a、1112bをそれぞれ用いてもよい。プロバイダ102は次に、バインディング1112をリクエスタ104a、104bに提供し続けてもよい。具体的には、プロバイダ102は、バインディングA1112aをリクエスタA104aに、またバインディングB1112bをリクエスタB104bに提供しても良い。
リクエスタ104の1つのみがステイオンラインバインディング1120を削除した場合は、プロバイダ102は介在アクセスノードネットワーク110に接続し続けてもよく、また自身の可能なバインディング1112を提供し続けてもよい。例えば、もし仮にリクエスタA104aが自身のステイオンラインバインディングA1120aを削除するとしたら、プロバイダ102はこの後バインディングA1112aをリクエスタA104aに提供するのをやめてもよい。しかしながら、リクエスタB104bは依然として自身のステイオンラインバインディングB1120bを加えているので、プロバイダ102は自身の利用可能なバインディング1112を提供し続けてもよく、またバインディングB1112bをリクエスタB104bに提供し続けてもよい。もし仮に、リクエスタA104a及びリクエスタB104bの両方がステイオンラインバインディング1120a、1120bを停止して除去し、介在アクセスノードネットワーク110に接続されたどのリクエスタ104も、例えばこのプロバイダ102に関係している、ステイオンラインバインディング1120を提供していなかったとしたら、プロバイダ102は当面ネットワーク110から切断されても良い。これは、切断されたデバイスを整理することにかかわる難問を除去する可能性があり、この理由は、この判断を行わせる能力が、プロバイダに自身のサービスが必要とされていない時に、ネットワークから接続を切ることができるようにする可能性があるからである。
図10は、介在アクセスノードネットワーク110と通信しているプロバイダ102の、方法1200の一実施形態のフローチャートである。プロバイダ102は、介在アクセスノードネットワーク110に接続1202する。プロバイダ102が介在アクセスノードネットワーク110に接続1202された後、プロバイダ102は、プロバイダ102が提供1210する任意のバインディング112を表す、任意のステイオンラインバインディング320が介在アクセスノードネットワーク110上に存在するかどうかを判断1206する。プロバイダ102が、プロバイダ102により提供された少なくとも1つのバインディング112を特定するステイオンラインバインディング320が存在するということを判断1206した場合は、プロバイダ102は自身のバインディング112をネットワーク110に提供1210する。プロバイダ102が、プロバイダ102により提供された1210少なくとも1つのバインディング112を特定する如何なるステイオンラインバインディング320も存在しないということを判断1206した場合は、プロバイダ102は介在アクセスノードネットワーク110から切断1214する。代わりの実施形態の中では、判断1206は、コネクションレスプロトコルを用い、ネットワーク1202への接続に先行する。
プロバイダ102が自身のバインディング112を提供1210した後、プロバイダ102はステイオンラインバインディング320が依然として存在するかどうかを判断する1206前に一定の間待ってもよい1212。加えて、プロバイダ102は、ネットワーク100から切断1214した後、ネットワーク100に再接続1202し、利用可能なステイオンラインバインディング320が存在するかどうかを判断1206する前に、一定の間待ってもよい1216。これらの時間間隔は、同じ時間間隔でもよいし、長さが異なってもよい。
図11は、ネットワーク100の中でプロバイダ102と通信を確立する、リクエスタ104の方法1300についての一実施形態のフローチャートである。リクエスタ104は、ネットワーク100に接続1302する。リクエスタ104は、どのバインディング112が必要なのかを判断1304する。例えば、リクエスタ104は、サービス108からのデータが必要だということを判断1304する。リクエスタ104は、次に、このデータを取得するためにどのバインディング112が必要なのかを判断1304する。
リクエスタ104は、新たなステイオンラインバインディング320をパッケージング1306する。新たなステイオンラインバインディング320のパッケージング1306は、ステイオンライン識別子であるインターフェースID322を伴う適切なオブジェクトID114をパッケージング1306することを含んでいる。新たなステイオンラインバインディング320のパッケージング1306はまた、以下で論じられるように、以前にパッケージングされたか又はもはや要求されないステイオンラインバインディング320をパッケージング1306しないことも含んでもよい。
リクエスタ104は、ステイオンラインバインディング320を提供1308する。ステイオンラインバインディング320の提供1308は、ネットワーク100を通してステイオンラインバインディング320を送信することを含んでもよい。リクエスタ104は、プロバイダ102からバインディング112を受信1312する。リクエスタ104は、少なくとも1つのステイオンラインバインディング320を削除するかどうかを判断1314する。リクエスタ104が少なくとも1つのステイオンラインバインディング320を削除すべきでないと判断1314した場合は、リクエスタ104は、再度どのバインディング112が必要なのかを判断する前に、ある時間間隔の間待ってもよい1322。リクエスタ104が少なくとも1つのステイオンラインバインディング320を削除すべきと判断1314した場合は、リクエスタ104はこのステイオンラインバインディング320を削除1316する。本実施形態の中では、リクエスタ104は、もはや必要のないステイオンラインバインディング320のみを削除1316する。例えば、リクエスタ104が所望のサービス108を受けた後、リクエスタ104はもはやバインディング112を必要としなくてもよく、従って、このサービス108に対するステイオンラインバインディング320を削除1316する。
リクエスタ104は、任意の残っているバインディング112が必要かどうかを判断1318してもよい。リクエスタ104が、必要とする残りのバインディング112があると判断1318した場合は、リクエスタ104は再度どのバインディング112が必要なのかを判断1304する。リクエスタ104が必要とする残りのバインディング112は無いと判断1304した場合は、リクエスタ104はある時間間隔の間待ち1320、再度どのバインディング112が必要なのかを判断1304する。
図12は、コンピュータデバイス又は埋め込みデバイスの一実施形態の中で用いられてもよい、ハードウエアコンポーネントのブロック図である。コンピュータデバイス及び/又は埋め込みデバイスは、プロバイダ、リクエスタ、及び/又は介在アクセスノードとして用いられてもよい。CPU1410すなわちプロセッサは、バス1412を介してCPU1410と連結されている、このデバイスの中の他のコンポーネントも含め、デバイス1402の動作を制御するために用意されてもよい。CPU1410は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、又は技術的に知られている他のデバイスとして実現されてもよい。CPU1410は、論理及び演算処理をメモリ1414の中に格納されたプログラムコードに基づいて実行する。特定の実施形態の中では、メモリ1414は、CPU1410に付属している内蔵メモリであってもよい。例えば、マイクロコントローラはしばしば一定の規模の内蔵メモリを含んでいる。
コンピュータデバイス又は埋め込みデバイス1402はまた、ネットワークインターフェース1416を含んでもよい。ネットワークインターフェース1416は、デバイス1402とネットワーク100に接続された他のデバイスとの間の通信を容易にする。ネットワーク100は、ポケットベルネットワーク、携帯電話ネットワーク、グローバル通信ネットワーク、インターネット、コンピュータネットワーク、電話ネットワーク等であってもよい。ネットワークインターフェース1416は、適用可能なネットワーク100のための、標準プロトコルに従って動作する。
デバイス1402はまた、メモリ1414を含んでいる。メモリ1414は、一時的なデータを格納するランダムアクセスメモリ(RAM)を含んでもよい。その代わりに、又はこれに加えて、メモリ1414は、固定コード及び構成データなどの、より恒久的なデータを格納する読み取り専用メモリ(ROM)を含んでもよい。メモリ1414はまた、ハードディスクドライブのような磁気記憶装置として具現されてもよい。メモリ1414は、電子的な情報を格納することができる如何なるタイプの電子デバイスであってもよい。
デバイス1402はまた、他のデバイスとの通信を容易にする通信ポート1418を含んでもよい。デバイス1402は同様に、例えば、キーボード、マウス、ジョイスティック、タッチスクリーン、モニタ、スピーカ、プリンタなどの、入力/出力デバイス1420を含んでもよい。
本発明のシステム及び方法は、さまざまな状況の中で用いられる。図13は、本発明のシステム及び方法を実施しても良い、システムの一実施形態を例示している。図13は、照明コントローラシステム1508を含む、照明システム1200の一実施形態を例示しているブロック図である。図13の照明システム1500は、家庭の中のさまざまな部屋の中に組み込んでもよい。例示されたように、照明システム1500は、部屋A1502、部屋B1504、及び部屋C1506を含んでいる。3つの部屋が図13の中に示されているが、照明システム1500は家、居住施設、又は他の環境の中の如何なる数の部屋に及び多様な部屋の中に組み込まれてもよい。
照明コントローラシステム1508は、照明システム1500内の追加の埋め込みシステム及びコンポーネントを監視し、制御してもよい。一実施形態の中では、部屋A1502及び部屋B1504はそれぞれスイッチコンポーネント1514、1518を含んでいる。スイッチコンポーネント1514、1518は、同様に、二次的な埋め込みシステム1516、1520を含んでもよい。二次的な埋め込みシステム1516、1520は、照明コントローラシステム1508から命令を受信しても良い。二次的な埋め込みシステム1516、1520は、この後、これらの命令を実行する。これらの命令には、多様な照明コンポーネント1510、1512、1522、1524を電源オン又は電源オフすることを含んでもよい。これらの命令には、また、多様な照明コンポーネント1510、1512、1522、1524の明るさを落としたり増したりすることを含んでいる。この命令には更に、多様な照明コンポーネント1510、1512、1522、1524の明るさをさまざまなパターンで変化させることを含んでもよい。二次的な埋め込みシステム1516、1520は、照明コントローラシステム1508が、部屋A1502及び部屋B1504の中に配置された各照明コンポーネント1510、1512、1522、1524を監視及び制御することを容易にする。
照明コントローラシステム1508はまた、描かれた部屋C1506の中で、二次的な埋め込みシステム1528を含む照明コンポーネント1526に直接命令を提供してもよい。照明コントローラシステム1508は、二次的な埋め込みシステム1528に命令して、独立した照明コンポーネント1526を電源オン又は電源オフしても良い。同様に、照明コントローラシステム1508から受信される命令は、この独立した照明コンポーネント1526の明るさを落すか、又は明るさを増すことを含んでもよい。
照明コントローラシステム1508はまた、照明システム1500の中の独立した照明コンポーネント1530、1532を監視したり、これらに直接命令を提供しても良い。これらの命令は、前に述べたような同様の命令を含んでもよい。
図13の実施形態の中では、照明コンポーネント1510、1512、1522、1524、1526、1530、1532は、プロバイダとして扱われてもよい。これらのコンポーネントは、照明コンポーネントがオン若しくはオフか、又は現在若しくは過去にこの照明コンポーネントを通過したワット量などの、これら照明コンポーネントの状態に関するデータを提供しても良い。同様に、二次的な埋め込みシステム1516、1520、1528は、プロバイダ及びリクエスタの両方として働いてもよい。例えば、二次的な埋め込みシステム1516、1520、1528は、照明コンポーネント1510、1512、1522、1524、1526、1530、1532からのデータ又はサービスを要求しても良い。二次的な埋め込みシステム1516、1520、1528は同様に、照明コンポーネント1510、1512、1522、1524、1526、1530、1532から受信したデータを、リクエスタとして行動する照明コントローラシステム1508に提供しても良い。
図14は、本発明のシステム及び方法を実施しても良いシステムの、追加的な一実施形態である。図14は、セキュリティシステム1600を例示しているブロック図である。例示された実施形態の、セキュリティシステム1600は、部屋A1602、部屋B1604、及び部屋C1606の中で実装されている。これらの部屋は、家又は他の囲まれた環境の領域の中にあってもよい。セキュリティシステム1600はまた、部屋A、B、C、1602、1604、1606がそれぞれ領域又は境界を表すオープンな環境の中に実装されてもよい。
セキュリティシステム1600は、セキュリティコントローラシステム1608を含んでいる。セキュリティコントローラシステム1608は、システム1600の中のさまざまなコンポーネントからの情報を監視及び受信する。例えば、モーションセンサ1614、1618が二次的な埋め込みシステム1616、1620を含んでもよい。モーションセンサ1614、1618は、動きに関して近接空間を監視し、且つ、二次的な埋め込みシステム1616、1620を介して動きが検出された時にセキュリティコントローラシステム1608に警報を出してもよい。セキュリティコントローラシステム1608はまた、システム1600内の多様なコンポーネントに対して命令を提供しても良い。例えば、セキュリティコントローラシステム1608は、二次的な埋め込みシステム1616、1620に命令を提供して、窓センサ1610、1622及びドアセンサ1612、1624を電源オン又は電源オフしても良い。一実施形態では、二次的な埋め込みシステム1616、1620は、窓センサ1610、1622が窓の動きを検出した時にセキュリティコントローラシステム1608に通知する。同様に、二次的な埋め込みシステム1616、1620は、ドアセンサ1612、1624がドアの動きを検出した時に、セキュリティコントローラシステム1608に通知する。二次的な埋め込みシステム1616、1620は、モーションセンサ1614、1618に指示して、モーションセンサ1614、1618の中に位置するLED(図示せず)を起動する。
セキュリティコントローラシステム1608はまた、システム1600内の独立したコンポーネント1626を監視し且つこれに直接命令を提供してもよい。例えば、セキュリティコントローラシステム1608は、モーションセンサ1630又は窓センサ1632を監視し、電源オン又は電源オフするための命令をこれらに提供しても良い。セキュリティコントローラシステム1608は同様に、モーションセンサ1630及び窓センサ1632に命令して、センサ1630、1632の中で、LED(図示せず)を点灯させるか、又は音声警報通知を起動させてもよい。
システム1600を構成しているそれぞれの個別コンポーネントはまた、二次的な埋め込みシステムを含んでもよい。例えば、図14は二次的な埋め込みシステム1628を含んでいるドアセンサ1626を例示している。セキュリティコントローラシステム1608は、前に説明したのと同様な方法で、二次的な埋め込みシステム1628に対し監視と命令の提供を行ってもよい。
図14の実施形態の中では、センサ1610、1612、1622、1624、1626、1630、1632は、プロバイダとして取り扱われてもよい。これらのセンサ1610、1612、1622、1624、1626、1630、1632は、これらの状態に関するデータを提供してもよい。例えば、窓センサ1610、1622、1632は、これらが開いているか閉じているかに関するデータを提供しても良い。同様に、二次的な埋め込みシステム1616、1620、1628は、プロバイダ及びリクエスタの両方として作動してもよい。例えば、二次的な埋め込みシステム1616、1620、1628は、センサ1610、1612、1622、1624、1626、1630、1632からのデータ又はサービスを要求しても良い。二次的な埋め込みシステム1616、1620、1628はまた、センサ1610、1612、1622、1624、1626、1630、1632から受信したデータを、リクエスタとして作動するセキュリティコントローラシステム1608に提供しても良い。
図15は、ホームシステム1700の一実施形態を例示しているブロック図である。ホームシステム1700は、例えば、照明システム1500、セキュリティシステム1600等の、多様なシステムの監視を容易にするホームコントローラ1708を含んでいる。ホームシステム1700は、ユーザがさまざまなコンポーネント及びシステムを1つ以上の埋め込みシステムを通して制御することを可能にする。一実施形態の中では、ホームコントローラシステム1708は、先に図13及び14に関連して説明したのと同様な方法で、監視及び情報を提供する。描かれた実施形態の中では、ホームコントローラ1708は、暖房コンポーネント1724に二次的な埋め込みシステム1720を介して命令を提供する。暖房コンポーネント1724は、居住している場所やオフィスで通常見られる加熱炉又は他の暖房デバイスを含んでもよい。ホームコントローラ1708は暖房コンポーネント1724を電源オン又は電源オフするための命令を、二次的な埋め込みシステム1720を介して提供しても良い。
同様に、ホームコントローラ1708は、冷房コンポーネント1730のような、ホームシステム1700内のコンポーネントを監視し、これに直接命令を提供しても良い。冷房コンポーネント1730は、居住場所又はオフィスで通常見られるエアコン又は他の冷房デバイスを含んでもよい。中央ホームコントローラ1708は、冷房コンポーネント1730に命令して、中央埋め込みシステム1708により収集された温度測定値に基づいて電源オン又は電源オフしても良い。ホームシステム1700は、図13及び14に関連して前に説明されたのと同様なやり方で機能する。
図15の実施形態の中では、窓センサ1710、ドアセンサ1712、暖房コンポーネント1724、冷房コンポーネント1730、及び照明コンポーネント1722、1726、1732は、プロバイダとして扱ってもよい。これらのエレメント1710、1712、1722、1724、1726、1730、1732は、これらの状態に関するデータを提供しても良い。例えば、暖房及び冷房コンポーネント1724、1730は、これらのそれぞれの部屋1704、1706の中の現在の温度に関するデータを提供しても良い。暖房及び冷房コンポーネント1724、1730は、これがオンなのかオフなのか、これの最近の電力使用量、任意のシステムエラー等のコンポーネント状態に関するデータを提供しても良い。同様に、二次的な埋め込みシステム1716、1720、1728は、プロバイダ及びリクエスタの両方として働いてもよい。例えば、二次的な埋め込みシステム1716、1720、1728は、これらのエレメント1710、1712、1722、1724、1726、1730、1732からのデータ又はサービスを要求しても良い。
二次的な埋め込みシステム1716、1720、1728はまた、エレメント1710、1712、1722、1724、1726、1730、1732から受信したデータを、リクエスタとして動くホームコントローラシステム1708に提供しても良い。
多くのタイプの埋め込みデバイスが存在し、ネットワークを創出する多くの理由が存在する。デバイスネットワーキングアプリケーションのいくつかの実施例が説明されるであろう。当業者には、論じられるこれらの実施例は網羅的ではないということが理解されるであろう。
デバイスネットワーキングアプリケーションの1つの例は、遠隔監視である。多くの有用なデバイスネットワークの中には、遠隔監視、すなわちあるノードから他のノードへの一方通行の情報転送が含まれる。これらのアプリケーションの中では、プロバイダは典型的には、特定の情報をリクエスタに応えて報告する小さなサーバとして動作する。プロバイダはまた、これらの状態情報を加入者に公開するように設定されることも可能である。リクエスタは、定期的な報告を頼むか、おそらくは、更新がどのような頻度で送信されるべきかを制限する何らかの手段を伴って、状態が変わったらいつでも更新することを頼んでもよい。プロバイダは、或るイベント又は例外的な状況が起こった時にリクエスタに通知するように設定することができる。
デバイスネットワーキングアプリケーションの他の例は、リクエスタがプロバイダにコマンドを送信して特定の動作を起動することができる、遠隔制御である。殆どの場合、遠隔制御はある種のフイードバックを含む。
更なるデバイスネットワーキングアプリケーションの例は、分散制御システムである。個別のプロバイダに関連する機能及びデータは、ネットワークを通して結合及び調整されて、付加的な価値を提供する分散システムを生み出す。ときどき、これらの分散制御システムは多かれ少なかれ自動的に確立され得る。多くの場合、より精巧なデバイスがピア・ツー・ピアネットワークに加入して、構成、監視、又は診断の任務を実行する。このようなシステムは、ピア同士として又はマスタ−スレーブ構成を通して通信するオブジェクトにより作り出されてもよく、この中では、システム内の各オブジェクトは、全ての制御ロジックを含んでいる単一の中央ノードと通信する。
ネットワーキングアプリケーションの各カテゴリに伴って、リクエスタがプロバイダに接続する多様な方法が存在する。比較的関与するプロバイダ数が少ない場合、リクエスタは、よりインタラクティブなやり方で、又はあまりインタラクティブでないやり方で、ウエブブラウザ、ページャ、又はWAPイネーブル式の携帯電話を用いて、プロバイダと通信しても良い。しかしながら、プロバイダの数が増えてくるにつれ、これらの方法は機能しなくなる可能性があり、リクエスタは、表計算ソフト又はデータベースアプリケーションのような、より一般的なデータ管理手法を採用するかもしれない。
長い間に、さまざまな且つ異なる技術を伴うネットワークが導入されて来るにつれ、それぞれが独自のプロトコルを用い且つ他と通信できない多くのネットワークが、同じ家又は施設の中に存在するという状況が起こってくる。この場合、さまざまなネットワーク及びプロトコルをブリッジして単一の、より大きなネットワークを作り出すことができる。こうすることにより、単一のアプリケーションが各プロバイダにアクセスすることが可能となり、全てのプロバイダとの相互交流を単純化することができる。
情報及び信号は、任意の多様な異なる技術及び技法を用いて表してもよい。例えば、上の記述全体を通して参照される、データ、命令、コマンド、情報、信号、ビット、シンボル、及びチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光粒子、又は任意のこれらの組み合わせにより表されてもよい。
この中で開示された実施形態に関係して説明された、さまざまな例示的な論理ブロック、モジュール、回路、及びアルゴリズムステップは、電子的なハードウエア、コンピュータソフトウエア、又は両者の組み合わせとして実施しても良い。ハードウエア及びソフトウエアのこの互換性を明確に例示するために、さまざまな例示的なコンポーネント、ブロック、モジュール、回路、及びステップが、上記では概してこれらの機能性の観点から説明された。このような機能性をハードウエアとソフトウエアのどちらで実施するかは、この特定のアプリケーションと、システム全体に課せられた設計上の制約に依存する。当業者ならば、各アプリケーションに対して、説明された機能性を多様な方法で実施するかも知れないが、このような実施の決定は、本発明の範囲からの離脱を起こすものと解釈されるべきではない。
ここで開示された実施形態に関連して説明されたさまざまな例示的な論理ブロック、モジュール、及び回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)信号若しくは他のプログラマブルな論理デバイス、離散ゲート若しくはトランジスタロジック、離散ハードウエアコンポーネント、又は、ここで説明された機能を実行するために設計された任意のこれらの組み合わせと共に実施若しくは実行されてもよい。汎用プロセッサは、マイクロプロセッサであってもよいが、別の方法では、このプロセッサは任意の従来型のプロセッサ、コントローラ、マイクロコントローラ、又は状態機械であってもよい。プロセッサはまた、例えば、DSP及びマイクロプロセッサ、複数のマイクロプロセッサ、DSPコアと連動する1つ以上のマイクロプロセッサ、又は任意の他のこのような構成として実施されてもよい。
この中で開示された実施形態に関連して説明された方法又はアルゴリズムのステップは、ハードウエア、プロセッサにより実行されるソフトウエアモジュール、又はこれら2つの組み合わせで直接具体化されてもよい。ソフトウエアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、又は技術的に知られた任意の他の記憶媒体の中に常駐しても良い。典型的な記憶媒体は、プロセッサに接続され、プロセッサがこの記憶媒体からの情報の読み取り及びこれへの情報の書き込みができるようにする。代替として、記憶媒体はプロセッサと一体化していてもよい。プロセッサ及び記憶媒体は、ASICの中に在ってもよい。ASICは、ユーザ端末の中に在ってもよい。別の方法では、プロセッサ及び記憶媒体は個別コンポーネントとしてユーザ端末の中に在ってもよい。
この中で開示された方法は、この説明された方法を実現するための1つ以上のステップ又は動作を含んでいる。これらの方法ステップ及び/又は動作は、本発明の範囲から離れることなく、互いに入れ替えてもよい。言い換えれば、実施形態の適正な運用のためにステップ及び/又は動作の特定の順番が要求されない限り、順番及び/又は特定のステップ及び/又は動作の使用は、本発明の範囲から離れることなく修正しても良い。
本発明の特定の実施形態及びアプリケーションが例示されたが、本発明はこの中で開示された正確な構成及びコンポーネントに限定されないということが理解されるべきである。当業者には明白となるであろう多様な修正、変更、及び変形物は、この中で開示された本発明の方法及びシステムの配置、運用、及び詳細に対し、本発明の精神及び範囲から離れることなく成されてもよい。