(57)【特許請求の範囲】
【請求項１】
メッセージングプロトコルを利用してコンピューティングデバイス上のコマンドの実行を管理するためのコンピュータ実施方法であって、
メッセージ処理サービスにおいて、管理クライアントデバイスから、メッセージ処理機能の構成に関連する情報を受信するステップであって、トピックに従って発行されたメッセージを受信する登録済デバイスのサブセットを選択し、前記メッセージは、ＭＱテレメトリトランスポートプロトコルに従って形成されるステップと、
前記メッセージ処理サービスによって、受信済メッセージを前記管理クライアントデバイスから受信するステップであって、前記受信済メッセージは、主題記述子と関連付けられる１つ以上のレベルを含むトピック部を含むステップと、
前記メッセージ処理サービスによって、メッセージの前記トピック部に基づいて、前記メッセージを受信するために登録された受信側デバイスのセットを識別するステップと、
前記メッセージ処理サービスによって、前記受信済メッセージの前記トピック部を処理するステップであって、ビジネスルールまたはルーティングテーブルのセットの少なくとも１つの評価に基づいて、前記受信側デバイスのサブセットを選択するステップと、
前記メッセージ処理サービスによって、前記処理された受信済メッセージを発行するステップと、を含み、
前記メッセージ処理サービスは、選択された前記受信側デバイスのサブセット内にない受信デバイスには前記処理された受信済メッセージの発行をしない、コンピュータ実施方法。
【請求項２】
前記メッセージ処理サービスによって前記受信済メッセージを処理するステップは、追加情報の少なくとも一部分を取得するステップを含む、
請求項１に記載のコンピュータ実施方法。
【請求項３】
前記受信側デバイスのサブセットは、被調整デバイスに対応し、
前記受信済メッセージは、被調整デバイスによってタスクを実行する命令に対応する、
請求項１に記載のコンピュータ実施方法。
【請求項４】
前記メッセージ処理サービスによって、前記受信側デバイスの選択されたサブセットに対応する２次トピックを識別するために、前記受信済メッセージを処理するステップをさらに含む、
請求項１に記載のコンピュータ実施方法。
【請求項５】
メッセージプロトコルを利用する通信を管理するためのシステムであって、
前記システムは、プロセッサおよびメモリを有する少なくとも１つのコンピューティングデバイスに実装されるメッセージ処理サービスを備え、リモートコマンドサービスは、メッセージングプロトコルに従って形成されるメッセージを受信および発行するように構成され、
前記メッセージ処理サービスは、
トピック部に対応する入力メッセージを受信するように構成され、前記トピック部は、前記入力メッセージの主題を記述する少なくとも１つのレベルを含み、受信側デバイスのセットは前記入力メッセージの前記トピック部と関連付けられるメッセージを受信するために登録され、
前記メッセージ処理サービスは、
メッセージ処理構成に従って前記入力メッセージを処理し、ビジネスルールまたはルーティングテーブルのセットの少なくとも１つの評価に基づいて、前記受信側デバイスのサブセットを識別し、
前記処理された入力メッセージを発行する、
ように構成され、
前記メッセージ処理サービスは、選択された前記受信側デバイスのサブセット内にない受信デバイスには前記処理された受信済メッセージの発行をしない、
システム。
【請求項６】
１つ以上のビジネスルールまたはルーティングテーブルを関連付けることによって、前記メッセージ処理サービスを構成するように設定される管理クライアントデバイスをさらに備える、
請求項５に記載のシステム。
【請求項７】
前記メッセージ処理サービスは、前記受信側デバイスのセットと関連付けられるセキュリティ基準を評価することと、前記セキュリティ基準の評価に基づいて少なくとも１つの受信側デバイスを除外することと、によって、前記入力メッセージを処理する、
請求項５に記載のシステム。
【請求項８】
前記メッセージ処理サービスは、論理ルールの評価に基づいて、前記入力メッセージに関する可能である受信側のサブセットを選択する、
請求項５に記載のシステム。
【請求項９】
前記メッセージ処理サービスは、前記入力メッセージを受信する単一の受信側デバイスを選択する、
請求項８に記載のシステム。
【請求項１０】
前記メッセージ処理サービスは、ネットワーク処理サービスに対応する、
請求項５に記載のシステム。
【請求項１１】
前記受信側デバイスのセットは、被調整デバイスネットワークのセットの個々のデバイスに対応する、
請求項１０に記載のシステム。
【請求項１２】
前記メッセージングプロトコルは、ＭＱテレメトリトランスポートプロトコルを含む、
請求項５に記載のシステム。
【請求項１３】
メッセージプロトコルを利用してメッセージを管理するためのコンピュータ実施方法であって、前記コンピュータ実施方法は、
メッセージングプロトコルに従って形成されるメッセージを受信するステップであって、前記メッセージは、トピックに対応し、前記トピックは、主題記述子を含み、受信側デバイスのセットは、前記トピックと関連付けられるメッセージを受信するために登録されるステップと、
メッセージ処理構成に対する受信済メッセージを処理するステップであって、ビジネスルールまたはルーティングテーブルのセットの少なくとも１つの評価に基づいて、前記受信側デバイスのセットのサブセットを識別するステップと、を含み、
前記受信済メッセージを処理するステップは、選択された前記受信側デバイスのサブセット内にない受信デバイスには前記処理された受信済メッセージの発行をしない、コンピュータ実施方法。
【請求項１４】
前記受信済メッセージを処理するステップは、個々のメッセージに関する可能である受信側のサブセットを選択するステップを含む、
請求項１３に記載のコンピュータ実施方法。
【請求項１５】
前記メッセージ処理構成は、少なくとも１つのビジネスルールを含み、
前記受信済メッセージを処理するステップは、前記少なくとも１つのビジネスルールを評価するステップを含む、
請求項１３に記載のコンピュータ実施方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１６年１１月２８日に出願された「ＭＡＮＡＧＩＮＧ  ＳＥＣＵＲＩＴＹ  ＩＮ  ＭＥＳＳＡＧＩＮＧ  ＰＲＯＴＯＣＯＬ  ＣＯＭＭＵＮＩＣＡＴＩＯＮＳ」と題する米国特許出願第１５／３６２，７５１号、２０１６年１１月２８日に出願された「ＥＭＢＥＤＤＥＤ  ＣＯＤＥＳ  ＩＮ  ＭＥＳＳＡＧＩＮＧ  ＰＲＯＴＯＣＯＬ  ＣＯＭＭＵＮＩＣＡＴＩＯＮＳ」と題する米国特許出願第１５／３６２，７５７号、２０１６年１１月２８日に出願された「ＭＡＧＡＧＩＮＧ  ＭＥＳＳＡＧＩＮＧ  ＰＲＯＴＯＣＯＬ  ＣＯＭＭＵＮＩＣＡＴＩＯＮＳ」と題する米国特許出願第１５／３６２，７６５号、２０１６年１１月２８日に出願された「ＬＯＣＡＬＩＺＥＤ  ＤＥＶＩＣＥ  ＣＯＯＲＤＩＮＡＴＯＲ  ＷＩＴＨ  ＯＮ−ＤＥＭＡＮＤ  ＣＯＤＥ  ＥＸＥＣＵＴＩＯＮ  ＣＡＰＡＢＩＬＩＴＩＥＳ」と題する米国特許出願第１５／３６２，７０９号、２０１６年１１月２８日に出願された「ＯＮ−ＤＥＭＡＮＤ  ＣＯＤＥ  ＥＸＥＣＵＴＩＯＮ  ＩＮ  Ａ  ＬＯＣＡＬＩＺＥＤ  ＤＥＶＩＣＥ  ＣＯＯＲＤＩＮＡＴＯＲ」と題する米国特許出願第１５／３６２，６９６号、２０１６年１１月２８日に出願された「ＩＮＴＲＡ−ＣＯＤＥ  ＣＯＭＭＵＮＩＣＡＴＩＯＮ  ＩＮ  Ａ  ＬＯＣＡＬＩＺＥＤ  ＤＥＶＩＣＥ  ＣＯＯＲＤＩＮＡＴＯＲ」と題する米国特許出願第１５／３６２，７０８号、２０１６年１１月２８日に出願された「ＲＥＭＯＴＥ  ＩＮＶＯＣＡＴＩＯＮ  ＯＦ  ＣＯＤＥ  ＥＸＥＣＵＴＩＯＮ  ＩＮ  Ａ  ＬＯＣＡＬＩＺＥＤ  ＤＥＶＩＣＥ  ＣＯＯＲＤＩＮＡＴＯＲ」と題する米国特許出願第１５／３６２，７０７号に関する（以後、まとめて、「関連出願」とする）。関連出願のそれぞれの全体は、参照により本明細書によって組み込まれる。
【背景技術】
【０００２】
一般的に説明されるように、コンピューティングデバイスは、データを交換するために、通信ネットワークまたは一連の通信ネットワークを利用する。法人および組織は、操作をサポートするために、または第三者にサービスを提供するために、いくつかのコンピューティングデバイスを相互接続するコンピュータネットワークを運営する。コンピューティングシステムは、単一の地理的場所に位置することがあり得る、または複数の異なった地理的場所に位置し得る（例えば、プライベートまたはパブリック通信ネットワークを介して相互接続される）。具体的には、本明細書に概して「データセンター」と称されるデータセンターまたはデータ処理センターは、データセンターのユーザにコンピューティングリソースを提供するためにいくつかの相互接続されたコンピューティングシステムを含み得る。データセンターは、組織の代わりに運営されるプライベートデータセンター、または一般大衆の代わりにもしくは一般大衆の利益のために運営されるパブリックデータセンターであり得る。
【０００３】
データセンターリソースの利用の増大を促進するために、仮想化技術は、単一の物理コンピューティングデバイスが、データセンターのユーザに対して独立したコンピューティングデバイスとして見え、独立したコンピューティングデバイスとして動作する仮想マシンの１つ以上のインスタンスをホストすることを可能にする。仮想化により、単一の物理コンピューティングデバイスは、動的な方式で仮想マシンを作成、維持、削除、またはそれ以外の場合、管理することができる。次に、ユーザは、データセンターから、単一のコンピューティングデバイスまたはネットワーク化されたコンピューティングデバイスの構成を含む、コンピュータリソースを要求することができ、種々の数の仮想マシンリソースが提供されることができる。
【０００４】
いくつかの環境では、通信ネットワークを介して通信するコンピューティングデバイスは、デスクトップパーソナルコンピュータ等のコンピューティングデバイスとして主要機能を有するデバイスに対応することができる。他の環境では、通信ネットワークを介して通信するコンピューティングデバイスの少なくとも一部は、別個の主要目的がある家庭用器具（例えば、温度調節器または冷蔵庫）等の少なくとも１つの代替の主要機能を有する一方、また少なくとも制限された計算機能を提供する埋め込みデバイスまたはシンデバイスに対応することができる。いくつかの例では、これらの埋め込みデバイスまたはシンデバイスのローカルユーザインタフェースは制限され、ひいては、これらのデバイスのいくつかの機能を実施するために、リモート管理を必要とし得る。しかしながら、リモート管理は、いくつかの例では、リモート管理デバイスとの通信における待ち時間に起因して、およびプライベート情報が何らかの事情でリモート管理デバイスにおいて開示される、またはリモート管理デバイスとの通信中に開示されるのいずれかの可能性があるために問題となる可能性がある。これらの問題は、埋め込みデバイスまたはシンデバイスおよびリモート管理デバイスが別個の通信ネットワークに存在し、またはパブリック通信ネットワークを通して通信するときに、より広がり得る。
【０００５】
図面全体を通じて、言及される要素の間の対応関係を示すために、参照番号が再使用されてもよい。図面は、本明細書に説明される例示的実施形態を示すために提供され、開示の範囲を限定することを意図していない。
【図面の簡単な説明】
【０００６】
【図１】コーディネータが被調整環境内で被調整デバイスの動作をローカルで管理および調整するように動作することができる例示的環境を示すブロック図であり、コーディネータは、コーディネータの動作を修正するために、クライアントデバイスおよびサービスプロバイダ環境と通信し得る。
【図２】図１のコーディネータを提供するコンピューティングデバイスの一般的アーキテクチャを示す。
【図３Ａ】図１のコーディネータによって管理される被調整デバイスの一般的アーキテクチャを示す。
【図３Ｂ】図１のコーディネータによって管理される被調整デバイスの一般的アーキテクチャを示す。
【図４】通信プロトコルに関連する構成情報を生成およびサブミットするために利用され得るクライアントデバイスの一般的アーキテクチャを示す。
【図５】埋め込みコードを利用して、メッセージングプロトコルに従って送信される通信を処理するために利用され得るコンピューティングデバイスの一般的アーキテクチャを示す。
【図６Ａ】埋め込みコードを利用して、メッセージングプロトコルに従って通信を交換するための相互作用の例を示すような図１の例示的環境のブロック図である。
【図６Ｂ】埋め込みコードを利用して、メッセージングプロトコルに従って通信を交換するための相互作用の例を示すような図１の例示的環境のブロック図である。
【図６Ｃ】埋め込みコードを利用して、メッセージングプロトコルに従って通信を交換するための相互作用の例を示すような図１の例示的環境のブロック図である。
【図６Ｄ】埋め込みコードを利用して、メッセージングプロトコルに従って通信を交換するための相互作用の例を示すような図１の例示的環境のブロック図である。
【図７】例示的環境に従って、メッセージ処理サービスコンポーネントによって実施されるリモート実行メッセージングルーチンを示すフロー図である。
【図８】例示的実施形態に従って、クライアントコンピューティングデバイスまたは被調整デバイスによって実施されるリモート実行メッセージングルーチンの例を示すフロー図である。
【図９】コーディネータが被調整環境内で被調整デバイスの動作をローカルで管理および調整するように動作することができる例示的環境を示すブロック図であり、コーディネータは、コーディネータの動作を修正するために、クライアントデバイスおよびサービスプロバイダ環境と通信し得る。
【図１０】図１のコーディネータを提供するコンピューティングデバイスの一般的アーキテクチャを示す。
【図１１Ａ】図９のコーディネータによって管理される被調整デバイスの一般的アーキテクチャを示す。
【図１１Ｂ】図９のコーディネータによって管理される被調整デバイスの一般的アーキテクチャを示す。
【図１２】通信プロトコルに関連する構成情報を生成およびサブミットするために利用され得るクライアントデバイスの一般的アーキテクチャを示す。
【図１３】埋め込みコードを利用して、メッセージングプロトコルに従って送信される通信を処理するために利用され得るコンピューティングデバイスの一般的アーキテクチャを示す。
【図１４Ａ】埋め込みコードを利用して、メッセージングプロトコルに従って通信を交換するための相互作用の例を示すような図９の例示的環境のブロック図である。
【図１４Ｂ】埋め込みコードを利用して、メッセージングプロトコルに従って通信を交換するための相互作用の例を示すような図９の例示的環境のブロック図である。
【図１４Ｃ】埋め込みコードを利用して、メッセージングプロトコルに従って通信を交換するための相互作用の例を示すような図９の例示的環境のブロック図である。
【図１４Ｄ】埋め込みコードを利用して、メッセージングプロトコルに従って通信を交換するための相互作用の例を示すような図９の例示的環境のブロック図である。
【図１５】例示的環境に従って、メッセージ処理サービスコンポーネントによって実施されるリモート実行メッセージングルーチンの例を示すフロー図である。
【図１６】例示的環境に従って、クライアントコンピューティングデバイスまたは被調整デバイスによって実施されるリモート実行メッセージングルーチンの例を示すフロー図である。
【図１７】コーディネータが被調整環境内で被調整デバイスの動作をローカルで管理および調整するように動作することができる例示的環境を示すブロック図であり、コーディネータは、コーディネータの動作を修正するために、クライアントデバイスおよびサービスプロバイダ環境と通信し得る。
【図１８】図１７のコーディネータを提供するコンピューティングデバイスの一般的アーキテクチャを示す。
【図１９Ａ】図１７のコーディネータによって管理される被調整デバイスの一般的アーキテクチャを示す。
【図１９Ｂ】図１７のコーディネータによって管理される被調整デバイスの一般的アーキテクチャを示す。
【図２０】通信プロトコルに関連する構成情報を生成およびサブミットするために利用され得るクライアントデバイスの一般的アーキテクチャを示す。
【図２１】埋め込みコードを利用して、メッセージングプロトコルに従って送信される通信を処理するために利用され得るコンピューティングデバイスの一般的アーキテクチャを示す。
【図２２Ａ】埋め込みコードを利用して、メッセージングプロトコルに従って通信を交換するための相互作用の例を示すような図１７の例示的環境のブロック図である。
【図２２Ｂ】埋め込みコードを利用して、メッセージングプロトコルに従って通信を交換するための相互作用の例を示すような図１７の例示的環境のブロック図である。
【図２２Ｃ】埋め込みコードを利用して、メッセージングプロトコルに従って通信を交換するための相互作用の例を示すような図１７の例示的環境のブロック図である。
【図２２Ｄ】埋め込みコードを利用して、メッセージングプロトコルに従って通信を交換するための相互作用の例を示すような図１７の例示的環境のブロック図である。
【図２３】例示的環境に従って、メッセージ処理サービスコンポーネントによって実施されるリモート実行メッセージングルーチンの例を示すフロー図である。
【図２４】例示的環境に従って、クライアントコンピューティングデバイスまたは被調整デバイスによって実施されるリモート実行メッセージングルーチンの例を示すフロー図である。
【発明を実施するための形態】
【０００７】
一般的に説明されるように、本出願は、通信ネットワークにおけるコンピューティングデバイス間で伝達されるデータの管理に対応する。より具体的には、本開示の態様は、クライアントコンピューティングデバイスの管理を容易にするメッセージングプロトコルの利用に対応する。例示として、１つ以上のクライアントデバイスは、ＭＱＴＴメッセージングプロトコル等のメッセージングプロトコルを利用して、コンテンツを交換する。本出願の態様に従って、管理的コンポーネントは、トピックによって体系化されるメッセージを受信するためにサブスクライブされた受信コンピューティングデバイスのセットへの個々のメッセージングを容易にするように構成され得る。より具体的には、例示として、管理的デバイスは、トピックによって体系化される入力メッセージをレビューし、トピックと関連付けられるメッセージを受信するためにサブスクライブされている個々の受信デバイスを選択し得る通信コンポーネントを利用することができる。既存のメッセージングプロトコルを利用することによって、本出願の態様は、別個のデバイス間の通信に関わるクライアントデバイスおよび管理デバイスの必要性を軽減する。
【０００８】
例示的な例を参照すると、１つ以上のクライアントコンピューティングデバイスを含む被調整環境は、１つ以上のメッセージ処理サービスを提供するサービスプロバイダと通信する。被調整環境は、メッセージ処理サービスからのメッセージの配布を含む、被調整環境内で個々の被調整デバイスの管理を容易にするコーディネータを含む。コーディネータは、標準メッセージングプロトコルを活用することによって、被調整デバイスとの通信の交換を容易にする。一実施形態では、コーディネータは、ＭＱＴＴメッセージングプロトコルを利用することができる。例示として、メッセージングプロトコルは、指定トピックに従って発行されたメッセージに関連するコンテンツを受信するために、コーディネータによって登録するデバイスに関連する能力を含み得る。一般的に説明されるように、コーディネータがトピックに関連するコンテンツを受信するとき、コーディネータは、一般的に、コンテンツを全ての登録済デバイスに転送または発行するであろう。
【０００９】
メッセージングプロトコルのより一般的な実施に従って、コーディネータは、メッセージブロッカー能力において、追加処理なしで、登録済トピックを入力メッセージで識別されるトピックと簡単に一致させるように動作し得る。より具体的には、被調整デバイスのセットが指定トピックによって定義されるタスクの実行またはタスクのセットに関連するメッセージを受信するためにサブスクライブしている場合、より一般的なメッセージングプロトコルを実施するコーディネータは、被調整デバイスの全セットの登録を一致させ、適宜、メッセージを転送するであろう。下記に詳細に説明されるように、本出願の態様に従って、コーディネータまたは他のメッセージ処理コンポーネントは、コーディネータに、入力メッセージを識別された登録済デバイスのセットにどのように送るかを判定させる実行可能コードまたは命令で構成され得る。
【００１０】
引き続き前述の例を参照すると、コンテンツの配信を容易にするために、コーディネータによって受信される通信は、被調整デバイスの登録されたセットのどのセットがメッセージを受信するべきかを判定するために追加情報を利用することができる。本出願に従って、通信のトピック部は、通信の主題を定義するテキストの１つ以上のラベルまたはレベルで構成される。次に、コーディネータは、ルーティングテーブルおよびビジネスルールを利用して、被調整デバイスのサブセットに発行され、かつそれに向けられた別個のトピックを識別することができる。
【００１１】
いくつかの例では、被調整デバイスは、別個の主要目的がある家庭用器具等の少なくとも１つの代替の主要機能を有する埋め込みデバイスまたはシンデバイスに対応し得る。係るデバイスは、いくつかの例では、「モノのインターネット」デバイスまたは「ＩｏＴ」デバイスと称され得る。被調整デバイスは、制限されたローカルユーザインタフェース能力を含み得、ひいては、リモート管理からの利点をもたらし得る。本明細書に開示されるコーディネータは、コーディネータおよび被調整デバイスを含む環境内で（ローカルエリアネットワークまたは「ＬＡＮ」の環境等の内部で）、ローカルでの被調整デバイスの係るリモート管理を可能にする。したがって、コーディネータの使用は、ローカル環境の外部の通信を必要とすることなく、被調整デバイスの管理を可能にし得、それによって、プライバシリスクの減少を可能にし、外部またはパブリック通信ネットワークの使用を通して通信速度の増大を可能にする。
【００１２】
さらに、本明細書に開示されるようなコーディネータは、局所化されたオンデマンドコード実行システムとして機能し得、コーディネータ上に機能を実装するコードのポータブルセグメントの即時の実行を可能にする。コードのこれらのポータブルセグメントは、本明細書で「タスク」と称され得る。いくつかの例では、タスクは、例えば、デバイスの状態を変更すること等によって、被調整デバイスの機能を調整するために利用され得る。例えば、被調整デバイスがネットワーク対応照明である場合、タスクは、現在時間、ユーザ入力、または別の被調整デバイスの状態等のコーディネータへの入力に従って照明の状態を変更するように機能し得る（例えば、「オン」または「オフ」にする）。コーディネータは、さらに、いくつかの異なるプロトコルに従って被調整デバイスとタスクとの間の通信を可能にし、いくつかの例では、係るプロトコルの間の変換機能を提供し得る。またさらに、コーディネータは、いくつかの例では、タスクの実行位置を管理し得、その結果、タスクは、候補デバイスの能力およびタスクの実行についての要件に従って、コーディネータ上で、被調整デバイス上で、またはリモート環境（例えば、リモートネットワークコンピューティング環境）のデバイス上で実行され得る。これらのタスクは、いくつかの例では、ユーザによって定義され得、タスクに対応するユーザによりサブミットされたコードに従って、ユーザがコーディネータまたは被調整デバイス上で様々な機能性を実施することを可能にする。したがって、コーディネータは、被調整デバイスの即時に再構成可能な局所化された管理を提供し得る。
【００１３】
いくつかの例では、コーディネータは、「デバイスシャドウ」を介して被調整デバイスの状態を管理し得る。概して、デバイスシャドウは、被調整デバイスから遠隔の位置に記憶されるように（例えば、コーディネータまたはリモートデバイスシャドウサービスによって行われるように）、被調整デバイスの所望の状態のデータ表現に対応し得る。被調整デバイスは、デバイスシャドウによって表された状態と同期するように構成され得、したがって、デバイスシャドウへの変更が被調整デバイスの状態の対応する変更を生じさせると予測され得る。いくつかの例では、被調整デバイスおよび対応するシャドウの同期は、プロトコルが当技術分野において既知である、ＭＱＴＴプロトコル等の「発行／サブスクライブ」モデル通信プロトコルを介して発生し得る。したがって、被調整デバイスは、当該被調整デバイスのために、デバイスシャドウに「サブスクライブ」し得る。次に、コーディネータは、デバイスシャドウに「発行」する要求によって、デバイスシャドウの状態への所望の変更を取得し得る。コーディネータは、通信プロトコルを介して、被調整デバイスにデバイスシャドウの状態の変更を通知し得、被調整デバイスは、デバイスシャドウの状態にローカル状態を同期することによって応答し得る。デバイスシャドウの使用は、例えば、被調整デバイスとの通信から被調整デバイスの状態を読み出しまたは修正する要求を分離する際に有益であり得る。例示として、被調整デバイスの状態を読み出しまたは修正する要求は、デバイスシャドウを読み出しまたは修正することに関して即座に成功するものと考えられ得る。次に、被調整デバイスに必要な任意の変更は、被調整デバイスとシャドウデバイスとの間の通信プロトコルに従って、要求に対して非同期に発生し得る。デバイスと相互作用する要求がデバイスとの実際の通信から分離され得るため、これらの要求およびデバイス通信は、また、異なる通信プロトコルを利用し得る。例えば、デバイスシャドウを介してデバイス状態を読み出しまたは修正する要求は、伝達制御プロトコル（ＴＣＰ）等の高オーバヘッド、高信頼性プロトコルに従って伝達され得る一方、デバイスシャドウと被調整デバイスとの間の通信は、ＭＱＴＴ等の低オーバヘッドプロトコルを介して発生し得る。
【００１４】
本開示の実施形態に従って、コーディネータは、サービスプロバイダの環境を介してコーディネータの構成を変え得る、ユーザと関連付けられ得る。例示として、サービスプロバイダ環境は、コーディネータのプロバイダによって運営され得、コーディネータの被調整環境の位置、環境内の被調整デバイス、コーディネータによって実行可能なタスク、コーディネータがデバイスの間の通信、タスクの間の通信、もしくはデバイスとタスクとの間の通信をどのように管理するべきか、コーディネータに関するセキュリティ情報、またはコーディネータの他のパラメータ（コーディネータにおいて監視される測定基準、またはコーディネータにおいて行われるロギング等）等の、コーディネータの様々な構成パラメータをユーザが指定することを可能にし得る。コーディネータ自体が、いくつかの例では、制限された局所化されたユーザインタフェースと関連付けられ得るため、サービスプロバイダ環境は、ユーザが、クライアントデバイスを介して、コーディネータに関する構成をサブミットさせることを可能にし得、コーディネータに構成を自動的にプロビジョニングさせることを可能にし得る。サービスプロバイダ環境は、さらに、単一のクライアントデバイスが、統一したインタフェースを介して複数のコーディネータを管理することを可能にし得、新たな構成を配置することによって、またはコーディネータへの構成の前の配置をロールバックもしくは取り消すことによって、コーディネータの構成を素早く変えることを可能にし得る。
【００１５】
いくつかの例では、サービスプロバイダ環境は、コーディネータの機能性と同様のまたは同一の機能性を提供し得る。例えば、コーディネータは、コードのポータブルセグメントまたは「タスク」の実行に少なくとも部分的に基づいて機能し得る。同様に、サーバプロバイダ環境は、同一または同様のタスクを実行するように機能するオンデマンドコード実行環境を含み得る。係るオンデマンドコード実行環境に関する更なる詳細は、「ＰＲＯＧＲＡＭＭＡＴＩＣ  ＥＶＥＮＴ  ＤＥＴＥＣＴＩＯＮ  ＡＮＤ  ＭＥＳＳＡＧＥ  ＧＥＮＥＲＡＴＩＯＮ  ＦＯＲ  ＲＥＱＵＥＳＴＳ  ＴＯ  ＥＸＥＣＵＴＥ  ＰＲＯＧＲＡＭ  ＣＯＤＥ」と題し、２０１４年９月３０日に出願された米国特許第９，３２３，５５６号（「５５６特許」）の中に見ることができ、その全体が参照により本明細書に組み込まれる。要するに、タスクを実行するために、オンデマンドコード実行環境は、ユーザ要求が受信されるとすぐに使用する準備ができている、事前に初期化された仮想マシンインスタンスのプールを維持し得る。これらの仮想マシンの事前に初期化された性質に起因して、ユーザコードを実行することと関連付けられる遅延（時々、待ち時間と称され得る）（例えば、インスタンスおよび言語ランタイム起動時間）をかなり短くすることができ、多くの場合、１００ミリ秒のサブレベルまで短くなる。
【００１６】
例示として、オンデマンドコード実行環境は、１つ以上の物理コンピューティングデバイス上で仮想マシンインスタンスのプールを維持し得、各仮想マシンインスタンスは、そこにロードされた１つ以上のソフトウェアコンポーネント（例えば、オペレーティングシステム、言語ランタイム、ライブラリ等）を有する。オンデマンドコード実行環境が、ユーザのプログラムコードを実行するための１つ以上の計算上の制約を指定する、ユーザのプログラムコード（「タスク」）を実行する要求を受信するとき、オンデマンドコード実行環境は、要求によって指定された１つ以上の計算上の制約に基づいて、ユーザのプログラムコードを実行するための仮想マシンインスタンスを選択し、選択された仮想マシンインスタンス上でユーザのプログラムコードを実行させ得る。プログラムコードは、仮想マシンインスタンス上で作成された、分離されたコンテナ内で実行されることができる。要求が受信されるときまでに、プール内の仮想マシンインスタンスが特定のオペレーティングシステムおよび言語ランタイムにより既にブートおよびロードされているため、（例えば、仮想マシンインスタンス上で作成された１つ以上のコンテナ内でユーザコードを実行することによって）要求を扱うことができる発見計算能力（ｆｉｎｄｉｎｇ  ｃｏｍｐｕｔｅ  ｃａｐａｃｉｔｙ）と関連付けられる遅延は、かなり短くなる。
【００１７】
オンデマンドコード実行環境は、「５５６特許」において更に詳細に説明されるように、ユーザコード（様々なプログラミング言語のいずれかにおいて構成されたスレッド、プログラム等）を受信し、仮想マシンインスタンスのユーザ構成を必要とすることなく、高度にスケーラブルな、低遅延の方式でコードを実行するように構成されている仮想マシンインスタンスマネージャを含み得る。具体的には、仮想マシンインスタンスマネージャは、ユーザコードを受信する前に、およびいずれかの特定の仮想マシンインスタンス構成に関するユーザから任意の情報を受信する前に、それぞれが様々なランタイム環境のうちのいずれか１つ以上に対応する、構成の事前に定義されたセットに従って仮想マシンインスタンスを作成および構成することができる。その後、仮想マシンインスタンスマネージャは、コードを実行するユーザによって開始された要求を受信し、要求と関連付けられる構成情報に基づいて、コードを実行するように事前構成された仮想マシンインスタンスを識別する。仮想マシンインスタンスマネージャはさらに、少なくとも部分的に割り当てられた仮想マシンインスタンスの内部でコンテナを作成および構成することによって、ユーザのコードを実行するために、識別された仮想マシンインスタンスを割り当てることができる。仮想マシンインスタンスマネージャを実装し、仮想マシンインスタンス上でユーザコードを実行するための様々な実施形態は、「５５６特許」において、さらに詳細に説明されている。
【００１８】
上記に説明したように、コーディネータは、いくつかの例では、ローカルに（例えば、コーディネータ上で）、またはサービスプロバイダネットワーク内でオンデマンドコード実行環境の使用によってタスクを実行するかどうかを選択するように構成され得る。例えば、コーディネータは、処理サービスコンポーネントとして機能し、タスクに関連する受信された通信の範囲内で埋め込みコードを処理し、係る通信を受信するために登録された異なる被調整デバイスにどのように転送するかを判定し得る。さらなる例として、コーディネータおよびサービスプロバイダ環境の両方は、被調整デバイスに対応するデバイスシャドウを提供し得、ユーザは、コーディネータによってホストされたデバイスシャドウまたはサービスプロバイダ環境内でホストされたデバイスシャドウのいずれかまたは両方を変更する要求をサブミットし得る。係る例では、コーディネータは、所与の被調整デバイスに対応する様々なデバイスシャドウと共に、被調整デバイス自体を同期するように機能し得る。
【００１９】
本出願のまたさらなる態様に従って、１つ以上の被調整関係を含む通信環境は、１つ以上のメッセージ処理サービスを提供するサービスプロバイダと通信する。メッセージ処理サービスは、標準メッセージングプロトコルを活用することによって、被調整デバイスネットワークとの通信の交換を容易にする。一実施形態では、メッセージ処理サービスは、ＭＱＴＴメッセージングプロトコルを利用することができる。例示として、メッセージングプロトコルは、指定トピックに従って発行されたメッセージに関連するコンテンツを受信するために、個々の被調整ネットワークにおけるコーディネータに関する能力を含み得る。一般的に説明されるように、メッセージ処理サービスがトピックに関連するコンテンツを受信するとき、メッセージ処理サービスは、一般的に、コンテンツを全ての登録済デバイスに転送または発行するであろう。
【００２０】
引き続き前述の例を参照すると、コンテンツの配信を容易にするために、メッセージ処理サービスによって受信される通信は、コーディネータの登録されたセットのどのセットがメッセージを受信するべきかを判定するために追加情報を利用することができる。本出願に従って、通信のトピック部は、通信の主題を定義するテキストの１つ以上のラベルまたはレベルで構成される。次に、メッセージ処理サービスは、ルーティングテーブルおよびビジネスルールを利用して、コーディネータのサブセットに発行されおよびそれに向けられた別個のトピックを識別することができる。
【００２１】
本開示に説明されるいくつかの実施形態の態様が例示の目的のために、ＭＱＴＴメッセージングプロトコルおよびデバイスの他の構成に重点を置いているが、当業者は、例は、例示だけにすぎず、必ずしも限定することを意図しないことを認識するであろう。本開示を考慮して当業者によって認識されるように、本明細書に開示される実施形態は、コンピューティングシステム、特に、外部デバイスによって調整および管理される、制限された局所化されたユーザインタフェースを伴うコンピューティングシステムの能力を改善する。
【００２２】
本開示の上述した態様および付随する利点の多くは、添付図面と併用するとき、以下の説明を参照することによって、それらがより良好に理解されるように、さらに容易に認識されるようになるであろう。本開示の様々な実施形態および態様が、図１〜図２４に関して説明される。本開示は、任意の指定の組み合わせの実施形態または例を必要とする方式で解釈するべきではない。加えて、当業者は、本出願の１つ以上の態様または実施形態が、容易に組み合わされ得、本出願の追加の発明の関する態様をもたらし得ることを認識するであろう。
【００２３】
図１は、コーディネータ１１４が被調整デバイス１１２を制御するように動作し得る１つ以上の被調整環境１１０と、（例えば、被調整デバイス１１２の状態の変更を要求するために）被調整環境１１０と相互作用し得るクライアントデバイス１０２と、様々な被調整環境１１０内でコーディネータ１１４との通信またはコーディネータ１１４の構成を支援し得るサービスプロバイダ環境１２０とを含む、例示的動作環境１００のブロック図である。
【００２４】
被調整環境１１０、クライアントデバイス、およびサービスプロバイダ環境１２０は、ネットワーク１０４を介して通信し得、ネットワーク１０４は、いずれかの有線ネットワーク、無線ネットワーク、またはそれらの組み合わせを含み得る。例えば、ネットワーク１０４は、パーソナルエリアネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、無線ブロードキャストネットワーク（例えば、ラジオまたはテレビのためのもの）、ケーブルネットワーク、衛星ネットワーク、携帯電話ネットワーク、またはそれらの組み合わせであり得る。さらなる例として、ネットワーク１０４は、インターネット等の様々な異なった関係者によって運営される可能性がある、リンクされたネットワークの公然にアクセス可能なネットワークであり得る。いくつかの実施形態では、ネットワーク１０４は、企業または大学のイントラネット等のプライベートまたはセミプライベートネットワークであり得る。ネットワーク１０４は、グローバルシステムフォーモバイルコミュニケーションズ（ＧＳＭ）ネットワーク、符号分割多元接続（ＣＤＭＡ）ネットワーク、ロングタームエボリューション（ＬＴＥ）ネットワーク、または他の種類の無線ネットワークを含み得る。ネットワーク１０４は、インターネットまたは他の上述した種類のネットワークのいずれかを介して通信するためのプロトコルおよびコンポーネントを使用することができる。例えば、ネットワーク１０４によって使用されるプロトコルは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ＨＴＴＰセキュア（ＨＴＴＰＳ）、ＭＱＴＴ、およびコンストレイントアプリケーションプロトコル（ＣｏＡＰ）等を含み得る。インターネットまたは他の上述した種類の通信ネットワークのいずれかを介して通信するためのプロトコルおよびコンポーネントは、当業者に十分に既知であり、ひいては、本明細書でさらに詳細に説明されない。ネットワーク１０４の全てのコンポーネントが図１に示されているが、ルータ等の１つ以上のコンポーネントは、メッセージ処理サービスとして機能し得る。
【００２５】
被調整環境１１０のそれぞれは、実行環境１１０のネットワーク（ネットワークは図１に示されない）を介して通信する、コーディネータ１１４および任意の数の被調整デバイス１１２を含み得る。被調整環境１１０内のそれらの関連付けのために、所与の環境１１０内の被調整デバイス１１２およびコーディネータ１１４は、通信ネットワークの点で、相互に「ローカル」であると考えられ得る。例えば、所与の環境１１０内の被調整デバイス１１２およびコーディネータ１１４は、ＬＡＮまたは他の局所化された通信ネットワークを介して接続され得る。
【００２６】
被調整デバイス１１２のそれぞれは、コーディネータ１１４と通信して、被調整デバイス１１２の機能性を管理するように構成されているコンピューティングデバイスに対応することができる。いくつかの例では、被調整デバイス１１２は、ロバストな局所化されたユーザインタフェース能力を伴う、ラップトップ、デスクトップ、スタンドアロンメディアプレイヤ等の十分に特徴付けられたコンピューティングデバイスに対応することができる。他の例では、被調整デバイス１１２は、家庭用器具またはデバイス（冷蔵庫、洗濯機、湯沸し器、加熱炉、ドアロック、照明バルブ、電気コンセント、電気スイッチ等）内に埋め込まれた、またはそれらに付属品として取り付けられたデバイス等の別の主要機能と関連付けられるシンデバイスまたは埋め込みデバイスに対応することができる。係る器具またはデバイスは、いくつかのコンテキストでは、「スマート」デバイス、ＩｏＴデバイス、または「接続」デバイスと称される。したがって、被調整デバイス１１２は、制限されたローカルユーザインタフェースを含み、リモート管理のために構成され得る。いくつかの例では、被調整デバイス１１２は、ステートフルであり得、命令に応答してそれらの状態を変えるように動作し得る（例えば、「オフ」から「オン」に変化させること等によって変わる）。
【００２７】
さらに下記に詳細に説明されるように（例えば、図２に関して）、コーディネータ１１４は、被調整デバイス１１２に伝達された命令が被調整環境１１０の外側に伝わることを要求することなく（従って、係る命令のセキュリティが強化され、その伝達速度が速くなる）、被調整デバイス１１２の動作を調整、管理、または制御する命令を実行するコンピューティングデバイスに対応することができる。具体的には、コーディネータ１１４は、被調整デバイス１１２、クライアントデバイス１０２、およびサービスプロバイダネットワーク１２０のデバイスの任意の組み合わせの間の通信を管理するように集合的に構成されているプロセッサおよびメモリを含み得る。コーディネータは、さらに、サービスプロバイダ環境１２０のオンデマンドコード実行環境１５０と同様の方式で、タスクの実行を可能にするように構成され得る。これらのタスクは、被調整デバイス１１２、クライアントデバイス１０２、およびサービスプロバイダネットワーク１２０のデバイスと通信することを含む、様々なユーザにより定義された機能性またはユーザにより定義されていない機能性を実施し得る。したがって、コーディネータ１１４は、被調整デバイス１１２の手動制御、自動制御、または半自動制御を可能にするように構成され得る。例えば、コーディネータ１１４は、クライアントデバイス１０２が、被調整デバイス１１２の状態を変更する要求を伝達することを可能にし、状態の係る変更を発生させ得る。さらなる例として、コーディネータ１１４は、被調整デバイス１１２の状態を変更するべき基準をユーザが指定することを可能にし、次に、基準が満たされるときに被調整デバイス１１２の状態を自動的に変更するように動作し得る。下記に説明されるように、コーディネータ１１４の多くの機能は、タスクによって確立され得、ユーザによって所望されるように、これらの機能の即時の変更を可能にする。
【００２８】
クライアントデバイス１０２は、ユーザが被調整環境１１０、サービスプロバイダ環境１２０、またはそれらの両方と通信することを可能にする、様々なコンピューティングデバイスを含み得る。概して、クライアントデバイス１０２は、デスクトップ、ラップトップもしくはタブレットコンピュータ、パーソナルコンピュータ、ウェアラブルコンピュータ、サーバ、携帯情報端末（ＰＤＡ）、ハイブリッドＰＤＡ／携帯電話、携帯電話、電子ブックリーダ、セットトップボックス、ボイスコマンドデバイス、カメラ、およびデジタルメディアプレイヤ等の任意のコンピューティングデバイスであり得る。サービスプロバイダ環境１２０は、コーディネータ１１４に関する構成をサブミットし、当該構成の配置を制御し、コーディネータ１１４上またはサービスプロバイダ環境１２０のオンデマンドコード実行環境１５０上で実行されるタスクに対応するコードをサブミットし、コーディネータ１１４に関連する情報のロギングまたは監視を参照する等のために、サービスプロバイダ環境１２０と相互作用するための１つ以上のユーザインタフェース、コマンドラインインタフェース（ＣＬＩ）、アプリケーションプログラミングインタフェース（ＡＰＩ）、および／または他のプログラムインタフェースをクライアントデバイス１０２に提供し得る。同様に、コーディネータ１１４は、被調整デバイス１１２の状態を読み出し、被調整デバイス１１２の状態の変更を要求し、コーディネータ１１４がタスクの実行を生じさせることを要求する等のために、コーディネータ１１４と相互作用するための１つ以上のユーザインタフェース、コマンドラインインタフェース（ＣＬＩ）、アプリケーションプログラミングインタフェース（ＡＰＩ）、および／または他のプログラムインタフェースをクライアントデバイス１０２に提供し得る。１つ以上の実施形態がユーザインタフェースを使用するとして本明細書に説明され得るが、係る実施形態は、加えてまたは代わりに、任意のＣＬＩ、ＡＰＩ、または他のプログラムインタフェースを使用し得ることを認識されたい。
【００２９】
サービスプロバイダ環境１２０は、コーディネータ１１４の構成、コーディネータ１１４の管理、およびコーディネータ１１４との通信を可能にするいくつかの要素を含み得る。具体的には、サービスプロバイダ環境１２０は、サービスプロバイダ環境１２０へのコーディネータ１１４の登録および係るコーディネータ１１４の構成を可能にする管理および配置サービス１３０と、コーディネータ１１４および被調整デバイス１１２の状態へのロバストな変更を可能にするデバイスシャドウサービス１４０と、タスクのコーディネータ１１４上のオンデマンドな動的実行と共に、コーディネータ１１４上のタスクの配置およびプロビジョニングを提供するオンデマンドコード実行環境１５０とを含む。
【００３０】
図１に示されるように、管理および配置サービス１３０は、管理および配置サービス１３０へのコーディネータ１１４の登録、コーディネータ１１４に関する構成の生成、およびコーディネータ１１４への構成データの伝送を可能にするように集合的に動作し得る、クライアントおよびデータインタフェース１３２と、構成データストア１３４とを含む。例示として、クライアントおよびデータインタフェース１３２は、１つ以上のユーザインタフェース（例えば、ＡＰＩ、ＣＬＩ、ＧＵＩ等）を提供し得、１つ以上のユーザインタフェースを経由して、ユーザは、クライアントデバイス１０２を介して、構成データストア１３４に記憶するために、コーディネータ１１４の構成を生成またはサブミットし得る。クライアントおよびデータインタフェース１３２は、さらに、１つ以上のインタフェースを提供し得、１つ以上のインタフェースを経由して、コーディネータ１１４は構成を取得し得、その結果、コーディネータ１１４は、取得された構成に従って再構成される。構成データストア１３４は、ハードドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＤＤ）、ネットワーク接続ストレージ（ＮＡＳ）、テープドライブ、または任意のそれらの組み合わせ等の任意の永続的データストアまたは実質的に永続的データストアに対応することができる。
【００３１】
デバイスシャドウサービス１４０は、コーディネータ１１４または被調整デバイス１１２等のデバイスの「シャドウ状態」を作成し、維持し、読み取り、変え、または削除することを可能にする要素を含み得る。上記に説明したように、シャドウ状態は、対応するデバイスの所望の状態を表すデータに対応し得、対応するデバイスは、デバイスの現在の状態を反映し得る、または反映しない場合がある。例えば、コーディネータ１１４に関して、シャドウ状態は、コーディネータ１１４に関する所望の構成バージョンを含み得る。被調整デバイス１１２に関して、シャドウ状態は、被調整デバイス１１２の所望の状態（例えば、スイッチまたはバルブに関するオンまたはオフ、ロックに対してロックされまたはロックされていない、温度調節器に関する所望の温度等）を含み得る。デバイスシャドウサービス１４０は、ユーザまたは他のエンティティが、クライアントデバイス１０２を介して、デバイスに関するシャドウ状態から読み出す、またはデバイスに関するシャドウ状態を修正することを可能にし得、さらに、デバイスをシャドウ状態に同期するように当該デバイスと相互作用し得る。例示として、デバイスシャドウサービス１４０は、インタフェース１４２（例えば、ＡＰＩ、ＣＬＩ、ＧＵＩ等を含み得る）を含み得、インタフェース１４２を経由して、シャドウ状態から読み出し、シャドウ状態に記述し、シャドウ状態を作成または削除する要求が受信され得、シャドウデータストア１４４は、シャドウ状態を記憶するように構成され得る。シャドウデータストア１３４は、ハードドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＤＤ）、ネットワークアタッチドストレージ（ＮＡＳ）、テープドライブ、または任意のそれらの組み合わせ等の任意の永続的データストアまたは実質的に永続的データストアに対応することができる。デバイスシャドウの使用に関するさらなる詳細は、「Ｄｅｖｉｃｅ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ  Ｍａｎａｇｅｍｅｎｔ  Ｕｓｉｎｇ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ  Ｔｙｐｅｓ」と題し、２０１６年６月２９日に出願された米国特許出願第１５／１９６，７００号（「７００出願」）の中に見ることができ、その全体が参照によって本明細書に組み込まれる。
【００３２】
オンデマンドコード実行環境１５０は、タスク（例えば、ポータブルコードセグメント）のオンデマンド実行を提供するいくつかのデバイスを含み得る。具体的には、オンデマンドコード実行環境１５０は、フロントエンド１５２を含み得、フロントエンド１５２を経由して、ユーザは、クライアントデバイス１０２を介して、オンデマンドコード実行環境１５０にタスクをサブミットし、オンデマンドコード実行環境１５０上でタスクの実行を呼び出し得る。係るタスクは、例えば、タスクデータストア１５４に記憶され得、タスクデータストア１５４は、ハードドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＤＤ）、ネットワーク接続ストレージ（ＮＡＳ）、テープドライブ、または任意のそれらの組み合わせ等の任意の永続的データストアまたは実質的に永続的データストアに対応することができる。図１に示されていないが、オンデマンドコード実行システム１５０は、いくつかの実行環境等のタスクの実行を可能にする様々な追加コンポーネント（例えば、オンデマンドコード実行環境１５０の物理ホストデバイス上で実行するコンテナまたは仮想マシン）、係る実行環境を管理するワーカマネージャ、および即時ベースで（例えば、１０ミリ秒を下回る時間で）ワーカマネージャに、実行環境を利用可能にすることを支援するウォーミングプールマネージャを含み得る。オンデマンドコード実行環境に関するさらなる詳細は、上記の参照によって組み込まれる「５５６特許」の中に見ることができる。
【００３３】
上記に述べられたように、タスクは、オンデマンドコード実行環境１５０およびコーディネータ１１４の両方において利用され得る。上記に述べられたように、タスクは、（例えば、特定の機能を達成するための）ユーザコードの個々の集合に対応する。本明細書に使用されるようなユーザコードへの参照は、特定のプログラム言語で記述された任意のプログラムコード（例えば、プログラム、ルーチン、サブルーチン、スレッド等）を指し得る。本開示では、用語「コード」、「ユーザコード」、および「プログラムコード」は、交換可能に使用され得る。係るユーザコードは、例えば、ユーザによって開発された特定のウェブアプリケーションまたはモバイルアプリケーションに関連して、特定の機能を達成するように実行され得る。当該コードの指定の実行は、本明細書で「タスク実行」または単に「実行」と称される。タスクは、非限定的な例として、ＪａｖａＳｃｒｉｐｔ（例えば、ｎｏｄｅ．ｊｓ）、Ｊａｖａ、Ｐｙｔｈｏｎ、および／またはＲｕｂｙ（および／または別のプログラミング言語）で記述され得る。タスクは、様々な方式でオンデマンドコード実行システム１５０またはコーディネータ１１４上で実行するために「トリガ」され得る。一実施形態では、クライアントデバイス１０２または他のコンピューティングデバイスは、タスクを実行する要求を伝達し得、それは、一般的に、タスクを実行する「呼び出し」と称され得る。係る呼び出しは、実行されるユーザコード（または、その場所）と、ユーザコードを実行するために使用される１つ以上の引数とを含み得る。例えば、呼び出しは、タスクを実行する要求と一緒にタスクのユーザコードを提供し得る。別の例では、呼び出しは、その名前または識別子によって事前にアップロードされたタスクを識別し得る。さらなる別の例では、タスクに対応するコードは、タスクに関する呼び出しに含まれ得、要求がコーディネータ１１４またはオンデマンドコード実行システム１５０によって受信される前に、別個の場所（例えば、コーディネータ１１４のストレージ、ネットワークアクセス可能なストレージサービス、またはタスクデータストア１５４）にアップロードされる。コーディネータ１１４またはオンデマンドコード実行システム１５０の要求インタフェースは、ユーザから、ハイパーテキスト転送プロトコルセキュア（ＨＴＴＰＳ）要求としてタスクを実行する呼び出しを受信し得る。また、ＨＴＴＰＳ要求に含まれる任意の情報（例えば、ヘッダおよびパラメータ）も、タスクを実行するときに処理および利用され得る。上記に説明したように、例えば、ＨＴＴＰ、ＭＱＴＴ、およびＣｏＡＰを含む任意の他のプロトコルは、要求インタフェース１２２にタスク呼び出しを含有するメッセージを転送するために使用され得る。
【００３４】
タスクを実行する呼び出しは、タスクに対応するユーザコードと一緒に使用される１つ以上の第三者ライブラリ（ネイティブライブラリを含む）を指定し得る。一実施形態では、呼び出しは、コーディネータ１１４またはオンデマンドコード実行システム１５０に、実行のために要求されたタスクに対応するユーザコードおよび任意のライブラリ（および／または、その記憶場所の識別）を含有するＺＩＰファイルを提供し得る。いくつかの実施形態では、呼び出しは、実行されるタスクのプログラムコード、プログラムコードが記述された言語、呼び出しと関連付けられたユーザ、および／またはプログラムコードを実行するために保存されるコンピューティングリソース（例えば、メモリ等）を示すメタデータを含む。例えば、タスクのプログラムコードは、呼び出しとともに提供され得る、ユーザによって事前にアップロードされ得る、コーディネータ１１４もしくはオンデマンドコード実行システム１５０（例えば、標準ルーチン）によって提供され得る、および／または第三者によって提供され得る。いくつかの実施形態では、係るリソースレベルの制約（例えば、どの程度のメモリが特定のユーザコードを実行するために割り当てられるか）は、特定のタスクのために指定され、タスクの各実行を通じて変化しない場合がある。係る場合、コーディネータ１４０またはオンデマンドコード実行システム１５０は、個々の呼び出しのそれぞれが受信される前に、係るリソースレベルの制約へのアクセスを有し得、個々の呼び出しは、係るリソースレベルの制約を指定しない場合がある。いくつかの実施形態では、呼び出しは、どの種類のパーミッションまたは権限が、呼び出しがタスクを実行することを引き起こすかを示すパーミッションデータ等の他の制約を指定し得る。係るパーミッションデータは、（例えば、プライベートネットワーク上の）プライベートリソースにアクセスするためにオンデマンドコード実行システム１１０によって使用され得る。
【００３５】
いくつかの実施形態では、呼び出しは、呼び出しを扱うために採用されるべきである挙動を指定し得る。係る実施形態では、呼び出しは、呼び出しで参照されるタスクを実行するための１つ以上の実行モードを可能にするためのインジケータを含み得る。例えば、呼び出しは、デバッグモードでタスクが実行されるべきかどうかを示すためのフラグまたはヘッダを含み得、デバッグモードでは、タスクの実行と関連して生成され得るデバッギングおよび／またはロギング出力がユーザに（例えば、コンソールユーザインタフェースを介して）再度提供される。係る例では、コーディネータ１１４またはオンデマンドコード実行システム１５０は、呼び出しを検査し、フラグまたはヘッダを探索し得、それが存在する場合、コーディネータ１１４またはオンデマンドコード実行システム１５０は、タスクが実行される実行環境の挙動（例えば、ロギング機能）を修正し、出力データをユーザに再度提供させ得る。いくつかの実施形態では、挙動／モードインジケータは、コーディネータ１１４またはオンデマンドコード実行システム１５０によってユーザに提供されるユーザインタフェースによって呼び出しに追加される。ソースコードプロファイリング、リモートデバッギング等の他の特徴は、また、呼び出しにおいて提供されるインジケーションに基づいて、有効または無効にされ得る。
【００３６】
サービスプロバイダ環境１２０は、１つ以上のコンピュータネットワーク（図１に示されない）を使用して相互接続された、いくつかのコンピュータシステムを含む分散コンピューティング環境において動作するものとして図１に示される。サービスプロバイダ環境１２０は、また、図１に示されるデバイスよりも少ない数または多い数のデバイスを有するコンピューティング環境内で動作し得る。したがって、図１のサービスプロバイダ環境１２０の表現は、例示的であると見なされ、本開示を限定するものと見なすべきではない。例えば、サービスプロバイダ環境１２０またはその様々な構成は、本明細書に説明されるプロセスの少なくとも一部を実施するために、様々なウェブサービスコンポーネント、ホストされたコンピューティング環境もしくは「クラウド」コンピューティング環境、および／またはピアツーピアネットワーク構成を実装し得る。
【００３７】
さらに、サービスプロバイダ環境１２０は、ハードウェア、またはハードウェアデバイスによって実行されるソフトウェアに直接実装され得、例えば、本明細書に説明される様々な特徴を行うためのコンピュータ実行可能命令を実行するように構成されている物理コンピュータハードウェア上で実装された１つ以上の物理サーバまたは仮想サーバを含み得る。１つ以上のサーバは、例えば、１つ以上のデータセンター内で、地理的に分散され得る、または地理的に同一場所に配置され得る。いくつかの例では、１つ以上のサーバは、多くの場合「クラウドコンピューティング環境」と称される、即時にプロビジョニングされ、解放されるコンピューティングリソースのシステムの一部として動作し得る。
【００３８】
図２は、所与の被調整環境１１０内で被調整デバイス１１２を管理するコンピューティングシステム（コーディネータ１１４と称される）の一般的アーキテクチャを示す。図２に示されるワーカマネージャ１４０の一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアモジュールの配列を含む。ハードウェアモジュールは、下記にさらに詳細に説明されるように、物理電子デバイスが実装され得る。コーディネータ１１４は、図２に示される要素よりもさらに多くの（または、少ない）要素を含み得る。しかしながら、開示を可能にすることをもたらすために、それらの一般的な従来の要素の全てが示される必要はない。加えて、図２に示される一般的アーキテクチャは、図１に示される他のコンポーネントうちの１つ以上を実装するために使用され得る。示されるように、コーディネータ１１４は、プロセシングユニット２０４、ネットワークインタフェース２０６、コンピュータ可読媒体ドライブ２０７、および入力／出力デバイスインタフェース２０８を含み、それらの全ては、通信バスによって相互に通信し得る。ネットワークインタフェース２０６は、１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット２０４は、ネットワーク１０４を介して、他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。プロセシングユニット２０４は、また、メモリ２５０におよびメモリ２５０から通信し、さらに、入力／出力デバイスインタフェース２０８を介して、任意選択のディスプレイ（図示しない）に出力情報を提供し得る。入力／出力デバイスインタフェース２０８は、また、任意選択の入力デバイス（図示しない）から入力を受け得る。
【００３９】
メモリ２５０は、本開示の１つ以上の態様を実装するために、プロセシングユニット２０４が実行するコンピュータプログラム命令（いくつかの実施形態では、モジュールとしてグループ化される）を含有し得る。メモリ２５０は、一般的に、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、および／または他の永続的な、補助的もしくは非一時的コンピュータ可読媒体を含む。メモリ２５０は、コーディネータ１１４の一般管理および動作において、プロセシングユニット２０４による使用のためのコンピュータプログラム命令を提供するオペレーティングシステム２５２を記憶し得る。メモリ２５０は、さらに、本開示の態様を実装するためのコンピュータプログラム命令および他の情報を含み得る。例えば、一実施形態では、メモリ２５０は、プロセスマネージャ２５４、スケジューラ２５６、配置エージェント２５８、および通信マネージャ２６０を含む。
【００４０】
スケジューラ２５６および配置エージェント２５８は、プロセシングユニット２０４による実行のためのタスクを選択し、係るタスク実行を管理するようにプロセシングユニット２０４によって実行され得る。具体的には、スケジューラ２５６は、（例えば、コーディネータ１１４において制約されたリソースのインスタンスの下で）所与の時点における実行のためのタスクを選択し、タスクの実行を中断する命令を含み得る。配置エージェント２５８は、タスクを実行するための適切な実行環境２７０を選択し、当該実行環境２７０に、タスク実行中に必要なリソースへの適切なアクセスをプロビジョニングし、実行環境２７０内でタスクの実行を生じさせる命令を含み得る。本明細書で使用されるような実行環境２７０は、タスクを実行するためのメモリ２５０の論理部分を指す。一実施形態では、実行環境２７０は、プログラム的に分離され、その結果、第１の実行環境２７０内でのコードの実行は、別の実行環境２７０と関連付けられたメモリを修正することが防止される。例示として、実行環境２７０は、「コンテナ」、オペレーティングシステムレベルの仮想化環境、または「ｃｈｒｏｏｔ  ｊａｉｌ」もしくはＰｙｔｈｏｎ仮想環境「ｖｉｒｔｕａｌｅｎｖ」等の「サンドボックス」環境に対応し得る。他の例では、実行環境２７０は、仮想マシン環境（例えば、ＪＡＶＡ仮想マシン、異なったオペレーティングシステムを伴う仮想化されたハードウェアデバイス等）に対応し得る。さらなる他の例では、実行環境２７０は、仮想化を必ずしも利用することなく、タスクの実行に割り当てられたメモリ空間であり得る。
【００４１】
コーディネータ上で実行するタスクの間の通信と共に、コーディネータ１１４と他のデバイス（例えば、クライアントデバイス１０２および被調整デバイス１１２）との間の通信は、通信マネージャ２６０によって容易にされ得る。具体的には、通信マネージャ２６０は、コーディネータ１１４に向けられたメッセージを取得し、適切な宛先にメッセージを転送するように構成され得る。例えば、通信マネージャ２６０は、タスク、被調整デバイス１１２、クライアントデバイス１０２、およびサービスプロバイダ実行環境１２０のデバイスのいずれかの組み合わせの間でメッセージを送り得る。
【００４２】
コーディネータ１１４によって実行されるタスクは、タスクメモリ空間２８０内で論理的にグループ化されるものとして示され、タスクメモリ空間２８０は、各タスクに対応するコードを記憶するように構成されているメモリ２５０の論理ユニットに対応し得る。図２に示されるように、タスクメモリ空間２８０は、ルータタスク２８２、１つ以上の通信マネージャタスク２８６、シャドウサービスタスク２８８、および１つ以上のクライアントにより提供されるタスク２９０を含む、コーディネータ１１４の機能性を実施するようにプロセシングユニット２０４によって実行可能ないくつかのタスクを含み得る。
【００４３】
ルータタスク２８２は、コーディネータ内での、コーディネータへの、およびコーディネータからのメッセージのルーティングを支援するように実行可能なコードの一部に対応し得る。一実施形態では、ルータタスク２８２は、メッセージに関する適切な宛先を判定するために「ルーティングテーブル」を実装する。例えば、通信マネージャ２６０は、（例えば、タスク実行による生成、または入力／出力インタフェース２０８における受信に起因して）ルータタスク２８２に、コーディネータ１１４において取得されたメッセージを転送し得、ルータタスク２８２は、ある識別子にアドレス指定されたメッセージが所与のタスク、所与のクライアントデバイス１０２、または所与の被調整デバイス１０２に送られるべきであると判定するためにルーティングテーブルを利用し得る。ルーティングテーブルはさらに、識別子にアドレス指定されたメッセージがサービスプロバイダ環境１２０に（例えば、デバイスシャドウサービス１４０またはオンデマンドコード実行システム１５０に）伝達されるべきであることを示し得る。一実施形態では、ルーティングテーブルは、識別子として「トピック」を利用し得、その結果、特定のトピックと関連付けられたメッセージは、当該トピックに関して指定されたルーティングに従って送られる。ルーティングテーブルは、さらに、メッセージのソースに基づいて、そのメッセージをどのように送るかに関する情報を含み得る。例えば、所与のトピックにアドレス指定されたメッセージは、メッセージが第１のタスク、第２のタスク、第１の被調整デバイス１１２等から受信されるかどうかに基づいて、異なって送られ得る。ルーティングテーブルの利用によって、ルータタスク２８２は、メッセージの送信側の動作の変更なしに（例えば、メッセージを生成したタスクに関するコードを再記述することなく、メッセージを生成した被調整デバイス１１２のソフトウェアを修正すること等なく）、係るメッセージをリダイレクトすることを可能にし得る。
【００４４】
通信マネージャタスク２８６は、通信のプロトコルに従って、コーディネータ１１４と、いくつかの異なる外部デバイス（例えば、被調整デバイス１０２）との間の係る通信を可能にし得る。例えば、第１の通信マネージャタスク２８６は、ＢＬＵＥＴＯＯＴＨ（商標）プロトコルを使用して通信を管理するように構成され得、第２の通信マネージャは、ＨＴＴＰプロトコルを使用して通信を管理するように構成され得る等のことがある。いくつかの例では、複数の通信マネージャタスク２８６は、通信を実施するように集合的に作用し得る。例えば、第１の通信マネージャタスク２８６は、ＴＣＰプロトコルを介した通信を可能にし得る一方、第２の通信マネージャタスク２８６は、ＭＱＴＴプロトコル（ＴＣＰプロトコルを利用し、ひいては、第１の通信マネージャタスク２８６を利用し得る）を介した通信を可能にし得る。異なる通信マネージャタスク２８６が異なるプロトコルを介して通信するコーディネータ１１４の能力を変化させることができるためにおよびコーディネータ１１４のタスクがコーディネータ１１４の再構成によって変わり得るために、コーディネータ１１４は、様々な異なる通信プロトコルを利用するように即時に再構成され得る。
【００４５】
シャドウサービスタスク２８８は、コーディネータ１１４において維持されたデバイスシャドウの管理と、デバイスシャドウとの相互作用とを容易にすることができる。例示として、シャドウサービスタスク２８８は、コーディネータ１１４に対してローカルにデバイスシャドウサービス１４０によって提供されるものと同様の機能性を実施することができる。したがって、シャドウサービスタスク２８８は、被調整デバイス１１２のシャドウ状態（所望の状態を表すデータ）を維持し、係るデータへの読み出しまたは書き込みを可能にし得る。シャドウサービスタスク２８８は、さらに、被調整デバイス１１２に関するデバイスシャドウとの被調整デバイス１１２の同期を可能にし得る。したがって、被調整デバイス１１２に関するデバイスシャドウを修正することによって、被調整デバイス１１２の状態が変わり得る。被調整デバイス１１２に関するデバイスシャドウを読み出すことによって、被調整デバイス１１２の状態を判定することができる。いくつかの例では、シャドウサービスタスク２８８は、さらに、デバイスシャドウサービス１４０によって維持されるデバイスシャドウ等の所与のデバイスに関する別のデバイスシャドウに合わせて調整し得る。例えば、シャドウサービスタスク２８８は、ローカルデバイスシャドウを、デバイスシャドウサービス１４０に記憶されたデバイスシャドウと同期し、ローカルデバイスシャドウと、デバイスシャドウサービス１４０に記憶されたデバイスシャドウとの間の不一致等を解決し得る。
【００４６】
上記に説明したタスク（それらのそれぞれが、例示として、サービスプロバイダ環境１２０と関連付けられたエンティティによって提供され得る）に加えて、タスクメモリ空間２８０は、任意の数のクライアントにより提供されるタスク２９０を含み得、クライアントにより提供されるタスク２９０は、クライアントデバイス１０２によって生成され、コーディネータ１１４への配置のためにサービスプロバイダ環境１２０にサブミットされる実行可能なコードに対応し得る。したがって、クライアントにより提供されるタスク２９０によって提供される機能性は、サブミットするユーザの要望に従って変化し得る。いくつかの例では、クライアントにより提供されるタスク２９０は、メモリ２５０が言語ランタイムを含むコーディング言語で記述され得る。例えば、コーディネータ１１４がｎｏｄｅ．ｊｓ、Ｇｏ、ＪＡＶＡ、およびＰｙｔｈｏｎ等の言語をサポートする場合、クライアントにより提供されるタスク２９０は、それらの言語のいずれかで記述された実行可能なコードを含み得る。
【００４７】
加えて、メモリ２５０は、コーディネータ１１４の構成データが記憶されたメモリ２５０の論理部分を表す、構成データ部２７２を含む。構成データは、例えば、コーディネータ１１４の現在の配置バージョン、タスクメモリ空間２８０のタスクによって記憶されたデータ、またはコーディネータ１１４の動作において使用される他のデータを含み得る。
【００４８】
コーディネータ１１４の構成（および再構成）を可能にするために、メモリ２５０は、さらに、配置エージェント２５８を含む。配置エージェント２５８は、サービスプロバイダ環境１２０にコーディネータを登録し、コーディネータ１１４の所望の構成を判定し、コーディネータ１１４の現在の構成が所望の構成と一致しない例では、コーディネータ１１４に関する構成データを取得し、所望の構成を実装するためにメモリ２５０を修正するように実行可能なコードに対応することができる。
【００４９】
図３Ａは、本出願に従った、例示的な被調整デバイス１１２Ａのアーキテクチャの一実施形態を示す。図３Ａに示される被調整デバイス１１２Ａの一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアコンポーネントの配列を含む。例示されるように、被調整デバイス１１２Ａは、プロセシングユニット３０４、ネットワークインタフェース３０６、コンピュータ可読媒体ドライブ３０７、入力／出力デバイスインタフェース３２０、任意選択のディスプレイ３０２、および入力デバイス３２４を含み、それらの全ては、通信バスによって相互に通信し得る。例示として、被調整デバイス１１２Ａは、埋め込みデバイスとして、入力または出力等のより制限された機能性およびコンポーネントを有し得る。
【００５０】
ネットワークインタフェース３０６は、図１のネットワーク１０４等の１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット３０４は、ネットワークを介して、他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。プロセシングユニット３０４は、また、メモリ３１０におよびメモリ３１０から通信し、さらに、入力／出力デバイスインタフェース３２０を介して、任意選択のディスプレイ３０２に出力情報を提供し得る。入力／出力デバイスインタフェース３２０は、また、キーボード、マウス、デジタルペン等の任意選択の入力デバイス３２４から入力を受け得る。いくつかの実施形態では、被調整デバイス１１２Ａは、図３Ａに示されるものよりも多い（または、少ない）コンポーネントを含み得る。例えば、被調整デバイス１１２のいくつかの実施形態は、ディスプレイ３０２および入力デバイス３２４を省略し得る一方、１つ以上の代替通信チャネルを経由して（例えば、ネットワークインタフェース３０６を介して）入力／出力能力を提供する。加えて、被調整デバイス１１２Ａは、同様に、入力および出力インタフェース３２０を完全に省略し得る。
【００５１】
メモリ３１０は、１つ以上の実施形態を実装するために、プロセシングユニット３０４が実行するコンピュータプログラム命令を含み得る。メモリ３１０は、一般的に、ＲＡＭ、ＲＯＭ、または他の永続的メモリもしくは非一時的メモリを含む。メモリ３１０は、被調整デバイス１１２Ａの一般管理および動作においてプロセシングユニット３０４による使用のためのコンピュータプログラム命令を提供するオペレーティングシステム３１４を記憶し得る。メモリ３１０は、さらに、本開示の態様を実装するためのコンピュータプログラム命令および他の情報を含み得る。例えば、一実施形態では、メモリ３１０は、コンテンツにアクセスするためのブラウザアプリケーション３１６を含む。例示として、ブラウザアプリケーション３１６は、完全なソフトウェアブラウザアプリケーション、ブラウザアプリケーションの一部を包含し得る、または単に、データ接続性を提供するソフトウェアアプリケーション（または実行可能命令）であり得る。
【００５２】
図３Ｂは、本出願に従った、例示的な被調整デバイス１１２Ｂの代替アーキテクチャの一実施形態を示す。図３Ｂに示される被調整デバイス１１２Ｂの一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアコンポーネントの配列を含む。しかしながら、被調整デバイス１１２Ｂは、被調整デバイス１１２Ｂの計算機能および動作を制限し得る少なくなったコンポーネントと関連付けられ得る。例示として、被調整デバイス１１２Ｂは、通信バスと通信する、プロセシングユニット３５０およびネットワークインタフェース３５２を含む。図３Ａの被調整デバイス１１２ＢＡとは異なり、被調整デバイス１１２Ｂは、コンピュータ可読媒体ドライブ、入力／出力デバイスインタフェース、任意選択のディスプレイ、または入力デバイスを有さない場合がある。
【００５３】
ネットワークインタフェース３５２は、図１のネットワーク１０４等の１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット３５０は、ネットワークを介して他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。メモリ３５４は、１つ以上の実施形態を実装するために、プロセシングユニット３５０が実行するコンピュータプログラム命令を含み得る。メモリ３５４は、一般的に、ＲＡＭ、ＲＯＭ、または他の永続的メモリもしくは非一時的メモリを含む。本実施形態では、メモリ３５４は、被調整デバイス１１２Ｂの一般管理および動作においてプロセシングユニット３５０による使用のためのコンピュータプログラム命令を提供する完全なオペレーティングシステムを必ず記憶し得る。むしろ、一実施形態では、メモリ３５４は、命令にアクセスし、命令を受信し、命令を処理するためのインタフェースソフトウェアコンポーネント３５６を含む。
【００５４】
図４は、本出願に従った、例示的なクライアントデバイス１０２のアーキテクチャの一実施形態を示す。図４に示されるクライアントデバイス１０２の一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアコンポーネントの配列を含む。例示されるように、クライアントデバイス１０２は、プロセシングユニット４０４、ネットワークインタフェース４０６、コンピュータ可読媒体ドライブ４０７、入力／出力デバイスインタフェース４２０、任意選択のディスプレイ４０２、および入力デバイス４２４を含み、それらの全ては、通信バスによって相互に通信し得る。
【００５５】
ネットワークインタフェース４０６は、図１のネットワーク１０４等の１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット４０４は、ネットワークを介して他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。プロセシングユニット４０４はまた、メモリ４１０におよびメモリ４１０から通信し、さらに、入力／出力デバイスインタフェース４２０を介して、任意選択のディスプレイ４０２に出力情報を提供し得る。入力／出力デバイスインタフェース４２０は、また、キーボード、マウス、デジタルペン等の任意選択の入力デバイス４２４から入力を受け得る。いくつかの実施形態では、クライアントデバイス１０２は、図４に示されるものよりも多い（または、少ない）コンポーネントを含み得る。例えば、被調整デバイス１１２のいくつかの実施形態は、ディスプレイ４０２および入力デバイス４２４を省略し得る一方、１つ以上の代替通信チャネルを経由して（例えば、ネットワークインタフェース４０６を介して）入力／出力能力を提供する。加えて、クライアントデバイス１０２は、同様に、入力および出力インタフェース４２０を完全に省略し得る。
【００５６】
メモリ４１０は、１つ以上の実施形態を実装するために、プロセシングユニット４０４が実行するコンピュータプログラム命令を含み得る。メモリ４１０は、一般的に、ＲＡＭ、ＲＯＭ、または他の永続的メモリもしくは非一時的メモリを含む。メモリ４１０は、クライアントデバイス１０２の一般管理および動作においてプロセシングユニット４０４による使用のためのコンピュータプログラム命令を提供するオペレーティングシステム４１４を記憶し得る。メモリ４１０は、さらに、本開示の態様を実装するためのコンピュータプログラム命令および他の情報を含み得る。例えば、一実施形態では、メモリ４１０は、コンテンツにアクセスするためのブラウザアプリケーション４１６を含む。例示として、ブラウザアプリケーション４１６は、完全なソフトウェアブラウザアプリケーション、ブラウザアプリケーションの一部を包含し得る、または単に、データ接続性を提供するソフトウェアアプリケーション（または実行可能命令）であり得る。
【００５７】
図５は、本明細書に説明されるメッセージ処理サービスコンポーネントを実装するための例示的コンピューティングデバイスのアーキテクチャの一実施形態を示す。前述に説明したように、当該環境内の１つ以上のコンピューティングデバイスは、ＭＱＴＴブローカー等のメッセージ処理サービスとして機能し得る。他の実施形態では、メッセージ処理サービスは、ネットワークコンポーネントに実装され得る。したがって、図５に示されるメッセージ処理サービスの一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアコンポーネントの配列を含む。例示されるように、リモートコマンドサービス１１４は、プロセシングユニット５０４、ネットワークインタフェース５０６、コンピュータ可読媒体ドライブ５０７、入力／出力デバイスインタフェース５２０、任意選択のディスプレイ５０２、および入力デバイス５２４を含み、それらの全ては、通信バスによって相互に通信し得る。リモートコマンドサービス１１４のコンポーネントは、物理ハードウェアコンポーネントであり得る、または仮想環境内で実装され得る。
【００５８】
ネットワークインタフェース５０６は、図１のネットワーク１５０等の１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット５０４は、ネットワークを介して他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。プロセシングユニット５０４はまた、メモリ５１０におよびメモリ５１０から通信し、さらに、入力／出力デバイスインタフェース５２０を介して、任意選択のディスプレイ５０２に出力情報を提供し得る。入力／出力デバイスインタフェース５２０は、また、キーボード、マウス、デジタルペン等の任意選択の入力デバイス５２４から入力を受け得る。いくつかの実施形態では、リモートコマンドサービス１１４は、図５に示されるものよりも多い（または、少ない）コンポーネントを含み得る。例えば、リモートコマンドサービス１１４のいくつかの実施形態は、ディスプレイ２０２および入力デバイス２２４を省略し得る一方、１つ以上の代替通信チャネルを経由して（例えば、ネットワークインタフェース５０６を介して）入力／出力能力を提供する。
【００５９】
メモリ５１０は、１つ以上の実施形態を実装するために、プロセシングユニット５０４が実行するコンピュータプログラム命令を含み得る。メモリ５１０は、一般的に、ＲＡＭ、ＲＯＭ、または他の永続的メモリもしくは非一時的メモリを含む。メモリ５１０は、中間サーバ１１４の一般管理および動作において、プロセシングユニット５０４による使用のためのコンピュータプログラム命令を提供するオペレーティングシステム５１４を記憶し得る。メモリ５１０は、さらに、本開示の態様を実装するためのコンピュータプログラム命令および他の情報を含み得る。例えば、一実施形態では、メモリ５１０は、クライアントデバイス１０２からコンテンツ要求を受信および処理するためのクライアントインタフェースソフトウェア５１２を含む。加えて、メモリ５１０は、通信において受信される埋め込みコードを処理するための埋め込みコード処理コンポーネント５１６を含む。例示として、埋め込みコード処理コンポーネント５１６は、埋め込みコードをパースするためにトピック部通信を処理するための命令と、指定コードのために構成されているアクションまたは機能を実施するための命令とを含み得る。
【００６０】
ここで、図６Ａ〜図６Ｄを参照して、コンテンツメッセージを処理するコンテンツ管理システム１１０のコンポーネント間の相互作用の例を説明する。より具体的には、図６Ａ〜図６Ｃは、被調整デバイス１１２、クライアントデバイス１０２、およびメッセージ処理サービス６００の間の相互作用に関して説明される。前述に示したように、メッセージ処理サービス６００は、コーディネータ１１４または他のネットワーク機器を含む、様々なデバイスによって実施されることができる。加えて、被調整デバイス１１２は、被調整デバイス１１２（図３Ａ）、被調整デバイス１１２（図３Ｂ）、またはそれらの組み合わせに対応することができる。しかしながら、相互作用の参照は、例示の目的のために使用される場合でも、任意の特定のデバイスまたはデバイスの組み合わせに限定されるべきではない。
【００６１】
図６Ａを参照して、メッセージ処理サービス６００の初期構成を説明する。例示として、クライアントまたはシステムアドミニストレータは、受信された通信のトピック部の埋め込みコードの解釈を容易にする情報を伴うメッセージ処理サービス６００を構成する。例示的環境に従って、通信ネットワーク１０４にわたってメッセージを伝達するために利用される実際の通信プロトコルに関わらず、ＭＱＴＴメッセージングプロトコルに従って、通信を形成することができる。ＭＱＴＴプロトコルに特有であるように、各メッセージは、通信を定義する１つ以上のレベルを有するトピック部と関連付けられる、またはそれ以外の場合、当該通信と関連付けられる。下記の例は、第１のレベル「基本レベル」、次に、一連の追加レベル「レベル１」〜「レベルｎ」を含む。各追加レベルは、トピックセパレータによって示される。
【００６２】
基本レベル／レベル１／レベル２／レベル３．．．．／レベルｎのように示される。
【００６３】
前述に説明したように、従来のＭＱＴＴプロトコルでは、メッセージを受信するメッセージ処理サービス６００は、トピックごとに発行されるメッセージを受信するために登録している１つ以上の受信側デバイスと、トピックを一致させることを試みる。メッセージ処理サービス６００は、全てのレベルの完全一致または１つ以上のレベルの部分一致に対する判定を限定し得る。
【００６４】
本出願に従って、通信の主題を記載する複数のレベルの従来の識別に加えて、通信のトピック部は、１つ以上の埋め込みコードまたは命令を含む。埋め込みコードまたは命令は、トピックセパレータによって示されるトピック部のレベルの形式であり得る。埋め込みコードは、それを追加レベルよりもむしろ埋め込みコードとして識別するキーワードまたは文字を含み得る。他の実施形態では、埋め込みコードは、トピック部の特定の場所（例えば、第１のレベル）に割り当てられることができる。係るトピック部の例は、限定ではないが、以下のものを含み得る。
【００６５】
コード／基本レベル／レベル１／レベル２／レベル３．．．．／レベルｎ
【００６６】
コード．．．．コード／基本レベル／レベル１／レベル２／レベル３．．．．／レベルｎ
【００６７】
特殊文字＿コード／基本レベル／レベル１／レベル２／レベル３．．．．／レベルｎ
【００６８】
ここで、図６Ａを参照すると、（１）において、アドミニストレータまたはカスタマに対応するクライアンデバイス１０２は、構成情報をメッセージ処理サービス６００に伝達することができる。例示として、構成情報は１つ以上の命令、論理ルール、またはアクションのセットを定義する処理ステップに対応し、メッセージ処理サービス６００は受信済メッセージのトピック部の埋め込みコードまたは識別子の一致に基づいてメッセージを引き受けることができる。例えば、メッセージ処理サービス６００の１つの構成は、ネットワーク接続性が利用可能ではない場合、あてがわれたタスクに対応する通信がローカル被調整デバイス１１２によって実施されるべきかどうかの定義、または、ネットワーク接続性が利用可能である場合、あてがわれたタスクをネットワークデバイスによって実施するべきであるかどうかの定義を含み得る。この例では、両方のデバイスは、対応するトピックを伴うコンテンツメッセージを受信するためにサブスクライブされ得るが、メッセージを受信する当該デバイスは、埋め込みコードによって識別されるルールの評価に依存し得る。
【００６９】
別の例では、メッセージ処理サービス６００は、以下の情報を取得するための命令に対応する１つ以上の埋め込みコードの識別に基づいて、コスト情報、ルーティング情報、仕事量、サービスレベル情報等の追加情報を取得するように構成され得る。またさらなる例では、メッセージ処理サービス６００は、係る修正を遂行するために実行可能コードまたは命令を実行することをメッセージ処理サービス６００に命令する埋め込みコードの取得に基づいて、受信済メッセージのペイロード部の部分を修正するように構成され得る。例示として、ペイロード部の修正は、基準の評価または実行可能コードの追加／除外に基づいて、実行可能コードの特定部分の選択を含み得る。例えば、メッセージ処理サービス６００は、時間的基準（例えば、正午前）に基づいて、または同じ停止条件（例えば、別のデバイスがコードの実行を完了したなど）に基づいて、コードの第１の部を実行し得る。この点では、メッセージングプロトコルの従来の実施におけるメッセージ処理サービス６００は、受信済メッセージの任意の追加処理を行わない。加えて、本出願の態様に従って、メッセージ処理サービス６００は、クライアントデバイス１０２を介してアドミニストレータによって指定されるような多様な追加機能で構成され得る。
【００７０】
（２）において、メッセージ処理サービス６００は、構成情報を処理し、後続処理に関する構成を記録する。この点では、メッセージ処理サービス６００は、一致のために埋め込みコードのデータベースまたはマトリックスを維持することができる。加えて、メッセージ処理サービス６００は、一致する埋め込みコードが識別されるときに実行される追加処理命令または実行可能コードを維持することができる。他の実施形態では、メッセージ処理サービス６００は、埋め込みコードが識別されるときに、係るＡＰＩ等のインタフェースを利用する追加命令または実行可能コードを取得することができる。
【００７１】
図６Ｂを参照して、受信側デバイスの初期構成、被調整デバイス１１２’および１１２’’を説明する。（１）において、被調整デバイス１１２’および１１２’’は、デバイス接続要求を生成し、要求をメッセージ処理サービス６００に伝達する。例示として、デバイス接続要求は、メッセージ処理サービス６００で、被調整デバイス１１２’および１１２’’の認証および承認と関連付けられる手順を確立するように対応する。またさらに、いくつかの実施形態では、論理ネットワーク１００は、独立して、またはコンテンツ管理システム１１０の一部として、メッセージ処理サービス６００へのメッセージの伝達を管理する追加ゲートウェイコンポーネントを含み得る。係るゲートウェイコンポーネントは、セキュリティ機能、ロードバランシング、または他のネットワーク処理サービスを実装することができる。
【００７２】
（２）において、メッセージ処理サービス６００は、例えば、セキュリティ情報を有効にすることによって、追加情報を要求することによって、または要求を行っているクライアントコンピューティングデバイス１０２の特徴を判定すること等によって、接続要求を処理する。（３）において、接続要求が受け入れ可能で承認された場合、メッセージ処理サービス６００は、接続確認を、要求を行っているメッセージ処理サービス６００に伝達する。この点では、いったん承認されると、クライアントコンピューティングデバイスおよびメッセージ処理サービス６００は、ＭＱＴＴ等のメッセージングプロトコルに定義される手順の範囲内で通信を始めることができる。
【００７３】
ここで、図６Ｃを参照すると、接続確認を受信した後、（１）において、被調整デバイス１１２’および１１２’’は、１つ以上のトピック登録要求をメッセージ処理サービス６００に伝達する。例示として、トピック登録は、メッセージングプロトコルに従って定義され、その結果、被調整デバイス１１２’および１１２’’は、任意の数のコンテンツプロバイダによる指定トピックに従って発行されたコンテンツを受信するために登録することができる。本出願に適用されるように、被調整デバイス１１２’および１１２’’は、１つ以上のトピックを登録する。例示の目的のために、登録済被調整デバイス１１２’および１１２’’へのメッセージの転送がメッセージの埋め込みコードに基づいて異なるように、例を提供する。
【００７４】
登録後のある時点で、（２）において、別個のコンピューティングデバイス６０２は、１つ以上の部分的コンテンツをメッセージ処理サービス６００に発行する。例示として、コンピューティングデバイス６００は、被調整デバイス、ネットワークベースデバイス等に対応することができる。コンテンツのそれぞれの発行された部分は、トピックと関連付けられる。例示的な例の目的のために、少なくとも１つの発行済コンテンツは、コンテンツ／メッセージのトピック部の埋め込みコードと関連付けられる。
【００７５】
（３）において、メッセージ処理サービス６００は、クライアントコンピューティングデバイス１０２が更新トピックを伴う発行済コンテンツを受信するべきであることを判定するために、登録済トピックを発行済トピックと一致させる。（４）において、メッセージ処理サービス６００は、通信のトピック部をパースし、１つ以上の埋め込みコードを識別する。いくつかの実施形態では、メッセージ処理サービス６００は、トピック部をパースする機能性を含み得る。他の実施形態では、メッセージ処理サービス６００は、追加サービスまたは追加コンポーネントを利用して、パースを容易にすることができる。
【００７６】
（５）において、メッセージ処理サービス６００は、パースされた埋め込みコードを処理する。上記に説明したように、メッセージ処理サービス６００は、埋め込みコードを一致させ、次に、一致した埋め込みコードに基づいて構成されているコードまたは命令を実行することができる。メッセージルーティング機能に関する埋め込みコードを利用する例示の目的のために、図６Ｄを参照すると、（６）において、メッセージ処理サービス６００は、メッセージを調整デバイス１１２’’に転送することができ、被調整デバイス１１２’に転送することができない。例えば、埋め込みコードが、ネットワーク接続性が被調整デバイス１１２’および１１２’’において利用可能であるかどうかの判定に対応する場合、メッセージ処理サービス６００として機能するコーディネータコンポーネント１１４は、ネットワークベースのタスクプロセッサよりもむしろ、タスクに対応するメッセージは、ローカル被調整デバイスに送信されるべきであると判定することができる。
【００７７】
前述に説明したように、他の実施形態では、受信側デバイスは、また、メッセージのトピック部で埋め込みコードまたは他の情報を処理するように構成され得る。上記に説明した処理と同様に、この点では、調整デバイス１１２’’は、メッセージ処理サービス６００として機能し、（６）においてメッセージのトピック部をパースし、（７）においてパース済埋め込みコードを処理することができる。上記に説明したように、メッセージ処理サービス６００は、埋め込みコードを一致させ、次に、一致した埋め込みコードに基づいて構成されているコードまたは命令を実行することができる。加えて、例示的な例のこの箇所では、被調整デバイス１１２’’は、例えば、実行可能コード部を修正することによって、指定の実行可能コード部を除外または選択することによって、タイミング考察を実行可能部の実行に適用することによって、前提条件として論理ルールを適用しまたは追加基準を検討し、コード部を実行すること等によって、メッセージのペイロード部を処理する埋め込みコードを利用することができる。図６Ｄがメッセージのルーティングに影響を及ぼす埋め込みコードの処理と、埋め込みコードを利用するペイロードの処理とを示すが、両方の実施形態が一緒に実施される必要がないことを、当業者は認識するであろう。したがって、ルーティングに影響を及ぼす埋め込みコードの処理は、受信側デバイスによって埋め込みコードの追加処理なしで実施され得る。同様に、受信側デバイスによる埋め込みコード情報の処理は、ルーティングに影響を及ぼす埋め込みコードの利用を要求することなく実施され得る。図７は、例示的環境に従って、メッセージ処理サービス６００によって実施されるリモート実行メッセージングルーチン７００を示すフロー図である。ルーチン７００は、メッセージルーティング中、メッセージングプロトコルの埋め込みコード情報の利用を示す。ブロック７０２において、メッセージ処理サービス６００は、被調整デバイス１１２または任意の他のコンピューティングデバイス１０２等のデバイスによるコンテンツのリモート実行に関連する少なくとも１つのトピックを含む登録情報を取得する。先に説明したように、本デバイスは、１つ以上のトピック登録要求をメッセージ処理サービス６００に伝達する。例示として、トピック登録は、メッセージングプロトコルに従って定義され、その結果、本デバイスは、任意の数のコンテンツプロバイダによる指定トピックに従って発行されたコンテンツを受信するために登録することができる。
【００７８】
登録後のある時点で、ブロック７０４において、メッセージ処理サービス６００は、トピック部を有する１つ以上の発行を取得する。例示として、いくつかのコンピューティングデバイス６０２（図６Ｃ）は、１つ以上の部分的コンテンツをメッセージ処理サービス６００に発行する。コンテンツのそれぞれの発行された部分は、トピックと関連付けられる。例示的な例の目的のために、少なくとも１つの発行済コンテンツは、クライアントコンピューティングデバイス１０２の登録済トピックに対応する埋め込みコードと関連付けられる。加えて、トピックと関連付けられるコンテンツのそれぞれの発行された部分は、コンテンツのペイロード部を含む。係るペイロード部の例は、被調整デバイスまたはネットワークデバイスによって実行されるタスクを含み得る。
【００７９】
ブロック７０６において、メッセージ処理サービス６００は、１つ以上のデバイスが発行済トピックを受信するべきクライアントデバイスのセットを形成するトピックを伴う発行済コンテンツを受信するべきであることを判定するために、登録済トピックを発行済トピックと一致させる。例示として、メッセージ処理サービス６００がＭＱＴＴ等のメッセージングプロトコルに従って構成されているため、トピック発行に対する登録の一致は、メッセージングプロトコルによって指図される方式で達成することができる。
【００８０】
ブロック７０８において、メッセージ処理サービス６００は、メッセージのトピック部の１つ以上の埋め込みコードを識別する。例示として、メッセージ処理サービス６００は、通信のトピック部をパースし、１つ以上の埋め込みコードを識別する。いくつかの実施形態では、メッセージ処理サービス６００は、トピック部をパースする機能性を含み得る。例えば、メッセージ処理サービス６００は、ルックアップテーブルを利用して、対応する埋め込みコードを識別することができる。他の実施形態では、メッセージ処理サービス６００は、追加サービスまたは追加コンポーネントを利用して、パースを容易にすることができる。
【００８１】
ブロック７１０において、メッセージ処理サービス６００は、パースされた埋め込みコードを処理する。上記に説明したように、メッセージ処理サービス６００は、埋め込みコードを一致させ、次に、一致した埋め込みコードに基づいて構成されているコードまたは命令を実行することができる。様々な例は、限定ではないが、メッセージを受信する登録済デバイスの選択、メッセージの伝達に関連するタイミング、メッセージの修正、追加基準の検討等を含む、埋め込みコードの処理の結果の点で識別されている。
【００８２】
ブロック７１２において、メッセージ処理サービス６００は、発行済コンテンツを伝達する。同様に、発行済コンテンツの伝達は、ＭＱＴＴ等のメッセージングプロトコルの手順および能力に従って行われ、実行可能コードの伝達を生じさせる追加通信または代替通信を必要としない。他の例では、メッセージ処理サービス６００は、別個のトランスポートプロトコルを利用することができる。受信側デバイスは、受信された発行済コンテンツを処理する。
【００８３】
ブロック７１４において、メッセージ処理サービス６００は、メッセージの処理に対応する処理結果を取得する。例示として、クライアントコンピューティングデバイスは、メッセージングプロトコルを介して、コードの処理結果を示す情報に関連するコンテンツを生成および発行する。いくつかの実施形態では、処理結果は、コードの実行が行われたことが成功したかどうかのバイナリ判定に対応することができる。別の実施形態では、処理結果は、コード／命令の実行を示す１つ以上の値、またはコード／命令の実行についての情報を詳述するログを含み得る。更新トピックの発行とともに説明したものと同様の様式で、処理結果（複数可）の発行は、特定のトピック（概して「処理結果トピック」と称される）と関連付けられ得る。
【００８４】
ブロック７１６において、メッセージ処理サービス６００は、管理デバイス１０４が処理結果トピックを伴う発行済コンテンツを受信するべきであることを判定するために、登録済トピックを発行済トピックと一致させ、発行済コンテンツを伝達する。例示として、発行済コンテンツの伝達は、また、ＭＱＴＴ等のメッセージングプロトコルの手順および能力に従って行われ、実行可能コードの伝達を生じさせる追加通信または代替通信を必要としない。ブロック７２０において、ルーチン６００は終了する。
【００８５】
図８は、例示的環境に従って、被調整デバイス１１２または他のコンピューティングデバイスによって実施されるリモート実行メッセージングルーチン８００を示すフロー図である。前述に説明したように、本出願では、被調整デバイス１１２または他のコンピューティングデバイスは、他のコンポーネントがまたメッセージのルーティングで埋め込みコード情報を利用したかどうかに関係なく、メッセージの処理において埋め込みコード情報を利用するようなメッセージ処理サービス６００として考えられ得る。しかしながら、この例の被調整デバイス１１２の識別は、ルーチン８００の適用を限定するものとして解釈されるべきではない。ブロック８０２において、被調整デバイス１１２は、１つ以上のトピック登録要求をメッセージ処理サービス６００に伝達する。上記に説明したように、トピック登録は、メッセージングプロトコルに従って定義され、その結果、被調整デバイス１１２は、任意の数のコンテンツプロバイダによる指定トピックに従って発行されたコンテンツを受信するために登録することができる。
【００８６】
発行済コンテンツを受信したことに応答して、メッセージ処理サービス６００は、クライアント被調整デバイス１１２が更新トピックを伴う発行済コンテンツを受信するべきであることを判定するために、登録済トピックを発行済トピックと一致させる。前述に説明したように、メッセージ処理サービス６００は、また、トピック部の任意の埋め込みコードを処理する。ブロック８０４において、被調整デバイス１１２は、メッセージ処理サービス６００から発行済コンテンツを受信する。例示として、発行済コンテンツの伝達は、ＭＱＴＴ等のメッセージングプロトコルの手順および能力に従って行われ、実行可能コードの伝達を生じさせる追加通信または代替通信を必要としない。
【００８７】
コンテンツの実行のうちの実行の一部として、またはコンテンツの実行の後に、ブロック８０６において、被調整デバイス１１２は、埋め込みコードを処理し、リモート実行の結果を取得する。いくつかの実施形態では、処理結果は、コードの実行が行われたことが成功したかどうかのバイナリ判定に対応することができる。別の実施形態では、処理結果は、コード／命令の実行を示す１つ以上の値、またはコード／命令の実行についての情報を詳述するログを含み得る。いくつかの実施形態では、被調整デバイス１１２は、また、埋め込みコードを利用して、メッセージのペイロード部をどのように処理するかを修正することができる。係る例では、被調整デバイス１１２は、メッセージ処理サービス６００に起因する機能性と同様の機能性を実施し、埋め込みコードをパースし、結果を実施することができる。例えば、被調整デバイス１１２は、例えば、実行可能コード部を修正することによって、指定の実行可能コード部を除外または選択することによって、タイミング検討を実行可能部の実行に適用することによって、前提条件として論理ルールを適用しまたは追加基準を検討し、コード部を実行すること等によって、メッセージのペイロード部を処理する埋め込みコードを利用することができる。
【００８８】
ブロック８０８において、被調整デバイス１１２は、メッセージングプロトコルを介して、コードの処理結果を示す情報に関連するコンテンツを発行する。例示として、発行済コンテンツの伝達は、ＭＱＴＴ等のメッセージングプロトコルの手順および能力に従って行われ、実行可能コードの伝達を生じさせる追加通信または代替通信を必要としない。ブロック８１０において、ルーチン８００は終了する。
【００８９】
図９は、コーディネータ９１４が被調整デバイス９１２を制御するように動作し得る１つ以上の被調整環境９１０と、（例えば、被調整デバイス９１２の状態の変更を要求するために）被調整環境９１０と相互作用し得るクライアントデバイス９０２と、様々な被調整環境９１０内でコーディネータ９１４との通信またはコーディネータ９１４の構成を支援し得るサービスプロバイダ環境９２０とを含む、例示的動作環境９００のブロック図である。
【００９０】
被調整環境９１０、クライアントデバイス、およびサービスプロバイダ環境９２０は、ネットワーク９０４を介して通信し得、ネットワーク９０４は、いずれかの有線ネットワーク、無線ネットワーク、またはそれらの組み合わせを含み得る。例えば、ネットワーク９０４は、パーソナルエリアネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、無線ブロードキャストネットワーク（例えば、ラジオまたはテレビのためのもの）、ケーブルネットワーク、衛星ネットワーク、携帯電話ネットワーク、またはそれらの組み合わせであり得る。さらなる例として、ネットワーク９０４は、インターネット等の様々な異なった関係者によって運営される可能性がある、リンクされたネットワークの公然にアクセス可能なネットワークであり得る。いくつかの実施形態では、ネットワーク９０４は、企業または大学のイントラネット等のプライベートまたはセミプライベートネットワークであり得る。ネットワーク９０４は、グローバルシステムフォーモバイルコミュニケーションズ（ＧＳＭ）ネットワーク、符号分割多重アクセス（ＣＤＭＡ）ネットワーク、ロングタームエボリューション（ＬＴＥ）ネットワーク、または任意の他の種類の無線ネットワーク等の１つ以上の無線ネットワークを含み得る。ネットワーク９０４は、インターネットまたは他の上述した種類のネットワークのいずれかを介して通信するためのプロトコルおよびコンポーネントを使用することができる。例えば、ネットワーク９０４によって使用されるプロトコルは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ＨＴＴＰセキュア（ＨＴＴＰＳ）、ＭＱＴＴ、およびコンストレイントアプリケーションプロトコル（ＣｏＡＰ）等を含み得る。インターネットまたは他の上述した種類の通信ネットワークのいずれかを介して通信するためのプロトコルおよびコンポーネントは、当業者に十分に既知であり、ひいては、本明細書でさらに詳細に説明されない。ネットワーク９０４の全てのコンポーネントが図９に示されているが、ルータ等の１つ以上のコンポーネントは、メッセージ処理サービスとして機能し得る。
【００９１】
被調整環境９１０のそれぞれは、実行環境９１０のネットワーク（ネットワークは図９に示されない）を介して通信する、コーディネータ９１４および任意の数の被調整デバイス９１２を含み得る。被調整環境９１０内のそれらの関連付けのために、所与の環境９１０内の被調整デバイス９１２およびコーディネータ９１４は、通信ネットワークの点で、相互に「ローカル」であると考えられ得る。例えば、所与の環境９１０内の被調整デバイス９１２およびコーディネータ９１４は、ＬＡＮまたは他の局所化された通信ネットワークを介して接続され得る。
【００９２】
被調整デバイス９１２のそれぞれは、コーディネータ９１４と通信して、被調整デバイス９１２の機能性を管理するように構成されているコンピューティングデバイスに対応することができる。いくつかの例では、被調整デバイス９１２は、ロバストな局所化されたユーザインタフェース能力を伴う、ラップトップ、デスクトップ、スタンドアロンメディアプレイヤ等の十分に特徴付けられたコンピューティングデバイスに対応することができる。他の例では、被調整デバイス９１２は、家庭用器具またはデバイス（冷蔵庫、洗濯機、湯沸し器、加熱炉、ドアロック、照明バルブ、電気コンセント、電気スイッチ等）内に埋め込まれた、またはそれらに付属品として取り付けられたデバイス等の別の主要機能と関連付けられるシンデバイスまたは埋め込みデバイスに対応することができる。係る器具またはデバイスは、いくつかのコンテキストでは、「スマート」デバイス、ＩｏＴデバイス、または「接続」デバイスと称される。したがって、被調整デバイス９１２は、制限されたローカルユーザインタフェースを含み、リモート管理のために構成され得る。いくつかの例では、被調整デバイス９１２は、ステートフルであり得、命令に応答してそれらの状態を変えるように動作し得る（例えば、「オフ」から「オン」に変化させること等によって変わる）。
【００９３】
さらに下記に詳細に説明されるように（例えば、図１０に関して）、コーディネータ９１４は、被調整デバイス９１２に伝達された命令が被調整環境９１０の外側に伝わることを要求することなく（従って、係る命令のセキュリティが強化され、その伝達速度が速くなる）、被調整デバイス９１２の動作を調整、管理、または制御する命令を実行するコンピューティングデバイスに対応することができる。具体的には、コーディネータ９１４は、被調整デバイス９１２、クライアントデバイス９０２、およびサービスプロバイダネットワーク９２０のデバイスの任意の組み合わせの間の通信を管理するように集合的に構成されているプロセッサおよびメモリを含み得る。コーディネータは、さらに、サービスプロバイダ環境９２０のオンデマンドコード実行環境９２０と同様の方式で、タスクの実行を可能にするように構成され得る。これらのタスクは、被調整デバイス９１２、クライアントデバイス９０２、およびサービスプロバイダネットワーク９２０のデバイスと通信することを含む、様々なユーザにより定義された機能性またはユーザにより定義されていない機能性を実施し得る。したがって、コーディネータ９１４は、被調整デバイス９１２の手動制御、自動制御、または半自動制御を可能にするように構成され得る。例えば、コーディネータ９１４は、クライアントデバイス９０２が、被調整デバイス９１２の状態を変更する要求を伝達することを可能にし、状態の係る変更を発生させ得る。さらなる例として、コーディネータ９１４は、被調整デバイス９１２の状態を変更するべき基準をユーザが指定することを可能にし、次に、基準が満たされるときに被調整デバイス９１２の状態を自動的に変更するように動作し得る。下記に説明されるように、コーディネータ９１４の多くの機能は、タスクによって確立され得、ユーザによって所望されるように、これらの機能の即時の変更を可能にする。
【００９４】
クライアントデバイス９０２は、ユーザが被調整環境９１０、サービスプロバイダ環境９２０、またはそれらの両方と通信することを可能にする、様々なコンピューティングデバイスを含み得る。概して、クライアントデバイス９０２は、デスクトップ、ラップトップもしくはタブレットコンピュータ、パーソナルコンピュータ、ウェアラブルコンピュータ、サーバ、携帯情報端末（ＰＤＡ）、ハイブリッドＰＤＡ／携帯電話、携帯電話、電子ブックリーダ、セットトップボックス、ボイスコマンドデバイス、カメラ、およびデジタルメディアプレイヤ等の任意のコンピューティングデバイスであり得る。サービスプロバイダ環境９２０は、コーディネータ９１４に関する構成をサブミットし、当該構成の配置を制御し、コーディネータ９１４上またはサービスプロバイダ環境９２０のオンデマンドコード実行環境９５０上で実行されるタスクに対応するコードをサブミットし、コーディネータ９１４に関連する情報のロギングまたは監視を参照する等のために、サービスプロバイダ環境９２０と相互作用するための１つ以上のユーザインタフェース、コマンドラインインタフェース（ＣＬＩ）、アプリケーションプログラミングインタフェース（ＡＰＩ）、および／または他のプログラムインタフェースをクライアントデバイス９０２に提供し得る。同様に、コーディネータ９１４は、被調整デバイス９１２の状態を読み出し、被調整デバイス９１２の状態の変更を要求し、コーディネータ９１４がタスクの実行を生じさせることを要求する等のために、コーディネータ９１４と相互作用するための１つ以上のユーザインタフェース、コマンドラインインタフェース（ＣＬＩ）、アプリケーションプログラミングインタフェース（ＡＰＩ）、および／または他のプログラムインタフェースをクライアントデバイス９０２に提供し得る。１つ以上の実施形態がユーザインタフェースを使用するとして本明細書に説明され得るが、係る実施形態は、加えてまたは代わりに、任意のＣＬＩ、ＡＰＩ、または他のプログラムインタフェースを使用し得ることを認識されたい。
【００９５】
サービスプロバイダ環境９２０は、コーディネータ９１４の構成、コーディネータ９１４の管理、およびコーディネータ９１４との通信を可能にするいくつかの要素を含み得る。具体的には、サービスプロバイダ環境９２０は、サービスプロバイダ環境９２０へのコーディネータ９１４の登録および係るコーディネータ９１４の構成を可能にする管理および配置サービス９３０と、コーディネータ９１４および被調整デバイス９１２の状態へのロバストな変更を可能にするデバイスシャドウサービス９４０と、コーディネータ９１４上のタスクのオンデマンドな動的実行と共に、コーディネータ９１４上のタスクの配置およびプロビジョニングを提供するオンデマンドコード実行環境９５０とを含む。
【００９６】
図９に示されるように、管理および配置サービス９３０は、管理および配置サービス９３０へのコーディネータ９１４の登録、コーディネータ９１４に関する構成の生成、およびコーディネータ９１４への構成データの伝送を可能にするように集合的に動作し得る、クライアントおよびデータインタフェース９３２と、構成データストア９３４とを含む。例示として、クライアントおよびデータインタフェース９３２は、１つ以上のユーザインタフェース（例えば、ＡＰＩ、ＣＬＩ、ＧＵＩ等）を提供し得、１つ以上のユーザインタフェースを経由して、ユーザは、クライアントデバイス９０２を介して、構成データストア９３４に記憶するために、コーディネータ９１４の構成を生成またはサブミットし得る。クライアントおよびデータインタフェース９３２は、さらに、１つ以上のインタフェースを提供し得、１つ以上のインタフェースを経由して、コーディネータ９１４は構成を取得し得、その結果、コーディネータ９１４は、取得された構成に従って再構成される。構成データストア９３４は、ハードドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＤＤ）、ネットワーク接続ストレージ（ＮＡＳ）、テープドライブ、または任意のそれらの組み合わせ等の任意の永続的データストアまたは実質的に永続的データストアに対応することができる。
【００９７】
デバイスシャドウサービス９４０は、コーディネータ９１４または被調整デバイス９１２等のデバイスの「シャドウ状態」を作成し、維持し、読み取り、変え、または削除することを可能にする要素を含み得る。上記に説明したように、シャドウ状態は、対応するデバイスの所望の状態を表すデータに対応し得、対応するデバイスは、デバイスの現在の状態を反映し得る、または反映しない場合がある。例えば、コーディネータ９１４に関して、シャドウ状態は、コーディネータ９１４に関する所望の構成バージョンを含み得る。被調整デバイス９１２に関して、シャドウ状態は、被調整デバイス９１２の所望の状態（例えば、スイッチまたはバルブに関するオンまたはオフ、ロックに対してロックされまたはロックされていない、温度調節器に関する所望の温度等）を含み得る。デバイスシャドウサービス９４０は、ユーザまたは他のエンティティが、クライアントデバイス９０２を介して、デバイスに関するシャドウ状態から読み出す、またはデバイスに関するシャドウ状態を修正することを可能にし得、さらに、デバイスをシャドウ状態に同期するように当該デバイスと相互作用し得る。例示として、デバイスシャドウサービス９４０は、インタフェース９４２（例えば、ＡＰＩ、ＣＬＩ、ＧＵＩ等を含み得る）を含み得、インタフェース９４２を経由して、シャドウ状態から読み出し、シャドウ状態に記述し、シャドウ状態を作成または削除する要求が受信され得、シャドウデータストア９４４は、シャドウ状態を記憶するように構成され得る。シャドウデータストア９３４は、ハードドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＤＤ）、ネットワークアタッチドストレージ（ＮＡＳ）、テープドライブ、または任意のそれらの組み合わせ等の任意の永続的データストアまたは実質的に永続的データストアに対応することができる。デバイスシャドウの使用に関するさらなる詳細は、「Ｄｅｖｉｃｅ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ  Ｍａｎａｇｅｍｅｎｔ  Ｕｓｉｎｇ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ  Ｔｙｐｅｓ」と題し、２０１６年６月２９日に出願された米国特許出願第１５／１９６，７００号（「７００出願」）の中に見ることができ、その全体が参照によって本明細書に組み込まれる。
【００９８】
オンデマンドコード実行環境９５０は、タスク（例えば、ポータブルコードセグメント）のオンデマンド実行を提供するいくつかのデバイスを含み得る。具体的には、オンデマンドコード実行環境９５０は、フロントエンド９５２を含み得、フロントエンド９５２を経由して、ユーザは、クライアントデバイス９０２を介して、オンデマンドコード実行環境９５０にタスクをサブミットし、オンデマンドコード実行環境９５０上でタスクの実行を呼び出し得る。係るタスクは、例えば、タスクデータストア９５４に記憶され得、タスクデータストア９５４は、ハードドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＤＤ）、ネットワーク接続ストレージ（ＮＡＳ）、テープドライブ、または任意のそれらの組み合わせ等の任意の永続的データストアまたは実質的に永続的データストアに対応することができる。図９に示されていないが、オンデマンドコード実行システム９５０は、いくつかの実行環境等のタスクの実行を可能にする様々な追加コンポーネント（例えば、オンデマンドコード実行環境９５０の物理ホストデバイス上で実行するコンテナまたは仮想マシン）、係る実行環境を管理するワーカマネージャ、および即時ベースで（例えば、１０ミリ秒を下回る時間で）ワーカマネージャに、実行環境を利用可能にすることを支援するウォーミングプールマネージャを含み得る。オンデマンドコード実行環境に関するさらなる詳細は、上記の参照によって組み込まれる「５５６特許」の中に見ることができる。
【００９９】
上記に述べられたように、タスクは、オンデマンドコード実行環境９５０およびコーディネータ９１４の両方において利用され得る。上記に述べられたように、タスクは、（例えば、特定の機能を達成するための）ユーザコードの個々の集合に対応する。本明細書に使用されるようなユーザコードへの参照は、特定のプログラム言語で記述された任意のプログラムコード（例えば、プログラム、ルーチン、サブルーチン、スレッド等）を指し得る。本開示では、用語「コード」、「ユーザコード」、および「プログラムコード」は、交換可能に使用され得る。係るユーザコードは、例えば、ユーザによって開発された特定のウェブアプリケーションまたはモバイルアプリケーションに関連して、特定の機能を達成するように実行され得る。当該コードの指定の実行は、本明細書で「タスク実行」または単に「実行」と称される。タスクは、非限定的な例として、ＪａｖａＳｃｒｉｐｔ（例えば、ｎｏｄｅ．ｊｓ）、Ｊａｖａ、Ｐｙｔｈｏｎ、および／またはＲｕｂｙ（および／または別のプログラミング言語）で記述され得る。タスクは、様々な方式でオンデマンドコード実行システム９５０またはコーディネータ９１４上で実行するために「トリガ」され得る。一実施形態では、クライアントデバイス９０２または他のコンピューティングデバイスは、タスクを実行する要求を伝達し得、それは、一般的に、タスクを実行する「呼び出し」と称され得る。係る呼び出しは、実行されるユーザコード（または、その場所）と、ユーザコードを実行するために使用される１つ以上の引数とを含み得る。例えば、呼び出しは、タスクを実行する要求と一緒にタスクのユーザコードを提供し得る。別の例では、呼び出しは、その名前または識別子によって事前にアップロードされたタスクを識別し得る。さらなる別の例では、タスクに対応するコードは、タスクに関する呼び出しに含まれ得、要求がコーディネータ９１４またはオンデマンドコード実行システム９５０によって受信される前に、別個の場所（例えば、コーディネータ９１４のストレージ、ネットワークアクセス可能なストレージサービス、またはタスクデータストア９５４）にアップロードされる。コーディネータ９１４またはオンデマンドコード実行システム９５０の要求インタフェースは、ユーザから、ハイパーテキスト転送プロトコルセキュア（ＨＴＴＰＳ）要求としてタスクを実行する呼び出しを受信し得る。また、ＨＴＴＰＳ要求に含まれる任意の情報（例えば、ヘッダおよびパラメータ）も、タスクを実行するときに処理および利用され得る。上記に説明したように、例えば、ＨＴＴＰ、ＭＱＴＴ、およびＣｏＡＰを含む任意の他のプロトコルは、要求インタフェース９２２にタスク呼び出しを含有するメッセージを転送するために使用され得る。
【０１００】
タスクを実行する呼び出しは、タスクに対応するユーザコードと一緒に使用される１つ以上の第三者ライブラリ（ネイティブライブラリを含む）を指定し得る。一実施形態では、呼び出しは、コーディネータ９１４またはオンデマンドコード実行システム９５０に、実行のために要求されたタスクに対応するユーザコードおよび任意のライブラリ（および／または、その記憶場所の識別）を含有するＺＩＰファイルを提供し得る。いくつかの実施形態では、呼び出しは、実行されるタスクのプログラムコード、プログラムコードが記述された言語、呼び出しと関連付けられたユーザ、および／またはプログラムコードを実行するために保存されるコンピューティングリソース（例えば、メモリ等）を示すメタデータを含む。例えば、タスクのプログラムコードは、呼び出しとともに提供され得る、ユーザによって事前にアップロードされ得る、コーディネータ９１４もしくはオンデマンドコード実行システム９５０（例えば、標準ルーチン）によって提供され得る、および／または第三者によって提供され得る。いくつかの実施形態では、係るリソースレベルの制約（例えば、どの程度のメモリが特定のユーザコードを実行するために割り当てられるか）は、特定のタスクのために指定され、タスクの各実行を通じて変化しない場合がある。係る場合、コーディネータ９４０またはオンデマンドコード実行システム９５０は、個々の呼び出しのそれぞれが受信される前に、係るリソースレベルの制約へのアクセスを有し得、個々の呼び出しは、係るリソースレベルの制約を指定しない場合がある。いくつかの実施形態では、呼び出しは、どの種類のパーミッションまたは権限が、呼び出しがタスクを実行することを引き起こすかを示すパーミッションデータ等の他の制約を指定し得る。係るパーミッションデータは、（例えば、プライベートネットワーク上の）プライベートリソースにアクセスするためにオンデマンドコード実行システム９１０によって使用され得る。
【０１０１】
いくつかの実施形態では、呼び出しは、呼び出しを扱うために採用されるべきである挙動を指定し得る。係る実施形態では、呼び出しは、呼び出しで参照されるタスクを実行するための１つ以上の実行モードを可能にするためのインジケータを含み得る。例えば、呼び出しは、デバッグモードでタスクが実行されるべきかどうかを示すためのフラグまたはヘッダを含み得、デバッグモードでは、タスクの実行と関連して生成され得るデバッギングおよび／またはロギング出力がユーザに（例えば、コンソールユーザインタフェースを介して）再度提供される。係る例では、コーディネータ９１４またはオンデマンドコード実行システム９５０は、呼び出しを検査し、フラグまたはヘッダを探索し得、それが存在する場合、コーディネータ９１４またはオンデマンドコード実行システム９５０は、タスクが実行される実行環境の挙動（例えば、ロギング機能）を修正し、出力データをユーザに再度提供させ得る。いくつかの実施形態では、挙動／モードインジケータは、コーディネータ９１４またはオンデマンドコード実行システム９５０によってユーザに提供されるユーザインタフェースによって呼び出しに追加される。ソースコードプロファイリング、リモートデバッギング等の他の特徴は、また、呼び出しにおいて提供されるインジケーションに基づいて、有効または無効にされ得る。
【０１０２】
サービスプロバイダ環境９２０は、１つ以上のコンピュータネットワーク（図９に示されない）を使用して相互接続された、いくつかのコンピュータシステムを含む分散コンピューティング環境において動作するものとして図９に示される。サービスプロバイダ環境９２０は、また、図９に示されるデバイスよりも少ない数または多い数のデバイスを有するコンピューティング環境内で動作し得る。したがって、図９のサービスプロバイダ環境９２０の表現は、例示的であると見なされ、本開示を限定するものと見なすべきではない。例えば、サービスプロバイダ環境９２０またはその様々な構成は、本明細書に説明されるプロセスの少なくとも一部を実施するために、様々なウェブサービスコンポーネント、ホストされたコンピューティング環境もしくは「クラウド」コンピューティング環境、および／またはピアツーピアネットワーク構成を実装し得る。
【０１０３】
さらに、サービスプロバイダ環境９２０は、ハードウェア、またはハードウェアデバイスによって実行されるソフトウェアに直接実装され得、例えば、本明細書に説明される様々な特徴を行うためのコンピュータ実行可能命令を実行するように構成されている物理コンピュータハードウェア上で実装された１つ以上の物理サーバまたは仮想サーバを含み得る。１つ以上のサーバは、例えば、１つ以上のデータセンター内で、地理的に分散され得る、または地理的に同一場所に配置され得る。いくつかの例では、１つ以上のサーバは、多くの場合「クラウドコンピューティング環境」と称される、即時にプロビジョニングされ、解放されるコンピューティングリソースのシステムの一部として動作し得る。
【０１０４】
図１０は、所与の被調整環境９１０内で被調整デバイス９１２を管理するコンピューティングシステム（コーディネータ９１４と称される）の一般的アーキテクチャを示す。図１０に示されるワーカマネージャ９４０の一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアモジュールの配列を含む。ハードウェアモジュールは、下記にさらに詳細に説明されるように、物理電子デバイスが実装され得る。コーディネータ９１４は、図１０に示される要素よりもさらに多くの（または、少ない）要素を含み得る。しかしながら、開示を可能にすることをもたらすために、それらの一般的な従来の要素の全てが示される必要はない。加えて、図１０に示される一般的アーキテクチャは、図９に示される他のコンポーネントのうちの１つ以上を実装するために使用され得る。示されるように、コーディネータ９１４は、プロセシングユニット１００４、ネットワークインタフェース１００６、コンピュータ可読媒体ドライブ１００７、および入力／出力デバイスインタフェース１００８を含み、それらの全ては、通信バスによって相互に通信し得る。ネットワークインタフェース１００６は、１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット１００４は、ネットワーク９０４を介して、他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。プロセシングユニット１００４は、また、メモリ１０５０におよびメモリ１０５０から通信し、さらに、入力／出力デバイスインタフェース１００８を介して、任意選択のディスプレイ（図示しない）に出力情報を提供し得る。入力／出力デバイスインタフェース１００８は、また、任意選択の入力デバイス（図示しない）から入力を受け得る。
【０１０５】
メモリ１０５０は、本開示の１つ以上の態様を実装するために、プロセシングユニット１００４が実行するコンピュータプログラム命令（いくつかの実施形態では、モジュールとしてグループ化される）を含有し得る。メモリ１０５０は、一般的に、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、および／または他の永続的な、補助的もしくは非一時的コンピュータ可読媒体を含む。メモリ１０５０は、コーディネータ９１４の一般管理および動作において、プロセシングユニット１００４による使用のためのコンピュータプログラム命令を提供するオペレーティングシステム１０５２を記憶し得る。メモリ１０５０は、さらに、本開示の態様を実装するためのコンピュータプログラム命令および他の情報を含み得る。例えば、一実施形態では、メモリ１０５０は、プロセスマネージャ１０５４、スケジューラ１０５６、配置エージェント１０５８、および通信マネージャ１０６０を含む。
【０１０６】
スケジューラ１０５６および配置エージェント１０５８は、プロセシングユニット１００４による実行のためのタスクを選択し、係るタスク実行を管理するようにプロセシングユニット１００４によって実行され得る。具体的には、スケジューラ１０５６は、（例えば、コーディネータ９１４において制約されたリソースのインスタンスの下で）所与の時点における実行のためのタスクを選択し、タスクの実行を中断する命令を含み得る。配置エージェント１０５８は、タスクを実行するための適切な実行環境１０７０を選択し、当該実行環境１０７０に、タスク実行中に必要なリソースへの適切なアクセスをプロビジョニングし、実行環境１０７０内でタスクの実行を生じさせる命令を含み得る。本明細書で使用されるような実行環境１０７０は、タスクを実行するためのメモリ１０５０の論理部分を指す。一実施形態では、実行環境１０７０は、プログラム的に分離され、その結果、第１の実行環境１０７０内でのコードの実行は、別の実行環境１０７０と関連付けられたメモリを修正することが防止される。例示として、実行環境１０７０は、「コンテナ」、オペレーティングシステムレベルの仮想化環境、または「ｃｈｒｏｏｔ  ｊａｉｌ」もしくはＰｙｔｈｏｎ仮想環境「ｖｉｒｔｕａｌｅｎｖ」等の「サンドボックス」環境に対応し得る。他の例では、実行環境１０７０は、仮想マシン環境（例えば、ＪＡＶＡ仮想マシン、異なったオペレーティングシステムを伴う仮想化されたハードウェアデバイス等）に対応し得る。さらなる他の例では、実行環境１０７０は、仮想化を必ずしも利用することなく、タスクの実行に割り当てられたメモリ空間であり得る。
【０１０７】
コーディネータ上で実行するタスクの間の通信と共に、コーディネータ９１４と他のデバイス（例えば、クライアントデバイス９０２および被調整デバイス９１２）との間の通信は、通信マネージャ１０６０によって容易にされ得る。具体的には、通信マネージャ１０６０は、コーディネータ９１４に向けられたメッセージを取得し、適切な宛先にメッセージを転送するように構成され得る。例えば、通信マネージャ２６０は、タスク、被調整デバイス９１２、クライアントデバイス９０２、およびサービスプロバイダ実行環境９２０のデバイスのいずれかの組み合わせの間でメッセージを送り得る。下記にさらに詳細に説明されるように、通信マネージャ２６０は、指定トピックと関連付けられるメッセージを変換することができ、その結果、当該メッセージは、デバイスのより少ないサブセットにサブスクライブされるトピックに向けられる。
【０１０８】
コーディネータ９１４によって実行されるタスクは、タスクメモリ空間１０８０内で論理的にグループ化されるものとして示され、タスクメモリ空間１０８０は、各タスクに対応するコードを記憶するように構成されているメモリ１０５０の論理ユニットに対応し得る。図１０に示されるように、タスクメモリ空間１０８０は、ルータタスク１０８２、１つ以上の通信マネージャタスク１０８６、シャドウサービスタスク１０８８、および１つ以上のクライアントにより提供されるタスク１０９０を含む、コーディネータ９１４の機能性を実施するようにプロセシングユニット１００４によって実行可能ないくつかのタスクを含み得る。
【０１０９】
ルータタスク１０８２は、コーディネータ内での、コーディネータへの、およびコーディネータからのメッセージのルーティングを支援するように実行可能なコードの一部に対応し得る。一実施形態では、ルータタスク１０８２は、メッセージに関する適切な宛先を判定するために「ルーティングテーブル」を実装する。例えば、通信マネージャ１０６０は、（例えば、タスク実行による生成、または入力／出力インタフェース１００８における受信に起因して）ルータタスク１０８２に、コーディネータ９１４において取得されたメッセージを転送し得、ルータタスク１０８２は、ある識別子にアドレス指定されたメッセージが所与のタスク、所与のクライアントデバイス９０２、または所与の被調整デバイス９０２に送られるべきであると判定するためにルーティングテーブルを利用し得る。ルーティングテーブルはさらに、識別子にアドレス指定されたメッセージがサービスプロバイダ環境９２０に（例えば、デバイスシャドウサービス９４０またはオンデマンドコード実行システム９５０に）伝達されるべきであることを示し得る。一実施形態では、ルーティングテーブルは、識別子として「トピック」を利用し得、その結果、特定のトピックと関連付けられたメッセージは、当該トピックに関して指定されたルーティングに従って送られる。ルーティングテーブルは、さらに、メッセージのソースに基づいて、そのメッセージをどのように送るかに関する情報を含み得る。例えば、所与のトピックにアドレス指定されたメッセージは、メッセージが第１のタスク、第２のタスク、第１の被調整デバイス９１２等から受信されるかどうかに基づいて、異なって送られ得る。ルーティングテーブルの利用によって、ルータタスク２８２は、メッセージの送信側の動作の変更なしに（例えば、メッセージを生成したタスクに関するコードを再記述することなく、メッセージを生成した被調整デバイス９１２のソフトウェアを修正すること等なく）、係るメッセージをリダイレクトすることを可能にし得る。
【０１１０】
通信マネージャタスク１０８６は、通信のプロトコルに従って、コーディネータ９１４と、いくつかの異なる外部デバイス（例えば、被調整デバイス９０２）との間の係る通信を可能にし得る。例えば、第１の通信マネージャタスク１０８６は、ＢＬＵＥＴＯＯＴＨ（商標）プロトコルを使用して通信を管理するように構成され得、第２の通信マネージャは、ＨＴＴＰプロトコルを使用して通信を管理するように構成され得る等のことがある。いくつかの例では、複数の通信マネージャタスク１０８６は、通信を実施するように集合的に作用し得る。例えば、第１の通信マネージャタスク１０８６は、ＴＣＰプロトコルを介した通信を可能にし得る一方、第２の通信マネージャタスク１０８６は、ＭＱＴＴプロトコル（ＴＣＰプロトコルを利用し、ひいては、第１の通信マネージャタスク１０８６を利用し得る）を介した通信を可能にし得る。異なる通信マネージャタスク１０８６が異なるプロトコルを介して通信するコーディネータ９１４の能力を変化させることができるために、およびコーディネータ９１４のタスクがコーディネータ９１４の再構成によって変わり得るために、コーディネータ９１４は、様々な異なる通信プロトコルを利用するように即時に再構成され得る。
【０１１１】
シャドウサービスタスク１０８８は、コーディネータ９１４において維持されたデバイスシャドウの管理と、およびデバイスシャドウとの相互作用とを容易にすることができる。例示として、シャドウサービスタスク１０８８は、コーディネータ９１４に対してローカルにデバイスシャドウサービス９４０によって提供されるものと同様の機能性を実施することができる。したがって、シャドウサービスタスク１０８８は、被調整デバイス９１２のシャドウ状態（所望の状態を表すデータ）を維持し、係るデータへの読み出しまたは書き込みを可能にし得る。シャドウサービスタスク１０８８は、さらに、被調整デバイス９１２に関するデバイスシャドウとの被調整デバイス９１２の同期を可能にし得る。したがって、被調整デバイス９１２に関するデバイスシャドウを修正することによって、被調整デバイス９１２の状態が変わり得る。被調整デバイス９１２に関するデバイスシャドウを読み出すことによって、被調整デバイス９１２の状態を判定することができる。いくつかの例では、シャドウサービスタスク１０８８は、さらに、デバイスシャドウサービス９４０によって維持されるデバイスシャドウ等の所与のデバイスに関する別のデバイスシャドウに合わせて調整し得る。例えば、シャドウサービスタスク１０８８は、ローカルデバイスシャドウを、デバイスシャドウサービス９４０に記憶されたデバイスシャドウと同期し、ローカルデバイスシャドウと、デバイスシャドウサービス９４０に記憶されたデバイスシャドウとの間の不一致を解決し得る等を行う。
【０１１２】
上記に説明したタスク（それらのそれぞれが、例示として、サービスプロバイダ環境９２０と関連付けられたエンティティによって提供され得る）に加えて、タスクメモリ空間１０８０は、任意の数のクライアントにより提供されるタスク１０９０を含み得、クライアントにより提供されるタスク１０９０は、クライアントデバイス９０２によって生成され、コーディネータ９１４への配置のためにサービスプロバイダ環境９２０にサブミットされる実行可能なコードに対応し得る。したがって、クライアントにより提供されるタスク１０９０によって提供される機能性は、サブミットするユーザの要望に従って変化し得る。いくつかの例では、クライアントにより提供されるタスク１０９０は、メモリ１０５０が言語ランタイムを含むコーディング言語で記述され得る。例えば、コーディネータ９１４がｎｏｄｅ．ｊｓ、Ｇｏ、ＪＡＶＡ、およびＰｙｔｈｏｎ等の言語をサポートする場合、クライアントにより提供されるタスク２９０は、それらの言語のいずれかで記述された実行可能なコードを含み得る。
【０１１３】
加えて、メモリ１０５０は、コーディネータ９１４の構成データが記憶されたメモリ１０５０の論理部分を表す、構成データ部１０５２を含む。構成データは、例えば、コーディネータ９１４の現在の配置バージョン、タスクメモリ空間１０８０のタスクによって記憶されたデータ、またはコーディネータ９１４の動作において使用される他のデータを含み得る。
【０１１４】
コーディネータ９１４の構成（および再構成）を可能にするために、メモリ１０５０は、さらに、配置エージェント１０５８を含む。配置エージェント１０５８は、サービスプロバイダ環境９２０にコーディネータを登録し、コーディネータ９１４の所望の構成を判定し、コーディネータ９１４の現在の構成が所望の構成と一致しない例では、コーディネータ９１４に関する構成データを取得し、所望の構成を実装するためにメモリ１０５０を修正するように実行可能なコードに対応することができる。
【０１１５】
図１１Ａは、本出願に従った、例示的な被調整デバイス９１２Ａのアーキテクチャの一実施形態を示す。図１１Ａに示される被調整デバイス９１２Ａの一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアコンポーネントの配列を含む。例示されるように、被調整デバイス９１２Ａは、プロセシングユニット１１０４、ネットワークインタフェース１１０６、コンピュータ可読媒体ドライブ１１０７、入力／出力デバイスインタフェース１１２０、任意選択のディスプレイ１１０２、および入力デバイス１１２４を含み、それらの全ては、通信バスによって相互に通信し得る。例示として、被調整デバイス９１２Ａは、埋め込みデバイスとして、入力または出力等のより制限された機能性およびコンポーネントを有し得る。
【０１１６】
ネットワークインタフェース１１０６は、図９のネットワーク９０４等の１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット１１０４は、ネットワークを介して他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。プロセシングユニット１１０４はまた、メモリ１１１０におよびメモリ１１１０から通信し、さらに、入力／出力デバイスインタフェース１１２０を介して、任意選択のディスプレイ１１０２に出力情報を提供し得る。入力／出力デバイスインタフェース１１２０は、また、キーボード、マウス、デジタルペン等の任意選択の入力デバイス１１２４から入力を受け得る。いくつかの実施形態では、被調整デバイス９１２Ａは、図１１Ａに示されるものよりも多い（または、少ない）コンポーネントを含み得る。例えば、被調整デバイス９１２のいくつかの実施形態は、ディスプレイ１１０２および入力デバイス１１２４を省略し得る一方、１つ以上の代替通信チャネルを経由して（例えば、ネットワークインタフェース１１０６を介して）入力／出力能力を提供する。加えて、被調整デバイス９１２Ａは、同様に、入力および出力インタフェース１１２０を完全に省略し得る。
【０１１７】
メモリ１１１０は、１つ以上の実施形態を実装するために、プロセシングユニット１１０４が実行するコンピュータプログラム命令を含み得る。メモリ１１１０は、一般的に、ＲＡＭ、ＲＯＭ、または他の永続的メモリもしくは非一時的メモリを含む。メモリ１１１０は、被調整デバイス９１２Ａの一般管理および動作においてプロセシングユニット１１０４による使用のためのコンピュータプログラム命令を提供するオペレーティングシステム１１１４を記憶し得る。メモリ１１１０は、さらに、本開示の態様を実装するためのコンピュータプログラム命令および他の情報を含み得る。例えば、一実施形態では、メモリ１１１０は、コンテンツにアクセスするためのブラウザアプリケーション１１１６を含む。例示として、ブラウザアプリケーション１１１６は、完全なソフトウェアブラウザアプリケーション、ブラウザアプリケーションの一部を包含し得る、または単に、データ接続性を提供するソフトウェアアプリケーション（または実行可能命令）であり得る。
【０１１８】
図１１Ｂは、本出願に従った、例示的な被調整デバイス９１２Ｂの代替アーキテクチャの一実施形態を示す。図１１Ｂに示される被調整デバイス９１２Ｂの一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアコンポーネントの配列を含む。しかしながら、被調整デバイス９１２Ｂは、被調整デバイス９１２Ｂの計算機能および動作を制限し得る少なくなったコンポーネントと関連付けられ得る。例示として、被調整デバイス９１２Ｂは、通信バスと通信する、プロセシングユニット１１５０およびネットワークインタフェース１１５２を含む。図１１Ａの被調整デバイス９１２Ａとは異なり、被調整デバイス９１２Ｂは、コンピュータ可読媒体ドライブ、入力／出力デバイスインタフェース、任意選択のディスプレイ、または入力デバイスを有さない場合がある。
【０１１９】
ネットワークインタフェース１１５２は、図９のネットワーク９０４等の１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット１１５０は、ネットワークを介して他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。メモリ１１５４は、１つ以上の実施形態を実装するために、プロセシングユニット１１５０が実行するコンピュータプログラム命令を含み得る。メモリ１１５４は、一般的に、ＲＡＭ、ＲＯＭ、または他の永続的メモリもしくは非一時的メモリを含む。本実施形態では、メモリ１１５４は、被調整デバイス９１２Ｂの一般管理および動作においてプロセシングユニット１１５０による使用のためのコンピュータプログラム命令を提供する完全なオペレーティングシステムを必ず記憶し得る。むしろ、一実施形態では、メモリ１１５４は、命令にアクセスし、命令を受信し、命令を処理するためのインタフェースソフトウェアコンポーネント１１５６を含む。
【０１２０】
図１２は、本出願に従った、例示的なクライアントデバイス９０２のアーキテクチャの一実施形態を示す。図１２に示されるクライアントデバイス９０２の一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアコンポーネントの配列を含む。例示されるように、クライアントデバイス９０２は、プロセシングユニット１２０４、ネットワークインタフェース１２０６、コンピュータ可読媒体ドライブ１２０７、入力／出力デバイスインタフェース１２０８、任意選択のディスプレイ１２０２、および入力デバイス１２２４を含み、それらの全ては、通信バスによって相互に通信し得る。
【０１２１】
ネットワークインタフェース１２０６は、図９のネットワーク９０４等の１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット１２０４は、ネットワークを介して他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。プロセシングユニット１２０４はまた、メモリ１２１０におよびメモリ１２１０から通信し、さらに、入力／出力デバイスインタフェース１２２０を介して、任意選択のディスプレイ１２０２に出力情報を提供し得る。入力／出力デバイスインタフェース１２０８は、また、キーボード、マウス、デジタルペン等の任意選択の入力デバイス１２２４から入力を受け得る。いくつかの実施形態では、クライアントデバイス９０２は、図１２に示されるものよりも多い（または、少ない）コンポーネントを含み得る。例えば、被調整デバイス９１２のいくつかの実施形態は、ディスプレイ１２０２および入力デバイス１２２４を省略し得る一方、１つ以上の代替通信チャネルを経由して（例えば、ネットワークインタフェース１２０６を介して）入力／出力能力を提供する。加えて、クライアントデバイス９０２は、同様に、入力および出力インタフェース１２０８を完全に省略し得る。
【０１２２】
メモリ１２１０は、１つ以上の実施形態を実装するために、プロセシングユニット１２０４が実行するコンピュータプログラム命令を含み得る。メモリ１２１０は、一般的に、ＲＡＭ、ＲＯＭ、または他の永続的メモリもしくは非一時的メモリを含む。メモリ１２１０は、クライアントデバイス９０２の一般管理および動作においてプロセシングユニット１２０４による使用のためのコンピュータプログラム命令を提供するオペレーティングシステム１２１４を記憶し得る。メモリ１２１０は、さらに、本開示の態様を実装するためのコンピュータプログラム命令および他の情報を含み得る。例えば、一実施形態では、メモリ１２１０は、コンテンツにアクセスするためのブラウザアプリケーション１２１６を含む。例示として、ブラウザアプリケーション１２１６は、完全なソフトウェアブラウザアプリケーション、ブラウザアプリケーションの一部を包含し得る、または単に、データ接続性を提供するソフトウェアアプリケーション（または実行可能命令）であり得る。
【０１２３】
図１３は、本明細書に説明されるメッセージ処理サービスコンポーネントを実装するための例示的コンピューティングデバイスのアーキテクチャの一実施形態を示す。前述に説明したように、当該環境内の１つ以上のコンピューティングデバイスは、ＭＱＴＴブローカー等のメッセージ処理サービスとして機能し得る。他の実施形態では、メッセージ処理サービスは、ネットワークコンポーネントに実装され得る。したがって、図１３に示されるメッセージ処理サービスの一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアコンポーネントの配列を含む。例示されるように、リモートコマンドサービス９１４は、プロセシングユニット１３０４、ネットワークインタフェース１３０６、コンピュータ可読媒体ドライブ１３０７、入力／出力デバイスインタフェース１３５０、任意選択のディスプレイ１３０２、および入力デバイス１３２４を含み、それらの全ては、通信バスによって相互に通信し得る。リモートコマンドサービス９１４のコンポーネントは、物理ハードウェアコンポーネントであり得る、または仮想環境内で実装され得る。
【０１２４】
ネットワークインタフェース１３０６は、図９のネットワーク９５０等の１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット１３０４は、ネットワークを介して他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。プロセシングユニット１３０４はまた、メモリ１３１０におよびメモリ１３１０から通信し、さらに、入力／出力デバイスインタフェース１３５０を介して、任意選択のディスプレイ１３０２に出力情報を提供し得る。入力／出力デバイスインタフェース１３５０は、また、キーボード、マウス、デジタルペン等の任意選択の入力デバイス１３２４から入力を受け得る。いくつかの実施形態では、リモートコマンドサービス９１４は、図１３に示されるものよりも多い（または、少ない）コンポーネントを含み得る。例えば、リモートコマンドサービス９１４のいくつかの実施形態は、ディスプレイ１２０２および入力デバイス１３２４を省略し得る一方、１つ以上の代替通信チャネルを経由して（例えば、ネットワークインタフェース１３０６を介して）入力／出力能力を提供する。
【０１２５】
メモリ１３１０は、１つ以上の実施形態を実装するために、プロセシングユニット１３０４が実行するコンピュータプログラム命令を含み得る。メモリ１３１０は、一般的に、ＲＡＭ、ＲＯＭ、または他の永続的メモリもしくは非一時的メモリを含む。メモリ１３１０は、中間サーバ９１４の一般管理および動作において、プロセシングユニット１３０４による使用のためのコンピュータプログラム命令を提供するオペレーティングシステム１３１４を記憶し得る。メモリ１３１０は、さらに、本開示の態様を実装するためのコンピュータプログラム命令および他の情報を含み得る。例えば、一実施形態では、メモリ１３１０は、クライアントデバイス９０２からコンテンツ要求を受信および処理するためのクライアントインタフェースソフトウェア１３１２を含む。加えて、メモリ１３１０は、受信された通信を処理するための通信マネージャコンポーネント１３１６を含む。例示として、通信マネージャ１３１６は、指定トピックと関連付けられるメッセージを変換することができ、その結果、当該メッセージは、デバイスのより少ないサブセットにサブスクライブされるトピックに向けられる。
【０１２６】
ここで、図１４Ａ〜図１４Ｄを参照して、コンテンツメッセージを処理するコンテンツ管理システム９１０のコンポーネント間の相互作用の例を説明する。より具体的には、図１４Ａ〜図１４Ｄは、被調整デバイス９１２、クライアントデバイス９０２、およびメッセージ処理サービスの間の相互作用に関して説明される。前述に示したように、メッセージ処理サービスは、コーディネータ９１４または他のネットワーク機器を含む、様々なデバイスによって実施されることができる。加えて、被調整デバイス９１２は、被調整デバイス９１２（図１１Ａ）、被調整デバイス９１２（図１１Ｂ）、またはそれらの組み合わせに対応することができる。しかしながら、相互作用の参照は、例示の目的のために使用される場合でも、任意の特定のデバイスまたはデバイスの組み合わせに限定されるべきではない。
【０１２７】
図１４Ａを参照して、メッセージ処理サービスの初期構成を説明する。例示として、クライアントまたはシステムアドミニストレータは、受信された通信の解釈を容易にする情報を伴うメッセージ処理サービスを構成する。一実施形態では、メッセージ処理サービスは、いくつかの潜在的被調整環境９１０の１つに通信を提供するために、サービスプロバイダ環境９２０によって実施されることができる。別の実施形態では、メッセージ処理サービスは、いくつかの被調整デバイス９１２の１つに通信を提供するために、コーディネータ９１４によって実施されることができる。したがって、図１４Ａ〜図１４Ｄでは、単独で、いずかの実施形態または他の変形例における実装に限定するべきではない。しかしながら、例示の目的のために、図１４Ａ〜図１４Ｄは、コーディネータ９１４と被調整デバイスのセットとの間の相互作用に関して説明される。
【０１２８】
例示的環境に従って、通信ネットワーク９０４にわたってメッセージを伝達するために利用される実際の通信プロトコルに関わらず、ＭＱＴＴメッセージングプロトコルに従って、通信を形成することができる。ＭＱＴＴプロトコルに特有であるように、各メッセージは、通信を定義する１つ以上のワードのグループを有するトピック部と関連付けられる、またはそれ以外の場合、当該通信と関連付けられる。分離可能なワードのグループのそれぞれは、概して、レベルと称され得、トピック部は、複数のレベルを有し得る。下記の例は、第１のレベル「基本レベル」、次に、一連の追加レベル「レベル１」〜「レベルｎ」を含む。各レベルは、トピックセパレータによって示される。
【０１２９】
基本レベル／レベル１／レベル２／レベル３．．．．／レベルｎのように示される。
【０１３０】
前述に説明したように、従来のＭＱＴＴプロトコルでは、メッセージを受信するメッセージコーディネータ９１４は、トピックごとに発行されるメッセージを受信するために登録している１つ以上の受信側デバイスと、トピックを一致させることを試みる。例えば、メッセージコーディネータ９１４は、メッセージの１つ以上のトピック部を探索し、（全体的または部分的に）トピック登録と一致させる。コーディネータ９１４は、全てのレベルの完全一致または１つ以上のレベルの部分一致に対する判定を限定し得る。
【０１３１】
ここで、図１４Ａを参照すると、（１）において、アドミニストレータまたはカスタマに対応するクライアンデバイス９０２は、構成情報をコーディネータ９１４に伝達することができる。例示として、構成情報は１つ以上の命令、論理ルール、またはアクションのセットを定義する処理ステップに対応し、コーディネータ９１４のメッセージ処理サービスは受信済メッセージのトピック部の一致、メッセージのソース等に基づいてメッセージを引き受けることができる。例えば、コーディネータ９１４のメッセージ処理サービスの１つの構成は、あてがわれたタスクに対応する通信を指定の被調整デバイス９１２によって実施するべきであるかどうかの定義を含み得る。この例では、被調整デバイス９１２のセットは、対応するトピックを伴うコンテンツメッセージを受信するためにサブスクライブされ得るが、メッセージを受信する当該デバイスは、コーディネータ９１４によって識別されるルールの評価に依存し得る。
【０１３２】
別の例では、コーディネータ９１４は、受信済メッセージの処理に基づいて、コスト情報、ルーティング情報、仕事量、サービスレベル情報、セキュリティ情報等の追加情報を取得するように構成され得る。この点では、メッセージングプロトコルの従来の実施におけるコーディネータ９１４のメッセージ処理サービスは、受信済メッセージの任意の追加処理を行わない、または、ルーティング決定を行うために、追加外部ネットワーク通信もしくはコンポーネントを必要とし得る。加えて、本出願の態様に従って、コーディネータ９１４は、クライアントデバイス９０２を介してアドミニストレータによって指定されるような多様な追加ルーティングおよび選択機能で構成され得る。コーディネータ９１４を構成する直接通信として示されているが、いくつかの実施形態では、クライアントコンピューティングデバイス９０２は、メッセージ処理システム９２０を介して、コーディネータ９１４と間接的に相互作用するであろう。
【０１３３】
（２）において、コーディネータ９１４は、構成情報を処理し、後続処理に関する構成を記録する。この点では、コーディネータ９１４は、受信済メッセージが潜在的受信側にどのように発行されるべきかを判定する際に使用されるためのルーティングおよび選択情報を維持することができる。例示として、記憶された構成情報は、ビジネスルール、論理ルール、またはルーティングテーブルの形式であり得、それらは、コーディネータ９１４が、入力または情報のセットを取得し、ルールまたは論理に基づいて入力のセットを評価し、発行メッセージを受信するべき潜在的受信側のサブセットまたは有限セットを判定することを可能にする。この点では、ルールまたは論理の評価は、潜在的受信側の異なるサブセットへのメッセージの発行を除外もしくは保留することを容易にする、または全ての潜在的受信側がメッセージを受信するべきことを有効にする。他の実施形態では、コーディネータ９１４は、情報が処理されるときに、係るＡＰＩ等のインタフェースを利用する追加命令または実行可能コードを取得することができる。例えば、コーディネータ９１４は第三者セキュリティ情報プロバイダにアクセスすることができ、第三者セキュリティ情報プロバイダは、コーディネータ９１４の構成を容易にすることができる、または発行済メッセージを評価するためにコーディネータ９１４によって利用される情報を提供することができる。
【０１３４】
図１４Ｂを参照して、受信側デバイスの初期構成、被調整デバイス９１２’および９１２’’を説明する。（１）において、被調整デバイス９１２’および９１２’’は、デバイス接続要求を生成し、要求をコーディネータ９１４に伝達する。例示として、デバイス接続要求は、コーディネータ９１４で、被調整デバイス９１２’および９１２’’の認証および承認と関連付けられる手順を確立するように対応する。またさらに、いくつかの実施形態では、論理ネットワーク１００は、独立して、またはコンテンツ管理システム９１０の一部として、コーディネータ９１４へのメッセージの伝達を管理する追加ゲートウェイコンポーネントを含み得る。係るゲートウェイコンポーネントは、セキュリティ機能、ロードバランシング、または他のネットワーク処理サービスを実装することができる。
【０１３５】
（２）において、コーディネータ９１４は、例えば、セキュリティ情報を有効にすることによって、追加情報を要求することによって、または要求を行っているクライアントコンピューティングデバイス９０２の特徴を判定すること等によって、接続要求を処理する。（３）において、接続要求が受け入れ可能で承認された場合、メッセージ処理サービス１４００は、接続確認を、要求を行っているコーディネータ９１４に伝達する。この点では、いったん承認されると、調整デバイス９１２および９１２’ならびにコーディネータ９１４は、ＭＱＴＴ等のメッセージングプロトコルに定義される手順の範囲内で通信を始めることができる。加えて、調整デバイス９１２および９１２’は、上記に説明したルーティングプロセスを容易にする追加セキュリティ情報を提供することができる。
【０１３６】
ここで、図１４Ｃを参照すると、接続確認を受信した後、（１）において、被調整デバイス９１２’および９１２’’は、１つ以上のトピック登録要求をコーディネータ９１４に伝達する。例示として、トピック登録は、メッセージングプロトコルに従って定義され、その結果、被調整デバイス９１２’および９１２’’は、任意の数のコンテンツプロバイダによる指定トピックに従って発行されたコンテンツを受信するために登録することができる。本出願に適用されるように、被調整デバイス９１２’および９１２’’は、１つ以上のトピックを登録する。例示の目的のために、登録済被調整デバイス９１２’および９１２’’へのメッセージの転送がメッセージの埋め込みコードに基づいて異なるように、例を提供する。
【０１３７】
登録後のある時点で、（２）において、別個のコンピューティングデバイス１４０２は、１つ以上の部分的コンテンツをコーディネータ９１４に発行する。例示として、メッセージを受信することができるコーディネータ９１４は、サービスプロバイダ環境９２０から伝達された通信に対応することができる。コンテンツのそれぞれの発行された部分は、トピックと関連付けられる。例示的な例の目的のために、少なくとも１つの発行済コンテンツは、コーディネータ９１４で、被調整デバイス９１２’および９１２’’によって登録されるトピックに対応するコンテンツ／メッセージのトピック部と関連付けられる。この点では、メッセージは、受信済メッセージを登録された調整デバイスと一致させるために利用することができるトピック部の１つ以上のレベルを含み得る。
【０１３８】
（３）において、コーディネータ９１４は、被調整デバイス９１２が受信するべきであることを判定するために、登録済トピックを発行済トピックと一致させる。この点では、コーディネータ９１４は、メッセージを受信するために登録している被調整デバイス９１２のセットを判定することができる。当業者は、ＭＱＴＴメッセージングプロトコルまたは他のメッセージングプロトコルの従来の実装では、コーディネータ９１４は受信済メッセージを全ての登録済被調整デバイスに送信するであろうことを認識している。（４）において、コーディネータ９１４は、通信のトピック部を処理し、発行済メッセージを受信するべき登録済被調整デバイスの識別されたセットから１つ以上の被調整デバイスを識別する。いくつかの実施形態では、コーディネータ９１４は、通信マネージャコンポーネント１３１６等のトピック部を処理する機能性を含み得る。他の実施形態では、コーディネータ９１４は、追加サービスまたは追加コンポーネントを利用して、パースを容易にすることができる。より具体的には、コーディネータ９１４は、ビジネスルールまたはルーティングテーブルを利用して、メッセージを受信する登録済被調整デバイス９１２のサブセットを識別することができる。したがって、コーディネータ９１４は、ビジネスルールまたはルーティングテーブルを評価して、どの登録済被調整デバイス９１２が発行済メッセージを受信しないかを識別することができる。
【０１３９】
（５）において、コーディネータ９１４のメッセージ処理サービスは、メッセージを選択された登録済デバイスのサブセットに向けさせることができる。一実施形態では、コーディネータ９１４は、選択された登録済デバイスにメッセージを直接伝達するように構成され得る。本実施形態では、コーディネータ９１４は、ビジネスルールまたは論理で指定されるような同じメッセージングプロトコルまたは異なる通信プロトコルを利用することができる。別の実施形態では、コーディネータ９１４は、選択された登録済デバイスに適用可能であるであるか、または、それに一致するであろう１つ以上の２次トピック発行を関連付けることができる。本実施形態では、２次トピック発行は、個々のデバイスに関する２次トピック発行等の非選択デバイスに登録されないであろう。２次トピック発行を利用する例示の目的のために、図１４Ｄを参照すると、（６）において、メッセージ処理サービスは、調整デバイス９１２’’にメッセージの転送をさせることができ、被調整デバイス９１２’にメッセージの転送をさせることができない。加えて、いくつかの実施形態では、コーディネータ９１４は、オリジナルのトピックに従ってメッセージを受信するように登録していない場合があるが、それにも関わらずコーディネータ９１４によって選択される、被調整デバイス９１２を選択することができる。
【０１４０】
図１５は、例示的環境に従って、メッセージ処理サービスによって実施されるリモート実行メッセージングルーチン１５００を示すフロー図である。ルーチン１５００は、メッセージルーティング中、メッセージングプロトコルのビジネスルール、ルーティングテーブル、または他の論理情報を示す。ブロック１５０２において、メッセージ処理サービスは、被調整デバイス９１２または任意の他のコンピューティングデバイス９０２等のデバイスによるコンテンツのリモート実行に関連する少なくとも１つのトピックを含む登録情報を取得する。前述に説明したように、本デバイスは、１つ以上のトピック登録要求をメッセージ処理サービスに伝達する。例示として、トピック登録は、メッセージングプロトコルに従って定義され、その結果、本デバイスは、任意の数のコンテンツプロバイダによる指定トピックに従って発行されたコンテンツを受信するために登録することができる。前述に記述したように、トピック登録は、個々のデバイスまたはデバイスのセットに対応することができる。
【０１４１】
登録後のある時点で、ブロック１５０４において、メッセージ処理サービスは、トピック部を有する１つ以上の発行を取得する。例示として、いくつかのコンピューティングデバイス１４０２（図１４Ｃ）は、１つ以上の部分的コンテンツをメッセージ処理サービスに発行する。コンテンツのそれぞれの発行された部分は、トピックと関連付けられる。例示的な例の目的のために、少なくとも１つの発行済コンテンツは、クライアントコンピューティングデバイス９０２の登録済トピックに対応する埋め込みコードと関連付けられる。加えて、トピックと関連付けられるコンテンツのそれぞれの発行された部分は、コンテンツのペイロード部を含む。係るペイロード部の例は、被調整デバイスまたはネットワークデバイスによって実行されるタスクを含み得る。
【０１４２】
ブロック１５０６において、メッセージ処理サービスは、１つ以上のデバイスが発行済トピックを受信するべきクライアントデバイスのセットを形成するトピックを伴う発行済コンテンツを受信するべきであることを判定するために、登録済トピックを発行済トピックと一致させる。例示として、メッセージ処理サービスがＭＱＴＴ等のメッセージングプロトコルに従って構成されているため、トピック発行に対する登録の一致は、メッセージングプロトコルによって指図される方式で達成することができる。例示として、トピック部の一致は、トピック部の全てのレベルの一致、または少なくとも１つのレベルの部分一致に対応することができる。またさらに、当該一致はベースレベルの一致に対応することができる一方、他のレベルは２次一致に関して無視または利用され得る。
【０１４３】
ブロック１５０８において、コーディネータ９１４は、メッセージを受信するべきデバイスのサブセットを選択するためにトピック部を処理する。いくつかの実施形態では、メッセージ処理サービスは、登録済デバイスのサブセットを選択するために、ビジネスルール、ルーティングテーブル、論理ルール等の機能性を含み得る。一態様では、コーディネータ９１４は、受信済メッセージを受信するべき被調整デバイス９１２のサブセットを識別するビジネスルールまたはルーティングテーブルを評価することができる。例示として、ビジネスルールまたはルーティングテーブルは、発信元のソースアドレス、トピック部の１つ以上のレベルの識別情報、識別された受信側デバイス９１２のセキュリティ構成情報、タイムスタンプ情報、被調整デバイスに関する利用情報、財務コスト情報等の情報を組み込むことができる。他の例では、ビジネスルールは、１つ以上の受信側デバイス９１２が他の方法でメッセージを受信することに適格であり得るか、または利用可能であり得る場合、ランダム選択アルゴリズムまたは加重選択アルゴリズムを含み得る。例えば、コーディネータ９１４は、メッセージのソースのネットワークアドレス等のソース識別子を、１つ以上の選択済受信側デバイス９１２と関連付けるビジネスルールで構成され得る。別の例では、コーディネータ９１４は、最小のセキュリティ構成を判定する、または受信済メッセージに関するセキュリティ仕様の種類を指定するセキュリティ仕様情報で構成され得る。この例では、次に、コーディネータ９１４は、１つ以上の登録済セキュリティデバイスのセキュリティ情報を利用して、どの受信側デバイスが指定されたセキュリティ仕様を満たすのかを判定することができる。またさらなる例では、コーディネータ９１４は、時刻、メッセージ種類、もしくは他の情報に基づく全ての利用可能な受信側デバイスを識別するホワイトリスト、または除外するべき１つ以上の受信側デバイスを識別するブラックリストで構成され得る。
【０１４４】
他の態様では、コーディネータ９１４は、情報を個々の被調整デバイス９１２から受信することができ、被調整デバイス９１２は、メッセージを受信するその可用性を示す、またはそれ以外の場合、上記の識別された情報を提供することができる。他の実施形態では、メッセージ処理サービスは、追加サービスまたは追加コンポーネントを利用して、処理を容易にすることができる。加えて、ブロック１５０８において、次に、メッセージ処理サービスは、選択済受信側デバイスと関連付けられている、非選択済受信側デバイスと関連付けられていない２次トピックを選択する。
【０１４５】
ブロック１５１０において、コーディネータ９１４は、トピックのサブセットの選択に従って発行済コンテンツを伝達する。同様に、発行済コンテンツの伝達は、ＭＱＴＴ等のメッセージングプロトコルの手順および能力に従って行われ、実行可能コードの伝達を生じさせる追加通信または代替通信を必要としない。他の例では、メッセージ処理サービスは、別個のトランスポートプロトコルを利用することができる。受信側デバイスは、受信された発行済コンテンツを処理する。さらに他の例では、コーディネータ９１４は、メッセージを、選択された被調整デバイス９１２のサブセットに発行させる１つ以上の２次トピック発行を利用することができる。
【０１４６】
ブロック１５１２において、メッセージ処理サービスは、メッセージの処理に対応する処理結果を取得する。例示として、クライアントコンピューティングデバイスは、メッセージングプロトコルを介して、コードの処理結果を示す情報に関連するコンテンツを生成および発行する。いくつかの実施形態では、処理結果は、コードの実行が行われたことが成功したかどうかのバイナリ判定に対応することができる。別の実施形態では、処理結果は、コード／命令の実行を示す１つ以上の値、またはコード／命令の実行についての情報を詳述するログを含み得る。更新トピックの発行とともに説明したものと同様の様式で、処理結果（複数可）の発行は、特定のトピック（概して「処理結果トピック」と称される）と関連付けられ得る。
【０１４７】
ブロック１５１４において、メッセージ処理サービスは、管理デバイス９０４が処理結果トピックを伴う発行済コンテンツを受信するべきであることを判定するために、登録済トピックを発行済トピックと一致させ、発行済コンテンツを伝達する。例示として、発行済コンテンツの伝達は、また、ＭＱＴＴ等のメッセージングプロトコルの手順および能力に従って行われ、実行可能コードの伝達を生じさせる追加通信または代替通信を必要としない。ブロック１５１６において、ルーチン１５００は終了する。
【０１４８】
図１６は、例示的環境に従って、被調整デバイス９１２または他のコンピューティングデバイスによって実施されるリモート実行メッセージングルーチン１６００を示すフロー図である。前述に説明したように、本出願では、被調整デバイス９１２または他のコンピューティングデバイスは、他のコンポーネントがまたメッセージのルーティングで埋め込みコード情報を利用したかどうかに関係なく、メッセージの処理において埋め込みコード情報を利用するようなメッセージ処理サービスとして考えられ得る。しかしながら、この例の被調整デバイス９１２の識別は、ルーチン１６００の適用を限定するものとして解釈されるべきではない。ブロック１６０２において、被調整デバイス９１２は、１つ以上のトピック登録要求をメッセージ処理サービス１４００に伝達する。上記に説明したように、トピック登録は、メッセージングプロトコルに従って定義され、その結果、被調整デバイス９１２は、任意の数のコンテンツプロバイダによる指定トピックに従って発行されたコンテンツを受信するために登録することができる。
【０１４９】
発行済コンテンツを受信したことに応答して、メッセージ処理サービス１４００は、クライアント被調整デバイス９１２が発行済コンテンツを受信するべきであることを判定するために、登録済トピックを発行済トピックと一致させる。前述に説明したように、メッセージ処理サービスは、オリジナル登録を伴うコンテンツを処理し、次に、メッセージを選択された被調整デバイス９１２に転送する。ブロック１６０４において、被調整デバイス９１２は、コーディネータ９１４から発行済コンテンツを受信する。例示として、発行済コンテンツの伝達は、ＭＱＴＴ等のメッセージングプロトコルの手順および能力に従って行われ、実行可能コードの伝達を生じさせる追加通信または代替通信を必要としない。
【０１５０】
コンテンツの実行のうちの実行の一部として、またはコンテンツの実行の後に、ブロック１６０６において、被調整デバイス９１２は、埋め込みコードを処理し、リモート実行の結果を取得する。いくつかの実施形態では、処理結果は、コードの実行が行われたことが成功したかどうかのバイナリ判定に対応することができる。別の実施形態では、処理結果は、コード／命令の実行を示す１つ以上の値、またはコード／命令の実行についての情報を詳述するログを含み得る。
【０１５１】
ブロック１６０８において、被調整デバイス９１２は、メッセージングプロトコルを介して、コードの処理結果を示す情報に関連するコンテンツを発行する。例示として、発行済コンテンツの伝達は、ＭＱＴＴ等のメッセージングプロトコルの手順および能力に従って行われ、実行可能コードの伝達を生じさせる追加通信または代替通信を必要としない。ブロック１６１０において、ルーチン１６００は終了する。
【０１５２】
図１７は、コーディネータ１７１４が被調整デバイス１７１２を制御するように動作し得る１つ以上の被調整環境１７１０と、（例えば、被調整デバイス１７１２の状態の変更を要求するために）被調整環境１７１０と相互作用し得るクライアントデバイス１７０２と、様々な被調整環境１７１０内でコーディネータ１７１４との通信またはコーディネータ１７１４の構成を支援し得るサービスプロバイダ環境１７２０とを含む、例示的動作環境１７００のブロック図である。
【０１５３】
被調整環境１７１０、クライアントデバイス、およびサービスプロバイダ環境１７２０は、ネットワーク１７０４を介して通信し得、ネットワーク１７０４は、いずれかの有線ネットワーク、無線ネットワーク、またはそれらの組み合わせを含み得る。例えば、ネットワーク１７０４は、パーソナルエリアネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、無線ブロードキャストネットワーク（例えば、ラジオまたはテレビのためのもの）、ケーブルネットワーク、衛星ネットワーク、携帯電話ネットワーク、またはそれらの組み合わせであり得る。さらなる例として、ネットワーク１７０４は、インターネット等の様々な異なった関係者によって運営される可能性がある、リンクされたネットワークの公然にアクセス可能なネットワークであり得る。いくつかの実施形態では、ネットワーク１７０４は、企業または大学のイントラネット等のプライベートまたはセミプライベートネットワークであり得る。ネットワーク１７０４は、グローバルシステムフォーモバイルコミュニケーションズ（ＧＳＭ）ネットワーク、符号分割多重アクセス（ＣＤＭＡ）ネットワーク、ロングタームエボリューション（ＬＴＥ）ネットワーク、または任意の他の種類の無線ネットワーク等の１つ以上の無線ネットワークを含み得る。ネットワーク１７０４は、インターネットまたは他の上述した種類のネットワークのいずれかを介して通信するためのプロトコルおよびコンポーネントを使用することができる。例えば、ネットワーク１７０４によって使用されるプロトコルは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ＨＴＴＰセキュア（ＨＴＴＰＳ）、ＭＱＴＴ、およびコンストレイントアプリケーションプロトコル（ＣｏＡＰ）等を含み得る。インターネットまたは他の上述した種類の通信ネットワークのいずれかを介して通信するためのプロトコルおよびコンポーネントは、当業者に十分に既知であり、ひいては、本明細書でさらに詳細に説明されない。ネットワーク１７０４の全てのコンポーネントが図１７に示されているが、ルータ等の１つ以上のコンポーネントは、メッセージ処理サービスとして機能し得る。
【０１５４】
被調整環境１７１０のそれぞれは、実行環境１７１０のネットワーク（ネットワークは図１７に示されない）を介して通信する、コーディネータ１７１４および任意の数の被調整デバイス１７１２を含み得る。被調整環境１７１０内のそれらの関連付けのために、所与の環境１７１０内の被調整デバイス１７１２およびコーディネータ１７１４は、通信ネットワークの点で、相互に「ローカル」であると考えられ得る。例えば、所与の環境１７１０内の被調整デバイス１７１２およびコーディネータ１７１４は、ＬＡＮまたは他の局所化された通信ネットワークを介して接続され得る。
【０１５５】
被調整デバイス１７１２のそれぞれは、コーディネータ１７１４と通信して、被調整デバイス１７１２の機能性を管理するように構成されているコンピューティングデバイスに対応することができる。いくつかの例では、被調整デバイス１７１２は、ロバストな局所化されたユーザインタフェース能力を伴う、ラップトップ、デスクトップ、スタンドアロンメディアプレイヤ等の十分に特徴付けられたコンピューティングデバイスに対応することができる。他の例では、被調整デバイス１７１２は、家庭用器具またはデバイス（冷蔵庫、洗濯機、湯沸し器、加熱炉、ドアロック、照明バルブ、電気コンセント、電気スイッチ等）内に埋め込まれた、またはそれらに付属品として取り付けられたデバイス等の別の主要機能と関連付けられるシンデバイスまたは埋め込みデバイスに対応することができる。係る器具またはデバイスは、いくつかのコンテキストでは、「スマート」デバイス、ＩｏＴデバイス、または「接続」デバイスと称される。したがって、被調整デバイス１７１２は、制限されたローカルユーザインタフェースを含み、リモート管理のために構成され得る。いくつかの例では、被調整デバイス１７１２は、ステートフルであり得、命令に応答してそれらの状態を変えるように動作し得る（例えば、「オフ」から「オン」に変化させること等によって変わる）。
【０１５６】
さらに下記に詳細に説明されるように（例えば、図１８に関して）、コーディネータ１７１４は、被調整デバイス１７１２に伝達された命令が被調整環境１７１０の外側に伝わることを要求することなく（従って、係る命令のセキュリティが強化され、その伝達速度が速くなる）、被調整デバイス１７１２の動作を調整、管理、または制御する命令を実行するコンピューティングデバイスに対応することができる。具体的には、コーディネータ１７１４は、被調整デバイス１７１２、クライアントデバイス１７０２、およびサービスプロバイダネットワーク１７２０のデバイスの任意の組み合わせの間の通信を管理するように集合的に構成されているプロセッサおよびメモリを含み得る。コーディネータは、さらに、サービスプロバイダ環境１７２０のオンデマンドコード実行環境１７２０と同様の方式で、タスクの実行を可能にするように構成され得る。これらのタスクは、被調整デバイス１７１２、クライアントデバイス１７０２、およびサービスプロバイダネットワーク１７２０のデバイスと通信することを含む、様々なユーザにより定義された機能性またはユーザにより定義されていない機能性を実施し得る。したがって、コーディネータ１７１４は、被調整デバイス１７１２の手動制御、自動制御、または半自動制御を可能にするように構成され得る。例えば、コーディネータ１７１４は、クライアントデバイス１７０２が、被調整デバイス１７１２の状態を変更する要求を伝達することを可能にし、状態の係る変更を発生させ得る。さらなる例として、コーディネータ１７１４は、被調整デバイス１７１２の状態を変更するべき基準をユーザが指定することを可能にし、次に、基準が満たされるときに被調整デバイス１７１２の状態を自動的に変更するように動作し得る。下記に説明されるように、コーディネータ１７１４の多くの機能は、タスクによって確立され得、ユーザによって所望されるように、これらの機能の即時の変更を可能にする。
【０１５７】
クライアントデバイス１７０２は、ユーザが被調整環境１７１０、サービスプロバイダ環境１７２０、またはそれらの両方と通信することを可能にする、様々なコンピューティングデバイスを含み得る。概して、クライアントデバイス１７０２は、デスクトップ、ラップトップもしくはタブレットコンピュータ、パーソナルコンピュータ、ウェアラブルコンピュータ、サーバ、携帯情報端末（ＰＤＡ）、ハイブリッドＰＤＡ／携帯電話、携帯電話、電子ブックリーダ、セットトップボックス、ボイスコマンドデバイス、カメラ、およびデジタルメディアプレイヤ等の任意のコンピューティングデバイスであり得る。サービスプロバイダ環境１７２０は、コーディネータ１７１４に関する構成をサブミットし、当該構成の配置を制御し、コーディネータ１７１４上またはサービスプロバイダ環境１７２０のオンデマンドコード実行環境１７５０上で実行されるタスクに対応するコードをサブミットし、コーディネータ１７１４に関連する情報のロギングまたは監視を参照する等のために、サービスプロバイダ環境１７２０と相互作用するための１つ以上のユーザインタフェース、コマンドラインインタフェース（ＣＬＩ）、アプリケーションプログラミングインタフェース（ＡＰＩ）、および／または他のプログラムインタフェースをクライアントデバイス１７０２に提供し得る。同様に、コーディネータ１７１４は、被調整デバイス１７１２の状態を読み出し、被調整デバイス１７１２の状態の変更を要求し、コーディネータ１７１４がタスクの実行を生じさせることを要求する等のために、コーディネータ１７１４と相互作用するための１つ以上のユーザインタフェース、コマンドラインインタフェース（ＣＬＩ）、アプリケーションプログラミングインタフェース（ＡＰＩ）、および／または他のプログラムインタフェースをクライアントデバイス１７０２に提供し得る。１つ以上の実施形態がユーザインタフェースを使用するとして本明細書に説明され得るが、係る実施形態は、加えてまたは代わりに、任意のＣＬＩ、ＡＰＩ、または他のプログラムインタフェースを使用し得ることを認識されたい。
【０１５８】
サービスプロバイダ環境１７２０は、コーディネータ１７１４の構成、コーディネータ１７１４の管理、およびコーディネータ１７１４との通信を可能にするいくつかの要素を含み得る。具体的には、サービスプロバイダ環境１７２０は、サービスプロバイダ環境１７２０へのコーディネータ１７１４の登録および係るコーディネータ１７１４の構成を可能にする管理および配置サービス１７３０と、コーディネータ１７１４および被調整デバイス１７１２の状態へのロバストな変更を可能にするデバイスシャドウサービス１７４０と、コーディネータ１７１４上のタスクのオンデマンドな動的実行と共に、コーディネータ１７１４上のタスクの配置およびプロビジョニングを提供するオンデマンドコード実行環境１７５０とを含む。
【０１５９】
図１７に示されるように、管理および配置サービス１７３０は、クライアントおよびデータインタフェース１７３２と、構成データストア１７３４とを含み、これらは管理および配置サービス１７３０へのコーディネータ１７１４の登録、コーディネータ１７１４に関する構成の生成、およびコーディネータ１７１４への構成データの伝送を可能にするように集合的に動作し得る。例示として、クライアントおよびデータインタフェース１７３２は、１つ以上のユーザインタフェース（例えば、ＡＰＩ、ＣＬＩ、ＧＵＩ等）を提供し得、１つ以上のユーザインタフェースを経由して、ユーザは、クライアントデバイス１７０２を介して、構成データストア１７３４に記憶するために、コーディネータ１７１４の構成を生成またはサブミットし得る。クライアントおよびデータインタフェース１７３２は、さらに、１つ以上のインタフェースを提供し得、１つ以上のインタフェースを経由して、コーディネータ１７１４は構成を取得し得、その結果、コーディネータ１７１４は、取得された構成に従って再構成される。構成データストア１７３４は、ハードドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＤＤ）、ネットワーク接続ストレージ（ＮＡＳ）、テープドライブ、または任意のそれらの組み合わせ等の任意の永続的データストアまたは実質的に永続的データストアに対応することができる。
【０１６０】
デバイスシャドウサービス１７４０は、コーディネータ１７１４または被調整デバイス１７１２等のデバイスの「シャドウ状態」を作成し、維持し、読み取り、変え、または削除することを可能にする要素を含み得る。上記に説明したように、シャドウ状態は、対応するデバイスの所望の状態を表すデータに対応し得、対応するデバイスは、デバイスの現在の状態を反映し得る、または反映しない場合がある。例えば、コーディネータ１７１４に関して、シャドウ状態は、コーディネータ１７１４に関する所望の構成バージョンを含み得る。被調整デバイス１７１２に関して、シャドウ状態は、被調整デバイス１７１２の所望の状態（例えば、スイッチまたはバルブに関するオンまたはオフ、ロックに対してロックされまたはロックされていない、温度調節器に関する所望の温度等）を含み得る。デバイスシャドウサービス１７４０は、ユーザまたは他のエンティティが、クライアントデバイス１７０２を介して、デバイスに関するシャドウ状態から読み出す、またはデバイスに関するシャドウ状態を修正することを可能にし得、さらに、デバイスをシャドウ状態に同期するように当該デバイスと相互作用し得る。例示として、デバイスシャドウサービス１７４０は、インタフェース１７４２（例えば、ＡＰＩ、ＣＬＩ、ＧＵＩ等を含み得る）を含み得、インタフェース１７４２を経由して、シャドウ状態から読み出し、シャドウ状態に記述し、シャドウ状態を作成または削除する要求が受信され得、シャドウデータストア１７４４は、シャドウ状態を記憶するように構成され得る。シャドウデータストア１７３４は、ハードドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＤＤ）、ネットワークアタッチドストレージ（ＮＡＳ）、テープドライブ、または任意のそれらの組み合わせ等の任意の永続的データストアまたは実質的に永続的データストアに対応することができる。デバイスシャドウの使用に関するさらなる詳細は、「Ｄｅｖｉｃｅ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ  Ｍａｎａｇｅｍｅｎｔ  Ｕｓｉｎｇ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ  Ｔｙｐｅｓ」と題し、２０１６年６月２９日に出願された米国特許出願第１５／１９６，７００号（「７００出願」）の中に見ることができ、その全体が参照によって本明細書に組み込まれる。
【０１６１】
オンデマンドコード実行環境１７５０は、タスク（例えば、ポータブルコードセグメント）のオンデマンド実行を提供するいくつかのデバイスを含み得る。具体的には、オンデマンドコード実行環境１７５０は、フロントエンド１７５２を含み得、フロントエンド１７５２を経由して、ユーザは、クライアントデバイス１７０２を介して、オンデマンドコード実行環境１７５０にタスクをサブミットし、オンデマンドコード実行環境１７５０上でタスクの実行を呼び出し得る。係るタスクは、例えば、タスクデータストア１７５４に記憶され得、タスクデータストア１７５４は、ハードドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＤＤ）、ネットワーク接続ストレージ（ＮＡＳ）、テープドライブ、または任意のそれらの組み合わせ等の任意の永続的データストアまたは実質的に永続的データストアに対応することができる。図１７に示されていないが、オンデマンドコード実行システム１７５０は、いくつかの実行環境等のタスクの実行を可能にする様々な追加コンポーネント（例えば、オンデマンドコード実行環境１７５０の物理ホストデバイス上で実行するコンテナまたは仮想マシン）、係る実行環境を管理するワーカマネージャ、および即時ベースで（例えば、１０ミリ秒を下回る時間で）ワーカマネージャに、実行環境を利用可能にすることを支援するウォーミングプールマネージャを含み得る。オンデマンドコード実行環境に関するさらなる詳細は、上記の参照によって組み込まれる「５５６特許」の中に見ることができる。
【０１６２】
上記に述べられたように、タスクは、オンデマンドコード実行環境１７５０およびコーディネータ１７１４の両方において利用され得る。上記に述べられたように、タスクは、（例えば、特定の機能を達成するための）ユーザコードの個々の集合に対応する。本明細書に使用されるようなユーザコードへの参照は、特定のプログラム言語で記述された任意のプログラムコード（例えば、プログラム、ルーチン、サブルーチン、スレッド等）を指し得る。本開示では、用語「コード」、「ユーザコード」、および「プログラムコード」は、交換可能に使用され得る。係るユーザコードは、例えば、ユーザによって開発された特定のウェブアプリケーションまたはモバイルアプリケーションに関連して、特定の機能を達成するように実行され得る。当該コードの指定の実行は、本明細書で「タスク実行」または単に「実行」と称される。タスクは、非限定的な例として、ＪａｖａＳｃｒｉｐｔ（例えば、ｎｏｄｅ．ｊｓ）、Ｊａｖａ、Ｐｙｔｈｏｎ、および／またはＲｕｂｙ（および／または別のプログラミング言語）で記述され得る。タスクは、様々な方式でオンデマンドコード実行システム１７５０またはコーディネータ１７１４上で実行するために「トリガ」され得る。一実施形態では、クライアントデバイス１７０２または他のコンピューティングデバイスは、タスクを実行する要求を伝達し得、それは、一般的に、タスクを実行する「呼び出し」と称され得る。係る呼び出しは、実行されるユーザコード（または、その場所）と、ユーザコードを実行するために使用される１つ以上の引数とを含み得る。例えば、呼び出しは、タスクを実行する要求と一緒にタスクのユーザコードを提供し得る。別の例では、呼び出しは、その名前または識別子によって事前にアップロードされたタスクを識別し得る。さらなる別の例では、タスクに対応するコードは、タスクに関する呼び出しに含まれ得、要求がコーディネータ１７１４またはオンデマンドコード実行システム１７５０によって受信される前に、別個の場所（例えば、コーディネータ１７１４のストレージ、ネットワークアクセス可能なストレージサービス、またはタスクデータストア１７５４）にアップロードされる。コーディネータ１７１４またはオンデマンドコード実行システム１７５０の要求インタフェースは、ユーザから、ハイパーテキスト転送プロトコルセキュア（ＨＴＴＰＳ）要求としてタスクを実行する呼び出しを受信し得る。また、ＨＴＴＰＳ要求に含まれる任意の情報（例えば、ヘッダおよびパラメータ）も、タスクを実行するときに処理および利用され得る。上記に説明されたように、例えば、ＨＴＴＰ、ＭＱＴＴ、およびＣｏＡＰを含む任意の他のプロトコルは、要求インタフェース１７２２にタスク呼び出しを含有するメッセージを転送するために使用され得る。
【０１６３】
タスクを実行する呼び出しは、タスクに対応するユーザコードと一緒に使用される１つ以上の第三者ライブラリ（ネイティブライブラリを含む）を指定し得る。一実施形態では、呼び出しは、コーディネータ１７１４またはオンデマンドコード実行システム１７５０に、実行のために要求されたタスクに対応するユーザコードおよび任意のライブラリ（および／または、その記憶場所の識別）を含有するＺＩＰファイルを提供し得る。いくつかの実施形態では、呼び出しは、実行されるタスクのプログラムコード、プログラムコードが記述された言語、呼び出しと関連付けられたユーザ、および／またはプログラムコードを実行するために保存されるコンピューティングリソース（例えば、メモリ等）を示すメタデータを含む。例えば、タスクのプログラムコードは、呼び出しとともに提供され得る、ユーザによって事前にアップロードされ得る、コーディネータ１７１４もしくはオンデマンドコード実行システム１７５０（例えば、標準ルーチン）によって提供され得る、および／または第三者によって提供され得る。いくつかの実施形態では、係るリソースレベルの制約（例えば、どの程度のメモリが特定のユーザコードを実行するために割り当てられるか）は、特定のタスクのために指定され、タスクの各実行を通じて変化しない場合がある。係る場合、コーディネータ１７４０またはオンデマンドコード実行システム１７５０は、個々の呼び出しのそれぞれが受信される前に、係るリソースレベルの制約へのアクセスを有し得、個々の呼び出しは、係るリソースレベルの制約を指定しない場合がある。いくつかの実施形態では、呼び出しは、どの種類のパーミッションまたは権限が、呼び出しがタスクを実行することを引き起こすかを示すパーミッションデータ等の他の制約を指定し得る。係るパーミッションデータは、（例えば、プライベートネットワーク上の）プライベートリソースにアクセスするためにオンデマンドコード実行システム１７１０によって使用され得る。
【０１６４】
いくつかの実施形態では、呼び出しは、呼び出しを扱うために採用されるべきである挙動を指定し得る。係る実施形態では、呼び出しは、呼び出しで参照されるタスクを実行するための１つ以上の実行モードを可能にするためのインジケータを含み得る。例えば、呼び出しは、デバッグモードでタスクが実行されるべきかどうかを示すためのフラグまたはヘッダを含み得、デバッグモードでは、タスクの実行と関連して生成され得るデバッギングおよび／またはロギング出力がユーザに（例えば、コンソールユーザインタフェースを介して）再度提供される。係る例では、コーディネータ１７１４またはオンデマンドコード実行システム１７５０は、呼び出しを検査し、フラグまたはヘッダを探索し得、それが存在する場合、コーディネータ１７１４またはオンデマンドコード実行システム１７５０は、タスクが実行される実行環境の挙動（例えば、ロギング機能）を修正し、出力データをユーザに再度提供させ得る。いくつかの実施形態では、挙動／モードインジケータは、コーディネータ１７１４またはオンデマンドコード実行システム１７５０によってユーザに提供されるユーザインタフェースによって呼び出しに追加される。ソースコードプロファイリング、リモートデバッギング等の他の特徴は、また、呼び出しにおいて提供されるインジケーションに基づいて、有効または無効にされ得る。
【０１６５】
サービスプロバイダ環境１７２０は、１つ以上のコンピュータネットワーク（図１７に示されない）を使用して相互接続された、いくつかのコンピュータシステムを含む分散コンピューティング環境において動作するものとして図１７に示される。サービスプロバイダ環境１７２０は、また、図１７に示されるデバイスよりも少ない数または多い数のデバイスを有するコンピューティング環境内で動作し得る。したがって、図１７のサービスプロバイダ環境１７２０の表現は、例示的であると見なされ、本開示を限定するものと見なすべきではない。例えば、サービスプロバイダ環境１７２０またはその様々な構成は、本明細書に説明されるプロセスの少なくとも一部を実施するために、様々なウェブサービスコンポーネント、ホストされたコンピューティング環境もしくは「クラウド」コンピューティング環境、および／またはピアツーピアネットワーク構成を実装し得る。
【０１６６】
さらに、サービスプロバイダ環境１７２０は、ハードウェア、またはハードウェアデバイスによって実行されるソフトウェアに直接実装され得、例えば、本明細書に説明される様々な特徴を行うためのコンピュータ実行可能命令を実行するように構成されている物理コンピュータハードウェア上で実装された１つ以上の物理サーバまたは仮想サーバを含み得る。１つ以上のサーバは、例えば、１つ以上のデータセンター内で、地理的に分散され得る、または地理的に同一場所に配置され得る。いくつかの例では、１つ以上のサーバは、多くの場合「クラウドコンピューティング環境」と称される、即時にプロビジョニングされ、解放されるコンピューティングリソースのシステムの一部として動作し得る。
【０１６７】
図１８は、所与の被調整環境１７１０内で被調整デバイス１７１２を管理するコンピューティングシステム（コーディネータ１７１４と称される）の一般的アーキテクチャを示す。図１８に示されるワーカマネージャ１７４０の一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアモジュールの配列を含む。ハードウェアモジュールは、下記にさらに詳細に説明されるように、物理電子デバイスが実装され得る。コーディネータ１７１４は、図１８に示される要素よりもさらに多くの（または、少ない）要素を含み得る。しかしながら、開示を可能にすることをもたらすために、それらの一般的な従来の要素の全てが示される必要はない。加えて、図１８に示される一般的アーキテクチャは、図１７に示される他のコンポーネントうちの１つ以上を実装するために使用され得る。示されるように、コーディネータ１７１４は、プロセシングユニット１８０４、ネットワークインタフェース１８０６、コンピュータ可読媒体ドライブ１８０７、および入力／出力デバイスインタフェース１８０８を含み、それらの全ては、通信バスによって相互に通信し得る。ネットワークインタフェース１８０６は、１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット１８０４は、ネットワーク１７０４を介して、他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。プロセシングユニット１８０４は、また、メモリ１８５０との間で通信し、さらに、入力／出力デバイスインタフェース１８０８を介して、任意選択のディスプレイ（図示しない）に出力情報を提供し得る。入力／出力デバイスインタフェース１８０８は、また、任意選択の入力デバイス（図示しない）から入力を受け得る。
【０１６８】
メモリ１８５０は、本開示の１つ以上の態様を実装するために、プロセシングユニット１８０４が実行するコンピュータプログラム命令（いくつかの実施形態では、モジュールとしてグループ化される）を含有し得る。メモリ１８５０は、一般的に、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、および／または他の永続的な、補助的もしくは非一時的コンピュータ可読媒体を含む。メモリ１８５０は、コーディネータ１７１４の一般管理および動作において、プロセシングユニット１８０４による使用のためのコンピュータプログラム命令を提供するオペレーティングシステム１８５２を記憶し得る。メモリ１８５０は、さらに、本開示の態様を実装するためのコンピュータプログラム命令および他の情報を含み得る。例えば、一実施形態では、メモリ１８５０は、プロセスマネージャ１８５４、スケジューラ１８５６、配置エージェント１８５８、および通信マネージャ１８６０を含む。
【０１６９】
スケジューラ１８５６および配置エージェント１８５８は、プロセシングユニット１８０４による実行のためのタスクを選択し、係るタスク実行を管理するようにプロセシングユニット１８０４によって実行され得る。具体的には、スケジューラ１８５６は、（例えば、コーディネータ１７１４において制約されたリソースのインスタンスの下で）所与の時点における実行のためのタスクを選択し、タスクの実行を中断する命令を含み得る。配置エージェント１８５８は、タスクを実行するための適切な実行環境１８７０を選択し、当該実行環境１８７０に、タスク実行中に必要なリソースへの適切なアクセスをプロビジョニングし、実行環境１８７０内でタスクの実行を生じさせる命令を含み得る。本明細書で使用されるような実行環境１８７０は、タスクを実行するためのメモリ１８５０の論理部分を指す。一実施形態では、実行環境１８７０は、プログラム的に分離され、その結果、第１の実行環境１８７０内でのコードの実行は、別の実行環境１８７０と関連付けられたメモリを修正することが防止される。例示として、実行環境１８７０は、「コンテナ」、オペレーティングシステムレベルの仮想化環境、または「ｃｈｒｏｏｔ  ｊａｉｌ」もしくはＰｙｔｈｏｎ仮想環境「ｖｉｒｔｕａｌｅｎｖ」等の「サンドボックス」環境に対応し得る。他の例では、実行環境１８７０は、仮想マシン環境（例えば、ＪＡＶＡ仮想マシン、異なったオペレーティングシステムを伴う仮想化されたハードウェアデバイス等）に対応し得る。さらなる他の例では、実行環境１８７０は、仮想化を必ずしも利用することなく、タスクの実行に割り当てられたメモリ空間であり得る。
【０１７０】
コーディネータ上で実行するタスクの間の通信と共に、コーディネータ１７１４と他のデバイス（例えば、クライアントデバイス１７０２および被調整デバイス１７１２）との間の通信は、通信マネージャ１８６０によって容易にされ得る。具体的には、通信マネージャ１８６０は、コーディネータ１７１４に向けられたメッセージを取得し、適切な宛先にメッセージを転送するように構成され得る。例えば、通信マネージャ１８６０は、タスク、被調整デバイス１７１２、クライアントデバイス１７０２、およびサービスプロバイダ実行環境１７２０のデバイスのいずれかの組み合わせの間でメッセージを送り得る。下記にさらに詳細に説明されるように、通信マネージャ１８６０は、指定トピックと関連付けられるメッセージを変換することができ、その結果、当該メッセージは、デバイスのより少ないサブセットにサブスクライブされるトピックに向けられる。
【０１７１】
コーディネータ１７１４によって実行されるタスクは、タスクメモリ空間１８８０内で論理的にグループ化されるものとして示され、タスクメモリ空間１８８０は、各タスクに対応するコードを記憶するように構成されているメモリ２５０の論理ユニットに対応し得る。図１８に示されるように、タスクメモリ空間１８８０は、ルータタスク１８８２、１つ以上の通信マネージャタスク１８８６、シャドウサービスタスク１８８８、および１つ以上のクライアントにより提供されるタスク１８９０を含む、コーディネータ１７１４の機能性を実施するようにプロセシングユニット１８０４によって実行可能ないくつかのタスクを含み得る。
【０１７２】
ルータタスク１８８２は、コーディネータ内での、コーディネータへの、およびコーディネータからのメッセージのルーティングを支援するように実行可能なコードの一部に対応し得る。一実施形態では、ルータタスク１８８２は、メッセージに関する適切な宛先を判定するために「ルーティングテーブル」を実装する。例えば、通信マネージャ１８６０は、（例えば、タスク実行による生成、または入力／出力インタフェース２０８における受信に起因して）ルータタスク１８８２に、コーディネータ１７１４において取得されたメッセージを転送し得、ルータタスク１８８２は、ある識別子にアドレス指定されたメッセージが所与のタスク、所与のクライアントデバイス１７０２、または所与の被調整デバイス１７０２に送られるべきであると判定するためにルーティングテーブルを利用し得る。ルーティングテーブルはさらに、識別子にアドレス指定されたメッセージがサービスプロバイダ環境１７２０に（例えば、デバイスシャドウサービス１７４０またはオンデマンドコード実行システム１７５０に）伝達されるべきであることを示し得る。一実施形態では、ルーティングテーブルは、識別子として「トピック」を利用し得、その結果、特定のトピックと関連付けられたメッセージは、当該トピックに関して指定されたルーティングに従って送られる。ルーティングテーブルは、さらに、メッセージのソースに基づいて、そのメッセージをどのように送るかに関する情報を含み得る。例えば、所与のトピックにアドレス指定されたメッセージは、メッセージが第１のタスク、第２のタスク、第１の被調整デバイス１７１２等から受信されるかどうかに基づいて、異なって送られ得る。ルーティングテーブルの利用によって、ルータタスク１８８２は、メッセージの送信側の動作の変更なしに（例えば、メッセージを生成したタスクに関するコードを再記述することなく、メッセージを生成した被調整デバイス１７１２のソフトウェアを修正すること等なく）、係るメッセージをリダイレクトすることを可能にし得る。
【０１７３】
通信マネージャタスク１８８６は、通信のプロトコルに従って、コーディネータ１７１４と、いくつかの異なる外部デバイス（例えば、被調整デバイス１７０２）との間の係る通信を可能にし得る。例えば、第１の通信マネージャタスク１８８６は、ＢＬＵＥＴＯＯＴＨ（商標）プロトコルを使用して通信を管理するように構成され得、第２の通信マネージャは、ＨＴＴＰプロトコルを使用して通信を管理するように構成され得る等のことがある。いくつかの例では、複数の通信マネージャタスク１８８６は、通信を実施するように集合的に作用し得る。例えば、第１の通信マネージャタスク１８８６は、ＴＣＰプロトコルを介した通信を可能にし得る一方、第２の通信マネージャタスク１８８６は、ＭＱＴＴプロトコル（ＴＣＰプロトコルを利用し、ひいては、第１の通信マネージャタスク１８８６を利用し得る）を介した通信を可能にし得る。異なる通信マネージャタスク１８８６が異なるプロトコルを介して通信するコーディネータ１７１４の能力を変化させることができるために、およびコーディネータ１７１４のタスクがコーディネータ１７１４の再構成によって変わり得るために、コーディネータ１７１４は、様々な異なる通信プロトコルを利用するように即時に再構成され得る。
【０１７４】
シャドウサービスタスク１８８８は、コーディネータ１７１４において維持されたデバイスシャドウの管理と、デバイスシャドウとの相互作用とを容易にすることができる。例示として、シャドウサービスタスク１８８８は、コーディネータ１７１４に対してローカルにデバイスシャドウサービス１７４０によって提供されるものと同様の機能性を実施することができる。したがって、シャドウサービスタスク１８８８は、被調整デバイス１７１２のシャドウ状態（所望の状態を表すデータ）を維持し、係るデータへの読み出しまたは書き込みを可能にし得る。シャドウサービスタスク１８８８は、さらに、被調整デバイス１７１２に関するデバイスシャドウとの被調整デバイス１７１２の同期を可能にし得る。したがって、被調整デバイス１７１２に関するデバイスシャドウを修正することによって、被調整デバイス１７１２の状態が変わり得る。被調整デバイス１７１２に関するデバイスシャドウを読み出すことによって、被調整デバイス１７１２の状態を判定することができる。いくつかの例では、シャドウサービスタスク１８８８は、さらに、デバイスシャドウサービス１７４０によって維持されるデバイスシャドウ等の所与のデバイスに関する別のデバイスシャドウに合わせて調整し得る。例えば、シャドウサービスタスク１８８８は、ローカルデバイスシャドウを、デバイスシャドウサービス１７４０に記憶されたデバイスシャドウと同期し、ローカルデバイスシャドウと、デバイスシャドウサービス１７４０に記憶されたデバイスシャドウとの間の不一致を解決し得る等を行う。
【０１７５】
上記に説明したタスク（それらのそれぞれが、例示として、サービスプロバイダ環境１７２０と関連付けられたエンティティによって提供され得る）に加えて、タスクメモリ空間１８８０は、任意の数のクライアントにより提供されるタスク１８９０を含み得、クライアントにより提供されるタスク１８９０は、クライアントデバイス１７０２によって生成され、コーディネータ１７１４への配置のためにサービスプロバイダ環境１７２０にサブミットされる実行可能なコードに対応し得る。したがって、クライアントにより提供されるタスク１８９０によって提供される機能性は、サブミットするユーザの要望に従って変化し得る。いくつかの例では、クライアントにより提供されるタスク１８９０は、メモリ１８５０が言語ランタイムを含むコーディング言語で記述され得る。例えば、コーディネータ１７１４がｎｏｄｅ．ｊｓ、Ｇｏ、ＪＡＶＡ、およびＰｙｔｈｏｎ等の言語をサポートする場合、クライアントにより提供されるタスク１８９０は、それらの言語のいずれかで記述された実行可能なコードを含み得る。
【０１７６】
加えて、メモリ１８５０は、コーディネータ１７１４の構成データが記憶されたメモリ１８５０の論理部分を表す、構成データ部１８７２を含む。構成データは、例えば、コーディネータ１７１４の現在の配置バージョン、タスクメモリ空間１８８０のタスクによって記憶されたデータ、またはコーディネータ１７１４の動作において使用される他のデータを含み得る。
【０１７７】
コーディネータ１７１４の構成（および再構成）を可能にするために、メモリ１８５０は、さらに、配置エージェント１８５８を含む。配置エージェント１８５８は、サービスプロバイダ環境１７２０にコーディネータを登録し、コーディネータ１７１４の所望の構成を判定し、コーディネータ１７１４の現在の構成が所望の構成と一致しない例では、コーディネータ１７１４に関する構成データを取得し、所望の構成を実装するためにメモリ１８５０を修正するように実行可能なコードに対応することができる。
【０１７８】
図１９Ａは、本出願に従った、例示的な被調整デバイス１７１２Ａのアーキテクチャの一実施形態を示す。図１９Ａに示される被調整デバイス１７１２Ａの一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアコンポーネントの配列を含む。例示されるように、被調整デバイス１７１２Ａは、プロセシングユニット１９０４、ネットワークインタフェース１９０６、コンピュータ可読媒体ドライブ１９０７、入力／出力デバイスインタフェース１９２０、任意選択のディスプレイ１９０２、および入力デバイス１９２４を含み、それらの全ては、通信バスによって相互に通信し得る。例示として、被調整デバイス１７１２Ａは、埋め込みデバイスとして、入力または出力等のより制限された機能性およびコンポーネントを有し得る。
【０１７９】
ネットワークインタフェース１９０６は、図１７のネットワーク１７０４等の１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット１９０４は、ネットワークを介して他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。プロセシングユニット１９０４はまた、メモリ１９１０におよびメモリ１９１０から通信し、さらに、入力／出力デバイスインタフェース１９２０を介して、任意選択のディスプレイ１９０２に出力情報を提供し得る。入力／出力デバイスインタフェース１９２０は、また、キーボード、マウス、デジタルペン等の任意選択の入力デバイス１９２４から入力を受け得る。いくつかの実施形態では、被調整デバイス１７１２Ａは、図１９Ａに示されるものよりも多い（または、少ない）コンポーネントを含み得る。例えば、被調整デバイス１７１２のいくつかの実施形態は、ディスプレイ１９０２および入力デバイス１９２４を省略し得る一方、１つ以上の代替通信チャネルを経由して（例えば、ネットワークインタフェース１９０６を介して）入力／出力能力を提供する。加えて、被調整デバイス１７１２Ａは、同様に、入力および出力インタフェース１９２０を完全に省略し得る。
【０１８０】
メモリ１９１０は、１つ以上の実施形態を実装するために、プロセシングユニット１９０４が実行するコンピュータプログラム命令を含み得る。メモリ１９１０は、一般的に、ＲＡＭ、ＲＯＭ、または他の永続的メモリもしくは非一時的メモリを含む。メモリ１９１０は、被調整デバイス１７１２Ａの一般管理および動作においてプロセシングユニット１９０４による使用のためのコンピュータプログラム命令を提供するオペレーティングシステム１９１４を記憶し得る。メモリ１９１０は、さらに、本開示の態様を実装するためのコンピュータプログラム命令および他の情報を含み得る。例えば、一実施形態では、メモリ１９１０は、コンテンツにアクセスするためのブラウザアプリケーション１９１６を含む。例示として、ブラウザアプリケーション１９１６は、完全なソフトウェアブラウザアプリケーション、ブラウザアプリケーションの一部を包含し得る、または単に、データ接続性を提供するソフトウェアアプリケーション（または実行可能命令）であり得る。
【０１８１】
図１９Ｂは、本出願に従った、例示的な被調整デバイス１７１２Ｂの代替アーキテクチャの一実施形態を示す。図１９Ｂに示される被調整デバイス１７１２Ｂの一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアコンポーネントの配列を含む。しかしながら、被調整デバイス１７１２Ｂは、被調整デバイス１７１２Ｂの計算機能および動作を制限し得る少なくなったコンポーネントと関連付けられ得る。例示として、被調整デバイス１７１２Ｂは、通信バスと通信する、プロセシングユニット１９５０およびネットワークインタフェース１９５２を含む。図１９Ａの被調整デバイス１７１２Ａとは異なり、被調整デバイス１７１２Ｂは、コンピュータ可読媒体ドライブ、入力／出力デバイスインタフェース、任意選択のディスプレイ、または入力デバイスを有さない場合がある。
【０１８２】
ネットワークインタフェース１９５２は、図１７のネットワーク１７０４等の１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット１９５０は、ネットワークを介して他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。メモリ１９５４は、１つ以上の実施形態を実装するために、プロセシングユニット１９５０が実行するコンピュータプログラム命令を含み得る。メモリ１９５４は、一般的に、ＲＡＭ、ＲＯＭ、または他の永続的メモリもしくは非一時的メモリを含む。本実施形態では、メモリ１９５４は、被調整デバイス１７１２Ｂの一般管理および動作においてプロセシングユニット１９５０による使用のためのコンピュータプログラム命令を提供する完全なオペレーティングシステムを必ず記憶し得る。むしろ、一実施形態では、メモリ１９５４は、命令にアクセスし、命令を受信し、命令を処理するためのインタフェースソフトウェアコンポーネント１９５６を含む。
【０１８３】
図２０は、本出願に従った、例示的なクライアントデバイス１７０２のアーキテクチャの一実施形態を示す。図２０に示されるクライアントデバイス１７０２の一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアコンポーネントの配列を含む。例示されるように、クライアントデバイス１７０２は、プロセシングユニット２００４、ネットワークインタフェース２００６、コンピュータ可読媒体ドライブ４０７、入力／出力デバイスインタフェース２０２０、任意選択のディスプレイ２００２、および入力デバイス２０２４を含み、それらの全ては、通信バスによって相互に通信し得る。
【０１８４】
ネットワークインタフェース２００６は、図１７のネットワーク１７０４等の１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット２００４は、ネットワークを介して他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。プロセシングユニット２００４はまた、メモリ２０１０におよびメモリ２０１０から通信し、さらに、入力／出力デバイスインタフェース２０２０を介して、任意選択のディスプレイ２００２に出力情報を提供し得る。入力／出力デバイスインタフェース２０２０は、また、キーボード、マウス、デジタルペン等の任意選択の入力デバイス２０２４から入力を受け得る。いくつかの実施形態では、クライアントデバイス１７０２は、図２０に示されるものよりも多い（または、少ない）コンポーネントを含み得る。例えば、被調整デバイス１７１２のいくつかの実施形態は、ディスプレイ２００２および入力デバイス２０２４を省略し得る一方、１つ以上の代替通信チャネルを経由して（例えば、ネットワークインタフェース２００６を介して）入力／出力能力を提供する。加えて、クライアントデバイス１７０２は、同様に、入力および出力インタフェース２０２０を完全に省略し得る。
【０１８５】
メモリ２０１０は、１つ以上の実施形態を実装するために、プロセシングユニット２００４が実行するコンピュータプログラム命令を含み得る。メモリ２０１０は、一般的に、ＲＡＭ、ＲＯＭ、または他の永続的メモリもしくは非一時的メモリを含む。メモリ２０１０は、クライアントデバイス１７０２の一般管理および動作においてプロセシングユニット２００４による使用のためのコンピュータプログラム命令を提供するオペレーティングシステム２０１４を記憶し得る。メモリ２０１０は、さらに、本開示の態様を実装するためのコンピュータプログラム命令および他の情報を含み得る。例えば、一実施形態では、メモリ２０１０は、コンテンツにアクセスするためのブラウザアプリケーション２０１６を含む。例示として、ブラウザアプリケーション２０１６は、完全なソフトウェアブラウザアプリケーション、ブラウザアプリケーションの一部を包含し得る、または単に、データ接続性を提供するソフトウェアアプリケーション（または実行可能命令）であり得る。
【０１８６】
図２１は、本明細書に説明されるメッセージ処理サービスコンポーネントを実装するための例示的コンピューティングデバイスのアーキテクチャの一実施形態を示す。前述に説明したように、当該環境内の１つ以上のコンピューティングデバイスは、ＭＱＴＴブローカー等のメッセージ処理サービスとして機能し得る。他の実施形態では、メッセージ処理サービスは、ネットワークコンポーネントに実装され得る。したがって、図２１に示されるメッセージ処理サービスの一般的アーキテクチャは、本開示の態様を実装するために使用され得るコンピュータハードウェアおよびソフトウェアコンポーネントの配列を含む。例示されるように、リモートコマンドサービス１７１４は、プロセシングユニット２１０４、ネットワークインタフェース２１０６、コンピュータ可読媒体ドライブ２１０７、入力／出力デバイスインタフェース２１０８、任意選択のディスプレイ２１０２、および入力デバイス２１２４を含み、それらの全ては、通信バスによって相互に通信し得る。リモートコマンドサービス１７１４のコンポーネントは、物理ハードウェアコンポーネントであり得る、または仮想環境内で実装され得る。
【０１８７】
ネットワークインタフェース２１０６は、図１７のネットワーク１７５０等の１つ以上のネットワークまたはコンピューティングシステムに接続性を提供し得る。したがって、プロセシングユニット２１０４は、ネットワークを介して他のコンピューティングシステムまたはサービスから情報および命令を受信し得る。プロセシングユニット２１０４はまた、メモリ２１１０におよびメモリ２１１０から通信し、さらに、入力／出力デバイスインタフェース２１０８を介して、任意選択のディスプレイ２１０２に出力情報を提供し得る。入力／出力デバイスインタフェース２１０８は、また、キーボード、マウス、デジタルペン等の任意選択の入力デバイス２１２４から入力を受け得る。いくつかの実施形態では、リモートコマンドサービス１７１４は、図２１に示されるものよりも多い（または、少ない）コンポーネントを含み得る。例えば、リモートコマンドサービス１７１４のいくつかの実施形態は、ディスプレイ２００２および入力デバイス２０２４を省略し得る一方、１つ以上の代替通信チャネルを経由して（例えば、ネットワークインタフェース２１０６を介して）入力／出力能力を提供する。
【０１８８】
メモリ２１１０は、１つ以上の実施形態を実装するために、プロセシングユニット２１０４が実行するコンピュータプログラム命令を含み得る。メモリ２１１０は、一般的に、ＲＡＭ、ＲＯＭ、または他の永続的メモリもしくは非一時的メモリを含む。メモリ２１１０は、中間サーバ１７１４の一般管理および動作において、プロセシングユニット２１０４による使用のためのコンピュータプログラム命令を提供するオペレーティングシステム２１１４を記憶し得る。メモリ２１１０は、さらに、本開示の態様を実装するためのコンピュータプログラム命令および他の情報を含み得る。例えば、一実施形態では、メモリ２１１０は、クライアントデバイス１７０２からコンテンツ要求を受信および処理するためのクライアントインタフェースソフトウェア２１１２を含む。加えて、メモリ２１１０は、受信された通信を処理するための通信マネージャコンポーネント２１１６を含む。例示として、通信マネージャ２１１６は、指定トピックと関連付けられるメッセージを変換することができ、その結果、当該メッセージは、デバイスのより少ないサブセットにサブスクライブされるトピックに向けられる。
【０１８９】
ここで、図２２Ａ〜図２２Ｄを参照して、コンテンツメッセージを処理するコンテンツ管理システム１７１０のコンポーネント間の相互作用の例を説明する。より具体的には、図２２Ａ〜図２２Ｄは、被調整デバイス１７１２、クライアントデバイス１７０２、およびメッセージ処理サービスの間の相互作用に関して説明される。前述に示したように、メッセージ処理サービスは、コーディネータ１７１４または他のネットワーク機器を含む、様々なデバイスによって実施されることができる。加えて、被調整デバイス１７１２は、被調整デバイス１７１２（図１９Ａ）、被調整デバイス１７１２（図１９Ｂ）、またはそれらの組み合わせに対応することができる。しかしながら、相互作用の参照は、例示の目的のために使用される場合でも、任意の特定のデバイスまたはデバイスの組み合わせに限定されるべきではない。
【０１９０】
図２２Ａを参照して、メッセージ処理サービスの初期構成を説明する。例示として、クライアントまたはシステムアドミニストレータは、受信された通信の解釈を容易にする情報を伴うメッセージ処理サービスを構成する。一実施形態では、メッセージ処理サービスは、いくつかの潜在的被調整環境１７１０の１つに通信を提供するために、サービスプロバイダ環境１７２０によって実施されることができる。別の実施形態では、メッセージ処理サービスは、いくつかの被調整デバイス１７１２の１つに通信を提供するために、コーディネータ１７１４によって実施されることができる。したがって、図２２Ａ〜図２２Ｄでは、単独で、いずかの実施形態または他の変形例における実装に限定するべきではない。しかしながら、例示の目的のために、図２２Ａ〜図２２Ｄは、コーディネータ１７１４と被調整デバイスのセットとの間の相互作用に関して説明される。
【０１９１】
例示的環境に従って、通信ネットワーク１７０４にわたってメッセージを伝達するために利用される実際の通信プロトコルに関わらず、ＭＱＴＴメッセージングプロトコルに従って、通信を形成することができる。ＭＱＴＴプロトコルに特有であるように、各メッセージは、通信を定義する１つ以上のワードのグループを有するトピック部と関連付けられる、またはそれ以外の場合、当該通信と関連付けられる。分離可能なワードのグループのそれぞれは、概して、レベルと称され得、トピック部は、複数のレベルを有し得る。下記の例は、第１のレベル「基本レベル」、次に、一連の追加レベル「レベル１」〜「レベルｎ」を含む。各追加レベルは、トピックセパレータによって示される。
【０１９２】
基本レベル／レベル１／レベル２／レベル３．．．．／レベルｎのように示される。
【０１９３】
前述に説明されたように、従来のＭＱＴＴプロトコルでは、メッセージを受信するメッセージコーディネータ１７１４は、トピックごとに発行されるメッセージを受信するために登録している１つ以上の受信側デバイスと、トピックを一致させることを試みる。例えば、メッセージコーディネータ１７１４は、メッセージの１つ以上のトピック部を探索し、（全体的または部分的に）トピック登録と一致させる。コーディネータ１７１４は、全てのレベルの完全一致または１つ以上のレベルの部分一致に対する判定を限定し得る。
【０１９４】
ここで、図２２Ａを参照すると、（１）において、アドミニストレータまたはカスタマに対応するクライアンデバイス１７０２は、構成情報をコーディネータ１７１４に伝達することができる。例示として、構成情報は１つ以上の命令、論理ルール、またはアクションのセットを定義する処理ステップに対応し、コーディネータ１７１４のメッセージ処理サービスは受信済メッセージのトピック部の一致、メッセージのソース等に基づいてメッセージを引き受けることができる。例えば、コーディネータ１７１４のメッセージ処理サービスの１つの構成は、あてがわれたタスクに対応する通信を指定の被調整デバイス１７１２によって実施するべきであるかどうかの定義を含み得る。この例では、被調整デバイス１７１２のセットは、対応するトピックを伴うコンテンツメッセージを受信するためにサブスクライブされ得るが、メッセージを受信する当該デバイスは、コーディネータ１７１４によって識別されるルールの評価に依存し得る。
【０１９５】
別の例では、コーディネータ１７１４のメッセージ処理サービスは、以下の情報を取得するための命令に対応する１つ以上の埋め込みコードの識別に基づいて、コスト情報、ルーティング情報、仕事量、サービスレベル情報、セキュリティ情報等の追加情報を取得するように構成され得る。この点では、メッセージングプロトコルの従来の実施におけるコーディネータ１７１４のメッセージ処理サービスは、受信済メッセージの任意の追加処理を行わない、または、ルーティング決定を行うために、追加外部ネットワーク通信もしくはコンポーネントを必要とし得る。加えて、本出願の態様に従って、コーディネータ１７１４は、クライアントデバイス１７０２を介してアドミニストレータによって指定されるような多様な追加機能で構成され得る。コーディネータ１７１４を構成する直接通信として示されているが、いくつかの実施形態では、クライアントコンピューティングデバイス１７０２は、メッセージ処理システム１７２０を介して、コーディネータ１７１４と間接的に相互作用するであろう。
【０１９６】
（２）において、コーディネータ１７１４は、構成情報を処理し、後続処理に関する構成を記録する。この点では、例示として、コーディネータ１７１４は、受信済メッセージに含まれるセキュリティ情報を一致させるためのデータベースまたはマトリックスを維持することができる。加えて、コーディネータ１７１４は、一致が識別されるときにまたは要求済セキュリティ情報が受信済メッセージに含まれないときに実行される追加処理命令または実行可能コードを維持することができる。他の実施形態では、コーディネータ１７１４は、埋め込みコードが識別されるときに、ＡＰＩ等のインタフェースを利用する追加命令または実行可能コードを取得することができる。例えば、コーディネータ１７１４は第三者セキュリティ情報プロバイダにアクセスすることができる。第三者セキュリティ情報プロバイダは、コーディネータ１７１４の構成を容易にすることができる、または発行済メッセージに提供されるセキュリティ情報を評価するためにコーディネータ１７１４によって利用される情報を提供することができる。例示として、コーディネータ１７１４の構成は、外部ネットワークを有する必要がなく、メッセージルーティングの処理を容易にする。
【０１９７】
図２２Ｂを参照して、受信側デバイスの初期構成、被調整デバイス１７１２’および１７１２’’を説明する。（１）において、被調整デバイス１７１２’および１７１２’’は、デバイス接続要求を生成し、要求をコーディネータ１７１４に伝達する。例示として、デバイス接続要求は、コーディネータ１７１４で、被調整デバイス１７１２’および１７１２’’の認証および承認と関連付けられる手順を確立するように対応する。またさらに、いくつかの実施形態では、論理ネットワーク１００は、独立して、またはコンテンツ管理システム１７１０の一部として、コーディネータ１７１４へのメッセージの伝達を管理する追加ゲートウェイコンポーネントを含み得る。係るゲートウェイコンポーネントは、セキュリティ機能、ロードバランシング、または他のネットワーク処理サービスを実装することができる。
【０１９８】
（２）において、コーディネータ１７１４は、例えば、セキュリティ情報を有効にすることによって、追加情報を要求することによって、または要求を行っているクライアントコンピューティングデバイス１７０２の特徴を判定すること等によって、接続要求を処理する。（３）において、コーディネータ１７１４は、認証された被調整デバイスに基づいて、ルーティングテーブル、ビジネスロジック、またはビジネスルールを更新することによって接続要求を処理する。例えば、被調整デバイス１７１２は、入力メッセージを一致させるためにコーディネータ１７１４によって利用されることができる様々なパーミッションまたはセキュリティコードを含み得る。加えて、コーディネータ１７１４は、セキュリティ情報を評価するためのセキュリティ情報またはコード等の追加情報を受信することができる。（４）において、接続要求が受け入れ可能で承認された場合、メッセージ処理サービス２２００は、接続確認を、要求を行っているコーディネータ１７１４に伝達する。この点では、いったん承認されると、調整デバイス１７１２および１７１２’ならびにコーディネータ１７１４は、ＭＱＴＴ等のメッセージングプロトコルに定義される手順の範囲内で通信を始めることができる。加えて、調整デバイス１７１２および１７１２’は、上記に説明したルーティングプロセスを容易にする追加セキュリティ情報を提供することができる。
【０１９９】
ここで、図２２Ｃを参照すると、接続確認を受信した後、（１）において、被調整デバイス１７１２’および１７１２’’は、１つ以上のトピック登録要求をコーディネータ１７１４に伝達する。例示として、トピック登録は、メッセージングプロトコルに従って定義され、その結果、被調整デバイス１７１２’および１７１２’’は、任意の数のコンテンツプロバイダによる指定トピックに従って発行されたコンテンツを受信するために登録することができる。本出願に適用されるように、被調整デバイス１７１２’および１７１２’’は、１つ以上のトピックを登録する。例示の目的のために、登録済被調整デバイス１７１２’および１７１２’’へのメッセージの転送がメッセージのセキュリティ情報に基づいて異なり得るように、例を提供する。
【０２００】
登録後のある時点で、（２）において、別個のコンピューティングデバイス２２０２は、１つ以上の部分的コンテンツをコーディネータ１７１４に発行する。例示として、メッセージを受信することができるコーディネータ１７１４は、サービスプロバイダ環境１７２０から伝達された通信に対応することができる。コンテンツのそれぞれの発行された部分は、トピックと関連付けられる。例示的な例の目的のために、少なくとも１つの発行済コンテンツは、コーディネータ１７１４で、被調整デバイス１７１２’および１７１２’’によって登録されるトピックに対応するコンテンツ／メッセージのトピック部と関連付けられる。この点では、メッセージは、受信済メッセージを登録された調整デバイスと一致させるために利用することができるトピック部の１つ以上のレベルを含み得る。加えて、受信済メッセージは、グループ識別子、ソース識別子、およびパスワード、証明書または他のトークン等のセキュリティ情報を含み得る、またはそれらと関連付けられ得る。
【０２０１】
（３）において、コーディネータ１７１４は、被調整デバイスが受信するべきであることを判定するために、登録済トピックを発行済トピックと一致させる。この点では、コーディネータ１７１４は、メッセージを受信するために登録している被調整デバイス１７１２のセットを判定することができる。当業者は、ＭＱＴＴメッセージングプロトコルまたは他のメッセージングプロトコルの従来の実装では、コーディネータ１７１４は受信済メッセージを全ての登録済被調整デバイスに送信するであろうことを認識する。（４）において、コーディネータ１７１４は、通信のトピック部を処理し、発行済メッセージを受信するべき１つ以上の被調整デバイスを識別する。いくつかの実施形態では、コーディネータ１７１４は、通信マネージャコンポーネント１８６０等のトピック部を処理する機能性を含み得る。他の実施形態では、コーディネータ１７１４は、追加サービスまたは追加コンポーネントを利用して、パースを容易にすることができる。より具体的には、コーディネータ１７１４は、ビジネスルールまたはルーティングテーブルを利用して、メッセージを受信する登録済被調整デバイス１７１２のサブセットを識別することができる。したがって、コーディネータ１７１４は、ビジネスルールまたはルーティングテーブルを評価して、どの登録済被調整デバイス１７１２が発行済メッセージを受信しないかを識別することができる。例示として、コーディネータ１７１４は、ルーティングテーブルおよびビジネスルールを利用して、メッセージを可能性のある受信側デバイスのセットに発行するためにセキュリティ情報をパーミッションと関連付けることができる。
【０２０２】
（５）において、コーディネータ１７１４は、メッセージを登録済デバイスの選択されたサブセットに向けさせる２次トピック発行を関連付けることができる。一実施形態では、コーディネータ１７１４は、選択された登録済デバイスにメッセージを直接伝達するように構成され得る。本実施形態では、コーディネータ１７１４は、ビジネスルールまたは論理で指定されるような同じメッセージングプロトコルまたは異なる通信プロトコルを利用することができる。別の実施形態では、コーディネータ１７１４は、選択された登録済デバイスに適用可能であるであろう、それに一致するであろう１つ以上の２次トピック発行を関連付けることができる。本実施形態では、２次トピック発行は、個々のデバイスに関する２次トピック発行等の非選択デバイスに登録されないであろう。指示された発行を利用する例示の目的のために、図２２Ｄを参照すると、（６）において、メッセージ処理サービスは、調整デバイス１７１２’’にメッセージの転送をさせることができ、被調整デバイス１７１２’にメッセージの転送をさせることができない。加えて、いくつかの実施形態では、コーディネータ１７１４は、オリジナルのトピックに従ってメッセージを受信するように登録していない場合があるが、それにも関わらずコーディネータ１７１４によって選択される、被調整デバイス１７１２を選択することができる。
【０２０３】
図２３は、例示的環境に従って、メッセージ処理サービスによって実施されるリモート実行メッセージングルーチン２３００を示すフロー図である。ルーチン２３００は、メッセージルーティング中、メッセージングプロトコルのビジネスルール、ルーティングテーブル、または他の論理情報を示す。ブロック２３０２において、メッセージ処理サービスは、被調整デバイス１７１２または任意の他のコンピューティングデバイス１７０２等のデバイスによるコンテンツのリモート実行に関連する少なくとも１つのトピックを含む登録情報を取得する。前述に説明したように、本デバイスは、１つ以上のトピック登録要求をメッセージ処理サービスに伝達する。例示として、トピック登録は、メッセージングプロトコルに従って定義され、その結果、本デバイスは、任意の数のコンテンツプロバイダによる指定トピックに従って発行されたコンテンツを受信するために登録することができる。前述に記述したように、トピック登録は、個々のデバイスまたはデバイスのセットに対応することができる。
【０２０４】
登録後のある時点で、ブロック２３０４において、メッセージ処理サービスは、トピック部を有する１つ以上の発行を取得する。例示として、いくつかのコンピューティングデバイス２２０２（図２２Ｃ）は、１つ以上の部分的コンテンツをメッセージ処理サービスに発行する。コンテンツのそれぞれの発行された部分は、トピックと関連付けられる。例示的な例の目的のために、少なくとも１つの発行済コンテンツは、クライアントコンピューティングデバイス１７０２の登録済トピックと関連付けられる。加えて、トピックと関連付けられるコンテンツのそれぞれの発行された部分は、コンテンツのペイロード部を含む。係るペイロード部の例は、被調整デバイスまたはネットワークデバイスによって実行されるタスクを含み得る。加えて、メッセージは、メッセージがメッセージ発行サービスによって発行されるべきかどうかを評価するために利用されるセキュリティ情報を含み得る。
【０２０５】
ブロック２３０６において、メッセージ処理サービスは、１つ以上のデバイスが発行済トピックを受信するべきクライアントデバイスのセットを形成するトピックを伴う発行済コンテンツを受信するべきであることを判定するために、登録済トピックを発行済トピックと一致させる。例示として、メッセージ処理サービスがＭＱＴＴ等のメッセージングプロトコルに従って構成されているため、トピック発行に対する登録の一致は、メッセージングプロトコルによって指図される方式で達成することができる。例示として、トピック部の一致は、トピック部の全てのレベルの一致、または少なくとも１つのレベルの部分一致に対応することができる。またさらに、当該一致はベースレベルの一致に対応することができる一方、他のレベルは２次一致に関して無視または利用され得る。
【０２０６】
ブロック２３０８において、メッセージ処理サービスは、メッセージのトピック部または他の部分のセキュリティ情報を識別する。例示として、メッセージ処理サービスは、メッセージを受信するべきデバイスのサブセットを選択するために通信のトピック部を処理する。いくつかの実施形態では、メッセージ処理サービスは、登録済デバイスのサブセットを選択するために、ビジネスルール、ルーティングテーブル、論理ルール等の機能性を含み得る。他の実施形態では、メッセージ処理サービスは、追加サービスまたは追加コンポーネントを利用して、処理を容易にすることができる。加えて、ブロック２３０８において、次に、メッセージ処理サービスは、発行済メッセージを受信しおよび非選択済受信側デバイスではない、受信側デバイスのセットを選択する。いくつかの実施形態では、メッセージ処理サービスは、登録済デバイスのサブセットを選択するために、ビジネスルール、ルーティングテーブル、論理ルール等の機能性を含み得る。一態様では、コーディネータ１７１４は、受信済メッセージを受信するべき被調整デバイス１７１２のサブセットを識別するビジネスルールまたはルーティングテーブルを評価することができる。例示として、ビジネスルールまたはルーティングテーブルは、発信元のソースアドレス、トピック部の１つ以上のレベルの識別情報、識別された受信側デバイス１７１２のセキュリティ構成情報、タイムスタンプ情報、被調整デバイスに関する利用情報、財務コスト情報等の情報を組み込むことができる。他の例では、ビジネスルールは、１つ以上の受信側デバイス１７１２が他の方法でメッセージを受信することに適格であり得る、または利用可能であり得る場合、ランダム選択アルゴリズムまたは加重選択アルゴリズムを含み得る。例えば、コーディネータ１７１４は、メッセージのソースのネットワークアドレス等のソース識別子を、１つ以上の選択済受信側デバイス１７１２と関連付けるビジネスルールで構成され得る。別の例では、コーディネータ１７１４は、最小のセキュリティ構成を判定する、または受信済メッセージに関するセキュリティ仕様の種類を指定するセキュリティ仕様情報で構成され得る。この例では、次に、コーディネータ１７１４は、１つ以上の登録済セキュリティデバイスのセキュリティ情報を利用して、どの受信側デバイスが指定されたセキュリティ仕様を満たすのかを判定することができる。またさらなる例では、コーディネータ１７１４は、時刻、メッセージ種類、もしくは他の情報に基づく全ての利用可能な受信側デバイスを識別するホワイトリスト、または除外するべき１つ以上の受信側デバイスを識別するブラックリストで構成され得る。
【０２０７】
ブロック２３１０において、メッセージ処理サービスは、ＭＱＴＴ等のメッセージングプロトコルの手順および能力に従って行われる発行済コンテンツを伝達し、実行可能コードの伝達を生じさせる追加通信または代替通信を必要としない。他の例では、メッセージ処理サービスは、別個のトランスポートプロトコルを利用することができる。受信側デバイスは、受信された発行済コンテンツを処理する。
【０２０８】
ブロック２３１２において、メッセージ処理サービスは、メッセージの処理に対応する処理結果を取得する。例示として、クライアントコンピューティングデバイスは、メッセージングプロトコルを介して、コードの処理結果を示す情報に関連するコンテンツを生成および発行する。いくつかの実施形態では、処理結果は、コードの実行が行われたことが成功したかどうかのバイナリ判定に対応することができる。別の実施形態では、処理結果は、コード／命令の実行を示す１つ以上の値、またはコード／命令の実行についての情報を詳述するログを含み得る。更新トピックの発行とともに説明したものと同様の様式で、処理結果（複数可）の発行は、特定のトピック（概して「処理結果トピック」と称される）と関連付けられ得る。
【０２０９】
ブロック２３１４において、メッセージ処理サービスは、管理デバイス１７０４が処理結果トピックを伴う発行済コンテンツを受信するべきであることを判定するために、登録済トピックを発行済トピックと一致させ、発行済コンテンツを伝達する。例示として、発行済コンテンツの伝達は、また、ＭＱＴＴ等のメッセージングプロトコルの手順および能力に従って行われ、実行可能コードの伝達を生じさせる追加通信または代替通信を必要としない。ブロック２３１６において、ルーチン２３００は終了する。
【０２１０】
図２４は、例示的環境に従って、被調整デバイス１７１２または他のコンピューティングデバイスによって実施されるリモート実行メッセージングルーチン２４００を示すフロー図である。前述に説明したように、本出願では、被調整デバイス１７１２または他のコンピューティングデバイスは、他のコンポーネントがまたメッセージのルーティングでセキュリティ情報を利用したかどうかに関係なく、メッセージの処理においてセキュリティ情報を利用するようなメッセージ処理サービスとして考えられ得る。しかしながら、この例の被調整デバイス１７１２の識別は、ルーチン２４００の適用を限定するものとして解釈されるべきではない。ブロック２４０２において、被調整デバイス１７１２は、１つ以上のトピック登録要求をメッセージ処理サービス２２００に伝達する。上記に説明したように、トピック登録は、メッセージングプロトコルに従って定義され、その結果、被調整デバイス１７１２は、任意の数のコンテンツプロバイダによる指定トピックに従って発行されたコンテンツを受信するために登録することができる。
【０２１１】
発行済コンテンツを受信したことに応答して、メッセージ処理サービス２２００は、クライアント被調整デバイス１７１２が発行済コンテンツを受信するべきであることを判定するために、登録済トピックを発行済トピックと一致させる。前述に説明したように、メッセージ処理サービスは、オリジナル登録を伴うコンテンツを処理し、次に、ルーティングテーブルを利用して、メッセージを被調整デバイスに転送する。ブロック２４０４において、被調整デバイス１７１２は、メッセージ処理サービス２２００から発行済コンテンツを受信する。例示として、発行済コンテンツの伝達は、ＭＱＴＴ等のメッセージングプロトコルの手順および能力に従って行われ、実行可能コードの伝達を生じさせる追加通信または代替通信を必要としない。
【０２１２】
コンテンツの実行のうちの実行の一部として、またはコンテンツの実行の後に、ブロック２４０６において、被調整デバイス１７１２は、リモート実行の結果を取得する。いくつかの実施形態では、処理結果は、コードの実行が行われたことが成功したかどうかのバイナリ判定に対応することができる。別の実施形態では、処理結果は、コード／命令の実行を示す１つ以上の値、またはコード／命令の実行についての情報を詳述するログを含み得る。
【０２１３】
ブロック２４０８において、被調整デバイス１７１２は、メッセージングプロトコルを介して、コードの処理結果を示す情報に関連するコンテンツを発行する。例示として、発行済コンテンツの伝達は、ＭＱＴＴ等のメッセージングプロトコルの手順および能力に従って行われ、実行可能コードの伝達を生じさせる追加通信または代替通信を必要としない。ブロック２４１０において、ルーチン２４００は終了する。
【０２１４】
本出願の態様に従って、以下を考慮されたい。
【０２１５】
１．メッセージングプロトコルを利用してコンピューティングデバイス上のコマンドの実行を管理するためのコンピュータ実施方法であって、
メッセージ処理サービスにおいて、管理クライアントデバイスから、メッセージ処理機能の構成に関連する情報を受信し、受信済メッセージのトピック部に埋め込まれたコードのセットを識別し、識別されたコードと関連付けられる命令に従って前記受信済メッセージを処理することであって、前記メッセージはＭＱテレメトリトランスポートプロトコルに従って形成される、前記処理することと、
前記メッセージ処理サービスによって、受信済メッセージをデバイスから受信することであって、前記受信済メッセージは、主題記述子と関連付けられる１つ以上のレベルと、１つ以上の埋め込みコードを識別する１つ以上のレベルとを含むトピック部を含む、前記受信することと、
前記メッセージ処理サービスによって、前記メッセージの前記トピック部に基づいて、メッセージを受信するために登録された受信側デバイスのセットを識別することと、
前記メッセージ処理サービスによって、前記受信済メッセージの前記トピック部をパースし、少なくとも１つの埋め込みコードを識別することと、
前記メッセージ処理サービスによって、前記メッセージ処理機能の前記構成を利用して、前記識別された少なくとも１つの埋め込みコードに従って前記受信済メッセージを処理することであって、前記受信済メッセージの前記処理は、前記受信済メッセージを受信する前記受信側デバイスの識別されたセットのサブセットの識別を含む、前記処理することと、
前記メッセージ処理サービスによって、前記処理された受信済メッセージを前記受信側デバイスのセットにおける前記受信側デバイスのサブセットに発行することと、
を含む、前記コンピュータ実施方法。
【０２１６】
２．前記メッセージ処理サービスによって、前記メッセージ処理機能の前記構成を利用して、前記識別された少なくとも１つの埋め込みコードに従って前記受信済メッセージを処理することは、少なくとも１つの基準の評価に基づいて、前記少なくとも１つの受信側デバイスの選択を含む、請求項１に記載の方法。
【０２１７】
３．前記受信側デバイスのサブセットは被調整デバイスに対応し、
前記受信済メッセージは被調整デバイスによってタスクを実行する命令に対応する、請求項１に記載の方法。
【０２１８】
４．前記メッセージ処理サービスは、被調整デバイスに関するコーディネータに対応する、請求項１に記載の方法。
【０２１９】
５．メッセージプロトコルを利用する通信を管理するためのシステムであって、
プロセッサおよびメモリを有する少なくとも１つのコンピューティングデバイスに実装されるメッセージ処理サービスであって、前記リモートコマンドサービスは、メッセージングプロトコルに従って形成されるメッセージを受信および発行するように構成される、前記メッセージ処理サービスを備え、
前記メッセージ処理サービスは、
トピック部に対応する入力メッセージを受信することであって、前記トピック部は、少なくとも１つの埋め込みコードと、前記入力メッセージの主題を記述する少なくとも１つのレベルとを含む、前記受信すること、
前記メッセージ処理構成に従って前記埋め込みコードを処理すること、
前記処理された入力メッセージを発行すること、
を行うように構成される、前記システム。
【０２２０】
６．１つ以上のアクションを埋め込みコードのセットと関連付けることによって、前記メッセージ処理サービスを構成するように設定される管理クライアントデバイスをさらに備える、請求項５に記載のシステム。
【０２２１】
７．前記メッセージ処理サービスは、前記トピック部をパースし、前記埋め込みコードを識別する、請求項５に記載のシステム。
【０２２２】
８．前記メッセージ処理サービスは、前記入力メッセージに関する可能である受信側のサブセットを選択することによって、前記埋め込みコードを処理する、請求項５に記載のシステム。
【０２２３】
９．前記メッセージ処理サービスは、前記入力メッセージに含まれる実行可能コードを修正することによって、前記埋め込みコードを処理する、請求項５に記載のシステム。
【０２２４】
１０．前記メッセージ処理サービスは、前記処理された入力メッセージを発行することに関連付けられた時間を修正することによって、前記埋め込みコードを処理する、請求項５に記載のシステム。
【０２２５】
１１．前記メッセージはタスクに関する割り当てを含み、
前記メッセージ処理サービスは、前記タスクを処理する受信側デバイスを選択することによって、前記埋め込みコードを処理する、請求項５に記載のシステム。
【０２２６】
１２．前記メッセージングプロトコルは、ＭＱテレメトリトランスポートプロトコルを含む、請求項５に記載のシステム。
【０２２７】
１３．メッセージプロトコルを利用してメッセージを管理するためのコンピュータ実施方法であって、
前記メッセージングプロトコルに従って形成されるメッセージを受信することであって、前記メッセージはトピックに対応し、前記トピックは少なくとも１つの埋め込みコードおよび主題記述子を含む、前記受信することと、
メッセージ処理構成に従って前記埋め込みコードを処理することと、
を含む、前記コンピュータ実施方法。
【０２２８】
１４．前記トピックをパースし前記埋め込みコードを識別することをさらに含む、請求項１３に記載のコンピュータ実施方法。
【０２２９】
１５．前記埋め込みコードを処理することは、前記メッセージに関する可能である受信側のサブセットを選択することを含む、請求項１３に記載のコンピュータ実施方法。
【０２３０】
１６．前記メッセージは１つ以上の実行可能部を含み、
前記埋め込みコードを処理することは、前記１つ以上の実行可能部の実行を修正することを含む、請求項１３に記載のコンピュータ実施方法。
【０２３１】
１７．前記埋め込みコードを処理することは、前記１つ以上の実行可能部を実行することと関連付けられるタイミングを修正することを含む、請求項１６に記載のコンピュータ実施方法。
【０２３２】
１８．少なくとも１つのメッセージは２つ以上の実行可能コード部を含み、
前記埋め込みコードを処理することは、前記２つ以上の実行可能部から選択することを含む、請求項１６に記載のコンピュータ実施方法。
【０２３３】
１９．少なくとも１つのメッセージは２つ以上の実行可能コード部を含み、
前記埋め込みコードを処理することは、前記２つ以上の実行可能部のうちの１つを削除することを含む、請求項１６に記載のコンピュータ実施方法。
【０２３４】
２０．前記メッセージングプロトコルは、ＭＱテレメトリトランスポートプロトコルを含む、請求項１３に記載のコンピュータ実施方法。
【０２３５】
本出願の別の態様に従って、以下を考慮されたい。
【０２３６】
１．メッセージングプロトコルを利用してコンピューティングデバイス上のコマンドの実行を管理するためのコンピュータ実施方法であって、
メッセージ処理サービスにおいて、管理クライアントデバイスから、メッセージ処理機能の構成に関連する情報を受信し、トピックに従って発行されたメッセージを受信する登録済デバイスのサブセットを選択することであって、前記メッセージはＭＱテレメトリトランスポートプロトコルに従って形成される、前記選択することと、
前記メッセージ処理サービスによって、受信済メッセージをデバイスから受信することであって、前記受信済メッセージは主題記述子と関連付けられる１つ以上のレベルを含むトピック部を含む、前記受信することと、
前記メッセージ処理サービスによって、メッセージの前記トピック部に基づいて、前記メッセージを受信するために登録された受信側デバイスのセットを識別することと、
前記メッセージ処理サービスによって、前記受信済メッセージの前記トピック部を処理し、ビジネスルールまたはルーティングテーブルのセットの少なくとも１つの評価に基づいて、前記受信側デバイスのサブセットを選択することと、
前記メッセージ処理サービスによって、前記処理された受信済メッセージを発行することと、
を含む、前記コンピュータ実施方法。
【０２３７】
２．前記メッセージ処理サービスによって前記受信済メッセージを処理することは、追加情報の少なくとも一部分を取得することを含む、請求項１に記載の方法。
【０２３８】
３．前記受信側デバイスのサブセットは被調整デバイスに対応し、
前記受信済メッセージは、被調整デバイスによってタスクを実行する命令に対応する、請求項１に記載の方法。
【０２３９】
４．前記メッセージ処理サービスによって、前記受信側デバイスの選択されたサブセットに対応する２次トピックを識別するために、前記受信済メッセージを処理することをさらに含む、請求項１に記載の方法。
【０２４０】
５．メッセージプロトコルを利用する通信を管理するためのシステムであって、
プロセッサおよびメモリを有する少なくとも１つのコンピューティングデバイスに実装されるメッセージ処理サービスであって、前記リモートコマンドサービスは、メッセージングプロトコルに従って形成されるメッセージを受信および発行するように構成される、前記メッセージ処理サービスを備え、
前記メッセージ処理サービスは、
トピック部に対応する入力メッセージを受信することであって、前記トピック部は前記入力メッセージの主題を記述する少なくとも１つのレベルを含み、受信側デバイスのセットは前記入力メッセージの前記トピックと関連付けられるメッセージを受信するために登録される、前記受信すること、
メッセージ処理構成に従って前記入力メッセージを処理し、前記受信側デバイスのサブセットを識別すること、
前記処理された入力メッセージを発行すること、
を行うように構成される、前記システム。
【０２４１】
６．１つ以上のビジネスルールまたはルーティングテーブルを関連付けることによって、前記メッセージ処理サービスを構成するように設定される管理クライアントデバイスをさらに備える、請求項５に記載のシステム。
【０２４２】
７．前記メッセージ処理サービスは、前記受信側デバイスのセットと関連付けられるセキュリティ基準を評価すること、および前記セキュリティ基準の評価に基づいて少なくとも１つの受信側デバイスを除外することによって、前記入力メッセージを処理する、請求項５に記載のシステム。
【０２４３】
８．前記メッセージ処理サービスプロセスは、論理ルールの評価に基づいて、前記入力メッセージに関する可能である受信側のサブセットを選択する、請求項５に記載のシステム。
【０２４４】
９．前記メッセージ処理サービスは、前記入力メッセージを受信する単一の受信側デバイスを選択する、請求項８に記載のシステム。
【０２４５】
１０．前記メッセージ処理サービスは、ネットワーク処理サービスに対応する、請求項５に記載のシステム。
【０２４６】
１１．前記受信側デバイスのセットは、被調整デバイスネットワークのセットの個々のデバイスに対応する、請求項１０に記載のシステム。
【０２４７】
１２．前記メッセージングプロトコルは、ＭＱテレメトリトランスポートプロトコルを含む、請求項５に記載のシステム。
【０２４８】
１３．メッセージプロトコルを利用してメッセージを管理するためのコンピュータ実施方法であって、
メッセージングプロトコルに従って形成されるメッセージを受信することであって、前記メッセージはトピックに対応し、前記トピックは主題記述子を含み、受信側デバイスのセットは前記トピックと関連付けられるメッセージを受信するために登録される、前記受信することと、
メッセージ処理構成に対する前記受信済メッセージを処理し、前記受信側デバイスのセットのサブセットを識別することと、
を含む、前記コンピュータ実施方法。
【０２４９】
１４．前記受信済メッセージを処理することは、個々のメッセージに関する可能である受信側のサブセットを選択することを含む、請求項１３に記載のコンピュータ実施方法。
【０２５０】
１５．前記メッセージ処理構成は少なくとも１つのビジネスルールを含み、
前記受信済メッセージを処理することは前記少なくとも１つのビジネスルールを評価することを含む、請求項１３に記載のコンピュータ実施方法。
【０２５１】
１６．前記少なくとも１つのビジネスルールを評価することは、ソースを元のメッセージに関連付ける情報を取得することを含む、請求項１５に記載のコンピュータ実施方法。
【０２５２】
１７．前記メッセージ処理構成はルーティングテーブルを含み、
前記受信済メッセージを処理することは、前記ルーティングテーブルを評価することを含む、請求項１３に記載のコンピュータ実施方法。
【０２５３】
１８．前記メッセージ処理構成を管理コンポーネントから取得することをさらに含む、請求項１３に記載のコンピュータ実施方法。
【０２５４】
１９．前記メッセージングプロトコルは、ＭＱテレメトリトランスポートプロトコルを含む、請求項１３に記載のコンピュータ実施方法。
【０２５５】
２０．前記受信側デバイスのサブセットは、２つ以上の受信側デバイスを含む、請求項１３に記載のコンピュータ実施方法。
【０２５６】
本出願の別の態様に従って、以下を考慮されたい。
【０２５７】
１．メッセージングプロトコルを利用してコンピューティングデバイス上のコマンドの実行を管理するためのコンピュータ実施方法であって、
メッセージ処理サービスにおいて、管理クライアントデバイスから、メッセージ処理機能の構成に関連する情報を受信し、メッセージを、トピックに従って発行されたメッセージを受信する登録済デバイスのサブセットに発行することであって、前記メッセージはＭＱテレメトリトランスポートプロトコルに従って形成される、前記発行することと、
前記メッセージ処理サービスによって、受信済メッセージをデバイスから受信することであって、前記受信済メッセージは主題記述子と関連付けられる１つ以上のレベルを含むトピック部を含む、前記受信することと、
前記メッセージ処理サービスによって、前記メッセージの前記トピック部に基づいて、メッセージを受信するために登録された受信側デバイスのセットを識別することと、
前記メッセージ処理サービスによって、前記受信済メッセージを処理し、セキュリティ識別子および追加情報を識別し、ビジネスルールまたはルーティングテーブルのセットのうちの少なくとも１つの評価に基づいて、前記受信側デバイスのサブセットを選択することと、
前記メッセージ処理サービスによって、前記受信済メッセージの前記処理に少なくとも部分的に基づいて、前記処理された受信済メッセージを発行することと、
を含む、前記コンピュータ実施方法。
【０２５８】
２．前記メッセージ処理サービスによって前記受信済メッセージを処理することは、追加情報の少なくとも一部分を取得することを含む、請求項１に記載の方法。
【０２５９】
３．前記受信側デバイスのサブセットは被調整デバイスに対応し、前記受信済メッセージは被調整デバイスによってタスクを実行する命令に対応する、請求項１に記載の方法。
【０２６０】
４．前記メッセージ処理情報によって前記メッセージをパースし、前記セキュリティ識別子および前記追加情報を取得することをさらに含む、請求項１に記載の方法。
【０２６１】
５．メッセージプロトコルを利用する通信を管理するためのシステムであって、
プロセッサおよびメモリを有する少なくとも１つのコンピューティングデバイスに実装されるメッセージ処理サービスであって、前記リモートコマンドサービスは、メッセージングプロトコルに従って形成されるメッセージを受信および発行するように構成される、前記メッセージ処理サービスを備え、
前記メッセージ処理サービスは、
トピック部に対応する入力メッセージを受信することであって、前記トピック部は前記入力メッセージの主題を識別し、受信側デバイスのセットは前記入力メッセージの前記トピックと関連付けられるメッセージを受信するために登録される、前記受信すること、
メッセージセキュリティ構成に従って前記入力メッセージを処理し、前記受信側デバイスのサブセットを識別することであって、前記メッセージセキュリティ構成は前記入力メッセージに含まれるセキュリティ情報の評価に対応する、前記識別すること、
前記処理された入力メッセージを、前記受信側デバイスの前記識別されたサブセットに発行すること、
を行うように構成される、前記システム。
【０２６２】
６．前記メッセージセキュリティ情報の一部として１つ以上のルーティングテーブルを関連付けることによって、前記メッセージ処理サービスを構成するように設定される管理クライアントデバイスをさらに備える、請求項５に記載のシステム。
【０２６３】
７．前記メッセージ処理サービスは、前記受信側デバイスのセットと関連付けられるセキュリティ基準を評価すること、および前記セキュリティ基準の評価に基づいて少なくとも１つの受信側デバイスを除外することによって、前記入力メッセージを処理する、請求項５に記載のシステム。
【０２６４】
８．前記メッセージ処理サービスは、前記受信側デバイスのセットと関連付けられるセキュリティ基準を評価すること、および前記セキュリティ基準の評価に基づいて少なくとも１つの受信側デバイスを選択することによって、前記入力メッセージを処理する、請求項５に記載のシステム。
【０２６５】
９．前記メッセージ処理サービスは、前記入力メッセージを受信する単一の受信側デバイスを選択する、請求項８に記載のシステム。
【０２６６】
１０．前記入力メッセージは、ネットワーク処理サービスに対応する、請求項５に記載のシステム。
【０２６７】
１１．前記受信側デバイスのセットは、被調整デバイスネットワークのセットの個々のデバイスに対応する、請求項１０に記載のシステム。
【０２６８】
１２．前記メッセージングプロトコルは、ＭＱテレメトリトランスポートプロトコルを含む、請求項５に記載のシステム。
【０２６９】
１３．メッセージプロトコルを利用してメッセージを管理するためのコンピュータ実施方法であって、
メッセージングプロトコルに従って形成されるメッセージを受信することであって、前記メッセージはトピックに対応し、前記トピックは主題記述子を含み、受信側デバイスのセットは前記トピックと関連付けられるメッセージを受信するために登録される、前記受信することと、
セキュリティ処理構成に従って前記受信済メッセージに含まれるセキュリティ情報を処理し、前記受信側デバイスのセットのサブセットへのアクセスを管理することと、
を含む、前記コンピュータ実施方法。
【０２７０】
１４．前記受信済メッセージを処理することは、個々のメッセージに関する可能である受信側のサブセットを選択することを含む、請求項１３に記載のコンピュータ実施方法。
【０２７１】
１５．前記メッセージ処理構成はビジネスルールまたはルーティングテーブルのうちの少なくとも１つを含み、
前記受信済メッセージを処理することは、前記少なくとも１つのビジネスルールまたは前記ルーティングテーブルを評価することを含む、請求項１３に記載のコンピュータ実施方法。
【０２７２】
１６．前記ビジネスルールまたは前記ルーティングテーブルのうちの少なくとも１つを評価することは、前記少なくとも１つのビジネスルールまたは前記ルーティングテーブルに従って、前記受信済メッセージに含まれる前記セキュリティ情報を評価することを含む、請求項１５に記載のコンピュータ実施方法。
【０２７３】
１７．前記セキュリティ情報は、前記受信済メッセージに埋め込まれる識別子およびパスワードを含む、請求項１６に記載のコンピュータ実施方法。
【０２７４】
１８．前記セキュリティ処理構成を管理コンポーネントから取得することをさらに含む、請求項１３に記載のコンピュータ実施方法。
【０２７５】
１９．セキュリティ処理構成に従って前記受信済メッセージに含まれる前記セキュリティ情報を処理することは、外部ネットワーク通信アクセスなしで、前記受信済メッセージに含まれる前記セキュリティ情報を処理することを含む、請求項１３に記載のコンピュータ実施方法。
【０２７６】
２０．前記受信側デバイスのサブセットは、２つ以上の受信側デバイスを含む、請求項１３に記載のコンピュータ実施方法。
【０２７７】
上記に説明された方法およびプロセスの全ては、１つ以上のコンピュータまたはプロセッサにおいて具体化され得、１つ以上のコンピュータまたはプロセッサによって実行されるソフトウェアコードモジュールを介して完全に自動化され得る。コードモジュールは、任意の種類の非一過性のコンピュータ可読媒体または他のコンピュータ記憶デバイス内に記憶され得る。本方法の一部または全ては、代わりに専用コンピュータハードウェアで実施され得る。
【０２７８】
特に明記しない限り、とりわけ、「できる（ｃａｎ）」、「できるであろう（ｃｏｕｌｄ）」、「可能性がある（ｍｉｇｈｔ）」、または「得る（ｍａｙ）」等の条件的言語は、それ以外の場合、ある実施形態が、ある特定の特徴、要素、および／またはステップを含む一方で、他の実施形態がそれらを含まないことを示すために一般的に使用されるものとして文脈内で理解される。したがって、係る条件的言語は、概して、特徴、要素、および／またはステップが、１つ以上の実施形態に任意の方法で要求されるか、あるいは１つ以上の実施形態が、ユーザ入力もしくはプロンプトを用いて、またはそれを用いずに、これらの特徴、要素、および／またはステップが含まれるのか、もしくは任意の特定の実施形態で行われるべきであるかを決定するための論理を必ず含むことを含意することは意図していない。
【０２７９】
特に明記しない限り、語句「Ｘ、Ｙ、またはＺのうちの少なくとも１つ」等の選言的言語は、それ以外の場合、項目、用語等がＸ、Ｙ、もしくはＺのいずれか、またはそれらの任意の組み合わせ（例えば、Ｘ、Ｙ、および／またはＺ）であり得ることを示すために一般的に使用されるものとして文脈の中で理解される。したがって、係る選言的言語は、ある実施形態がＸの少なくとも１つ、Ｙの少なくとも１つ、またはＺの少なくとも１つがそれぞれ存在することを必要とすることを含意することを一般的に意図しておらず、意味するべきではない。
【０２８０】
特に明記しない限り、「ａ」または「ａｎ」等の冠詞は、概して、１つ以上の記載された項目を含むと解釈すべきである。したがって、「〜ように構成されているデバイス」等の語句は、１つ以上の列挙されたデバイスを含むことを意図する。係る１つ以上の列挙されたデバイスは、また、記載された列挙を実行するように集合的に構成され得る。例えば、「列挙Ａ、Ｂ、およびＣを実行するように構成されているプロセッサ」は、列挙ＢおよびＣを実行するように構成されている第２のプロセッサと連動して機能し、列挙Ａを実行するように構成されている第１のプロセッサを含み得る。
【０２８１】
本明細書に説明される、および／または添付の図面に示されるフロー図のいずれのルーチンの記述、要素、またはブロックは、ルーチンにおける特定の論理的機能または要素を実装するための、１つ以上の実行可能な命令を含むモジュール、セグメント、またはコードの部分を潜在的に表すものとして理解されたい。代替の実施態様は、本明細書に説明する実施形態の範囲内に含まれ、その中で要素または機能は、当業者によって理解されるであろうように、関係する機能性に応じて、実質的に同時または逆の順序を含む、示されるもの、または説明されるものとは異なる順序で削除または実行され得る。
【０２８２】
多くの変形および修正が上記の実施形態に対して行われ得、それらの要素が他の許容される例の中にあるものとして理解されることを強調されたい。全ての係る修正および変形が、本開示の範囲内で本明細書に含有され、以下の特許請求の範囲によって保護されることが意図される。
【図１】
0006935496.tif 000002
【図２】
0006935496.tif 000003
【図３Ａ】
0006935496.tif 000004
【図３Ｂ】
0006935496.tif 000005
【図４】
0006935496.tif 000006
【図５】
0006935496.tif 000007
【図６Ａ】
0006935496.tif 000008
【図６Ｂ】
0006935496.tif 000009
【図６Ｃ】
0006935496.tif 000010
【図６Ｄ】
0006935496.tif 000011
【図７】
0006935496.tif 000012
【図８】
0006935496.tif 000013
【図９】
0006935496.tif 000014
【図１０】
0006935496.tif 000015
【図１１Ａ】
0006935496.tif 000016
【図１１Ｂ】
0006935496.tif 000017
【図１２】
0006935496.tif 000018
【図１３】
0006935496.tif 000019
【図１４Ａ】
0006935496.tif 000020
【図１４Ｂ】
0006935496.tif 000021
【図１４Ｃ】
0006935496.tif 000022
【図１４Ｄ】
0006935496.tif 000023
【図１５】
0006935496.tif 000024
【図１６】
0006935496.tif 000025
【図１７】
0006935496.tif 000026
【図１８】
0006935496.tif 000027
【図１９Ａ】
0006935496.tif 000028
【図１９Ｂ】
0006935496.tif 000029
【図２０】
0006935496.tif 000030
【図２１】
0006935496.tif 000031
【図２２Ａ】
0006935496.tif 000032
【図２２Ｂ】
0006935496.tif 000033
【図２２Ｃ】
0006935496.tif 000034
【図２２Ｄ】
0006935496.tif 000035
【図２３】
0006935496.tif 000036
【図２４】
0006935496.tif 000037