(57)【要約】      （修正有）【解決手段】システムは、第１の１つ以上のノードにおいて利用可能なサービスの第１のリストを含む第１のサービスレジストリと、第２の１つ以上のノードにおいて利用可能なサービスの第２のリストを含む第２のサービスレジストリとを含む。第２のサービスレジストリは、第１のサービスレジストリに接続されている。システムは、１つ以上のサービスのセットを通じて実現されるケイパビリティを管理し、第１のサービスレジストリに接続し、第２のサービスレジストリに含まれるサービスの第２のリスト内の変更を示す通知を第１のサービスレジストリから受信し、通知の受信に応じて、ケイパビリティのための新たなサービスの配置を開始し、又はシステム内の新たなサービスの配置されたインスタンスを発見するように構成されるサービスマネージャをさらに含む。【効果】ケイパビリティのための新たなサービスの配置を開始又はインスタンスを発見する。【選択図】なし【特許請求の範囲】
【請求項１】
システムであって、
前記システムの第１の１つ以上のノードにおいて利用可能なサービスの第１のリストを含む第１のサービスレジストリを維持するように構成される第１のロジックと、
前記システムの第２の１つ以上のノードにおいて利用可能なサービスの第２のリストを含む第２のサービスレジストリであって、前記第１のサービスレジストリに接続されている前記第２のサービスレジストリを維持するように構成される第２のロジックと、
サービスマネージャを実装する第３のロジックであって、
前記システムのケイパビリティであって、１つ以上のサービスのセットを通じて実現される前記ケイパビリティを管理し、
１つ以上のサービスの前記セットのうちの少なくとも１つのサービスに関与する変更を前記サービスマネージャに通知せよという指示を含む加入要求を前記第１のサービスレジストリへ送信し、
前記第１のサービスレジストリに接続し、
前記第２のサービスレジストリに含まれるサービスの前記第２のリスト内の変更を示す通知を前記第１のサービスレジストリから受信し、
前記通知の受信に応じて、前記ケイパビリティのための新たなサービスの配置を開始し、又は、前記システム内の前記新たなサービスの配置されたインスタンスを発見する
ように構成される前記第３のロジックと、
を含み、
前記第１のサービスレジストリは、
前記加入要求を記録し、
前記加入要求を前記第２のサービスレジストリへ転送する
ようにさらに構成され、
前記第２のサービスレジストリは、
前記加入要求に基づいて前記通知を送信する
ようにさらに構成される、
システム。
【請求項２】
前記通知は、
前記第２のサービスレジストリから特定のサービスが除去されたことの標識と、
前記第２のサービスレジストリに前記特定のサービスが追加されたことの標識と、
前記特定のサービスに関連付けられている属性が変更されたことの標識と、
のうちの少なくとも１つを含む、
請求項１のシステム。
【請求項３】
前記サービスマネージャは、
前記システムにおいて利用可能な前記新たなサービスの前記配置されたインスタンスを発見し、
前記システム内の前記新たなサービスの前記配置されたインスタンスの発見に応じて、発見された前記配置されたインスタンスを前記ケイパビリティに関連付ける
ようにさらに構成される、
請求項１のシステム。
【請求項４】
前記サービスマネージャは、
前記新たなサービスのいずれの配置されたインスタンスも前記システムにおいて利用可能ではないと判定し、
前記新たなサービスのいずれの配置されたインスタンスも前記システムにおいて利用可能ではないという判定に応じて、前記ケイパビリティのための前記新たなサービスについての配置を開始する
ようにさらに構成される、
請求項１のシステム。
【請求項５】
前記サービスマネージャは、
前記ケイパビリティについての要求をクライアントから受信し、
１つ以上のサービスの前記セットであって、当該セットを通じて前記ケイパビリティが実現される、当該セットのうちの特定の１つが前記システム内に配置されていないと判定し、
前記第１のサービスレジストリ又は前記第２のサービスレジストリの少なくとも１つから取得される情報に基づいて、配置ノードを選択し、
受信される前記要求に基づいて、１つ以上のサービスの前記セットのうちの前記特定の１つを配置するように、選択される前記配置ノードに指示する
ようにさらに構成される、
請求項１のシステム。
【請求項６】
コンピュータ装置により、システムのケイパビリティを実現することに関連付けられているサービスのリストを受信することと、
前記コンピュータ装置により、サービスの前記リスト内のサービスについての加入要求であって、前記サービスに関与する変更を前記コンピュータ装置に通知せよという指示を含む前記加入要求を、第１のサービスレジストリへ送信することと、
前記第１のサービスレジストリにより、前記加入要求を第２のサービスレジストリへ転送することと、
前記コンピュータ装置により、前記サービスに関連付けられている第１のサービス通知を、前記第１のサービスレジストリを介して前記第２のサービスレジストリから受信することと、
前記第１のサービス通知は、前記第２のサービスレジストリに関連付けられている第１のノードに前記サービスが配置可能であることの標識、又は、前記システム内に前記サービスが配置されていることの標識を含むことと、
前記コンピュータ装置により、前記第１のサービス通知の受信に応じて、前記第１のノードでの前記サービスの配置を開始し、又は、前記システム内の前記サービスの配置されたインスタンスを発見することと、
を含む方法。
【請求項７】
前記第１のサービス通知は、前記第２のサービスレジストリに関連付けられている第１のノードに前記サービスが配置可能であることの前記標識を含み、
前記方法は、
前記第１のサービス通知の受信に応じて、前記第１のノードでの前記サービスの前記配置を開始すること、
をさらに含む、請求項６の方法。
【請求項８】
前記第１のサービス通知は、前記システム内に前記サービスが配置されていることの前記標識を含み、
前記方法は、
前記第１のサービス通知の受信に応じて、前記システム内の前記サービスの前記配置されたインスタンスを発見すること、
をさらに含む、請求項６の方法。
【請求項９】
前記サービスに関連付けられている第２のサービス通知であって、前記第２のサービスレジストリに関連付けられている前記第１のノードで前記サービスがもはや利用可能ではないことの標識を含む前記第２のサービス通知を、前記第１のサービスレジストリを介して前記第２のサービスレジストリから受信することと、
前記サービスが配置可能である第２のノードを識別することと、
前記第２のノードの識別に応じて、前記第２のノードでの前記サービスの配置を開始することと、
をさらに含む、請求項６の方法。
【請求項１０】
前記サービスに関連付けられている第２のサービス通知であって、前記第２のサービスレジストリに関連付けられている前記第１のノードに前記サービスがもはや配置可能ではないことの標識を含む前記第２のサービス通知を、前記第１のサービスレジストリを介して前記第２のサービスレジストリから受信することと、
前記システム内のいずれの他のノードにも前記サービスが配置可能ではないと判定することと、
前記システム内のいずれの他のノードにも前記サービスが配置可能ではないという判定に応じて、管理者へ警告を送信することと、
をさらに含む、請求項６の方法。
【請求項１１】
特定のサービスについての要求を、前記システム内の要求ノードから受信することと、
前記特定のサービスが前記システム内に配置されていないと判定することと、
前記第１のサービスレジストリ又は前記第２のサービスレジストリの少なくとも１つに基づいて、配置ノードを選択することと、
受信される前記要求に基づいて、選択される前記配置ノードに前記特定のサービスを配置することと、
をさらに含む、請求項６の方法。
【請求項１２】
システム内のコンピュータ装置により実行される方法であって、
前記コンピュータ装置により、前記システムの第１の１つ以上のノードにおいて利用可能なサービスの第１のリストを含む第１のサービスレジストリを維持することと、
前記コンピュータ装置により、特定のサービスにおける変更に関連する通知を受信せよという要求を含む加入要求を、サービスマネージャから受信することと、
前記コンピュータ装置により、前記第１のサービスレジストリ内に前記加入要求を記録することと、
前記コンピュータ装置により、前記システムの第２の１つ以上のノードにおいて利用可能なサービスの第２のリストを含む第２のサービスレジストリへ前記加入要求を送信することと、
を含み、
サービスの前記第２のリストは、前記特定のサービスを含み、
前記第２のサービスレジストリは、前記第１のサービスレジストリに接続されている、
方法。
【請求項１３】
前記特定のサービスにおける変更に関連する情報を含むサービス通知を前記第２のサービスレジストリから受信することと、
前記サービス通知を前記サービスマネージャへ転送することと、
をさらに含む、請求項１２の方法。
【請求項１４】
サービスの前記第１のリスト内に列挙されるサービスに前記加入要求が関連付けられていると判定することと、
前記サービスを前記加入要求に関連付けることと、
前記サービスにおける変更を検出することと、
前記サービスを前記加入要求に関連付けることに基づいて、前記サービスにおける前記変更の検出に応じて、前記サービスマネージャへ通知を送信することと、
をさらに含む、請求項１２の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、サービス指向アーキテクチャシステムにおけるケイパビリティ監視に関する。
【背景技術】
【０００２】
ネットワーク装置は、ネットワークを通じて通信し、一連の様々なサービスを提供するシステムの一部を形成し得る。異なる装置が、異なる時間に異なるサービスを提供し得る。上記システムは、どのサービスがどの装置で利用可能であるかを記録する必要があり得る。
【発明の概要】
【０００３】
一形態によれば、システムは、上記システムの第１の１つ以上のノードにおいて利用可能なサービスの第１のリストを含む第１のサービスレジストリを維持するように構成される第１のロジックと、上記システムの第２の１つ以上のノードにおいて利用可能なサービスの第２のリストを含む第２のサービスレジストリであって、上記第１のサービスレジストリに接続されている上記第２のサービスレジストリを維持するように構成される第２のロジックと、サービスマネージャを実装する第３のロジックであって、上記システムのケイパビリティであって、１つ以上のサービスのセットを通じて実現される上記ケイパビリティを管理し、上記第１のサービスレジストリに接続し、上記第２のサービスレジストリに含まれるサービスの上記第２のリスト内の変更を示す通知を上記第１のサービスレジストリから受信し、上記通知の受信に応じて、上記ケイパビリティのための新たなサービスの配置を開始し、又は、上記システム内の上記新たなサービスの配置されたインスタンスを発見するように構成される上記第３のロジックと、を含む。
【０００４】
このシステムの見込まれる利点は、特定のサービス及び／又は特定のサービス属性を要求するケイパビリティが、多数の装置及びサービスを伴う動的なサービス指向アーキテクチャ（ＳＯＡ）システムにおいて効率的に管理され、その結果、処理時間が減少するという技術的効果がもたらされる、ということである。例えば、上記システムは、サービスがオフラインになる若しくは利用不能になる、又は新たなサービスが上記システムに追加されるなどの変更に、自動的に反応できる。このシステムの別の見込まれる利点は、当該システムは分散化され、単一点障害（single  point  failure）がないということである。上記システムは、上述したものと比べて、より少ない利点、異なる利点、又は追加の利点を含み得る。
【０００５】
さらに、上記通知は、上記第２のサービスレジストリから特定のサービスが除去されたことの標識と、上記第２のサービスレジストリに上記特定のサービスが追加されたことの標識と、上記特定のサービスに関連付けられている属性が変更されたことの標識と、のうちの少なくとも１つを含み得る。除外されたサービス、追加されたサービス、又はサービス属性の変更の通知を受信することは、上記サービスマネージャに、上記ケイパビリティに関連付けられているサービスにおける変更に反応することを可能にし得る。
【０００６】
さらに、上記サービスマネージャは、１つ以上のサービスの上記セットのうちの少なくとも１つのサービスに関与する変更を上記サービスマネージャに通知せよという指示を含む加入要求を上記第１のサービスレジストリへ送信するように、構成され得る。上記第１のサービスレジストリは、上記加入要求を記録し、上記加入要求を上記第２のサービスレジストリへ転送するようにさらに構成され得る。上記第２のサービスレジストリは、上記加入要求に基づいて上記通知を送信するようにさらに構成され得る。加入要求を上記第１のサービスレジストリへ送信することは、上記サービスマネージャに、サービスのステータスを監視する必要もなくサービスについての更新を受信することを可能にし得る。
【０００７】
さらに、上記通知は、上記システムの上記第２の１つ以上のノードのうちの少なくとも１つにおいて検出される障害に応じて送信され得る。ノードの障害は、当該ノードにより提供されるサービスが利用不能になることをもたらし得る。上記障害に応じて上記通知を送信することは、上記ノードにより提供されるサービスが利用不能であることを上記サービスマネージャに警告し得る。
【０００８】
さらに、上記サービスマネージャは、上記通知の受信に応じて、上記ケイパビリティを十分に実現できないと判定し、上記ケイパビリティを十分に実現できないという判定に応じて、警告を管理者へ送信するように、さらに構成される。警告を上記管理者へ送信することは、例えば上記ケイパビリティにより要求されるサービスを提供する予備のノードをオンラインにすることにより上記ケイパビリティを実現させることを上記サービスマネージャに可能にする行動を管理者にとらせることを可能にし得る。
【０００９】
さらに、上記サービスマネージャは、上記システムにおいて利用可能な上記新たなサービスの上記配置されたインスタンスを発見し、上記システム内の上記新たなサービスの上記配置されたインスタンスの発見に応じて、発見された上記配置されたインスタンスを上記ケイパビリティに関連付けるように、さらに構成され得る。配置されているサービスインスタンスを発見することは、さらなるシステムリソースを消費して上記サービスの他のインスタンスを配置することもなく上記ケイパビリティを実現することを、上記サービスマネージャに可能にする。
【００１０】
さらに、上記サービスマネージャは、上記新たなサービスのいずれの配置されたインスタンスも上記システムにおいて利用可能ではないと判定し、上記新たなサービスのいずれの配置されたインスタンスも上記システムにおいて利用可能ではないという判定に応じて、上記ケイパビリティのための上記新たなサービスについての配置を開始するように、さらに構成され得る。上記サービスのインスタンスを配置することは、上記サービスのいずれの配置されたインスタンスも利用可能ではない場合に上記ケイパビリティを実現することを、上記サービスマネージャに可能にする。
【００１１】
さらに、上記サービスマネージャは、上記ケイパビリティについての要求をクライアントから受信し、１つ以上のサービスの上記セットであって、当該セットを通じて上記ケイパビリティが実現される、当該セットのうちの特定の１つが上記システム内に配置されていないと判定し、上記第１のサービスレジストリ又は上記第２のサービスレジストリの少なくとも１つから取得される情報に基づいて、配置ノードを選択し、受信される上記要求に基づいて、１つ以上のサービスの上記セットのうちの上記特定の１つを配置するように、選択される上記配置ノードに指示する、ようにさらに構成され得る。配置ノードを選択し、上記サービスを配置するように当該配置ノードに指示することは、上記ケイパビリティのための要求される上記サービスが上記システム内に配置され利用可能であることを保証することを上記サービスマネージャに可能にする。
【００１２】
さらに、管理される上記ケイパビリティのための上記新たなサービスの配置を開始する場合に、上記サービスマネージャは、上記第２のサービスレジストリに含まれるサービスの上記第２のリストにおける変更が、１つ以上のサービスの上記セットのうちの少なくとも１つが配置されないことに対応するか、を判定し、１つ以上のサービスの上記セットのうちの上記少なくとも１つが利用可能である特定のノードを識別し、１つ以上のサービスの上記セットのうちの上記少なくとも１つを上記特定のノードに配置するように、識別される上記ノードに指示する、ようにさらに構成され得る。配置ノードを選択し、上記サービスを配置するように上記配置ノードに指示することは、上記ケイパビリティのための要求される上記サービスが上記システム内に配置され利用可能であることを保証することを上記サービスマネージャに可能にする。
【００１３】
他の形態によれば、コンピュータ装置により実行される方法は、上記コンピュータ装置により、システムのケイパビリティを実現することに関連付けられているサービスのリストを受信することと、上記コンピュータ装置により、サービスの上記リスト内のサービスについての加入要求を第１のサービスレジストリへ送信することと、上記コンピュータ装置により、上記サービスに関連付けられている第１のサービス通知を、上記第１のサービスレジストリを介して第２のサービスレジストリから受信することと、上記第１のサービス通知は、上記第２のサービスレジストリに関連付けられている第１のノードに上記サービスが配置可能であることの標識、又は、上記システム内に上記サービスが配置されていることの標識を含むことと、上記コンピュータ装置により、上記第１のサービス通知の受信に応じて、上記第１のノードでの上記サービスの配置を開始し、又は、上記システム内の上記サービスの配置されたインスタンスを発見することと、を含む。
【００１４】
この方法の見込まれる利点は、特定のサービス及び／又は特定のサービス属性を要求するケイパビリティが、多数の装置及びサービスを伴う動的なＳＯＡシステムにおいて効率的に管理され、その結果、処理時間が減少するという技術的効果がもたらされる、ということである。例えば、上記方法は、サービスがオフラインになる若しくは利用不能になる、又は新たなサービスが上記システムに追加されるなどの変更に、自動的に反応できる。この方法の別の見込まれる利点は、単一点障害（single  point  failure）なしの分散化システムが可能になることである。上記方法は、上述したものと比べて、より少ない利点、異なる利点、又は追加の利点を含み得る。
【００１５】
さらに、上記第１のサービス通知は、上記第２のサービスレジストリに関連付けられている第１のノードに上記サービスが配置可能であることの上記標識を含み得る。上記方法は、上記第１のサービス通知の受信に応じて上記第１のノードでの上記サービスの上記配置を開始することをさらに含みえる。配置ノードを選択し、上記サービスを配置するように当該配置ノードに指示することは、上記ケイパビリティのための要求される上記サービスが上記システム内に配置され利用可能であることを保証することにより、上記システムのためになり得る。
【００１６】
さらに、上記第１のサービス通知は、上記システム内に上記サービスが配置されていることの上記標識を含み得る。上記方法は、上記第１のサービス通知の受信に応じて、上記システム内の上記サービスの上記配置されたインスタンスを発見すること、をさらに含み得る。配置されているサービスインスタンスを発見することは、さらなるシステムリソースを消費して上記サービスの他のインスタンスを配置することもなく上記ケイパビリティを実現することにより、上記システムのためになり得る。
【００１７】
さらに、上記方法は、上記サービスに関連付けられている第２のサービス通知であって、上記第２のサービスレジストリに関連付けられている上記第１のノードで上記サービスがもはや利用可能ではないことの標識を含む上記第２のサービス通知を、上記第１のサービスレジストリを介して上記第２のサービスレジストリから受信することと、上記サービスが配置可能である第２のノードを識別することと、上記第２のノードの識別に応じて、上記第２のノードでの上記サービスの配置を開始することと、をさらに含み得る。上記第２のノードを識別し、上記第２のノードでの上記サービスの配置を開始することは、上記サービスを使用しているクライアントへの混乱なしに、上記サービスが上記第１のノードで利用可能であるのをやめた後に、上記サービスが利用可能であり続けることを、もたらし得る。
【００１８】
さらに、上記方法は、上記サービスに関連付けられている第２のサービス通知であって、上記第２のサービスレジストリに関連付けられている上記第１のノードに上記サービスがもはや配置可能ではないことの標識を含む上記第２のサービス通知を、上記第１のサービスレジストリを介して上記第２のサービスレジストリから受信することと、上記システム内のいずれの他のノードにも上記サービスが配置可能ではないと判定することと、上記システム内のいずれの他のノードにも上記サービスが配置可能ではないという判定に応じて、管理者へ警告を送信することと、をさらに含み得る。警告を上記管理者へ送信することは、例えば上記ケイパビリティにより要求されるサービスを提供する予備のノードをオンラインにすることにより上記ケイパビリティを実現させることを上記システムに可能にする行動を管理者にとらせることを可能にし得る。
【００１９】
さらに、上記方法は、上記サービスに関連付けられている第２のサービス通知であって、上記サービスに関連付けられている属性が変わったことの標識を含む上記第２のサービス通知を、上記第１のサービスレジストリを介して上記第２のサービスレジストリから受信することと、上記ケイパビリティに関連付けられている要求を上記サービスがもはや満たさないと判定することと、上記サービスが上記要求をもはや満たさないとの判定に応じて上記第１のノードでの上記サービスの上記配置を終了することと、上記サービスが配置可能な第２のノードを識別することと、上記第２のノードの識別に応じて、上記第２のノードでの上記サービスの配置を開始することと、をさらに含む。上記第２のノードを識別し、上記第２のノードでの上記サービスの配置を開始することは、上記サービスを使用しているクライアントへの混乱なしに、上記第１のノードでのサービス属性が変わった後に、上記サービスが利用可能であり続けることを、もたらし得る。
【００２０】
さらに、上記サービスに関連付けられている上記属性は、利用可能なメモリキャパシティ、上記サービスが配置される上記第１のノードの処理キャパシティ、上記第１のノードの位置、上記第１のノードのカバレッジ、上記第１のノードに関連付けられている環境条件、又は、上記第１のノードに関連付けられている信号品質の測定結果のうちの、少なくとも１つを含み得る。サービスについてのこれらの属性の監視の恩恵は、これらの属性のうちの１つを特定する、要求を伴うケイパビリティに、実現されることを可能にし得る。
【００２１】
さらに、上記方法は、特定のサービスについての要求を、上記システム内の要求ノードから受信することと、上記特定のサービスが上記システム内に配置されていないと判定することと、上記第１のサービスレジストリ又は上記第２のサービスレジストリの少なくとも１つに基づいて、配置ノードを選択することと、受信される上記要求に基づいて、選択される上記配置ノードに上記特定のサービスを配置することと、をさらに含み得る。配置ノードを選択し、上記サービスを配置するように当該配置ノードに指示することは、上記ケイパビリティのための要求される上記サービスが上記システム内に配置され利用可能であることを保証することにより、上記システムのためになり得る。
【００２２】
他の形態によれば、システム内のコンピュータ装置により実行される方法は、上記コンピュータ装置により、上記システムの第１の１つ以上のノードにおいて利用可能なサービスの第１のリストを含む第１のサービスレジストリを維持することと、上記コンピュータ装置により、特定のサービスにおける変更に関連する通知を受信せよという要求を含む加入要求を、サービスマネージャから受信することと、上記コンピュータ装置により、上記第１のサービスレジストリ内に上記加入要求を記録することと、上記コンピュータ装置により、上記システムの第２の１つ以上のノードにおいて利用可能なサービスの第２のリストを含む第２のサービスレジストリへ上記加入要求を送信することと、を含む。サービスの上記第２のリストは、上記特定のサービスを含む。上記第２のサービスレジストリは、上記第１のサービスレジストリに接続されている。
【００２３】
この方法の見込まれる利点は、加入要求が上記システム内の全てのサービスレジストリへ配布されることが保証されることである。上記システム内の全てのサービスレジストリへ加入要求を配布することは、上記システム内のどこかでの上記特定のサービスにおける変更に反応することを、サービスマネージャに可能にする。
【００２４】
さらに、上記方法は、上記特定のサービスにおける変更に関連する情報を含むサービス通知を上記第２のサービスレジストリから受信することと、上記サービス通知を上記サービスマネージャへ転送することと、をさらに含み得る。上記サービスにおける変更の通知を受信することは、上記サービスマネージャに、ケイパビリティに関連付けられているサービスにおける変更に反応することを可能にし得る。
【００２５】
さらに、上記方法は、サービスの上記第１のリスト内に列挙されるサービスに上記加入要求が関連付けられていると判定することと、上記サービスを上記加入要求に関連付けることと、上記サービスにおける変更を検出することと、上記サービスを上記加入要求に関連付けることに基づいて、上記サービスにおける上記変更の検出に応じて、上記サービスマネージャへ通知を送信することと、をさらに含み得る。上記サービスにおける変更の通知を送信することは、上記サービスマネージャに、ケイパビリティに関連付けられているサービスにおける変更に反応することを可能にし得る。
【図面の簡単な説明】
【００２６】
【図１】後述される１つ以上の実施形態に従った例示的な環境を説明するブロック図である。
【図２】図１の装置の例示的なコンポーネントを説明するブロック図である。
【図３】図１の装置の例示的な機能レイヤを説明するブロック図である。
【図４Ａ】図３のサービスレイヤの例示的な機能コンポーネントを説明するブロック図である。
【図４Ｂ】図４Ａのサービスレジストリの機能性を説明するためのブロック図である。
【図４Ｃ】図４Ａのサービスレジストリの例示的な機能コンポーネントを説明するブロック図である。
【図４Ｄ】図４Ａのサービスレジストリにより記憶され得る特定のサービスについての例示的な属性テーブルのブロック図である。
【図５Ａ】図３のオーバレイネットワークレイヤの機能コンポーネントを説明するブロック図である。
【図５Ｂ】例示的な機能オーバレイネットワークのツリーのブロック図である。
【図６】サービスマネージャの機能コンポーネントを説明するブロック図である。
【図７Ａ】図４Ａのサービスレジストリにおいて記憶され得るコンポーネントを説明するブロック図である。
【図７Ｂ】図６のケイパビリティデータベースにおいて記憶され得るコンポーネントを説明するブロック図である。
【図８】本明細書で説明される実装に従ってケイパビリティを管理するための第１のプロセスのフローチャートである。
【図９】本明細書で説明される実装に従ってケイパビリティを管理するための第２のプロセスのフローチャートである。
【図１０】本明細書で説明される実装に従って加入者要求を管理するためのプロセスのフローチャートである。
【図１１】ケイパビリティが実現される例示的なオーバレイネットワークを説明する。
【発明を実施するための形態】
【００２７】
以下の詳細な説明は、添付の図面を参照する。異なる図面における同一の参照番号は、同一の又は類似する要素を識別する。
【００２８】
上述したように、装置のネットワークは、ネットワークを通じて通信し、一連の様々なサービスを提供するシステムの一部を形成し得る。異なる装置が、異なる時間に異なるサービスを提供し得る。上記システムは、どのサービスがどの装置で利用可能であるかを記録する必要があり得る。装置が追加され、除外され、又は修正される場合に、例えば、上記システムの構成が変わる。多数の装置を伴うシステムでは、これは、再構成の頻繁な必要性をもたらし得る。当該頻繁な必要性は、システムリソースを消費する。したがって、異なる装置での利用可能なサービスを記録することは、解決を必要とする技術的な問題であり得る。
【００２９】
セキュリティ監視システムなどのシステムは、上記システム内のノード（例えば、カメラ装置、ストレージ装置、サーバ装置など）のケイパビリティを維持し記録するのにかなりの時間及びリソースをささげる。以下に説明される実施形態は、サービス指向アーキテクチャ（ＳＯＡ）ネットワークにおけるケイパビリティ監視に関連する。ＳＯＡに基づくシステムでは、機能性はサービスに離散化される。サービスは、自己完結型のまとまった機能性の単位（self-contained  cohesive  unit  of  functionality）である。サービスとの通信は、定義されたメッセージフォーマットを有するサービスインタフェースを通じて行われる。通信プロセスは、上記サービスの実装から独立し得る。上記サービスは、エンドユーザに機能性を提供し得る。また、上記サービスインタフェースは、ビジネスの人々により理解可能となるように設計され得る。さらに、各サービスは他のサービスから独立し、上記サービスの境界は明確である。よって、１つのサービスがクラッシュする場合に、他のサービスは影響されない。したがって、例えば、各サービスは、異なるプロセスとして動作（run）し得る。
【００３０】
一実施形態では、システム内のノードにより提供されるサービスについての情報は、サービスレジストリに記憶される。サービスレジストリは、サービスＩＤ、サービスに関連付けられているオペレーティングシステム、サービスが動作（run）しているノードの位置座標、サービスに関連付けられている処理キャパシティ、サービスに関連付けられている帯域幅キャパシティ、及び／又は、サービスに関連付けられている他のタイプの属性などの、各サービスについての属性を記憶する。上記システム内の全てのノードがサービスレジストリを含むというわけではなくてもよい。よって、いくつかのサービスレジストリは、上記システム内の他のノードで利用可能なサービスを記憶してもよい。さらに、上記システム内のサービスレジストリは、トポロジ的に相互接続されていてもよく、第２のサービスレジストリは、第１のサービスレジストリを通じてアクセス可能であってもよい。上記第１のサービスレジストリは、検索クエリ（search  query）を受信し、当該検索クエリについてのマッチを識別しない場合に、上記検索クエリを上記第２のサービスレジストリへ転送し得る。よって、サービスを発見（locate）するための検索クエリを提出するクライアントには、上記システム内の上記サービスレジストリは、単一の分散サービスレジストリのように見え得る。
【００３１】
上記システムは、１つ以上のケイパビリティを提供し得る。上記システムのケイパビリティは、サービスの保証された属性とともに当該サービスのリストとして管理者（administrator）により定義される。例えば、特定の位置からウィンドウズＯＳサーバ装置へ高解像度（ＨＤ）ビデオをストリーミングするケイパビリティは、上記位置でのビデオキャプチャサービス、ＨＤビデオのストリーミングに十分な帯域幅キャパシティ属性及びサービス品質（ＱｏＳ）属性を伴う、上記特定の位置から、ウィンドウズＯＳを実行するコンピュータ装置へのストリーミングサービス、並びに、ウィンドウズＯＳを実行する上記サーバ装置上で利用可能なビデオ再生ホスティングサービスを要求し得る。上記システム内の様々なケイパビリティを監視することの上記技術的問題を解決するために、サービスマネージャは、上記システム内の装置の属性を監視して、どの種類のサービスが各装置で利用可能なであるかを判定し得る。
【００３２】
１つの解決策／実施形態では、サービスマネージャは、サービスレジストリに接続する。当該サービスレジストリは、当該サービスマネージャに最も近いサービスレジストリであってもよく、ケイパビリティに関連付けられているサービスへの変更に関連する通知に加入（subscribe）する。例えば、上記サービスマネージャは、上記ケイパビリティにおける各サービスについての加入要求を送信し得る。上記サービスマネージャに最も近いサービスレジストリは、上記加入要求を受信し、上記サービスレジストリ内に列挙（list）されるサービスが上記加入要求にマッチするかを判定し得る。マッチが見つかれば、上記サービスレジストリは、識別されたサービスに関して上記サービスマネージャに応答を送信する。上記応答は、上記サービスの属性に関連する情報を含み得る。マッチがみつかるかによらず、上記サービスレジストリは、上記加入要求を記録し、隣接するサービスレジストリへ上記加入要求を転送し得る。隣接するサービスレジストリにおいてマッチが見つかれば、当該隣接するサービスレジストリは、第１のサービスレジストリへ応答を送信し得る。当該第１のサービスレジストリは、上記サービスマネージャへ当該応答を転送し得る。上記隣接するサービスレジストリも、上記加入要求を記録し、次の隣接するサービスレジストリへ上記加入要求を転送し得る。よって、上記加入要求は、上記システム内のサービスレジストリのネットワークを通じて伝搬され得る。上記システム内の各サービスレジストリは、上記加入要求を記録することになり得る。よって、上記加入要求の明細（specification）にマッチするサービスについての情報をサービスレジストリが含まず、そのようなサービスが後に追加される場合に、当該サービスレジストリは、上記サービスマネージャに通知することができるであろう。全てのレジストリが検索された後にいずれのマッチもみつからなければ、いずれのマッチも見つからなかったことの標識（indication）が、上記サービスマネージャに返信され得る。
【００３３】
上記サービスマネージャは、上記サービスレジストリから特定の応答を受信し得る。一例として、上記サービスマネージャは、上記サービスが上記システム内のどこかに配置されていることの標識を受信し得る。上記サービスマネージャは、上記サービスを提供する上記システム内のノードを識別し、識別された当該ノードを上記ケイパビリティと関連付け得る。別の例として、上記サービスマネージャは、上記サービスが上記システム内で配置可能（available  for  deployment）であることの標識を受信してもよい。それに応じて、上記サービスマネージャは、上記サービスが配置可能である、上記システム内のノードを識別し、識別された当該ノードでの上記サービスの配置を開始してもよい。例えば、上記サービスマネージャは、上記ノードでの配置サービスに、上記ケイパビリティに関連付けられているサービスを配置するように指示してもよい。さらに別の例として、上記サービスマネージャは、上記システム内で上記サービスが配置可能ではないことの標識を受信してもよい。それに応じて、上記サービスマネージャは、管理者警告（administrator  alarm）を生成して、上記ケイパビリティが実現できないことを管理者に通知してもよい。
【００３４】
上記サービスマネージャは、上記サービスについての加入通知を受信し続け得る。例えば、上記サービスレジストリは、上記サービスが除外された、上記サービスが利用不能になった、及び／又は、上記サービスに関連付けられている属性が変更されたと、判定し得る。それに応じて、上記サービスレジストリは、上記サービスマネージャへ加入通知を送信し、上記サービスマネージャは、受信された当該加入通知に基づいて動作し得る。例えば、上記サービスマネージャは、以前に識別されたノードでは上記サービスがもはや利用可能ではない、及び／又は、上記ノードでの上記サービスは上記ケイパビリティについての要求をもはや満たさない、と判定し得る。それに応じて、上記サービスマネージャは、以前に受信された加入通知に基づいて、上記サービスが利用可能である、上記システム内の他のノードを識別し得る。
【００３５】
よって、上記サービスマネージャは、多数の装置及びサービスを伴うＳＯＡシステム内の特定のサービス及び／又は特定のサービス属性を要求するケイパビリティを効率的に管理するという技術的効果を提供し得る。これは、サービスがオフラインになる若しくは利用不能になる、又は新たなサービスが上記システムに追加されるなどの変更に自動的に反応できるという利点を上記ＳＯＡシステムに提供し得る。
【００３６】
図１は、説明されたシステム及び／又は方法が実装されることが可能である例示的な環境１００のブロック図である。図１の実施形態に示されるように、環境１００は、ネットワーク１１０、サブネットワーク１２０−Ａ〜１２０−Ｎ（集合で「サブネットワーク１２０」と呼ばれ、また、個別に「サブネットワーク１２０」と呼ばれる）、装置１３０Ａ−Ａ〜１３０Ｎ−Ｋ（集合で「装置１３０」と呼ばれ、個別に「装置１３０」と呼ばれる）、及び管理装置１５０を含む。装置１３０−Ｎ−Ｋは、サブネットワーク１２０−Ｎ内のＫ番目の装置１３０に言及する。この実施形態では、環境１００内のコンポーネントは、サービス指向アーキテクチャ（ＳＯＡ）システムサービスバス１４０を形成する。
【００３７】
ネットワーク１１０は、サブネットワーク１２０及び／又は装置１３０が互いに通信することを可能にする。ネットワーク１１０は、１つ以上の回線交換ネットワーク及び／又はパケット交換ネットワークを含み得る。例えば、一実施形態では、ネットワーク１１０は、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、公衆回線電話網（ＰＳＴＮ）、アドホックネットワーク、イントラネット、インターネット、光ファイバネットワーク、無線ネットワーク、及び／又は、これらの若しくは他のタイプのネットワークの組合せを含む。
【００３８】
サブネットワーク１２０は、ＬＡＮ（例えば、レイヤ２ネットワーク）及び／又はプライベートネットワーク（例えば、レイヤ３ネットワーク）を含み得る。サブネットワーク１２０は、１つ以上の装置１３０を相互接続させ得る。例えば、サブネットワーク１２０−Ａは、装置１３０−Ａ−Ａ〜１３０−Ａ−Ｊを相互接続させ得る。装置１３０は、例えば、ＳＯＡシステムサービスバス１４０を介して通信するいずれかの装置を含み得る。
【００３９】
装置１３０は、ＰＨＰ（Hypertext  Preprocessor）サーバ装置、Ｃプログラムサーバ装置、リナックスサーバ装置、ウィンドウズサーバ装置及び／若しくは他のタイプのサーバ装置などのサーバコンピュータ装置；  ウィンドウズ、リナックス、アンドロイド、ｉＯＳ及び／又は他のオペレーティングシステムを実行するデスクトップ、ラップトップ、タブレット、携帯通信装置及び／若しくは他のタイプのパーソナルコンピュータ装置などのパーソナルコンピュータ装置；  可視光カメラ、赤外線（ＩＲ）カメラ及び／若しくは熱紋（heat  signature）カメラなどの監視装置（monitoring  device）；  マイクロフォン、モーションセンサ、熱センサ、圧力センサ及び／若しくは他のタイプのアラームセンサなどのアラームセンサ；  マイクロコントローラコンピュータ装置；  並びに／又は、他のタイプのコンピュータ装置を含み得る。装置１３０は、サブネットワーク１２０に接続されているように示されているが、特定の装置１３０は、ネットワーク１１０に直接的に接続されていなくてもよい。
【００４０】
一実施形態では、ＳＯＡシステムサービスバス１４０は、既存のネットワークトポロジの上に装置１３０間で実装される。ＳＯＡシステムサービスバス１４０は、異なるタイプの装置１３０、及び／又は異なるプラットフォームを使用して実装された装置１３０が、サービス指向アーキテクチャを使用して通信することを可能にする。ＳＯＡシステムサービスバス１４０は、第１の装置１３０がいずれかの装置１３０（例えば、それ自身又は他の装置１３０）に特定のサービスを要求することを可能にし得る。よって、第１の装置１３０により提供されるクライアント（例えば、それ自体「サービス」又は「クライアントサービス」）は、（例えば、サービスが第１の装置１３０において利用可能でない場合に）第２の装置１３０により提供されるサービスを求め得る。（例えば、第２の装置１３０における）他のサービスを要求する（例えば第１の装置１３０における）第１のサービスは、要求を開始したので、「クライアント」又は「クライアントサービス」と呼ばれる。上記第１のサービスは、例えば、ネットワーク内の他のサービスへサービスを提供してもよい。
【００４１】
一実施形態では、サービスは、標準化されたサービスインタフェースを介してアクセスされる。各タイプのサービスは、特定のサービスインタフェース（例えば、異なるサービスインタフェース）に関連付けられ得る。よって、サービスを要求するクライアントは、サービスインタフェースを用いて通信し得る。また、上記クライアントは、上記サービスの実際の実装について非依存（agnostic）であり得る。換言すると、各実装が他の実装に関係していなくてもよいように、サービスの実装は、サービスインタフェースにより定義されるプロトコルを使用して互いに通信する。特定のサービスインタフェースに関連付けられている、実行しているサービスの実装は、サービスインスタンスと呼ばれ得る。サービスホスト（例えば、サービスを提供する装置）を含む装置１３０は、サービスレジストリ（例えば、サービスのリスト又はデータベース）を用いて、利用可能なサービスインスタンスを記録し得る。ＳＯＡシステムサービスバス１４０は、装置１３０内のサービスホストのサービスレジストリを検索することにより、要求されたサービス見つけることを、装置１３０の通信に可能にし得る。
【００４２】
管理装置１５０は、管理者がＳＯＡシステムサービスバス１４０を構成し又は管理することを可能にし得る。例えば、管理装置１５０は、ポータブル通信装置（例えば、携帯電話、スマートフォン、ファブレット装置、ＧＰＳ（Global  Positioning  System）装置、及び／若しくは他のタイプの無線装置）；  パーソナルコンピュータ若しくはワークステーション；  サーバ装置；  ラップトップ、タブレット若しくは他のタイプのポータブルコンピュータ；  及び／又は通信ケイパビリティを有するいずれかのタイプの装置を含み得る。
【００４３】
ネットワーク１１０のように、サブネットワーク１２０は、１つ以上の回線交換ネットワーク及び／又はパケット交換ネットワークを含み得る。例えば、サブネットワーク１２０は、ＬＡＮ、ＷＬＡＮ、ＭＡＮ、ＰＳＴＮ、アドホックネットワーク、イントラネット、インターネット、光ファイバネットワーク、無線ネットワーク、及び／又は、これらの若しくは他のタイプのネットワークの組合せを含み得る。
【００４４】
図１は、環境１００の例示的なコンポーネントを示すが、他の実装では、環境１００は、図１に描かれたものと比べて、より少ないコンポーネント、異なるコンポーネント、異なるように配置されたコンポーネント、又は追加のコンポーネントを含んでもよい。さらに、又は、あるいは、環境１００内のいずれか１つの装置（又は装置のいずれかのグループ）は、環境１００内の１つ以上の他の装置により行うように説明された機能を行ってもよい。
【００４５】
図２は、装置１３０の例示的なコンポーネントを説明するブロック図である。図２に示されるように、装置１３０は、バス２１０、プロセッサ２２０、メモリ２３０、入力装置２４０、出力装置２５０及び通信インタフェース２６０を含み得る。
【００４６】
バス２１０は、装置１２０のコンポーネント間の通信を可能にするパスを含み得る。プロセッサ２２０は、命令を解釈し実行するいずれかのタイプのシングルコアプロセッサ、マルチコアプロセッサ、マイクロプロセッサ、ラッチベースのプロセッサ、及び／若しくは処理ロジック（又はプロセッサ、マイクロプロセッサ及び／若しくは処理ロジックのファミリー）を含み得る。他の実施形態では、プロセッサ２２０は、ＡＳＩＣ（Application-Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）、及び／又は、他のタイプの集積回路若しくは処理ロジックを含んでもよい。
【００４７】
メモリ２３０は、プロセッサ２２０による実行のための情報及び／若しくは命令を記憶し得るいずれかのタイプの揮発性及び／若しくは動的ストレージ装置、並びに／又は、プロセッサ２２０による使用のための情報を記憶し得るいずれかのタイプの不揮発性ストレージ装置を含み得る。例えば、メモリ２３０は、ランダムアクセスメモリ（ＲＡＭ）若しくは他のタイプの動的ストレージ装置、リードオンリメモリ（ＲＯＭ）装置若しくは他のタイプの静的ストレージ装置、連想メモリ（content  addressable  memory：ＣＡＭ）、磁気及び／若しくは光学記録メモリ装置及びその対応装置（例えば、ハードディスクドライブ、光学ドライブなど）、並びに／又は、フラッシュメモリなどの取り外し可能な形式のメモリを含み得る。
【００４８】
入力装置２４０は、オペレータが装置１３０に情報を入力することを可能にする。例えば、入力装置２４０は、キーボード、マウス、ペン、マイクロフォン、リモートコントローラ、音声キャプチャ装置、イメージ及び／若しくはビデオキャプチャ装置、タッチスクリーンディスプレイ、並びに／又は他のタイプの入力装置を含み得る。一実施形態では、装置１３０は、遠隔で管理されてもよく、入力装置２４０を含まなくてもよい。換言すると、装置１３０は、「ヘッドレス」であってもよく、例えばキーボードを含まなくてもよい。
【００４９】
出力装置２５０は、装置１３０のオペレータへの情報を出力し得る。出力装置２５０は、ディスプレイ、プリンタ、スピーカ及び／又は他のタイプの出力装置を含み得る。例えば、装置１３０は、ディスプレイを含んでもよく、当該ディスプレイは、顧客にコンテンツを表示するためのＬＣＤ（Liquid  Crystal  Display）を含んでもよい。一実施形態では、装置１３０は、遠隔で管理されてもよく、出力装置２５０を含まなくてもよい。換言すると、装置１３０は、「ヘッドレス」であってもよく、例えばディスプレイを含まなくてもよい。
【００５０】
通信インタフェース２６０は、装置１３０が他の装置及び／又はシステムと通信することを可能にする送受信機（例えば、送信機及び／又は受信機）を含み得る。通信インタフェース２６０は、無線通信（例えば、高周波（Radio  Frequency）、赤外線、及び／又は可視光など）、有線通信（例えば、導線、ツイストペアケーブル、同軸ケーブル、伝送線、光ファイバケーブル、及び／又は導波管など）、又は、有線通信及び無線通信の組合せを介して、通信し得る。通信インタフェース２６０は、ベースバンド信号を高周波（ＲＦ）信号に変換する送信機、及び／又は、ＲＦ信号をベースバンド信号に変換する受信機を含み得る。通信インタフェース２６０は、信号を送受信するためのアンテナに結合され得る。
【００５１】
通信インタフェース２６０は、入力ポート及び／若しくは出力ポート、入力システム及び／若しくは出力システム、並びに／若しくは、他の装置へのデータの送信を容易にする他の入出力コンポーネントを含む、論理的なコンポーネントを含み得る。例えば、通信インタフェース２６０は、無線通信のためのネットワークインタフェースカード（例えば、イーサネットカード）、及び／又は、無線通信のための無線ネットワークインタフェース（例えば、Ｗｉ−Ｆｉ）カードを含み得る。通信インタフェース２６０は、ケーブルを通じた通信のためのＵＳＢ（Universal  Serial  Bus）ポート、Ｂｌｕｅｔｏｏｔｈ（登録商標）無線インタフェース、ＲＦＩＤ（Radio-Frequency  Identification）インタフェース、ＮＦＣ（Near-Field  Communication）無線インタフェース、及び／又は、１つの形式から他の形式へデータを変換する他のタイプのインタフェースも含み得る。
【００５２】
以下に説明するように、装置１３０は、サービスマネージャを通じたケイパビリティの管理、及び／又は特定のサービスについての加入の管理に関するある動作を行い得る。装置１３０は、メモリ２３０などのコンピュータに読み取り可能な媒体に含まれるソフトウェア命令をプロセッサ２２０が実行するのに応じて、これらの動作を行い得る。コンピュータに読み取り可能な媒体は、不揮発性メモリ装置を含む。メモリ装置は、単一の物理的なメモリ装置内に実装されてもよく、又は、複数の物理的なメモリ装置にわたって散在してもよい。ソフトウェア命令は、他のコンピュータに読み取り可能な媒体又は他の装置からメモリ２３０へ読み込まれてもよい。メモリ２３０に含まれるソフトウェア命令は、プロセッサ２２０に、本明細書で説明されるプロセスを行わせ得る。あるいは、ハードワイヤード（例えば、固定の）回路が、ソフトウェア命令の代わりに、又はソフトウェア命令と組み合せて使用されて、本明細書で説明されるプロセスを実装してもよい。よって、本明細書で説明される実装は、ハードウェア回路及びソフトウェアのいずれかの特定の組み合せに限定されない。
【００５３】
図２は、装置１３０の例示的なコンポーネントを示すが、他の実装では、装置１３０は、図２に描かれたものと比べて、より少ないコンポーネント、異なるコンポーネント、追加のコンポーネント、又は異なるように配置されたコンポーネントを含んでもよい。さらに、又は、あるいは、装置１３０の１つ以上のコンポーネントは、装置１３０の１つ以上の他のコンポーネントにより行われるように説明された１つ以上のタスクを行ってもよい。管理装置１５０は、装置１３０と同様に構成されてもよい。
【００５４】
図３は、装置１３０の例示的な通信レイヤを説明するブロック図である。装置１３０の機能コンポーネントは、例えば、メモリ２３０からの命令を実行するプロセッサ２２０により実装され得る。さらに、又は、あるいは、装置１３０の機能コンポーネントは、１つ以上のＡＳＩＣのハードワイヤード（例えば固定の）回路を用いて実装されてもよい。図３に示されるように、装置１３０は、サービスレイヤ１３０、オーバレイネットワークレイヤ３２０及び装置レイヤ３３０を含み得る。
【００５５】
一実施形態では、サービスレイヤ３１０は、クライアントが特定のサービスタイプのサービスインスタンスを検索することを可能にし、クライアントが特定のサービスインスタンスへ要求を送信することを可能にする。サービスは、一実施形態では、サービスの実際の実装に非依存である標準化されたサービスインタフェースを介してアクセスされ得る。サービスインスタンスは、明示的な境界（boundary）と関連付けられ得る。この実施形態では、装置１３０上で実行される特定のプロセス、及び／又は、装置１３０上に記憶される特定のデータは、曖昧さなしに、サービスインスタンス内に、又はサービスインスタンスの外に存在する。サービスインスタンスは、他のサービスインスタンスについて自律的であり得る。例えば、特定のサービスインスタンスは、当該特定のサービスインスタンスと相互作用する他のサービスインスタンスに悪影響を与えることなく修正され得る（例えば、コードが書き換えられ得る）。サービスは、（同一のタイプの又は異なるタイプの）他のサービスインスタンスとスキーマ及び／又はコントラクトを共有し得るが、一実施形態では、サービス実装を共有しない。スキーマは、上記サービスインタフェースにより送信され又は受信されるメッセージのフォーマット及び内容を特定する。コントラクトは、上記サービスインタフェースにより送信され又は受信されるメッセージの許容されるシーケンスを特定する。
【００５６】
１つ以上のサービスが、バンドル（bundle）として共に配置され得る。バンドルは、上記システム内の配置ユニットとして機能するサービスに対応し得る。１つ以上のサービスのグルーピングに対応する特定のバンドルを配置することができる上記システム内のノードは、バンドルホスト（bundle  host）として機能する。バンドルレポジトリサービスは、上記システム内のバンドルのコレクションを記憶し得る。したがって、サービスマネージャが、サービスを配置することを選択する場合に、当該サービスマネージャは、上記サービスに関連付けられているバンドルを配置することができるバンドルホストを発見する必要があり得る。上記サービスマネージャは、上記サービスレジストリにコンタクトして、上記バンドルレポジトリサービスを発見し得る。上記サービスマネージャは、その後、上記バンドルレポジトリサービスにコンタクトして、バンドルを識別し得る。上記サービスマネージャは、バンドルを選択し得る。その後、上記サービスマネージャは、上記サービスレジストリを検索して、選択された上記バンドルを配置し得る適切なバンドルホストを識別し得る。その後、上記サービスマネージャは、上記バンドルホストにコンタクトし、上記サービスに関連付けられている上記バンドルを配置するように上記バンドルホストに指示し得る。
【００５７】
一実施形態では、オーバレイネットワークレイヤ３２０は、既存のネットワークトポロジの上にオーバレイネットワークを実装する。オーバレイネットワークレイヤ３２０は、ファイアウォールを通じてトラフィックをルーティングすること、及び／又は、下層のネットワークトポロジにおけるネットワークアドレス変換（ＮＡＴ）を扱うことを、担い得る。一実施形態では、（例えば下層のネットワークトポロジとは異なり得る）オーバレイネットワークトポロジは、ツリー構造で組織化されたノードを含む。オーバレイネットワークトポロジは、論理的にノードを接続する。他の実施形態では、オーバレイネットワークトポロジは、異なるタイプの構造（例えば、メッシュトポロジ）を含んでもよい。装置１３０内の各サービスホストは、オーバレイネットワーク内のノードに対応し得るし、ノードＩＤを割り当てられ得る。装置１３０上のノードは、複数のサービスホスト及び／又は複数のノードを含み得る。装置１３０は、１つのノードに対応する１つのホストを含むように説明され得る。ノードは、ルーティングツリーのようなネットワークトポロジを介して接続され得る。ノードは、ルーティングツリーを介して他のノードへメッセージを送信し得る。一実施形態では、ノードは、メッセージにオーバレイネットワークトポロジを横断（traverse）させることなく、下層のネットワークトポロジを介して他のノードへ上記メッセージを送信し得る。各ノードは、（下層ネットワークと同様に）オーバレイネットワーク内の近隣に到達するための情報（例えば、ネットワーク１１０などの下層ネットワークのアドレス）を記憶し得る。オーバレイネットワークレイヤ３２０は、ノード間の通信レイヤに対応し得るし、複数のネットワークトポロジを使用して特定の機能を実現し得る。例えば、特定のタイプのサービスのためのサービスレジストリを検索する場合に、オーバレイネットワークレイヤ３２０は、サービスレジストリを検索している間に、ノードのツリーの端を横断し得る。一実施形態では、第１のノードから第２のノードへメッセージを送信する場合に、オーバレイネットワークレイヤ３２０は、ツリーの端を追うことによってよりも、上記第１のノードから上記第２のノードへ直接的にメッセージを送信し得る。オーバレイネットワークレイヤ３２０は、サービスレイヤ３１０にノードＩＤを提供し得る。サービスレイヤ３１０は、下層のネットワークトポロジを知る必要もなく、特定のノードＩＤへメッセージを送信し得る。
【００５８】
一実施形態では、装置レイヤ３３０は、ＳＯＡシステムサービスバス１４０の初期のインストールの間に装置の発見（device  discovery）を行う。装置レイヤ３３０及び／又はオーバレイネットワークレイヤ３２０は、初期のインストールの後でノードの発見（node  discovery）も行い得るし、及び／又は、オフラインになって後にオーバレイネットワークに再度参加したロスト（lost）ノードを再発見し得る。一実施形態では、オーバレイネットワークレイヤ３２０は、証明書などの、ノードに各々のＩＤを検証することを可能にする、オーバレイネットワークについての共有秘密（shared  secret）を管理する。オーバレイネットワークレイヤ３２０は、１つ以上の近さのメトリックに基づいて、オーバレイネットワークのためのトポロジ（例えば、ルーティングツリー又はメッシュ）を形成し得る。しかしながら、第１のノードから第２のノードへのメッセージは、ルーティングツリーを横断する必要はなく、その代わりに、第１のノードから第２のノードへ直接的に送信されてもよい。他の実施形態では、第１のノードから第２のノードへのメッセージは、ルーティングツリーを横断する。さらに、オーバレイネットワークレイヤ３２０は、マルチキャストグループに基づいてマルチキャストメッセージを送信し得る。さらに、オーバレイネットワークレイヤ３２０は、サービスレイヤ３１０にサービス品質（ＱｏＳ）保証を提供し得る。
【００５９】
ネットワークレイヤ３２０は、概して「ノード」を扱い、装置レイヤ３３０は、概して「装置」を扱う。装置レイヤ３３０は、下層のネットワークトポロジ（例えば、ネットワーク１１０及び／又はサブネットワーク１２０）を使用して通信するのに必要な機能性を含む装置１３０の低レベルの機能性に対応する。例えば、いくつかの実装では、装置レイヤ３３０は、ＯＳＩ（Open  Systems  Interconnection）モデルのレイヤ１〜６（例えば、物理レイヤ、データリングレイヤ、ネットワークレイヤ、トランスポートレイヤ、セッションレイヤ及びプレゼンテーションレイヤ）を実装し得る。これらのレイヤの実装は、イーサネットフレームのルーティング、インターネットプロトコル（ＩＰ）パケットのルーティング、セッション管理、パケットの暗号化及び解読、ロストパケットの再送などを含み得る。
【００６０】
図３は、装置１３０の例示的な機能コンポーネントを示すが、他の実装では、図３に描かれたものと比べて、装置１３０は、より少ない機能コンポーネント、異なる機能コンポーネント、異なるように配置された機能コンポーネント、又は追加の機能コンポーネントを含んでもよい。さらに、又は、あるいは、装置１３０内のいずれか１つのコンポーネント（又はコンポーネントのいずれかのグループ）は、装置１３０内の１つ以上の他の機能コンポーネントにより行われるように説明された機能を行ってもよい。
【００６１】
図４Ａは、サービスレイヤ３１０の例示的な機能コンポーネントを説明するブロック図である。図４Ａに示されるように、サービスレイヤ３１０は、サービスホスト４１５を含む。サービスホスト４１５は、１つ以上のサービス４１０−Ａ〜４１０−Ｎ（集合で「サービス４１０」と呼ばれ、また、個別に「サービス４１０」と呼ばれる）、１つ以上のクライアント４２０−Ａ〜４２０−Ｋ（集合で「クライアント４２０」と呼ばれ、また、個別に「クライアント４２０」と呼ばれる）、メッセージディスパッチャ（message  dispatcher）４３０、及びサービスレジストリ４４０を含み得る。
【００６２】
サービス４１０は、装置１３０のサービスレイヤ３１０のサービスホスト４１５に関連付けられるサービスインスタンスに対応する。一実施形態では、サービス４１０は、サービスインタフェース４１２及びサービス実装４１４を含む。サービスインタフェース４１２は、標準化された通信プロトコルなどの通信プロトコルを含み得る。一実施形態では、通信プロトコルは、固有の名称及びバージョンを含む。サービスインタフェース４１２は、ＳＯＡＰ（Simple  Object  Access  Protocol）インタフェース仕様、ＪＳＯＮ（JavaScript  Object  Notation）インタフェース仕様、及び／又は他のタイプのインタフェース仕様を使用して規定され得る。サービス実装４１４は、サービス４１０の実装を含む。サービス実装４１４は、サービスインタフェース４１２経由で受信される要求を処理し、及び／又は、サービスインタフェース４１２を通じてサービス要求に応答する。サービスインタフェース４１２は、サービス実装４１４から受信される応答を、適当なプロトコルに準拠した特定のフォーマットに変換する。クライアント４２０は、当該適当なプロトコルを使用して、サービス４１０とメッセージを交換する。
【００６３】
一実施形態では、クライアント４２０は、サービスレジストリ４４０へ要求を送信することにより、特定のサービスタイプのサービスインスタンスを要求する。サービスインスタンスが識別され、選択されると、クライアント４２０は、メッセージディスパッチャ４３０経由で、識別され選択された特定のサービスインスタンスへ要求を送信し得る。上述したように、クライアント４２０は、サービス４１０でもあってもよい。「クライアント」又は「クライアントサービス」という用語は、サービスを、別のサービスを要求しているものとみなす。
【００６４】
メッセージディスパッチャ４３０は、クライアント４２０からの入力メッセージを受信し、当該入力メッセージの対象とするサービス４１０に当該入力メッセージを向ける。さらに、メッセージディスパッチャ４３０は、サービスからメッセージを受信し、特定のクライアント４２０へ当該メッセージを送信し得る。入力メッセージの宛先が、メッセージディスパッチャ４３０と同じ装置１３０上にはない場合には、その後、当該入力メッセージは、正しい装置１３０への転送のために、オーバレイネットワークレイヤ３２０へ転送され得る。サービス４１０及びクライアント４２０は、オーバレイネットワークレイヤ３２０により実装されるオーバレイネットワーク内のエンドポイント（endpoint）として機能し得る。よって、一実施形態では、オーバレイネットワークレイヤ３２０は、オーバレイネットワークのルーティングツリーに基づいてルーティングテーブルを維持し得る。ルーティングテーブルは、特定のノードＩＤについて次のホップ宛先のリストを含み得る。メッセージディスパッチャ４３０は、出力ＩＤについて次のホップ宛先を識別し得るし、配信のためにオーバレイネットワークレイヤ３２０にメッセージを提供し得る。よって、この実施形態では、メッセージディスパッチャ４３０は、要求−応答メッセージングメカニズムを実装する。
【００６５】
サービスレジストリ４４０は、配置されたサービス（例えば、サービスのインスタンス）と関連付けられた属性とともに、当該配置されたサービス４１０のリストを維持する。サービスレジストリ４４０の例示的なコンポーネントを、図４Ｃを参照して以下により詳細に説明する。サービス４１０は、（例えば、サービスの属性を含む）サービスの記述をサービスレジストリ４４０に提供することにより、サービスレジストリ４４０に登録し得る。クライアント４２０は、サービス４１０でもあってもよいので、クライアント４２０も、サービスレジストリ４４０に登録してもよい。
【００６６】
図４Ｂは、サービスレジストリ４４０の機能性を説明するブロック図である。図４Ｂに示されるように、サービスレジストリ４４０は、クライアント４２０から検索クエリ（search  query）を受信し得る。検索クエリは、特定のサービスタイプ、当該特定のサービスについての１つ以上の要求される属性、要求されるヒット数、及び／又は１つ以上の他のパラメータを特定し得る。サービスレジストリ４４０は、上記検索クエリを満たすサービス４１０を識別し得る。要求されるヒット数が、サービスレジストリ４４０によって満たされない場合には、サービスレジストリ４４０は、オーバレイネットワーク内の他のサービスレジストリ４４０（例えば、隣接したサービスレジストリ４４０）へクエリを転送し得る。一実施形態では、サービスレジストリ４４０は、検索クエリに基づいて特定のサービスインスタンスを選択しない。それどころか、この実施形態では、サービスレジストリ４４０は、上記クエリの結果をクライアント４２０に返し、上記クエリを発信したクライアント４２０は、上記検索結果から特定のサービスインスタンスを選択し得る。他の実施形態では、サービスレジストリ４４０は、上記クエリの結果から、上記検索クエリに基づいて、特定のサービスインスタンスを選択する。
【００６７】
図４Ａ及び図４Ｂは、サービスレイヤ３１０の例示的な機能コンポーネントを示すが、他の実装形態では、図４Ａ及び図４Ｂに描かれたものと比べて、サービスレイヤ３１０は、より少ない機能コンポーネント、異なる機能コンポーネント、異なるように配置された機能コンポーネント、又は追加の機能コンポーネントを含んでもよい。さらに、サービスレイヤ３１０内のいずれか１つのコンポーネント（又はコンポーネントのいずれかのグループ）は、サービスレイヤ３１０内の１つ以上の他の機能コンポーネントにより行われるように説明された機能を行ってもよい。
【００６８】
図４Ｃは、サービスレジストリ４４０の例示的な機能コンポーネントを説明するブロック図である。図４Ｃに示されるように、サービスレジストリ４４０は、ホストサービスレジストリデータベース（ＤＢ）４４２、クエリハンドラ４４４及びサービスレジストリキャッシュ４４６を含み得る。
【００６９】
ホストサービスレジストリＤＢ４４２は、サービスホスト４１５により提供されるサービス４１０のリスト及び／又はこれらのサービスの属性を維持する。ホストサービスレジストリＤＢ４４２において列挙されるサービスと当該サービスの属性との例は、図４Ｄに関連して以下に提供される。ホストレジストリＤＢ４４２は、サービスレジストリ４４０に登録するサービス４１０により住まれ（populate）得る。ホストサービスレジストリＤＢ４４２は、列挙されるサービスを追加し又は削除するための、及び、サービスホスト４１５により提供されるサービスの属性を読み又は書くためのインタフェースもさらし得る。一実施形態では、例えば、ホストサービスレジストリＤＢ４４２は、異なる装置１３０上のサービスホスト４１５により提供されるサービス４１０のリストを維持し得る。上記異なる装置上のサービスホスト４１５は、されされた上記インタフェースを使用して他の装置上のサービスレジストリ内のサービスを列挙し得る。さらに、ホストサービスレジストリＤＢ４４２は、他のサービスレジストリによりアクセス可能な検索クエリサービスインタフェースをさらし得る。よって、他のサービスレジストリは、上記検索クエリサービスインタフェースを使用して、ホストサービスレジストリＤＢ４４２が特定のクエリを満たすエントリを含むかを判定し得る。一実施形態では、ＤＢ４４２が無効な（outdated）情報を記憶するのを防ぐのを助けるために、ホストサービスレジストリＤＢ４４２内に列挙されるサービスは失効し得る（例えば、リフレッシュされていなければしばらくするとＤＢ４４２から削除される）。
【００７０】
ホストサービスレジストリ４４２は、サービスマネージャから加入要求を受信し、上記加入要求を記憶し、上記加入要求を全ての隣接するサービスレジストリへ転送し得る。ホストサービスレジストリ４４２は、サービスが上記加入要求にマッチするかを判定し得る。また、ホストサービスレジストリ４４２は、マッチするサービスが識別される場合に、上記加入要求を発信したサービスマネージャへ加入通知を返信し得る。さらに、ホストサービスレジストリ４４２は、記憶されているサービスへの更新が加入に関連付けられているかを判定し得る。更新が加入に関連付けられている場合には、ホストサービスレジストリ４４２は、関連付けられている上記加入についての上記加入要求を発信したサービスマネージャ（又は他のタイプのサービス）へ加入通知を送信し得る。
【００７１】
クエリハンドラ４４４は、クライアント４２０から受信されるクエリを処理（handle）し得る。一実施形態では、クエリが与えられると、クエリハンドラ４４４は、まず、ローカルのホストサービスレジストリＤＢ４４２を検索し、その後にサービスレジストリキャッシュ４４６が続く。クエリハンドラ４４４は、例えば上記クエリが満たされない場合に、他のサービスレジストリにコールを出し得る。サービスレジストリキャッシュ４４６は、遠隔のサービスレジストリ４４０からのデータを記憶し得る。各サービスホスト４１５は、ローカルサービスレジストリ４４０を維持し得る。サービスホスト４１５に登録するサービス４１０は、ローカルサービスレジストリ４４０内に登録される。ローカルサービスレジストリ４４０により満たされない、クライアント４２０からのクエリは、１つ以上の近隣のサービスホスト４１５へ送信されて、上記クエリを満たすサービスを含むサービスレジストリ４４０を上記近隣のサービスホスト４１５が有するかが調べられ得る。上記遠隔のサービスレジストリ４４０は、ローカルサービスレジストリ４４０に上記クエリの結果を返し得る。当該結果は、サービスレジストリキャッシュ４４６内に記憶され得る。いくつかの実施形態では、親ノードが、子ノードについてのデータをキャッシュし得る。一方、子ノードは、その親ノードについてのデータをキャッシュしなくてもよい。一実施形態では、キャッシュ４４６が無効な情報を記憶するのを防ぐのを助けるために、サービスレジストリキャッシュ４４６に列挙されるサービスは失効し得る（例えば、リフレッシュされていなければしばらくするとキャッシュ４４６から削除される）。
【００７２】
図４Ｃは、サービスレジストリ４４０の例示的な機能コンポーネントを示すが、他の実装では、図４Ｃに描かれたものと比べて、サービスレジストリ４４０は、より少ない機能コンポーネント、異なる機能コンポーネント、異なるように配置された機能コンポーネント、又は追加の機能コンポーネントを含んでもよい。さらに、サービスレジストリ４４０のいずれか１つのコンポーネント（又はコンポーネントのいずれかのグループ）は、サービスレジストリ４４０内の１つ以上の他の機能コンポーネントにより行われるように説明された機能を行ってもよい。
【００７３】
図４Ｄは、サービスレジストリ４４０により記憶され得る特定のサービスについての例示的な属性テーブル４６０のブロック図である。一実施形態では、サービスのインスタンス（例えば、各インスタンス）は、テーブル４６０のような属性テーブルに関連付けられる。ホストサービスレジストリＤＢ４４２は、対応するサービスレジストリ４４０に登録された各サービスについての属性テーブルを記憶し得る。一実施形態では、上述したように、いずれか１つのサービスレジストリＤＢ４４２内に記憶される情報は、他のサービスレジストリデータベース内に記憶される情報と異なり得る。例示的な属性テーブル４６０は、ＩＤフィールド４６２，インタフェースフィールド４６４、サービスフォーマットフィールド４６８、トランスポートプロトコルフィールド４７０、ＣＰＵランキングフィールド４７２、ディスクスペースフィールド４７４及びＲＡＭフィールド４７６という８つのフィールドを含む。
【００７４】
インスタンスＩＤフィールドは、特定のサービスのインスタンスを一意に定義する。（ノードＩＤとともに）インスタンスＩＤは、ネットワーク内の（同一のタイプ又は異なるタイプの）他のサービスからサービスインスタンスを一意に識別し得る。一実施形態では、インスタンスＩＤフィールド４６２は整数である。テーブル４６０では、インスタンスＩＤは、例えば６５２９である。
【００７５】
インタフェースフィールド４６４は、サービスのインタフェースの名称である。このケースでは、インタフェースフィールド４６４は、インタフェースのタイプによりサービスのタイプも識別する。例えば、テーブル４６０は、インタフェースを「ストレージサービス」として識別する。サービスフォーマットフィールド４６８は、サービスのインスタンスにより使用されるフォーマットを識別する。例えば、テーブル４６０は、サービスフォーマットを「ＪＳＯＮ」として識別する。トランスポートプロトコルフィールド４７０は、サービスのインスタンスにより使用されるプロトコルを識別する。例えば、テーブル４６０は、サービスフォーマットを「ノードプロトコル」として識別する。
【００７６】
ＣＰＵランキングフィールド４７２は、サービスインスタンスに関連付けられるＣＰＵのパフォーマンスを識別する。一実施形態では、スケールが使用される（例えば、１〜１００）。テーブル４６０は、ＣＰＵランキングフィールド７４２において、サービスについてＣＰＵランキングを２０／１００として識別する。ＲＡＭフィールド４７６は、サービスに利用可能なランダムアクセスメモリの量を識別する。テーブル４６０は、フィールド４７６において、利用可能なＲＡＭを２ＧＢとして識別する。
【００７７】
図４Ｄは、属性テーブル４６０の例示的なコンポーネントを示すが、他の実施形態では、図４Ｄに描かれたものと比べて、属性テーブル４６０は、より少ないコンポーネント、異なるコンポーネント、異なるように配置されたコンポーネント、又は追加のコンポーネントを含んでもよい。
【００７８】
図５Ａは、オーバレイネットワークレイヤ３２０の機能コンポーネントを説明するブロック図である。図５Ａに示されるように、オーバレイネットワークレイヤ３２０は、ノードマネージャ５１０、通信マネージャ５２０及びマルチキャストマネージャ５３０を含み得る。
【００７９】
ノードマネージャ５１０は、ノードＩＤなどのノード情報を、オーバレイネットワーク内の他のノードに提供し得る。さらに、ノードマネージャ５１０は、オーバレイネットワーク内のノードのリストを維持し得る。ノードマネージャ５１０は、ノード発見（discovery）を実行して、オーバレイネットワークに追加される新たなノードを識別し、及び／又は、オーバレイネットワークに再度参加したロストノードを再発見し得る。ノードマネージャ５１０は、また、以下に説明されるようにネットワークのトポロジ（例えば、どのノードが最も近い他のノードであるか）を判定し得る。
【００８０】
通信マネージャ５２０は、ノードが互いに通信することを可能にし得る。通信マネージャ５２０は、オーバレイネットワークのツリーを横断するメカニズムを実装し得る。サービスレジストリの検索クエリに関連して、又は、他のノードへの直接的な通信方法が利用可能ではない場合に、ツリー横断が実行され得る。さらに、通信マネージャ５２０は、オーバレイネットワークのツリーを横断する必要なくオーバレイネットワークの特定のノードが直接的に通信することを可能にし得る直接的な通信方法を実装し得る。
【００８１】
マルチキャストマネージャ５３０は、マルチキャストメカニズムを実装し得る。当該マルチキャストメカニズムが使用されて、マルチキャストグループのメンバ（例えば、全てのメンバ）へメッセージが送信され得る。さらに、上記マルチキャストメカニズムが使用されて、加入通知メッセージパターンが実装され得る。よって、特定のサービスインスタンスに関連付けられるイベントが使用されて、上記特定のサービスインスタンスからのメッセージに加入（subscribe）したノードへ送信されるメッセージがトリガされ得る。マルチキャストマネージャ５３０は、アプリケーションレイヤマルチキャストマネージャ、又は、より低いＯＳＩレイヤからのマルチキャストマネージャを含み得る。
【００８２】
図５Ａは、オーバレイネットワークレイヤ３２０の例示的な機能コンポーネントを示すが、他の実施形態では、オーバレイネットワークレイヤ３２０は、図５Ａに描かれたものと比べて、より少ない機能コンポーネント、異なる機能コンポーネント、異なるように配置された機能コンポーネント、又は追加の機能コンポーネントを含んでもよい。さらに、オーバレイネットワークレイヤ３２０のいずれか１つのコンポーネント（又はコンポーネントのいずれかのグループ）は、オーバレイネットワークレイヤ３２０内の１つ以上の他の機能コンポーネントにより行われるように説明された機能を行ってもよい。
【００８３】
図５Ｂは、オーバレイネットワーク５４０の例示的なトポロジのブロック図である。図５Ｂの例に示されるように、オーバレイネットワーク５４０はノードＮ１〜Ｎ７を組む。ノードＮ１及びＮ２は、マルチキャストグループ５６０−１内にある。ノードＮ１は、サービスエンドポイントＳ１及びＳ３、並びにクライアントエンドポイントＣ１を含む。ノードＮ３は、ノードＮ１及びＮ２にとっての親ノードである。ノードＮ３は、サービスエンドポイントＳ７及びクライアントエンドポイントＣ３を含む。
【００８４】
ノードＮ６及びＮ７は、マルチキャストグループ５６０−２内にあり、ノードＮ７は、クライアントエンドポイントＣ２及びサービスエンドポイントＳ５及びＳ６を含む。ノードＮ５は、ノードＮ６及びＮ７にとっての親ノードであり、サービスエンドポイントＳ９を含む。ノードＮ３及びＮ５は、マルチキャストグループ５６０−３内にある。ノードＮ４は、ノードＮ３及びＮ５にとっての親ノードであり、オーバレイネットワーク５４０のルートノードである。さらに、ノードＮ４は、マルチキャストグループ５６０−４内にあり、サービスエンドポイントＳ８を含む。ネットワーク５４０のトポロジ内の親ノードは２つの子ノードを有するが、他の実装では、親ノードは、２つを超える子ノードを有してもよい。
【００８５】
各サービスエンドポイントは、サービスレジストリ４４０に関連付けられるとすると、検索クエリは、以下のようにオーバレイ機能ネットワーク５４０を横断し得る。ノードＮ３内のサービスエンドポイントＳ７は、検索クエリを実行して、サービスエンドポイントＳ１及びサービスエンドポイントＳ５に含まれる（即ち、Ｓ１及びＳ５がマッチする）特定のサービスを識別する。サービスエンドポイントＳ７は、ローカルサービスレジストリに上記検索クエリを送信し得る。上記検索クエリにおいてマッチなしという結果になり得る。その後、上記ローカルサービスレジストリは、オーバレイネットワーク内の隣接するサービスレジストリを識別し得る。当該隣接するサービスレジストリは、ノードＮ１内のサービスレジストリ、及びノードＮ４内のサービスレジストを含み得る（ノード２に関連付けられるサービスエンドポイントがないので、ノードＮ２はサービスレジストリを含まなくてもよい）。ノードＮ１内のサービスレジストリは、サービスエンドポイントＳ１を識別するヒットを返し得る。ノードＮ４内のサービスレジストリは、いずれのヒットも返さなくてもよく、隣接するサービスレジストリへ上記検索クエリを転送し得る。このケースでは、当該隣接するサービスレジストリは、ノードＮ３及びＮ５内のサービスレジストリを含む。しかしながら、ノードＮ３内のサービスレジストリは、検索を既に処理したので、上記検索クエリは、ノードＮ５内のサービスレジストリへのみ送信され得る。ノードＮ５におけるサービスレジストリは、ヒットせず、ノードＮ７におけるサービスレジストリへ上記検索クエリを転送し得る。ノードＮ７は、サービスエンドポイントＳ５をヒットとして識別し得る。そして、ノードＮ７は、上記検索クエリの結果をノードＮ４へ返し得る。ノードＮ４は、ノードＮ３内のサービスエンドポイントＳ７へ検索結果を転送し得る。
【００８６】
その後、サービスエンドポイントＳ７は、ノードＮ１におけるサービスエンドポイントＳ１、又はノードＮ７におけるサービスエンドポイントＳ５のいずれかと通信する。いくつかの実装では、サービスエンドポイントＳ７は、ノードＮ４及びＮ５を介してサービスエンドポイントＳ５へメッセージを送信し得る。他の実装では、サービスエンドポイントＳ７は、ノードＮ７と直接的に通信することにより、サービスエンドポイントＳ５へメッセージを送信してもよい。
【００８７】
別の例として、サービスエンドポイントＳ７は、上記検索クエリへの第１のマッチを要求するのみであってもよい。ノードは、ツリーのさらに下にあるノードを優先順位付けする優先順位で他のノードへ検索クエリを転送してもよい。よって、ノードＮ３は、上記検索クエリをノードＮ４へ送信する前に、上記検索クエリをノードＮ１及びＮ２へ転送するであろう。ノードＮ１及びＮ２はツリーのさらに下にある（即ち、ノードＮ３の子である）が、ノードＮ４はツリーのさらに上にある（即ち、ノードＮ３の親である）からである。ノードＮ１は、上記検索クエリについてのマッチを識別し、サービスエンドポイントＳ７は、１つのマッチを要求するのみであるので、上記検索は、上記検索クエリがノードＮ４へ送信される前に終了し得る。
【００８８】
図６は、サービスマネージャ６００の機能コンポーネントを説明するブロック図である。サービスマネージャ６００は、１つ以上のケイパビリティを管理するように構成され得る。図６に示されるように、サービスマネージャ６００は、加入生成器（subscription  generator）６１０、配置マネージャ６２０及び警告生成器（alert  generator）６３０を含み、ケイパビリティデータベース（ＤＢ）６４０に関連付けられている。
【００８９】
加入生成器６１０は、ケイパビリティに関連付けられているサービスについての加入要求を生成し得る。さらに、加入生成器６１０は、サービスレジストリ４４０から加入通知を受信し得る。また、加入生成器６１０は、受信された上記加入通知に基づいて、ケイパビリティＤＢ６４０を更新し得る。配置マネージャ６２０は、１つ以上のサービスの配置を開始し得る。例えば、加入生成器６１０が、サービスマネージャ６００により管理されるケイパビリティに関連付けられているサービスがノードに配置可能であることを示す加入通知を受信する場合に、配置マネージャ６２０は、上記サービスを配置するように上記ノードでの配置サービス（例えば、バンドルホスト）に指示することにより、上記ノードでの上記サービスの配置を開始し得る。
【００９０】
警告生成器６３０は、管理者のための警告を生成し得る。例えば、加入生成器６１０が、ケイパビリティを実現するように要求される特定のサービスが上記システム内に配置可能ではないことの標識を受信する場合に、警告生成器６３０は、警告を生成し、当該警告を管理装置１５０へ送信し得る。
【００９１】
ケイパビリティＤＢ６４０は、サービスマネージャ６００により管理されるケイパビリティに関連する情報を記憶し得る。ケイパビリティＤＢ６４０に記憶され得る例示的な情報は、図７Ｂを参照して以下に説明される。
【００９２】
一例として、サービスマネージャ６００は、ビデオファイル又はビデオストリームを１つの符号化フォーマットから別の符号化フォーマットへ変換する符号変換（transcoding）ケイパビリティについてのサービスマネージャに対応してもよい。符号変換ケイパビリティは、各特定の変換タイプについての符号変換サービス（例えば、ＭＰＥＧ（Moving  Picture  Experts  Group）−４からＨＥＶＣ（High  Efficiency  Video  Coding）への符号変換サービス、ＭＰＥＧ−４からＭＰＥＧ−２への符号変換サービスなど）を要求してもよい。
【００９３】
別の例として、サービスマネージャ６００は、人数計測（people  counting）ケイパビリティについてのサービスマネージャに対応してもよい。人数計測ケイパビリティは、特定の期間の間に特定の位置を通過した人の数を計測（count）してもよい。人数計測ケイパビリティは、上記特定の位置についてのビデオストリームキャプチャサービスと、キャプチャされたビデオストリームを記憶するストレージサービスと、記憶されたビデオストリームを処理して特徴を抽出する特徴検出サービスと、抽出された特徴を処理して上記記憶されたビデオストリームのイメージ内の人を識別する人検出サービスと、ユーザインタフェースを生成して上記期間の間における上記特定の位置での計測された人の数を報告する人数計測報告サービスと、を含むサービスのセットを要求してもよい。
【００９４】
さらに別の例として、サービスマネージャ００は、特定の位置から特定のオペレーティングシステムについてのストレージの位置へビデオ信号をストリーミングするためのサービスマネージャに対応してもよい。ストレージケイパビリティは、上記特定の位置のビデオをキャプチャする第１のサービス、キャプチャされたビデオ信号をストレージ装置へストリーミングする第２のサービス、及び、上記特定のオペレーティングシステムを使用する装置内に上記キャプチャされたビデオ信号を記憶する第３のサービスを要求してもよい。
【００９５】
図６は、他の実装におけるサービスマネージャ６００の例示的な機能コンポーネントを示すが、サービスマネージャ６００は、図６に示されるものと比べて、より少ない機能コンポーネント、異なる機能コンポーネント、異なるように配置された機能コンポーネント、又は追加の機能コンポーネントを含んでもよい。さらに、サービスマネージャ６００のコンポーネントのうちのいずれか１つ（又はコンポーネントのうちのいずれかのグループ）は、サービスマネージャ６００の１つ以上の他の機能コンポーネントにより実行されるように説明される機能を実行してもよい。
【００９６】
図７Ａは、サービスレジストリ４４０内に記憶され得るコンポーネントを説明するブロック図である。図７Ａにおいて示されるように、サービスレジストリ４４０は、１つ以上のサービスエントリ７０１を含み得る。各サービスエントリ４０１は、サービスレジストリ４４０に関連付けられているサービスホストにより提供される特定のサービスに関連する情報を記憶し得る。サービスエントリ４０１は、サービスフィールド７１０、ノードフィールド７１２、属性フィールド７１４、配置フィールド７１６及び加入フィールド７１８を含み得る。
【００９７】
サービスフィールド７１０は、上記サービスエントリに関連付けられている特定のサービスを識別し得る。例えば、サービスフィールド７１０は、上記特定のサービスに関連付けられているサービスインタフェースを識別し得る。ノードフィールド７１２は、上記特定のサービスに関連付けられている特定のノード（例えば、装置１３０）を識別し得る。いくつかの実装では、第１のノードは、第２のノードについてのサービスレジストリを維持し、上記サービスレジストリ内で上記第２のノードに関連付けられているサービスを識別し得る。属性フィールド７１４は、上記特定のサービスに関連付けられている属性を識別する情報を記憶し得る。例えば、属性フィールド７１４は、上記サービスに関連付けられている位置、上記サービスに関連付けられているオペレーティングシステム、上記サービスに関連付けられている処理の負荷、上記サービスに関連付けられている帯域幅キャパシティ、上記サービスに関連付けられているメモリキャパシティ、上記サービスに関連付けられているストレージキャパシティ、上記サービスに関連付けられているサブネットワーク及び／又はドメイン、上記サービスに関連付けられているセキュリティレベル、上記サービスに関連付けられているコーデックタイプ、並びに／又は、他のタイプの属性を識別する情報を含み得る。いくつかの実施形態では、属性フィールド７１４は、属性テーブル４６０を含み得る。
【００９８】
配置フィールド７１６は、上記サービスが配置されているか、又は、上記サービスが配置可能であるか、を識別する情報を含み得る。加入フィールド７１８は、上記サービスに関連付けられている加入（subscription）を識別する情報を含み得る。サービスは、１つ以上の加入に関連付けられ得る。例えば、加入情報は、（例えばノードＩＤに基づいて）上記サービスへの変更についての通知に加入した特定のサービスマネージャ６００を識別し得る。よって、上記サービスが配置され、追加され、除外され、利用不能にされる場合、上記サービスの属性が変わる場合、及び／又は、他のタイプの変更が検出される場合に、通知がサービスマネージャ６００へ送信され得る。
【００９９】
図７Ａは、他の実装におけるサービスレジストリ４４０の例示的なコンポーネントを示すが、サービスレジストリ４４０は、図７Ａに示されるものと比べて、より少ないコンポーネント、異なるコンポーネント、異なるように配置されたコンポーネント、又は追加的なコンポーネントを含んでもよい。
【０１００】
図７Ｂは、ケイパビリティＤＢ６４０に記憶され得るコンポーネントを説明するブロック図である。ケイパビリティＤＢ６４０は、１つ以上のケイパビリティレコード７５１を記憶し得る。各ケイパビリティレコード７５１は、サービスマネージャ６００により管理される特定のケイパビリティに関連する情報を記憶し得る。各ケイパビリティレコード７５１は、１つ以上のサービスエントリ７６１を含み得る。各サービスエントリ７６１は、上記特定のケイパビリティに関連付けられている特定のサービスに関連する情報を記憶し得る。サービスエントリ７６１は、サービスフィールド７７０、要求フィールド７７２、利用可能性フィールド７７４、ノードフィールド７７６及び属性フィールド７７８を含み得る。
【０１０１】
サービスフィールド７７０は、例えば、上記特定のサービスについての上記サービスインタフェースを識別することにより、上記特定のサービスを識別し得る。要求フィールド７７２は、上記特定のサービスに関連付けられている１つ以上の要求を識別する情報を記憶し得る。一例として、上記ケイパビリティは、特定の数の、上記サービスの配置されたインスタンスを要求し得る。別の例として、上記ケイパビリティは、特定の数のインスタンスが配置可能であることを要求してもよい。さらに別の例として、上記ケイパビリティは、上記サービスが特定の属性（例えば、特定のストレージキャパシティ、特定の帯域幅キャパシティ、特定の位置、特定のＯＳなど）を含むことを要求してもよい。
【０１０２】
利用可能性フィールド７７４は、上記特定のサービスの利用可能性を識別する情報を含み得る。例えば、利用可能性フィールド７７４は、上記サービスが配置されているか又は配置可能であるかを識別し得る。さらに、いくつかの実装では、利用可能性フィールド７７４は、配置されたインスタンスの数、又は配置可能なインスタンスの数を識別し得る。ノードフィールド７７６は、特定のサービスが配置されている又は配置可能である１つ以上のノードを識別する情報を記憶し得る。サービスマネージャ６００により受信される各加入通知について、サービスマネージャ６００は、ノードフィールド７７６にノードを追加し得る（又はノードフィールド７７６からノードを除外し得る）。
【０１０３】
属性フィールド７７８は、上記ケイパビリティに関連付けられている特定のサービスの配置されているインスタンス又は配置可能なインスタンスの属性に関連する情報を記憶し得る。サービスマネージャ６００は、属性フィールド７７８に記憶される情報を監視して、上記属性が上記ケイパビリティについての上記要求を満たすかを判定し得る。上記属性が上記ケイパビリティについての上記要求を満たさなければ、サービスマネージャ６００は、上記要求を満たす他の配置されているサービスインスタンス又は配置可能なサービスインスタンスを識別することを試み得る。
【０１０４】
図７Ｂは、他の実装におけるケイパビリティＤＢ６４０の例示的なコンポーネントを示すが、ケイパビリティＤＢ６４０は、図７Ｂに示されるものと比べて、より少ないコンポーネント、異なるコンポーネント、異なるように配置されたコンポーネント、又は追加的なコンポーネントを含んでもよい。
【０１０５】
図８は、本明細書に説明された実装に従ってケイパビリティを管理するための第１のプロセスのフローチャートである。一実装では、図８の上記プロセスは、装置１３０内のサービスマネージャ６００により実行され得る。他の実装では、図８のいくつかの又は全てのプロセスは、サービスマネージャ６００から分離された及び／又はサービスマネージャ６００を含む他の装置又は装置のグループにより実行され得る。
【０１０６】
図８のプロセスは、ケイパビリティ明細（capability  specification）を受信することを含み得る（ブロック８１０）。例えば、管理者は、管理装置１５０を使用して、新たなケイパビリティについてのケイパビリティレコード７５１を生成し、上記ケイパビリティを実現するように求められる１つ以上のサービスを特定し得る。さらに、上記管理者は、上記ケイパビリティを実現するように求められる各サービスについての１つ以上の要求を特定し得る。
【０１０７】
上記ケイパビリティに関連付けられているサービスが選択され得る（ブロック８２０）。そして、選択された当該サービスについての加入要求が、サービスレジストリへ送信され得る（ブロック８３０）。例えば、サービスマネージャ６００の加入生成器６１０は、ケイパビリティレコード７５１内に列挙されているサービスのうちの１つを選択し、当該サービスについての（例えば、上記サービスインタフェースについての）加入要求を生成し、最も近いサービスレジストリ４４０へ当該加入要求を送信し得る。いくつかの実装では、サービスマネージャ６００及びサービスレジストリ４４０は、上記オーバレイネットワーク内の同一のノード（例えば、同一の装置１３０）内で動作し得る。よって、サービスマネージャ６００は、上記加入要求を上記ローカルサービスレジストリ４４０へ送信し得る。他の実装では、サービスレジストリ４４０は、上記オーバレイネットワーク内の異なるノード内に位置してもよく、上記加入要求は、上記オーバレイネットワークを介して送信されてもよい。
【０１０８】
いくつかの実装では、上記加入要求は、要求されるサービスについての１つ以上の属性要求を特定し得る。サービスは、当該サービスの属性が上記加入要求内の上記要求にマッチする場合に、上記加入要求についてのマッチとして識別され得る。他の実装では、上記加入要求は、要求されるサービス（例えば、サービスインタフェース）を特定してもよく、いずれのサービス属性要求も含まなくてもよい。そのような実装では、上記サービスの上記属性が上記要求にマッチするかを考慮することなく、上記サービスがマッチとして識別されてもよい。上記サービス属性が上記要求を満たすかについての判定は、受信される加入通知に含まれる情報に基づいて、サービスマネージャ６００により行われてもよい。
【０１０９】
加入通知は、上記サービスレジストリから受信され得る（ブロック８４０）。上記サービスの配置可能性についての判定が、受信される当該加入通知に基づいて行われ得る（ブロック８５０）。例えば、サービスマネージャ６００は、サービスレジストリ４４０から加入通知を受信し得る。当該加入通知は、上記サービスが配置されているか、配置可能であるか、又は上記システム内で利用不能であるかを示す情報を含み得る。
【０１１０】
上記サービスが配置されている（ブロック８５０−サービスが配置されている）と判定される場合に、上記サービスが配置されているノードが識別し得る（ブロック８６０）。また、識別されるノードは、上記ケイパビリティに関連付けられ得る（ブロック８６２）。例えば、サービスマネージャ６００は、受信された加入通知から、ノードを識別する情報を検索し、及び／又は、上記サービスの上記属性に関連する情報を検索し得る。検索される上記属性が上記要求にマッチする場合に、サービスマネージャ６００は、識別される上記ノードを、ケイパビリティレコード７５１内の上記サービスに関連付け得る。
【０１１１】
上記サービスが配置可能であると判定される場合に（ブロック８５０−サービスが配置可能）、上記サービスが配置可能であるノードが識別され（ブロック８７０）、上記識別されたノードでの上記サービスの配置が開始され（ブロック８７２）、識別された上記ノードが上記ケイパビリティに関連付けられ得る（ブロック８７４）。例えば、サービスマネージャ６００は、受信された上記加入通知から、ノードを識別するための情報を検索し、及び／又は、上記サービスの上記属性に関連する情報を検索し得る。検索された上記属性が上記要求にマッチする場合に、サービスマネージャ６００は、上記サービスを配置せよという識別された上記ノードへの指示を送信することにより、上記サービスの配置を開始する。例えば、サービスマネージャ６００は、識別された上記ノードにおけるバンドルホストに、上記サービスを配置するように指示し得る。
【０１１２】
上記サービスが利用不能であると判定される場合に（ブロック８５０−サービスが利用不能）、管理者警告が生成される（ブロック８８０）。例えば、加入マネージャ６００の警告生成器６３０は、特定のサービスが利用不能であるので上記ケイパビリティを実現できないことを示す警告を生成し、当該警告を管理装置１５０へ送信し得る。図８のプロセスは、ケイパビリティレコード７５１内に列挙されるサービスごとに繰り返され得る。
【０１１３】
図９は、本明細書で説明された実装に従ってケイパビリティを管理するための第２のプロセスのフローチャートである。一実装では、図９のプロセスは、装置１３０内のサービスマネージャ６００により実行され得る。他の実装では、図９のプロセスのうちのいくつか又は全ては、サービスマネージャ６００から分離された及び／若しくはサービスマネージャ６００を含む他の装置又は装置のグループにより実行されてもよい。
【０１１４】
図９のプロセスは、加入通知を受信することを含み得る（ブロック９１０）。例えば、サービスマネージャ６００は、サービスマネージャ６００により管理されるケイパビリティに関連付けられているサービスに関連する加入通知をサービスレジストリ４４０から受信する。上記サービスがもはやノードで利用可能ではない、又は上記サービスが上記ケイパビリティ要求をもはや満たさないというという判定が、行われ得る（ブロック９２０）。一例として、サービスマネージャ６００は、上記サービスがもはや配置されていない又は配置可能ではないことを上記加入通知が示すと判定し得る。別の例として、サービスマネージャ６００は、受信された上記加入通知から、サービス属性に関連する情報を検索してもよく、ケイパビリティレコード７５１において特定される上記サービス要求を上記サービス属性はもはや満たさないと判定してもよい。
【０１１５】
配置されている他のサービス又は配置可能な他のサービスが識別され得る（ブロック９３０）。サービスマネージャ６００が、上記サービスについての加入要求を送信した場合に、サービスマネージャ６００は、加入の明細にマッチする配置されているサービスインスタンス又は配置可能なサービスインスタンスについてのレコードを含む全てのサービスレジストリから加入通知を受信し得る。サービスマネージャ６００が、ケイパビリティに関連付けられているサービスについての加入通知を受信するたびに、サービスマネージャ６００は、上記加入通知からの情報をケイパビリティＤＢ６４０内に（例えば、利用可能性フィールド７７４、ノードフィールド７７６、及び／又は属性フィールド７７８内に）記憶し得る。サービスマネージャ６００は、ケイパビリティＤＢ６４０にアクセスして、配置されている他のサービスインスタンス、又は配置可能なサービスインスタンスを識別し得る。
【０１１６】
サービスマネージャ６００が加入（subscription）を使用してケイパビリティを管理しない他の実装では、又は、サービスマネージャ６００が加入要求を送信しない状況では、配置されている他のサービスインスタンス、又は配置可能なサービスインスタンスは、検索クエリをサービスレジストリ４４０へ送信することにより識別され得る。
【０１１７】
配置されているサービス又は配置可能なサービスに関連付けられているノードが識別され得る（ブロック９４０）。そして、識別された当該ノードは、上記ケイパビリティに関連付けられ得る（ブロック９５０）。例えば、サービスマネージャ６００は、ノードフィールド７７６にアクセスして、識別された上記配置されているサービス又は上記配置可能なサービスに関連付けられているノードを識別し得る。サービスマネージャ６００は、識別された上記ノードを、図８に関して上述した上記サービスに関連付ける。
【０１１８】
図１０は、本明細書において説明された実装に従って加入要求を管理するためのプロセスのフローチャートである。一実装では、図１０の上記プロセスは、装置１３０内のサービスレジストリ４４０により実行され得る。他の実装では、図１０のプロセスのうちのいくつか又は全ては、サービスレジストリ４４０から分離された及び／又はサービスレジストリ４４０を含む他の装置又は装置のグループにより実行され得る。
【０１１９】
図１０のプロセスは、サービスマネージャからサービスについての加入要求を受信することを含み得る（ブロック１１０）。上記サービスが上記サービスレジストリ内にあるかについての判定が行われ得る（ブロック１０２０）。例えば、サービスレジストリ４４０は、特定のサービスに加入せよという加入要求をサービスマネージャ６００から受信し得る。サービスレジストリ４４０は、サービスレコード７０１を検索して、サービスレジストリ４４０内のサービスが上記加入要求にマッチするかを判定し得る。
【０１２０】
上記サービスが上記サービスレジストリ内にある場合には（ブロック１０２０−ＹＥＳ）、加入通知が上記サービスマネージャへ送信され得る（ブロック１０３０）。例えば、サービスレジストリ４４０は、サービスレコード７０１に記憶されている情報に基づいて、上記加入要求を受信してサービスレコード７０１を検出することに応じて加入通知をサービスマネージャ６００へ送信して、上記サービスが特定のノードで利用可能であることをサービスマネージャ６００に通知し得る。処理はブロック１０４０へ続き得る。上記サービスが上記サービスレジストリ内にない場合には（ブロック１０２０−ＮＯ）、処理はブロック１０４０へ続き得る。
【０１２１】
上記加入要求は、上記サービスレジストリ内に記録され得る（ブロック１０４０）。例えば、上記サービスが上記サービスレジストリ内に含まれる場合に、サービスレジストリ４４０は、受信された上記加入要求からの情報を加入フィールド７１８に含めることにより、サービスレコード７０１を更新する。上記サービスが上記サービスレジストリに含まれなければ、サービスレジストリ４４０は、（上記サービスが追加されたことをサービスマネージャ６００が通知され得るように）上記サービスが後で追加される場合に備えて上記加入要求も記録する必要があり得る。そのような場合には、サービスレジストリ４４０は、上記加入要求からの情報を含む、上記サービスについての非アクティブなサービスレコード７０１（例えば、サービスレコード７０１が非アクティブであることの標識とともにサービスフィールド７１０及び加入フィールド７１８内の情報のみを含むサービスレコード７０１）を生成し得る。
【０１２２】
上記加入要求は、隣接するサービスレジストリへ転送され得る（ブロック１０５０）。例えば、サービスレジストリ４４０は、オーバレイネットワークのトポロジに基づいて、隣接するサービスレジストリを識別し、以前に上記要求を処理していない全ての隣接するサービスレジストリへ上記加入要求を転送し得る。
【０１２３】
その後になって、上記サービスにおける変更が検出され得る（ブロック１０６０）。そして、検出された上記変更に基づいて、上記加入通知が、上記サービスマネージャへ送信され得る（ブロック１０７０）。例えば、サービスレジストリ４４０は、サービスレコード７０１に関連付けられているいずれかの検出された変更に応じて、サービスマネージャ６００へ加入通知を送信し得る。
【０１２４】
図１１は、ケイパビリティが実現される例示的なオーバレイネットワーク１１００を説明する。特定の位置からウィンドウズＯＳストレージサービスへビデオ信号をストリーミングするためのケイパビリティを実現するのを担うサービスマネージャ１１１０をＳ３が含むと想定する。上記ケイパビリティは、特定の位置のビデオをキャプチャする第１のビデオサービス、ウィンドウズＯＳサーバ装置で上記ビデオを記憶する第２のストレージサービス、及び、特定のビットレートでカメラからストレージ位置へビデオ信号をストリーミングする第３のサービスを要求する。
【０１２５】
サービスマネージャ１１１０は、上記ケイパビリティを実現する３つのサービスの各々についての加入要求を生成し得る。ノードＮ１は、上記位置で上記ビデオをキャプチャする上記第１のビデオサービスについての上記加入要求を満たし、上記特定のビットレートで上記ビデオ信号をストリーミングする上記加入要求を満たすものとして、カメラ１１２０を識別する。カメラ１１３０は、上記位置で上記ビデオをキャプチャする上記第１のビデオサービスについての上記加入要求を満たすものとして識別され得るが、上記特定のビットレートで上記ビデオをストリーミングするサービスを含まない。よって、サービスマネージャ１１１０は、カメラ１１２０を選択し、カメラ１１２０を上記ケイパビリティと関連付け得る。さらに、ノードＮ５は、上記ケイパビリティのストレージサービス要求にマッチするものとして、ウィンドウズＯＳストレージサービス１１５０を識別し得る。
【０１２６】
その後になって、カメラ１１２０のストリーミングサービスが、上記ケイパビリティにより要求されるビットレートよりも低いビットレートを経験し得る。そして、ノードＮ１における上記サービスレジストリは、ノードＮ３におけるサービスマネージャ１１１０へ加入通知を送信し得る。サービスマネージャ１１１０は、他の加入要求を送信し得る。ノードＮ２は、上記特定のビットレートで上記ビデオ信号をストリーミングする上記加入要求をカメラ１１４０が満たすことを示す加入通知を用いて応答し得る。よって、サービスマネージャ１１１０は、カメラ１１４０を上記ケイパビリティに関連付け得る。よって、上記ケイパビリティを使用するいずれのクライアントも、カメラ１１２０からカメラ１１４０への上記ビデオ信号のシフトを経験し得る。
【０１２７】
以上の明細書では、添付の図面を参照して様々な好適な実施形態を説明した。しかし、添付の特許請求の範囲に記載される本発明のより広い範囲から逸脱することなく、実施形態に様々な改変及び変更を加えることができ、追加的な実施形態を実現することができることは明らかであろう。本明細書及び図面は、したがって、限定としてではなく例示とみなされるべきである。
【０１２８】
例えば、図８−１０に関連して一連のブロックが説明されたが、当該ブロックの順序は、他の実装では変更されてもよい。さらに、非依存のブロックは並列に実行されてもよい。
【０１２９】
上述したシステム及び／又は方法は、各図に示す実装において、多くの異なる形態のソフトウェア、ファームウェア、及びハードウェアで実装され得ることが理解されるであろう。これらのシステム及び方法を実装するのに使用される実際のソフトウェアコード又は専用の制御ハードウェアは、各実施形態を限定するものではない。よって、システム及び方法の動作および挙動は、特定のソフトウェアコードを参照せずに記載された。すなわち、ソフトウェア及び制御ハードウェアは、本明細書の記載に基づくシステム及び方法を実装するように設計され得ることが理解される。
【０１３０】
さらに、前述のある特定の部分が、１つ以上の機能を実行する構成要素として実装されてもよい。構成要素とは、本明細書で使用される場合、プロセッサ、ＡＳＩＣ、若しくはＦＰＧＡといったハードウェア、又はハードウェアとソフトウェアとの組み合わせ（例えば、ソフトウェアを実行するプロセッサ）を含み得る。本明細書で使用される「例示的な」という用語は、「説明のための例として」を意味する。
【０１３１】
「ｃｏｍｐｒｉｓｅｓ」／「ｃｏｍｐｒｉｓｉｎｇ」という用語は、本明細書で使用される場合、記述される特徴、整数、ステップ又は構成要素の存在を特定するようにとられるが、１つ以上の他の特徴、整数、ステップ、構成要素若しくはそのグループの存在又は追加を排除しない、ということが強調されるべきである。
【０１３２】
本出願で使用されるいかなる要素、動作、または命令も、特に明示しない限り、実施形態にとって不可欠または本質的であると解釈すべきではない。また、本明細書で使用する場合、冠詞の「ａ」は１つ以上の項目を含むことが意図されている。さらに、「〜に基づいて（ｂａｓｅｄ  ｏｎ）」という句は、特に明示しない限り、「少なくとも一部は〜に基づいて」を意味するものである。
【図１】
2015187859.tif 000002
【図２】
2015187859.tif 000003
【図３】
2015187859.tif 000004
【図４Ａ】
2015187859.tif 000005
【図４Ｂ】
2015187859.tif 000006
【図４Ｃ】
2015187859.tif 000007
【図５Ａ】
2015187859.tif 000008
【図５Ｂ】
2015187859.tif 000009
【図６】
2015187859.tif 000010
【図７Ａ】
2015187859.tif 000011
【図７Ｂ】
2015187859.tif 000012
【図８】
2015187859.tif 000013
【図９】
2015187859.tif 000014
【図１０】
2015187859.tif 000015
【図１１】
2015187859.tif 000016
【手続補正書】
【提出日】平成27年6月16日(2015.6.16)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図４Ｄ
【補正方法】追加
【補正の内容】
【図４Ｄ】
2015187859.tif 000017
【外国語明細書】
2015187859000001.pdf