したがって、サーバ及びデバイスが永続的接続で、ステートレスな中間サーバを経由してメッセージをやり取りする、分散型アーキテクチャにおいてセッション状態及び/又はセッション情報など情報を管理するシステム及び方法に対するニーズが存在する。コンピューティングリソースにかかる記憶及び処理の負荷を低減し、急速な変化、再割り当て、及びモノのインターネットにおける相互接続デバイス数の増加に対応できる、かかるシステム及び方法に対するニーズも存在する。
総括的に言うと、本明細書に記載の実施形態は、莫大な数のコンピューティングデバイス(例えば、接続デバイス)にデータを提供する分散型コンピューティングシステムのフェデレーションを構築するソフトウェアライブラリ及びコンピューティングアーキテクチャを提供する。多数の接続デバイスへの接続性を得るために、フェデレーションは、概ね複数のサーバノードを含んで、負荷を共有する。サーバノードは、ロジカル/仮想的又は物理的であり得る。
いくつかの実施例では、プラットフォームサーバは、永続的接続で、1台又は2台以上の中間サーバをまたいで所定のコンピューティングデバイスと通信する。このプラットフォームは、データ記憶サーバ及びコンピューティングデバイスにサービスを提供する様々なバックエンドサーバに対してデータを双方向にルーティングする(例えば、伝送する)。このため、中間サーバは、エッジサーバと確立した永続的接続及びプラットフォームサーバと確立した永続的接続で多重メッセージを送信する。分散型コンピューティングシステムのこのフェデレーションは、単一のプラットフォームサーバを介して100,000を超える接続デバイスにサービスを提供できることが確認されている。
所与のコンピューティングデバイスがシステム内を有益に自由に移動できつつ、フェデレーション内のデバイス間で形成されたこれらの永続的接続を維持するために、エッジサーバ及び中間サーバは、所与のコンピューティングデバイスと関連付けられた、1つ又は2つ以上の非ネットワークアドレス可能識別子を使用して動作する。かかる非ネットワークアドレス可能識別子は、所与のコンピューティングシステムと関連付けられている名前識別子であってよい。この機能により、コンピューティングデバイスは、フェデレーション内の任意のエッジサーバに接続されつつ、フェデレーションによるサービス提供を受けることができる。実際、コンピューティングデバイスは、ネットワーク若しくはフェデレーション内での自身の位置に関する何らかの知識、又はフェデレーション内のノードに関する何らかのネットワーキング若しくはルーティングの詳細を有する必要はない。コンピューティングデバイスは、その名前及び/又は対応するセキュリティキーを所与のエッジサーバに提供することによって、登録するだけである。次に、デバイスは、フェデレーション内のパスにバインドされる。
いくつかの実施例では、プラットフォームサーバの特定機能を共有する、及び/又はこれらの負荷を低減するために、中間サーバは、フェデレーション内の所与のコンピューティングデバイスの認証セッション情報を維持し、これを強制する。したがって、プラットフォームサーバがかかるタスクを実行しなくても済むようにする。中間サーバは、コンピューティングデバイスの資格情報が検証されると、所与のコンピューティングデバイスの認証セッションを維持する。実際、各中間サーバは認証セッション情報を記憶し、それを所与のデバイスのメッセージに挿入し、それによって、プラットフォームサーバがデバイスの認証セッション情報を維持しなくてもよいようにする。そうすることにより、プラットフォームサーバは、プラットフォームサーバがまだ認証を実行できるようにしつつ、認証セッションの管理を中間サーバに分散させる。このため、データ及び情報は、独立して動作する中間サーバに送り込まれて(例えば、伝送されて)よく、これらの中間サーバは、プラットフォームサーバの接続作業負荷を共有してよい。
いくつかの実施例では、中間サーバは、送受信したメッセージの状態情報を維持しない、ステートレス接続マネージャである。ステートレス中間サーバでメッセージの追跡に関する状態情報を維持するために、中間サーバは、メッセージのルーティング元に関する状態情報を送信する、及び/又はメッセージ自体に挿入する。したがって、これらの受信メッセージには、かかるルーティング状態情報が挿入されていて、かかるメッセージを戻すことができる。具体的には、ルーティング状態情報は、メッセージが送信された永続的接続の通信ハンドルと関連付けられている。
本明細書に記載のシステム及び方法の適用例は、上記の例に限定されるものではないが、当業者に理解されるように、任意の数のコンテキストで導入されてよい。「背景技術」の内容は、この内容を従来技術のものとして認めるものとみなされるべきではない。
一態様では、本開示は、分散コンピューティング環境における、名前ベースの識別子を使用した、メッセージルーティングの方法について説明する。この方法は、集合的にネットワークを規定する、プラットフォームサーバ、一連の中間サーバ、及び一連のエッジサーバを提供することを含んでよい。このネットワークでは、エンドポイントデバイスは一連のエッジサーバのうちの1台のエッジサーバと通信し、一連のエッジサーバは一連の中間サーバと通信し、一連の中間サーバはプラットフォームサーバと通信する。
この方法は、プラットフォームサーバで、第1インスタンスにおいて、エンドポイントデバイスをプラットフォームサーバにバインドすることを含む。プラットフォームサーバは、第1インスタンスにおいて、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して、エンドポイントデバイスをバインドする。第1インスタンスにおいてバインドすることにより、ネットワーク上で第1パスを関連付け、第1パスは、1台又は2台以上の中間サーバ及び1台又は2台以上のエッジサーバをまたいで、エンドポイントデバイスとプラットフォームサーバとの間に規定される。
この方法は、プラットフォームサーバにおいて、第1パスに沿って第1メッセージをエンドポイントデバイスに伝達することを含む。
この方法は、プラットフォームサーバで、第2インスタンスにおいて、エンドポイントデバイスをプラットフォームサーバに再バインドすることを含む。プラットフォームサーバは、第2インスタンスにおいて、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して、エンドポイントデバイスをバインドする。非アドレス可能名前値は、文字列を含んでよい。第2インスタンスにおいて再バインドすることにより、ネットワーク上で第2パスを関連付ける。第2パスは、第2中間サーバなど1台又は2台以上の中間サーバ及び1台又は2台以上のエッジサーバをまたいで、エンドポイントデバイスとプラットフォームサーバとの間で規定される。
この方法は、プラットフォームサーバにおいて、第2パスに沿って第2メッセージをエンドポイントデバイスに伝達することを含む。第1パス及び第2パスのそれぞれは、接続ハンドルと関連付けられた、確立された永続的接続を含んでよい。確立された永続的接続には、WebSocket接続が含まれてよい。第1パス及び第2パスのうちの少なくとも1つは、少なくとも2台の中間サーバを含んでよい。
いくつかの実施例では、この方法は、プラットフォームサーバで、第1インスタンスと第2インスタンスとの間の所与のインスタンスにおいて、プラットフォームサーバからエンドポイントデバイスのバインドを解除する要求を受信することを含む。プラットフォームサーバは、バインド解除要求に基づいて、エンドポイントデバイスのバインドを解除する。このバインドの解除により、エンドポイントデバイスとプラットフォームサーバとの間に規定された第1パスの関連付けが解除される。
いくつかの実施例では、この方法は、プラットフォームサーバで、第1インスタンスにおいて、第2エンドポイントデバイスをプラットフォームサーバにバインドすることを含む。プラットフォームサーバは、第1インスタンスにおいて、第2エンドポイントデバイスと関連付けられた非アドレス可能名前値に基づいて、第2エンドポイントデバイスをバインドする。第1エンドポイントデバイスのバインド及び第2エンドポイントデバイスのバインドは、単一のバインド要求の結果であってよい。
別の態様では、本開示は、分散コンピューティング環境における、名前ベースの識別子を使用した、上記のメッセージルーティングの方法を実行するシステムについて説明する。このシステムは、プロセッサと、メモリと、を含んでよい。メモリは、プロセッサによる実行時に、第1インスタンスにおいて、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して、エンドポイントデバイスをバインドすることをプロセッサに実行させる命令を記憶する。第1インスタンスにおいてバインドすることにより、ネットワーク上で第1パスを関連付け、第1パスは、1台又は2台以上の中間サーバ及び1台又は2台以上のエッジサーバをまたいで、エンドポイントデバイスとバインドされたサーバとの間に規定される。
命令は、実行時に、第1パスに沿って第1メッセージをエンドポイントデバイスに伝達することをプロセッサに更に実行させる。
命令は、実行時に、第2インスタンスにおいて、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して再バインドすることをプロセッサに更に実行させる。非アドレス可能名前値は、文字列を含んでよい。第2インスタンスにおいて再バインドすることにより、ネットワーク上で第2パスを関連付ける。第2パスは、1台又は2台以上の中間サーバ及び1台又は2台以上のエッジサーバをまたいで、エンドポイントデバイスとバインドされたサーバとの間で規定される。
命令は、実行時に、第2パスに沿って第2メッセージをエンドポイントデバイスに伝達することをプロセッサに更に実行させる。第1パス及び第2パスのそれぞれは、接続ハンドルと関連付けられた、確立された永続的接続を含んでよい。確立された永続的接続には、WebSocket接続が含まれてよい。第1パス及び第2パスのうちの少なくとも1つは、少なくとも2台の中間サーバを含んでよい。
いくつかの実施例では、命令は、実行時に、バインド解除要求に基づいて、バインドされたサーバからエンドポイントデバイスのバインドを解除する要求を受信することをプロセッサに更に実行させる。このバインドの解除により、エンドポイントデバイスとバインドされたサーバとの間に規定された第1パスの関連付けが解除される。
別の態様では、本開示は、分散コンピューティング環境における、名前ベースの識別子を使用した、上記のメッセージルーティングの方法を実行する非一過性コンピュータ読み取り可能な媒体について説明する。このコンピュータ読み取り可能な媒体はそこに記憶された命令を有し、命令は、プロセッサによる実行時に、第1インスタンスにおいて、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して、エンドポイントデバイスをバインドすることをプロセッサに実行させる。第1インスタンスにおいてバインドすることにより、ネットワーク上で第1パスを関連付ける。第1パスは、1台又は2台以上の中間サーバ及び1台又は2台以上のエッジサーバをまたいで、エンドポイントデバイスとバインドされたサーバとの間で規定される。
命令は、実行時に、第1パスに沿って第1メッセージをエンドポイントデバイスに伝達することをプロセッサに更に実行させる。
命令は、実行時に、第2インスタンスにおいて、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して再バインドすることをプロセッサに更に実行させる。非アドレス可能名前値は、文字列を含んでよい。第2インスタンスにおいて再バインドすることにより、ネットワーク上で第2パスを関連付け、第2パスは、1台又は2台以上の中間サーバ及び1台又は2台以上のエッジサーバをまたいで、エンドポイントデバイスとバインドされたサーバとの間に規定される。
命令は、実行時に、第2パスに沿って第2メッセージをエンドポイントデバイスに伝達することをプロセッサに更に実行させる。第1パス及び第2パスのそれぞれは、接続ハンドルと関連付けられた、確立された永続的接続を含んでよい。確立された永続的接続には、WebSocket接続が含まれてよい。第1パス及び第2パスのうちの少なくとも1つは、少なくとも2台の中間サーバを含んでよい。
いくつかの実施例では、命令は、実行時に、バインド解除要求に基づいて、バインドされたサーバからエンドポイントデバイスのバインドを解除する要求を受信することをプロセッサに更に実行させる。このバインドの解除により、エンドポイントデバイスとバインドされたサーバとの間に規定された第1パスの関連付けが解除される。
別の態様では、本開示は、コンピュータにより実施される、プラットフォームサーバとエンドポイントデバイスとの通信方法について説明する。この方法は、ネットワークに接続されている、一連の中間サーバを提供することを含む。このネットワークは、プラットフォームサーバと、一連のエッジサーバと、を更に備える。エンドポイントデバイスは、一連のエッジサーバのうちの1台のエッジサーバと通信する。一連のエッジサーバは一連の中間サーバと通信し、一連の中間サーバはプラットフォームサーバと通信する。この方法は、一連の中間サーバのうちの1台の中間サーバで、第1インスタンスにおいて、エンドポイントデバイスをこの中間サーバにバインドすることを含む。この中間サーバは、第1インスタンスにおいて、エンドポイントデバイスと関連付けられた非アドレス可能名前値に基づいて、エンドポイントデバイスをバインドする。第1インスタンスにおいてバインドすることにより、所与の永続的接続を一連のエッジサーバのうちの所与のエッジサーバと関連付け、所与のエッジサーバは、エンドポイントデバイスと通信する。この方法は、中間サーバにおいて、プラットフォームサーバからの信号を受信することを含み、この信号は、エンドポイントデバイスの非アドレス可能名前値と関連付けられた値を有する。この方法は、中間サーバにおいて、一連のエッジサーバに対して確立された一連の永続的接続から1つの永続的接続を決定することを含み、非アドレス可能名前値は、バインド中にこの永続的接続と関連付けられている。この方法は、中間サーバにおいて、決定された永続的接続を使用して、エンドポイントデバイスに信号を伝送することを含む。
別の態様では、本開示は、プロセッサと、記憶された命令を有するメモリと、を含むシステムについて説明し、命令は、プロセッサによる実行時に、ネットワークに接続されている一連の中間サーバを提供することをプロセッサに実行させ、このネットワークは、プラットフォームサーバと、一連のエッジサーバと、を更に備え、エンドポイントデバイスは、一連のエッジサーバのうちの1台のエッジサーバと通信する。一連のエッジサーバは一連の中間サーバと通信し、一連の中間サーバはプラットフォームサーバと通信する。この命令は、プロセッサによる実行時に、一連の中間サーバのうちの1台の中間サーバで、第1インスタンスにおいて、エンドポイントデバイスをこの中間サーバにバインドすることをプロセッサに実行させる。この中間サーバは、第1インスタンスにおいて、エンドポイントデバイスと関連付けられた非アドレス可能名前値に基づいて、エンドポイントデバイスをバインドする。第1インスタンスにおいてバインドすることにより、所与の永続的接続を一連のエッジサーバのうちの所与のエッジサーバに関連付け、この所与のエッジサーバは、エンドポイントデバイスと通信する。命令は、プロセッサによる実行時に、中間サーバにおいて、プラットフォームサーバからの信号を受信することをプロセッサに実行させ、この信号は、エンドポイントデバイスの非アドレス可能名前値と関連付けられた値を有する。命令は、プロセッサによる実行時に、中間サーバにおいて、一連のエッジサーバに対して確立された一連の永続的接続から1つの永続的接続を決定することをプロセッサに実行させる。非アドレス可能名前値は、バインド中に永続的接続と関連付けられている。命令は、プロセッサによる実行時に、中間サーバにおいて、決定された永続的接続を使用して、エンドポイントデバイスに信号を伝送することをプロセッサに実行させる。
別の態様では、本開示は、記憶された命令を有する、非一過性コンピュータ読み取り可能な媒体について説明し、命令は、プロセッサによる実行時に、ネットワークに接続されている一連の中間サーバを提供することをプロセッサに実行させる。ネットワークは、プラットフォームサーバと、一連のエッジサーバと、を更に備え、エンドポイントデバイスは、一連のエッジサーバのうちの1台のエッジサーバと通信する。一連のエッジサーバは一連の中間サーバと通信し、一連の中間サーバはプラットフォームサーバと通信する。この命令は、プロセッサによる実行時に、一連の中間サーバのうちの1台の中間サーバで、第1インスタンスにおいて、エンドポイントデバイスをこの中間サーバにバインドすることをプロセッサに実行させる。この中間サーバは、第1インスタンスにおいて、エンドポイントデバイスと関連付けられた非アドレス可能名前値に基づいて、エンドポイントデバイスをバインドする。第1インスタンスにおいてバインドすることにより、所与の永続的接続を一連のエッジサーバのうちの所与のエッジサーバに関連付け、この所与のエッジサーバは、エンドポイントデバイスと通信する。命令は、プロセッサによる実行時に、中間サーバにおいて、プラットフォームサーバからの信号を受信することをプロセッサに実行させ、この信号は、エンドポイントデバイスの非アドレス可能名前値と関連付けられた値を有する。命令は、プロセッサによる実行時に、中間サーバにおいて、一連のエッジサーバに対して確立された一連の永続的接続から1つの永続的接続を決定することをプロセッサに実行させる。非アドレス可能名前値は、バインド中に永続的接続と関連付けられている。命令は、プロセッサによる実行時に、中間サーバにおいて、決定された永続的接続を使用して、エンドポイントデバイスに信号を伝送することをプロセッサに実行させる。
別の態様では、本開示は、分散コンピューティング環境における、プラットフォームサーバとエンドポイントデバイスとの間でのメッセージのルーティング方法について説明する。この方法は、プラットフォームサーバ及び1台又は2台以上の中間サーバを提供することを含む。各中間サーバは、プラットフォームサーバに接続し、そこへの永続的接続を維持し、中間サーバは、多数のエッジサーバと通信し、これらとの多数の永続的接続を維持する。中間サーバは、メッセージの追跡及び/又はルーティングに関する状態情報を維持しない。
この方法は、所与の中間サーバのポートによって、第1永続的接続で、エッジサーバのうちの所与のエッジサーバからサービス要求を受信することを含む。
この方法は、中間サーバのプロセッサによって、所与の状態識別子をサービス要求に挿入すること(inserting)(例えば、挿入すること(injecting))を含み、所与の状態識別子(例えば、エンドポイント識別子)は、サービス要求が受信された第1永続的接続の接続ID(例えば、通信ハンドル)と関連付けられている。いくつかの実施例では、この関連性はまた、中間サーバのメモリに記憶される。この方法はまた、中間サーバにおいて、第2永続的接続でプラットフォームサーバにサービス要求を伝送することを含み、このサービス要求は、所与の状態識別子を含む。この方法は、中間サーバにおいて、第2永続的接続で応答メッセージを受信することを含み、この応答メッセージは、サービス要求に応えてプラットフォームサーバによって生成されている。応答メッセージは、所与の状態識別子を含む。この方法はまた、中間サーバにおいて、所与の状態識別子を使用して、第1永続的接続の接続IDを取得することを含む。所与の状態識別子は、サービス要求内で伝送された状態識別子と同一である。
この方法は、中間サーバにおいて、エッジサーバとの永続的接続のうちの1つの選択された接続に応答メッセージをルーティングすることを含む。選択された接続は、取得した接続IDに基づいている。
いくつかの実施例では、永続的接続には、Web−Socket接続が含まれる。いくつかの実施例では、所与の状態識別子は、サービス要求のヘッダー部分に挿入される。
いくつかの実施例では、中間サーバは、所与のエッジサーバに接続されているコンピューティングデバイスとプラットフォームサーバとの間で実行されている認証交換と関連付けられた、第2状態識別子をメモリに維持する。第2状態識別子は、コンピューティングデバイスの状態識別子と関連付けられた名前値に関連付けられてよい。かかる実施例では、この方法は、中間サーバのプロセッサを使用して、サービス要求内に位置するデバイス識別子を名前値と比較することを含む。一致する場合、中間サーバは、サービス要求に第2状態識別子を挿入してよく、デバイス識別子は、所与のエッジサーバと動作可能に通信する所与のコンピューティングデバイスのIDと関連付けられている。比較しても一致しない場合、中間サーバは、所与のエッジサーバにバインド解除要求を送信してよい。バインド解除要求により、デバイス識別子は、エッジサーバに記憶されている1つ又は2つ以上のデバイス識別子のバインドリストから削除される。第2状態識別子は、第1永続的接続の接続IDと関連付けられてよい。この関連性は、中間サーバでメモリに記憶される。
別の態様では、本開示は、プロセッサと、メモリと、を含むシステム、すなわち中間サーバについて説明し、メモリは、プロセッサによる実行時に、第1永続的接続で所与のエッジサーバからのサービス要求をポートによって受信することをプロセッサに実行させる命令を記憶する。命令は、実行時に、所与の状態識別子をサービス要求に挿入することをプロセッサに更に実行させる。所与の状態識別子は、サービス要求が受信された第1永続的接続の接続IDと関連付けられている。命令は、実行時に、第2永続的接続でプラットフォームサーバにサービス要求を伝送することをプロセッサに実行させ、このサービス要求は所与の状態識別子を含む。命令は、実行時に、第2永続的接続で応答メッセージを受信することをプロセッサに更に実行させ、この応答メッセージは、サービス要求に応じてプラットフォームサーバによって生成され、応答メッセージは所与の状態識別子を含む。命令は、実行時に、中間サーバにおいて、所与の状態識別子を使用して第1永続的接続の接続IDを取得することをプロセッサに更に実行させ、所与の状態識別子は、サービス要求内で伝送された状態識別子と同一である。命令は、実行時に、エッジサーバとの永続的接続のうちの1つの選択された接続に応答メッセージをルーティングすることをプロセッサに更に実行させ、この選択された接続は、取得した接続IDに基づいている。
いくつかの実施例では、所与の状態識別子は、サービス要求のヘッダー部分に挿入される。永続的接続は、Web−Socket接続であってよい。いくつかの実施例では、第1永続的接続の接続IDに対する関連性は、中間サーバにおいてメモリに記憶される。
いくつかの実施例では、中間サーバは、所与のエッジサーバに接続されているコンピューティングデバイスとプラットフォームサーバとの間で実行されている認証交換と関連付けられた、第2状態識別子をメモリに維持する。第2状態識別子は、コンピューティングデバイスの状態識別子と関連付けられた名前値に関連付けられてよい。かかる実施例では、中間サーバは、プロセッサによって、サービス要求内に位置するデバイス識別子を名前値と比較する。一致しない場合、中間サーバは、サービス要求に第2状態識別子を挿入してよい。デバイス識別子は、所与のエッジサーバと動作可能に通信する所与のコンピューティングデバイスのIDと関連付けられている。比較しても一致しない場合、中間サーバは、所与のエッジサーバにバインド解除要求を送信してよい。バインド解除要求により、デバイス識別子は、エッジサーバに記憶されている1つ又は2つ以上のデバイス識別子のバインドリストから削除される。第2状態識別子は、第1永続的接続の接続IDと関連付けられてよい。この関連性は、中間サーバでメモリに記憶される。
別の態様では、本開示は、記憶された命令を有する非一過性コンピュータ読み取り可能な媒体について説明し、命令は、プロセッサによる実行時に、第1永続的接続で所与のエッジサーバからのサービス要求をポートによって受信することをプロセッサに実行させる。命令は、実行時に、所与の状態識別子をサービス要求に挿入することをプロセッサに更に実行させる。所与の状態識別子は、サービス要求が受信された第1永続的接続の接続IDと関連付けられている。命令は、実行時に、第2永続的接続でサービス要求をプラットフォームサーバに伝送することをプロセッサに更に実行させる。命令は、実行時に、第2永続的接続で応答メッセージを受信することをプロセッサに更に実行させ、この応答メッセージは、サービス要求に応じてプラットフォームサーバによって生成される。応答メッセージは、所与の状態識別子を含む。命令は、実行時に、中間サーバにおいて、第1永続的接続の所与の状態識別子を使用して接続IDを取得することをプロセッサに更に実行させる。所与の状態識別子は、サービス要求内で伝送された状態識別子と同一である。命令は、実行時に、エッジサーバとの永続的接続のうちの1つの選択された接続に応答メッセージをルーティングすることをプロセッサに更に実行させ、この選択された接続は、取得した接続IDに基づいている。
いくつかの実施例では、永続的接続には、Web−Socket接続が含まれる。いくつかの実施例では、所与の状態識別子は、サービス要求のヘッダー部分に挿入される。
いくつかの実施例では、中間サーバは、所与のエッジサーバに接続されているコンピューティングデバイスとプラットフォームサーバとの間で実行されている認証交換と関連付けられた、第2状態識別子をメモリに維持する。第2状態識別子は、コンピューティングデバイスの状態識別子と関連付けられた名前値に関連付けられてよい。かかる実施例では、中間サーバは、プロセッサによって、サービス要求内に位置するデバイス識別子を名前値と比較してよい。一致しない場合、中間サーバは、サービス要求に第2状態識別子を挿入してよい。デバイス識別子は、所与のエッジサーバと動作可能に通信する所与のコンピューティングデバイスのIDと関連付けられている。比較しても一致しない場合、中間サーバは、所与のエッジサーバにバインド解除要求を送信してよい。バインド解除要求により、デバイス識別子は、エッジサーバに記憶されている1つ又は2つ以上のデバイス識別子のバインドリストから削除される。第2状態識別子は、第1永続的接続の接続IDと関連付けられてよい。この関連性は、中間サーバでメモリに記憶される。
別の態様では、本開示は、分散コンピューティング環境における、接続サーバを介した、プラットフォームサーバと複数のエンドポイントデバイスとの間でのメッセージのルーティング方法について説明する。この方法は、集合的にネットワークを規定する、プラットフォームサーバ、一連の中間サーバ、及び一連のエッジサーバを提供することを含み、エンドポイントデバイスは、一連のエッジサーバのうちの1台のエッジサーバと通信し、一連のエッジサーバは一連の中間サーバと通信し、一連の中間サーバはプラットフォームサーバと通信する。
この方法は、プラットフォームサーバのポートによって、第1永続的接続で第1エンドポイントデバイスから第1データメッセージを受信することを含む。第1データメッセージは、第2永続的接続で第1中間サーバを経由してルーティングされている。
この方法は、プラットフォームサーバのポートによって、第3永続的接続で第2エンドポイントデバイスから第2データメッセージを受信することを含み、第2データメッセージは、第4永続的接続で第2中間サーバを経由してルーティングされている。永続的接続には、WebSocket接続が含まれてよい。
この方法は、プラットフォームサーバのプロセッサによって、第1データメッセージ及び第2データメッセージを提供することを含む。第1中間サーバ及び第2中間サーバのそれぞれは、エンドポイントデバイスとプラットフォームサーバとの間の接続性を管理する。第1中間サーバ及び第2中間サーバのそれぞれは、エンドポイントデバイスとプラットフォームサーバとの間での認証セッションを管理してよい。プラットフォームサーバは、永続サーバ、データベースサーバ、顧客関係管理(CRM)サーバ、エンタープライズリソースプランニング(ERP)サーバ、業務支援システム(OSS)サーバ、営業支援システム(BSS)サーバ、及びデータウェアハウスからなる群から選択されるバックオフィスサーバにメッセージをルーティングすることによって、第1データメッセージ及び第2データメッセージを提供してよい。
別の態様では、本開示は、プロセッサと、メモリと、を含むシステムについて説明し、メモリは、プロセッサによる実行時に、第1永続的接続で第1エンドポイントデバイスからの第1データメッセージをポートによって受信することをプロセッサに実行させる命令を記憶する。第1データメッセージは、第2永続的接続で第1中間サーバを経由してルーティングされている。
命令は、実行時に、第3永続的接続で第2エンドポイントデバイスからの第2データメッセージをポートによって受信することをプロセッサに更に実行させ、第2データメッセージは、第4永続的接続で第2中間サーバを経由してルーティングされている。永続的接続には、WebSocket接続が含まれてよい。
命令は、実行時に、第1データメッセージ及び第2データメッセージを提供することをプロセッサに更に実行させる。第1中間サーバ及び第2中間サーバのそれぞれは、エンドポイントデバイスとプラットフォームサーバとの間の接続性を管理する。第1中間サーバ及び第2中間サーバのそれぞれは、エンドポイントデバイスとプラットフォームサーバとの間での認証セッションを管理してよい。プラットフォームサーバは、永続サーバ、データベースサーバ、顧客関係管理(CRM)サーバ、エンタープライズリソースプランニング(ERP)サーバ、業務支援システム(OSS)サーバ、営業支援システム(BSS)サーバ、及びデータウェアハウスからなる群から選択されるバックオフィスサーバにメッセージをルーティングすることによって、第1データメッセージ及び第2データメッセージを提供してよい。
別の態様では、本開示は、記憶された命令を有する非一過性コンピュータ読み取り可能な媒体について説明し、命令は、プロセッサによる実行時に、第1永続的接続で第1エンドポイントデバイスからの第1データメッセージをポートによって受信することをプロセッサに実行させる。第1データメッセージは、第2永続的接続で第1中間サーバを経由してルーティングされている。
命令は、実行時に、第3永続的接続で第2エンドポイントデバイスからの第2データメッセージをポートによって受信することをプロセッサに更に実行させ、第2データメッセージは、第4永続的接続で第2中間サーバを経由してルーティングされている。永続的接続には、WebSocket接続が含まれてよい。
命令は、実行時に、第1データメッセージ及び第2データメッセージを提供することをプロセッサに更に実行させ、第1中間サーバ及び第2中間サーバのそれぞれは、エンドポイントデバイスとプラットフォームサーバとの間の接続性を管理する。第1中間サーバ及び第2中間サーバのそれぞれは、エンドポイントデバイスとプラットフォームサーバとの間での認証セッションを管理してよい。プラットフォームサーバは、永続サーバ、データベースサーバ、顧客関係管理(CRM)サーバ、エンタープライズリソースプランニング(ERP)サーバ、業務支援システム(OSS)サーバ、営業支援システム(BSS)サーバ、及びデータウェアハウスからなる群から選択されるバックオフィスサーバにメッセージをルーティングすることによって、第1データメッセージ及び第2データメッセージを提供してよい。
別の態様では、本開示は、コンピュータにより実施される、プラットフォームサーバと複数のエンドポイントデバイスとの通信交換の管理方法について説明する。この方法は、ネットワークに接続されている一連の中間サーバのうちの1台の中間サーバを提供することを含む。ネットワークは、プラットフォームサーバと、複数のエンドポイントデバイスと、を更に含み、エンドポイントデバイスは一連の中間サーバと通信し、一連の中間サーバはプラットフォームサーバと通信する。この方法は、中間サーバのプロセッサによって、所与のエンドポイントデバイスから受信したメッセージにルーティング情報を挿入するかどうかを決定することを含む。ルーティング情報は、所与のエンドポイントデバイスと確立された永続的接続と関連付けられる。永続的接続は、エンドポイントデバイスで確立された一連の永続的接続のうちの1つである。この方法は、中間サーバのプロセッサによって、認証セッション情報を受信メッセージに挿入するかどうかを決定することを含む。認証セッション情報は、永続的接続と関連付けられた認証セッションに関する。この方法は、中間サーバのプロセッサによって、永続的接続をエンドポイントデバイスと関連付けられた識別子にバインドするかどうかを決定することを含む。バインドすることにより、永続的接続をエンドポイントデバイスに関連付ける。この方法は、中間サーバのプロセッサによって、第1サービスにルーティング情報を受信メッセージに挿入させること、第2サービスに認証セッション情報を受信メッセージに挿入させること、及び第3サービスに永続的接続を識別子にバインドさせることのうちの少なくとも1つを実行させることを含み、この実行させることは決定に基づいている。
別の態様では、本開示は、プロセッサと、記憶された命令を有するメモリと、を含むシステムについて説明し、命令は、中間サーバのプロセッサによる実行時に、プラットフォームサーバと多数のエンドポイントデバイスとの間での通信交換を管理することをプロセッサに実行させる。命令は、中間サーバのプロセッサによる実行時に、ネットワークに接続されている一連の中間サーバのうちの1台の中間サーバを提供することをプロセッサに実行させる。ネットワークは、プラットフォームサーバと、複数のエンドポイントデバイスと、を更に含む。エンドポイントデバイスは一連の中間サーバと通信し、一連の中間サーバはプラットフォームサーバと通信する。命令は、プロセッサによる実行時に、所与のエンドポイントデバイスから受信したデバイスにルーティング情報を挿入するかどうかを決定することをプロセッサに実行させる。ルーティング情報は、所与のエンドポイントデバイスと確立した永続的接続と関連付けられ、永続的接続は、エンドポイントデバイスと確立した一連の永続的接続のうちの1つである。命令は、プロセッサによる実行時に、認証セッション情報を受信メッセージに挿入するかどうかを決定することをプロセッサに実行させる。認証セッション情報は、永続的接続と関連付けられた認証セッションに関する。命令は、プロセッサによる実行時に、永続的接続をエンドポイントデバイスと関連付けられた識別子にバインドするかどうかを決定することをプロセッサに実行させる。バインドすることにより、永続的接続をエンドポイントデバイスに関連付ける。命令は、プロセッサによる実行時に、第1サービスにルーティング情報を受信メッセージに挿入させること、第2サービスに認証セッション情報を受信メッセージに挿入させること、及び第3サービスに永続的接続を識別子にバインドさせることのうちの少なくとも1つをプロセッサに実行させることを含み、この実行させることは決定に基づいている。
別の態様では、本開示は、記憶された命令を有する非一過性コンピュータ読み取り可能な媒体について説明し、命令は、中間サーバのプロセッサによる実行時に、プラットフォームサーバと多数のエンドポイントデバイスとの間での通信交換を管理することをプロセッサに実行させる。命令は、中間サーバのプロセッサによる実行時に、ネットワークに接続されている一連の中間サーバのうちの1台の中間サーバを提供することをプロセッサに実行させる。ネットワークは、プラットフォームサーバと、複数のエンドポイントデバイスと、を更に含み、エンドポイントデバイスは一連の中間サーバと通信し、一連の中間サーバはプラットフォームサーバと通信する。命令は、プロセッサによる実行時に、所与のエンドポイントデバイスから受信したデバイスにルーティング情報を挿入するかどうかを決定することをプロセッサに実行させる。ルーティング情報は、所与のエンドポイントデバイスと確立した永続的接続と関連付けられ、永続的接続は、エンドポイントデバイスと確立した一連の永続的接続のうちの1つである。命令は、プロセッサによる実行時に、認証セッション情報を受信メッセージに挿入するかどうかを決定することをプロセッサに実行させる。認証セッション情報は、永続的接続と関連付けられた認証セッションに関する。命令は、プロセッサによる実行時に、永続的接続をエンドポイントデバイスと関連付けられた識別子にバインドするかどうかを決定することをプロセッサに実行させる。バインドすることにより、永続的接続をエンドポイントデバイスに関連付ける。命令は、プロセッサによる実行時に、第1サービスにルーティング情報を受信メッセージに挿入させること、第2サービスに認証セッション情報を受信メッセージに挿入させること、及び第3サービスに永続的接続を識別子にバインドさせることのうちの少なくとも1つをプロセッサに実行させることを含み、この実行させることは決定に基づいている。
いくつかの実施例では、システムは、分散コンピューティング環境においてメッセージをルーティングするために提供される。このシステムは、プロセッサと、メモリと、を備える。メモリは、プロセッサによる実行時に、(例えば、プラットフォームサーバを)ネットワーク及び一連の中間サーバのうちの1台に通信可能に接続することをプロセッサに実行させる命令を記録する。ネットワークは、一連の中間サーバと、そこに接続されているエンドポイントデバイスと、を含む。エンドポイントデバイスは、一連の中間サーバのうちの1台の中間サーバと通信可能に接続している。エンドポイントデバイスは、第1インスタンスにおいて(例えば、プラットフォームサーバに)バインドされる。第1インスタンスにおいてエンドポイントデバイスにバインドすることは、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して実行される。第1インスタンスにおいてエンドポイントデバイスにバインドすることは、ネットワーク上で第1パスに関連付けることを含む。第1パスは、一連の中間サーバのうちの1台又は2台以上をまたいでエンドポイントデバイスを往復するパスである。第1メッセージは、第1パスに沿ってエンドポイントデバイスに伝達される。エンドポイントデバイスは、第2インスタンスにおいて(例えば、プラットフォームサーバに)バインドされる。第2インスタンスにおいてエンドポイントデバイスにバインドすることは、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して実行される。第2インスタンスにおいてエンドポイントデバイスにバインドすることは、ネットワーク上で第2パスに関連付けることを含む。第2パスは、第1パスの一連の中間サーバのうちの1台又は2台以上とは異なる、一連の中間サーバのうちの1台又は2台以上をまたいでエンドポイントデバイスを往復するパスである。第2メッセージは、第2パスに沿ってエンドポイントデバイスに伝達される。
いくつかの実施例では、システムは、分散コンピューティング環境においてメッセージをルーティングするために提供される。このシステムは、プロセッサと、メモリと、を備える。メモリは、プロセッサによる実行時に、(例えば、中間サーバ)をネットワーク、プラットフォームサーバ、及びエンドポイントデバイスに通信可能に接続することをプロセッサに実行させる命令を記録する。ネットワークは、プラットフォームサーバと、そこに接続されているエンドポイントデバイスと、を含む。エンドポイントデバイスは、第1インスタンスにおいて(例えば、中間サーバに)バインドされる。第1インスタンスにおいてエンドポイントデバイスにバインドすることは、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して実行される。第1インスタンスにおいてエンドポイントデバイスにバインドすることは、エンドポイントデバイスと永続的接続を確立することを含む。エンドポイントデバイスと永続的接続を確立することは、永続的接続を、エンドポイントデバイスに関連付けられた非アドレス可能名前値と関連付けることを含む。信号は、プラットフォームサーバから受信される。信号は、エンドポイントデバイスの非アドレス可能名前値に関連付けられた値を含む。エンドポイントデバイスと確立された永続的接続は、一連の永続的接続から識別される。信号は、一連の永続的接続から識別された永続的接続を使用して、エンドポイントデバイスに伝送される。
いくつかの実施例では、分散コンピューティング環境におけるメッセージのルーティング方法が提供される。ネットワーク及び一連の中間サーバは、(例えば、プラットフォームサーバに)通信可能に接続される。ネットワークは、一連の中間サーバと、そこに接続されているエンドポイントデバイスと、を含む。エンドポイントデバイスは、一連の中間サーバのうちの1台の中間サーバと通信可能に接続している。エンドポイントデバイスは、第1インスタンスにおいて(例えば、プラットフォームサーバに)バインドされる。第1インスタンスにおいてエンドポイントデバイスにバインドすることは、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して実行される。第1インスタンスにおいてエンドポイントデバイスにバインドすることは、ネットワーク上で(例えば、プラットフォームサーバによって)第1パスに関連付けることを含む。第1パスは、一連の中間サーバのうちの1台又は2台以上をまたいでエンドポイントデバイスを往復するパスである。第1メッセージは、第1パスに沿ってエンドポイントデバイスに伝達される。エンドポイントデバイスは、第2インスタンスにおいて(例えば、プラットフォームサーバによって)バインドされる。第2インスタンスにおいてエンドポイントデバイスにバインドすることは、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して実行される。第2インスタンスにおいてエンドポイントデバイスにバインドすることは、ネットワーク上で第2パスに関連付けることを含む。第2パスは、第1パスの一連の中間サーバのうちの1台又は2台以上とは異なる、一連の中間サーバのうちの1台又は2台以上をまたいでエンドポイントデバイスを往復するパスである。第2メッセージは、第2パスに沿ってエンドポイントデバイスに伝達される。
いくつかの実施例では、エンドポイントデバイスからのバインド解除要求は、第1インスタンスと第2インスタンスとの間の第3インスタンスにおいて受信される。エンドポイントデバイスは、バインド解除要求に基づいて(例えば、プラットフォームサーバによって)バインドが解除される。エンドポイントデバイスからバインドを解除することは、ネットワーク上で第1パスから関連付けを解除することを含む。
いくつかの実施例では、第1パスは、エンドポイントデバイスを往復するパスに沿って、一連の中間サーバのうちの第1中間サーバを含む。第2パスは、エンドポイントデバイスを往復するパス沿って、一連の中間サーバのうちの第2中間サーバを含む。第1パス及び第2パスのそれぞれは、対応する、確立された永続的接続を含む。確立された永続的接続のそれぞれは、対応する接続ハンドルを含む。
いくつかの実施例では、確立された永続的接続はWebSocket接続である。
いくつかの実施例では、非アドレス可能名前値は文字列を含む。
いくつかの実施例では、第2エンドポイントデバイスは、第1インスタンスにおいて(例えば、プラットフォームサーバによって)バインドされる。第1インスタンスにおいて(例えば、プラットフォームサーバを)エンドポイントデバイスにバインドすることは、第2エンドポイントデバイスと関連付けられた第2非アドレス可能名前値を使用して実行される。
いくつかの実施例では、(例えば、プラットフォームサーバを)エンドポイントデバイスにバインドすること及び(例えば、プラットフォームサーバを)第2エンドポイントデバイスにバインドすることは、単一のバインド要求に応じて実行される。
いくつかの実施例では、第1パス及び第2パスのうちの少なくとも1つは、一連の中間サーバのうちの2台以上の中間サーバを含む。
いくつかの実施例では、エンドポイントデバイスは、一連のエッジサーバのうちの少なくとも1台と通信可能に接続している。一連のエッジサーバは、一連の中間サーバと通信可能に接続している。第1パスは、一連のエッジサーバのうちの1台又は2台以上を更にまたいでエンドポイントデバイスを往復するパスである。第2パスは、第1パスの一連のエッジサーバのうちの1台又は2台以上とは異なる、一連のエッジサーバのうちの1台又は2台以上を更にまたいでエンドポイントデバイスを往復するパスである。
いくつかの実施例では、分散コンピューティング環境におけるメッセージのルーティング方法が提供される。例えば、中間サーバは、ネットワーク、プラットフォームサーバ、及びエンドポイントデバイスに通信可能に接続される。ネットワークは、プラットフォームサーバと、そこに接続されているエンドポイントデバイスと、を含む。エンドポイントデバイスは、第1インスタンスにおいて(例えば、プラットフォームサーバによって)バインドされる。第1インスタンスにおいて(例えば、プラットフォームサーバを)エンドポイントデバイスにバインドすることは、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して実行される。第1インスタンスにおいて(例えば、プラットフォームサーバを)エンドポイントデバイスにバインドすることは、エンドポイントデバイスとの永続的接続を確立することを含む。エンドポイントデバイスとの永続的接続を確立することは、永続的接続を、エンドポイントデバイスと関連付けられた非アドレス可能名前値と関連付けることを含む。信号はプラットフォームサーバから受信され、この信号は、エンドポイントデバイスの非アドレス可能名前値と関連付けられた値を含む。エンドポイントデバイスと確立された永続的接続は、一連の永続的接続から識別される。信号は、一連の永続的接続から識別された永続的接続を使用して、エンドポイントデバイスに伝送される。
いくつかの実施例では、記憶された命令を有する非一過性コンピュータ読み取り可能な媒体が提供され、命令は、プロセッサによる実行時に、(例えば、プラットフォームサーバを)ネットワーク及び一連の中間サーバに通信可能に接続することをプロセッサに実行させる。ネットワークは、一連の中間サーバと、そこに接続されているエンドポイントデバイスと、を含む。エンドポイントデバイスは、一連の中間サーバのうちの1台の中間サーバと通信可能に接続している。エンドポイントデバイスは、第1インスタンスにおいてバインドされる。第1インスタンスにおいて(例えば、プラットフォームサーバを)エンドポイントデバイスにバインドすることは、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して実行される。第1インスタンスにおいて(例えば、プラットフォームサーバを)エンドポイントデバイスにバインドすることは、ネットワーク上で第1パスに関連付けることを含む。第1パスは、一連の中間サーバのうちの1台又は2台以上をまたいでエンドポイントデバイスを往復するパスである。第1メッセージは、第1パスに沿ってエンドポイントデバイスに伝達される。エンドポイントデバイスは、第2インスタンスにおいて(例えば、プラットフォームサーバによって)バインドされる。第2インスタンスにおいて(例えば、プラットフォームサーバを)エンドポイントデバイスにバインドすることは、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して実行される。第2インスタンスにおいて(例えば、プラットフォームサーバを)エンドポイントデバイスにバインドすることは、ネットワーク上で第2パスに関連付けることを含む。第2パスは、第1パスの一連の中間サーバのうちの1台又は2台以上とは異なる、一連の中間サーバのうちの1台又は2台以上をまたいでエンドポイントデバイスを往復するパスである。第2メッセージは、第2パスに沿ってエンドポイントデバイスに伝達される。
いくつかの実施例では、エンドポイントデバイスからのバインド解除要求は、第1インスタンスと第2インスタンスとの間の第3インスタンスにおいて受信される。プラットフォームサーバは、バインド解除要求に基づいて、エンドポイントデバイスからバインドが解除される。エンドポイントデバイスから(例えば、プラットフォームサーバの)バインドを解除することは、ネットワーク上で第1パスから(例えば、プラットフォームサーバの)関連付けを解除することを含む。
いくつかの実施例では、第1パス及び第2パスのそれぞれは、対応する確立された永続的接続を含み、確立された永続的接続のそれぞれは、対応する接続ハンドルを含む。
いくつかの実施例では、確立された永続的接続はWebSocket接続である。
いくつかの実施例では、非アドレス可能名前値は文字列を含む。
いくつかの実施例では、プラットフォームサーバは、第1インスタンスにおいて第2エンドポイントデバイスにバインドされる。第1インスタンスにおいて(例えば、プラットフォームサーバを)エンドポイントデバイスにバインドすることは、第2エンドポイントデバイスと関連付けられた第2非アドレス可能名前値を使用して実行される。
いくつかの実施例では、(例えば、プラットフォームサーバを)エンドポイントデバイスにバインドすること及び第2エンドポイントデバイスにバインドすることは、単一のバインド要求に応じて実行される。
いくつかの実施例では、第1パス及び第2パスのうちの少なくとも1つは、一連の中間サーバのうちの2台以上の中間サーバを含む。
いくつかの実施例では、エンドポイントデバイスは、一連のエッジサーバのうちの少なくとも1台と通信可能に接続している。一連のエッジサーバは、一連の中間サーバと通信可能に接続している。第1パスは、一連のエッジサーバのうちの1台又は2台以上を更にまたいでエンドポイントデバイスを往復するパスである。第2パスは、第1パスの一連のエッジサーバのうちの1台又は2台以上とは異なる、一連のエッジサーバのうちの1台又は2台以上を更にまたいでエンドポイントデバイスを往復するパスである。
いくつかの実施例では、記憶された命令を有する非一過性コンピュータ読み取り可能な媒体が提供され、命令は、プロセッサによる実行時に、(例えば、プラットフォームサーバを)ネットワーク、プラットフォームサーバ、及びエンドポイントデバイスに通信可能に接続することをプロセッサに実行させ、ネットワークは、プラットフォームサーバと、そこに接続されたエンドポイントデバイスと、を含む。プラットフォームサーバは、第1インスタンスにおいてエンドポイントデバイスにバインドされる。第1インスタンスにおいて(例えば、プラットフォームサーバを)エンドポイントデバイスにバインドすることは、エンドポイントデバイスと関連付けられた非アドレス可能名前値を使用して実行される。第1インスタンスにおいて(例えば、プラットフォームサーバを)エンドポイントデバイスにバインドすることは、エンドポイントデバイスとの永続的接続を確立することを含む。エンドポイントデバイスとの永続的接続を確立することは、永続的接続を、エンドポイントデバイスと関連付けられた非アドレス可能名前値と関連付けることを含む。信号は、プラットフォームサーバから受信される。信号は、エンドポイントデバイスの非アドレス可能名前値に関連付けられた値を含む。エンドポイントデバイスと確立された永続的接続は、一連の永続的接続から識別される。信号は、一連の永続的接続から識別された永続的接続を使用して、エンドポイントデバイスに伝送される。
いくつかの実施例では、データストリームに状態を挿入する方法が提供される。中間サーバは、ネットワーク及びプラットフォームサーバに通信可能に接続される。ネットワークは、そこに接続されているプラットフォームサーバを含む。プラットフォームサーバは、対応する永続的接続で複数の中間サーバに通信可能に接続される。複数の中間サーバは、対応する永続的接続で複数のコンピューティングデバイスに通信可能に接続される。サービス要求は、第1永続的接続で、複数のコンピューティングデバイスのうちの1つからポートを介して受信される。状態識別子はサービス要求に挿入され、この状態識別子は、第1永続的接続の接続IDと関連付けられている。サービス要求は、第2永続的接続でプラットフォームサーバに伝送される。応答メッセージは、第2永続的接続で受信される。応答メッセージは、サービス要求に応じて、プラットフォームサーバによって生成される。応答メッセージは、応答メッセージの状態識別子を含む。第1永続的接続の接続IDは、状態識別子を使用して取得される。応答メッセージの状態識別子は、サービス要求に含まれる状態識別子と同一である。応答メッセージは、第1永続的接続で、複数のコンピューティングデバイスのうちの1つに伝送される。第1永続的接続は、取得した接続IDに基づいて選択される。
いくつかの実施例では、第2状態識別子は、複数のコンピューティングデバイスのうちの1つとプラットフォームサーバとの間での認証交換と関連付けられ、第2状態識別子は、複数のコンピューティングデバイスのうちの1つの名前値と関連付けられている。サービス要求に含まれるデバイス識別子は、複数のコンピューティングデバイスの名前値と比較され、このデバイス識別子は、複数のコンピューティングデバイスのうちの1つと関連付けられている。サービス要求に含まれるデバイス識別子が、複数のコンピューティングデバイスの名前値と一致する場合、第2状態識別子はサービス要求に挿入される。
いくつかの実施例では、サービス要求に含まれるデバイス識別子が複数のコンピューティングデバイスの名前値と一致する場合、中間サーバは、1つ又は2つ以上のデバイス識別子を含むバインドリスト(例えば、中間サーバのバインドリスト、エッジサーバのバインドリスト)からデバイス識別子を削除させる。
いくつかの実施例では、第2状態識別子は、第1永続的接続の接続IDと関連があり、第1永続的接続の接続IDとの第2状態識別子の関連性は、メモリに記憶される。
いくつかの実施例では、状態情報は、応答メッセージに埋め込まれたメッセージ内容と関連付けられており、したがって、中間サーバはステートレスである。
いくつかの実施例では、状態識別子は、サービス要求のヘッダー部分に挿入される。
いくつかの実施例では、第1永続的接続及び第2永続的接続は、WebSocket接続である。
いくつかの実施例では、プロセッサと、メモリと、を備えるシステムが提供され、メモリは、プロセッサによる実行時に、(例えば、プラットフォームサーバを)ネットワークに及びプラットフォームサーバに通信可能に接続することをプロセッサに実行させる命令を記憶し、ネットワークは、そこに接続されているプラットフォームサーバを含む。プラットフォームサーバは、対応する永続的接続で複数の中間サーバと通信可能に接続される。複数の中間サーバは、対応する永続的接続で複数のコンピューティングデバイスと通信可能に接続される。サービス要求は、第1永続的接続で、複数のコンピューティングデバイスのうちの1つからポートを介して受信される。状態識別子はサービス要求に挿入され、この状態識別子は、第1永続的接続の接続IDと関連付けられている。サービス要求は、第2永続的接続でプラットフォームサーバに伝送される。応答メッセージは、第2永続的接続で受信される。応答メッセージは、サービス要求に応じてプラットフォームサーバによって生成され、応答メッセージは、応答メッセージの状態識別子を含む。第1永続的接続の接続IDは、状態識別子を使用して取得され、応答メッセージの状態識別子は、サービス要求に含まれる状態識別子と同一である。応答メッセージは、第1永続的接続で複数のコンピューティングデバイスのうちの1つに伝送され、第1永続的接続は、取得した接続IDに基づいて選択される。
いくつかの実施例では、複数のコンピューティングデバイスのうちの1つとプラットフォームサーバとの間での認証交換と関連付けられた第2状態識別子は、メモリに記憶される。第2状態識別子は、複数のコンピューティングデバイスのうちの1つの名前値と関連付けられている。サービス要求に含まれるデバイス識別子は、複数のコンピューティングデバイスの名前値と比較され、このデバイス識別子は、複数のコンピューティングデバイスのうちの1つと関連付けられている。サービス要求に含まれるデバイス識別子が、複数のコンピューティングデバイスの名前値と一致する場合、第2状態識別子はサービス要求に挿入される。
いくつかの実施例では、サービス要求に含まれるデバイス識別子が複数のコンピューティングデバイスの名前値と一致しない場合、1つ又は2つ以上のデバイス識別子を含むバインドリスト(例えば、中間サーバのバインドリスト、エッジサーバのバインドリスト)からデバイス識別子を削除させる。
いくつかの実施例では、メモリは、プロセッサによる実行時に、第2状態識別子を第1永続的接続の接続IDに関連付けさせること、及び第2状態識別子と第1永続的接続の接続IDとの関連性をメモリに記憶することをプロセッサに実行させる命令を記憶する。
いくつかの実施例では、状態情報は、応答メッセージに埋め込まれたメッセージ内容と関連付けられており、したがって、中間サーバはステートレスである。
いくつかの実施例では、状態識別子は、サービス要求のヘッダー部分に挿入される。
いくつかの実施例では、第1永続的接続及び第2永続的接続は、WebSocket接続である。
いくつかの実施例では、非一過性コンピュータ読み取り可能な媒体は、そこに記憶された命令を有し、命令は、プロセッサによる実行時に、(例えば、中間サーバを)ネットワーク及びプラットフォームサーバに通信可能に接続することをプロセッサに実行させ、ネットワークは、そこに接続されているプラットフォームサーバを含む。プラットフォームサーバは、対応する永続的接続で複数の中間サーバと通信可能に接続される。複数の中間サーバは、対応する永続的接続で複数のコンピューティングデバイスと通信可能に接続される。複数のコンピューティングデバイスのうちの1つからのサービス要求は、第1永続的接続で、ポートを介して受信される。状態識別子はサービス要求に挿入され、この状態識別子は、第1永続的接続の接続IDと関連付けられている。サービス要求は、第2永続的接続でプラットフォームサーバに伝送される。応答メッセージは、第2永続的接続で受信される。応答メッセージは、サービス要求に応じて、プラットフォームサーバによって生成される。応答メッセージは、応答メッセージの状態識別子を含む。第1永続的接続の接続IDは、状態識別子を使用して取得され、応答メッセージの状態識別子は、サービス要求に含まれる状態識別子と同一である。応答メッセージは、複数のコンピューティングデバイスのうちの1つに伝送され、第1永続的接続は、取得した接続IDに基づいて選択される。
いくつかの実施例では、命令は、プロセッサによる実行時に、複数のコンピューティングデバイスのうちの1つとプラットフォームサーバとの間での認証交換と関連付けられた第2状態識別子をメモリに記憶することであって、第2状態識別子は、複数のコンピューティングデバイスのうちの1つの名前値と関連付けられていること、サービス要求に含まれるデバイス識別子を複数のコンピューティングデバイスの名前値と比較することであって、このデバイス識別子は、複数のコンピューティングデバイスのうちの1つと関連付けられていること、及びサービス要求に含まれるデバイス識別子が、複数のコンピューティングデバイスの名前値と一致する場合、第2状態識別子をサービス要求に挿入すること、をプロセッサに実行させる。
いくつかの実施例では、命令は、プロセッサによる実行時に、サービス要求に含まれるデバイス識別子が複数のコンピューティングデバイスの名前値と一致しない場合、1つ又は2つ以上のデバイス識別子を含むバインドリスト(例えば、中間サーバのバインドリスト、エッジサーバのバインドリスト)から(例えば、中間サーバによって)デバイス識別子を削除することをプロセッサに実行させる。
いくつかの実施例では、命令は、プロセッサによる実行時に、第2状態識別子を第1永続的接続の接続IDと関連付けさせること、及び第2状態識別子と接続IDとの関連性をメモリに記憶することをプロセッサに実行させる。
いくつかの実施例では、状態情報は、応答メッセージに埋め込まれたメッセージ内容と関連付けられており、したがって、中間サーバはステートレスである。
いくつかの実施例では、状態識別子は、サービス要求のヘッダー部分に挿入される。
いくつかの実施例では、第1永続的接続及び第2永続的接続は、WebSocket接続である。
いくつかの実施例では、(例えば、プラットフォームサーバによる)エンドポイントデバイスとの通信の管理方法が提供され、この方法は、(例えば、プラットフォームサーバ)をネットワーク及び一連の中間サーバのうちの1台に通信可能に接続することであって、ネットワークは、一連の中間サーバと、そこに接続されているエンドポイントデバイスと、を含み、エンドポイントデバイスは、一連の中間サーバのうちの1台の中間サーバに通信可能に接続されること、第2永続的接続で、第1エンドポイントデバイスからの第1データメッセージをポートによって受信することであって、第1データメッセージは、第1永続的接続で第1中間サーバを経由してルーティングされること、第4永続的接続で、第2エンドポイントデバイスからの第2データメッセージをポートによって受信することであって、第2データメッセージは、第3永続的接続で第2中間サーバを経由してルーティングされること、並びに第1データメッセージ及び第2データメッセージを提供すること、を含み、第1中間サーバ及び第2中間サーバのそれぞれは、第1エンドポイントデバイス及び第2エンドポイントデバイスの双方向の接続性をそれぞれ管理する。
いくつかの実施例では、第1中間サーバ及び第2中間サーバは、第1エンドポイントデバイス及び第2エンドポイントデバイスの往復の認証セッションをそれぞれ管理する。
いくつかの実施例では、第1データメッセージ及び第2データメッセージを提供することは、永続サーバ、データベースサーバ、顧客関係管理(CRM)サーバ、エンタープライズリソースプランニング(ERP)サーバ、業務支援システム(OSS)サーバ、営業支援システム(BSS)サーバ、及びデータウェアハウスからなる群から選択されるバックオフィスサーバに第1データメッセージ及び第2データメッセージをルーティングすることを含む。
いくつかの実施例では、永続的接続はWebSocket接続である。
いくつかの実施例では、非一過性コンピュータ読み取り可能な媒体は、そこに記憶された命令を有し、命令は、プロセッサによる実行時に、第2永続的接続で第1エンドポイントデバイスからの第1データメッセージをポートによって受信することであって、第1データメッセージは、第1永続的接続で第1中間サーバを経由してルーティングされること、第4永続的接続で、第2エンドポイントデバイスからの第2データメッセージをポートによって受信することであって、第2データメッセージは、第3永続的接続で第2中間サーバを経由してルーティングされること、及び第1データメッセージ及び第2データメッセージを提供すること、をプロセッサに実行させ、第1中間サーバ及び第2中間サーバのそれぞれは、第1エンドポイントデバイス及び第2エンドポイントの双方向の接続性をそれぞれ管理する。
いくつかの実施例では、第1中間サーバ及び第2中間サーバは、第1エンドポイントデバイス及び第2エンドポイントデバイスの往復の認証セッションをそれぞれ管理する。
いくつかの実施例では、第1データメッセージ及び第2データメッセージを提供することは、永続サーバ、データベースサーバ、顧客関係管理(CRM)サーバ、エンタープライズリソースプランニング(ERP)サーバ、業務支援システム(OSS)サーバ、営業支援システム(BSS)サーバ、及びデータウェアハウスからなる群から選択されるバックオフィスサーバに第1データメッセージ及び第2データメッセージをルーティングすることを含む。
いくつかの実施例では、永続的接続はWebSocket接続である。
いくつかの実施例では、システムは、プロセッサと、メモリと、を備え、メモリは、プロセッサによる実行時に、第2エンドポイントデバイスからの第2データメッセージをポートによって受信することであって、第2データメッセージは、第3永続的接続で第2中間サーバを経由してルーティングされること、並びに第1データメッセージ及び第2データメッセージを提供すること、をプロセッサに実行させる命令を記憶し、第1中間サーバ及び第2中間サーバのそれぞれは、第1エンドポイントデバイス及び第2エンドポイントデバイスの双方向の接続性をそれぞれ管理する。
いくつかの実施例では、第1中間サーバ及び第2中間サーバは、第1エンドポイントデバイス及び第2エンドポイントデバイスの往復の認証セッションをそれぞれ管理する。
いくつかの実施例では、第1データメッセージ及び第2データメッセージを提供することは、永続サーバ、データベースサーバ、顧客関係管理(CRM)サーバ、エンタープライズリソースプランニング(ERP)サーバ、業務支援システム(OSS)サーバ、営業支援システム(BSS)サーバ、及びデータウェアハウスからなる群から選択されるバックオフィスサーバに第1データメッセージ及び第2データメッセージをルーティングすることを含む。
いくつかの実施例では、システムは、単一の物理サーバを備える。
いくつかの実施例では、システムは、複数の物理サーバを備える。
いくつかの実施例では、永続的接続はWebSocket接続である。
いくつかの実施例では、エンドポイントデバイスとの通信の管理方法が提供され、この方法は、(例えば、中間サーバを)ネットワーク、プラットフォームサーバ、及びエンドポイントデバイスに通信可能に接続することであって、ネットワークは、プラットフォームサーバと、そこに接続されている複数のエンドポイントデバイスと、を含むこと、複数のエンドポイントデバイスのうちの1つのエンドポイントデバイスからの受信メッセージにルーティング情報を挿入するかどうかを決定することであって、ルーティング情報はエンドポイントデバイスと確立された永続的接続と関連付けられており、永続的接続は、複数のエンドポイントデバイスと確立された一連の永続的接続のうちの1つの永続的接続であること、受信メッセージに認証セッション情報を挿入するかどうかを決定することであって、認証セッション情報は、永続的接続と関連付けられた認証セッションに関するものであること、エンドポイントデバイスと関連付けられた識別子に永続的接続をバインドするかどうかを決定することであって、バインドすることにより、永続的接続をエンドポイントデバイスと関連付けること、並びに(i)第1サービスに、ルーティング情報を受信メッセージに挿入させること、(ii)第2サービスに、認証セッション情報を受信メッセージに挿入させること、及び(iii)第3サービスに、永続的接続をエンドポイントデバイスと関連付けられた識別子にバインドさせること、のうちの少なくとも1つを実行させること、を含む。
いくつかの実施例では、システムは、プロセッサと、記憶された命令を有するメモリと、を備え、命令は、プロセッサによる実行時に、ネットワーク、プラットフォームサーバ、及びエンドポイントデバイスに通信可能に接続することであって、ネットワークは、プラットフォームサーバと、そこに接続されている複数のエンドポイントデバイスと、を含むこと、複数のエンドポイントデバイスのうちの1つのエンドポイントデバイスからの受信メッセージにルーティング情報を挿入するかどうかを決定することであって、ルーティング情報はエンドポイントデバイスと確立された永続的接続と関連付けられており、永続的接続は、複数のエンドポイントデバイスと確立された一連の永続的接続のうちの1つの永続的接続であること、受信メッセージに認証セッション情報を挿入するかどうかを決定することであって、認証セッション情報は、永続的接続と関連付けられた認証セッションに関するものであること、エンドポイントデバイスと関連付けられた識別子に永続的接続をバインドするかどうかを決定することであって、バインドすることにより、永続的接続をエンドポイントデバイスと関連付けること、並びに(i)第1サービスに、ルーティング情報を受信メッセージに挿入させること、(ii)第2サービスに、認証セッション情報を受信メッセージに挿入させること、及び(iii)第3サービスに、永続的接続をエンドポイントデバイスと関連付けられている識別子にバインドさせることのうちの少なくとも1つを実行させること、をプロセッサに実行させる。
本開示の前記及び他の目的、態様、特徴、及び利点は、添付図面と併せて以下の説明を参照することによってより明白となり、より理解されるであろう。
当然のことながら、本願発明のシステム、デバイス、方法、及びプロセスは、本明細書に記載の実施形態の情報を使用して開発される変形及び適応を包含する。当業者は、本明細書に記載のシステム、デバイス、方法、及びプロセスを適応すること、及び/又は変更することを実行できるであろう。
本説明を通して、物品、デバイス、及びシステムが、特定のコンポーネントを有する、含む、若しくは備えるものとして記載される場合、又はプロセス及び方法が、特定の工程を有する、含む、若しくは備えるものとして記載される場合、当然のことながら、引用されたコンポーネントから本質的になる、又はこれらからなる、本発明の物品、デバイス、及びシステムが存在する、また、引用された処理工程から本質的になる、又はこれらからなる、本発明によるプロセス及び方法が存在する。
当然のことながら、工程の順序又は動作の実行順序は、本発明が動作可能である限り重要ではない。更に、2つ以上の工程及び動作を同時に実施してよい。
本明細書における任意の出版物又は特許出願への言及、例えば、「背景技術」の項での言及は、かかる出版物又は特許出願が、本明細書に記載のいずれの特許請求又は内容に関しても先行技術を構成することを認めるものではない。「背景技術」の項は、明確化を目的とするものであり、いずれかの請求項に関する先行技術の説明を意図したものではない。
分散コンピューティング環境における、莫大な数の接続デバイスとサーバのフェデレーションとの通信を可能にする、方法及びシステムについて説明する。
サーバのフェデレーションによって、所与の接続デバイスは、分散コンピューティング環境内で自由に移動(例えば、異なるネットワーク及び/又はサーバと接続、それらに接続、それらを経由して接続)できるようになる。その結果、接続デバイスは、デバイスの自身の位置に関する情報又はフェデレーション内のノードに関するネットワーキング若しくはルーティングの詳細を維持する必要がない。それどころか、サーバのフェデレーションのうちのエッジサーバ及び中間サーバは、接続デバイスと関連付けられた、1つ又は2つ以上の非ネットワークアドレス可能識別子を使用して、サーバのフェデレーションを経由してバインドパスを確立し、プラットフォームサーバからのメッセージは、これを通って接続デバイスに送信されてよい。サーバのフェデレーションは、受信用パスを介して、フェデレーションのエッジ(例えば、エッジサーバにおいて)からプラットフォームサーバへとメッセージを伝送するように有益に構成される。したがって、バインドは、プラットフォームサーバから接続デバイスへの送信メッセージを支援するためだけに必要である。いくつかの実施例では、デバイスがフェデレーションシステム内で認証されると、サーバのフェデレーションのうちのエッジサーバ及び中間サーバによって、デバイスをバインドできるようになる。
別の態様では、中間サーバは、莫大な数のエッジサーバへの接続を処理するように、有益に最適化される。中間サーバはステートレスサーバとして動作するため、そこを通ってリレーされたメッセージ及び/又は通信の状態を維持しない、又は追跡しない。それどころか、中間サーバは、各受信メッセージに状態情報を挿入し、挿入された情報を送信元に戻す際にルーティング規則を用いる。挿入された状態情報は、受信メッセージの戻り送信用パスと関連付けられている、送信用WebSocket接続の通信ハンドルに対応してよい。
図1は、本発明の実施形態による、プラットフォームサーバ102(「プラットフォームサーバ」102a又は102bのいずれかとして示す)と複数のコンピューティングデバイス104との通信を可能にする例示的システム100のブロック図である。各コンピューティングデバイス104は、サービス及びコンピューティングデバイス群108(108a、108b、108c、及び108d)との通信を提供する、エッジサーバ106に接続してよい。いくつかの例示的実施例では、コンピューティングデバイス108は、接続サーバ又はアプリケーションプロトコルインターフェース(API)サーバ110(以下で詳述する)と通信してよい。コンピューティングデバイス104と接続サーバとの通信は、エッジサーバ106及び/又はゲートウェイデバイスを介して実行されてよい。いくつかの実施例では、コンピューティングデバイス104は、物理資産/デバイス、コンピュータアプリケーション及びシステム、人、データオブジェクト、並びにプラットフォームサービスに関するプロパティデータ、サービスデータ、及びイベントデータなどをやり取りできる電子デバイスである。
いくつかの実施例では、コンピューティングデバイス104は、工業団地にあるセンサ若しくは機械装置;企業若しくは政府のオフィスにあるコンピュータ若しくはオフィス機器;商業地若しくは自動販売機にある販売時点管理装置;建設機器若しくは車両;発電若しくは配電装置;配電若しくは伝送装置;建築用メーター;サーバ;ネットワーキング装置若しくはルーティング装置;スマートアプライアンス;運動器具;医療用装置若しくは補綴装置;医療用診断装置若しくは病院用機器;商用車若しくは輸送コンテナ;動力車若しくは電動補助動力自転車;携帯電話、ラップトップ、タブレット、電子リーダー;又は衣服用電気タグである。
いくつかの実施例では、エッジサーバは、エンドポイントデバイス(例えば、コンピュータデバイス104)及び/又は他のサーバなど他のシステムとインターフェースをとる通信ポートを含む、電子デバイスである。エッジサーバとしては、例えば、ゲートウェイデバイス、ネットワークサーバ、シングルボードコンピュータ、監視制御データ収集システム(「SCADA」)又はプログラマブル論理制御装置(「PLC」)が挙げられるが、これらに限定されなくてよい。エッジサーバは、産業、商業、コンピューティング、及び軍事用物理接続基準によって、エンドポイントデバイスに伝達してよい(例えば、及び/又はこれらと通信してよい)。これらの基準としては、例えば、Modbus、RS−232、RS−422、RS−485、シリアル−ATA、SCSI、FireWire(IEEE 1394)、イーサネット(登録商標)、ユニバーサルシリアルバス、SONET(「同期光ネットワーク」)、MIL−STD−1553、I2C(「Inter−Integrated Circuit」)、CAN−bus(「コントローラエリアネットワーク」)、ARINC 739(「Avionics Digital Video Bus」)、BACnet、及びLonWorksが挙げられるが、これらに限定されない。これらの基準としては、保健/医療通信基準(CEN ISO/IEEE 11073)も挙げられる。これらの例は、説明のみを目的とするものである。このため、他の基準を用いてもよい。
一連のコンピューティングデバイス104のために(例えば、これらに、これらから)データ及び情報を提供するために、コンピューティングデバイス104及び/又は1台若しくは2台以上のエッジサーバ106は、第1永続的接続103で中間サーバ110(接続サーバ110又はAPIサーバ110とも呼ばれ、110a、110b、110c、及び110dとして示す)と通信してよい。永続的接続、又は永続的接続性は、システム(例えば、中間サーバ110、エッジサーバ106)間の単一接続を指し、一度確立されると、システム間で複数の要求/応答を送受信するために使用される。
次に、接続サーバ110は、第2永続的接続105でプラットフォームサーバ102と通信する。本質的に、接続サーバ110は、第1永続的接続103及び第2永続的接続105をまたいで、プラットフォームサーバ102とコンピューティングデバイス104及び/又はエッジサーバ106との間の永続的パスを形成する、又は識別する。つまり、いくつかの実施例では、永続的パスは2つのシステムが相互に連結されている、1つ又は2つ以上の接続(例えば、永続的接続)を指す。いくつかの実施例では、接続サーバ110は、Unixベース(例えば、Amazon EC2 Linux(登録商標))又はWindowsベース(例えば、Windowsサーバ)のオペレーティングシステムを用いて、Oracle Java(登録商標) Runtime Environment又はJava(登録商標) Development KitでApache Tomcatを作動させる。
集合的に、プラットフォームサーバ102、接続サーバ110、エッジサーバ106、及び/又はコンピューティングデバイス104は、分散型コンピューティングシステムのフェデレーションを形成する。いくつかの実施例では、プラットフォームサーバ102は、所与のコンピューティングデバイス104への接続性を維持する、ビジネスロジックサーバである。かかる場合、プラットフォームサーバ102は、データ及び情報、例えば、コンピューティングデバイス104のデータ及び情報の検索、記憶、及び管理などサービス機能を提供するためのビジネスロジック及び/又は規則を含む様々なバックオフィスサーバを含んでよい、又はこれらと通信してよい。このため、プラットフォームサーバ102は、主として、様々なアプリケーション及びシステム(例えば、バックオフィスサーバ)並びにコンピューティングデバイス104と送受信したデータをルーティングする役割を果たしてよい。
いくつかの実施例では、プラットフォームサーバ102は、コンピューティングデバイス104の認証プロセスを管理する。
いくつかの実施例では、プラットフォームサーバ102は、様々なバックオフィスアプリケーション及びシステムと送受信したデータをルーティングする。例えば、特定のコンピューティングデバイス104からデータを受信したとき、プラットフォームサーバ102は、このデータを別のデータベースサーバ(例えば、バックオフィスアプリケーション及びシステム)にルーティングしてよい(例えば、ネットワーク内のパスを通じて伝送する)。他の実施形態では、サードパーティアプリケーションは、プラットフォームサーバによるデータ送信を要求する。
サーバなどバックオフィスシステムには、例えば、CRM/ERP(「顧客関係管理」及び/又は「エンタープライズリソースプランニング」)、データ解析、ビッグデータストア(例えば、Hadoop、データウェアハウス、及び様々な分散型ファイルシステム)、ID管理、課金、プロビジョニング、並びにウェブサービスの提供に使用するサードパーティ製品(例えば、ソフトウェア、ハードウェア)が含まれてよい。かかるバックオフィスシステムの例としてはSAP(登録商標)エンタープライズリソースプランニング(ERP)、Salesforce(登録商標)Customer Relationship Management、業務支援システム(OSS)、及び営業支援システム(BSS)などのコンポーネントが挙げられる。
様々なデータストレージ及びアプリケーションは、プラットフォームサーバ102と通信してよい。いくつかの実施例では、この通信は、ウェブサービス、Java(登録商標) Database Connectivity(JDBC)、又はネイティブAPIを使用して実行される。
いくつかの実施例では、接続サーバ110とエッジサーバ106及び/又はコンピューティングデバイス104との間での通信交換は、インターネット112a、広域ネットワーク112b、又はサードパーティネットワーク112cなどネットワークインフラストラクチャ112をまたいで生じる。次に、1台又は2台以上の接続サーバ110は、プラットフォームサーバ102と通信する。プラットフォームサーバ102、接続サーバ110、エッジサーバ106、及び/又はコンピューティングデバイス104は、集合的に分散型コンピューティングシステムを形成する。いくつかの実施例では、接続サーバ110は、一連のネットワークセキュリティ機器114を経由して、一連のエッジサーバ106、及び/又はコンピューティングデバイス104と通信する。セキュリティ機器は、オープンネットワークインフラストラクチャ112から接続サーバ110、プラットフォームサーバ102、エッジサーバ106、及びコンピューティングデバイス104を保護する。ネットワークセキュリティ機器114には、例えば、ファイアウォール又はネットワークアドレス変換(NAT)プロトコルが含まれてよい。
図2は、本発明の実施形態による、所与のプラットフォームサーバ102と所与のコンピューティングデバイス104との間に確立されている、例示的な永続的通信チャネル200のブロック図である。
いくつかの実施例では、プラットフォームサーバ102は、APIプロトコルライブラリ204(204aとして示す)を使用して、サーバ−クライアントアプリケーションを実行する。APIプロトコルライブラリは、チャネル200で通信を管理する。エッジサーバ106及び/又はコンピューティングデバイス104は、同一の通信APIプロトコルライブラリ204(204cとして示す)を実行するサーバ−クライアントアプリケーションを実行する。このため、プラットフォームサーバ102とエッジサーバ106及び/又はコンピューティングデバイス104との間でやり取りされるメッセージは、これらのメッセージが同一のメッセージ構造及び機能を共有するという点で、ほとんど対称である。
いくつかの実施例では、APIプロトコルライブラリ204は、バイナリダイナミックREpresentational State Transfer(REST)API、つまり「RESTful」APIである。バイナリダイナミックREST APIを使用した通信方法の例は、同時係属中の同時に出願された米国特許出願(名称「System and Method of Using Binary Dynamic Rest Messages」、2014年3月21日出願、指名発明者Rick Bullotta、John Canosa、Bob DeRemer、及びMike Mahoney、代理人整理番号2009132−0035号)に記載されている。この出願の内容は、その全体が参照により本明細書に援用される。
接続サーバ110は、送信元又は送信先をほとんど意識せずに、やり取りされた各メッセージを同一の方法で概ね提供する(例えば、処理する)ことができるため、メッセージの対称性は、接続サーバ110の動作の複雑性を低減することが意図されている。
いくつかの実施例では、接続に関するメタデータを含む各メッセージを生成するために、通信APIプロトコルが使用される。接続メタデータには、メッセージ識別子、認証セッション情報、及び/又はルーティング状態情報が含まれてよい。
いくつかの実施例では、接続サーバ110はとりわけ接続メタデータを使用して、エッジサーバ106(及び/又はコンピューティングデバイス104)とプラットフォームサーバ102との間で伝送されるメッセージの(具体的には、エッジサーバ106(及び/又はコンピューティングデバイス104)からプラットフォームサーバ102への受信メッセージの)ルーティング状態情報を保存する。このため、所与のエッジサーバ106(及び/又はコンピューティングデバイス104)及び所与のプラットフォームサーバ102のルーティング状態情報は、記憶されるのではなく、各メッセージ内でやり取りされ、したがって、サーバはステートレスであり得ることになる。つまり、ルーティング状態情報を記憶するのではなく、むしろ各メッセージと共にこの情報をやり取りするため、サーバはステートレスである。
加えて、いくつかの実施例では、接続サーバ110は接続メタデータして、所与の接続デバイスの認証セッション情報をプラットフォームサーバに伝達する。いくつかの実施例では、所与の接続デバイス(例えば、コンピューティングデバイス104)が(例えば、プラットフォームサーバ102によって)認証されると、認証セッション情報(例えば、セッションID番号)が接続サーバにおいて記憶され、(例えば、デバイス名によって)所与の接続デバイスと関連付けられる。実際、メッセージが所与のデバイス(例えば、コンピューティングデバイス104)から受信されると、接続サーバ110は、所与のデバイスの識別子(例えば、メッセージに埋め込まれたデバイス名)を接続サーバ110によって維持されている、認証デバイスのリストと比較する。記憶されたリスト内でデバイス名の一致を確認すると、接続サーバ110は、認証セッション情報(例えば、セッションID番号)をメッセージに挿入し、更新されたメッセージをプラットフォームサーバ102に転送する。いくつかの例示的実施例では、接続サーバ110はまた、エッジサーバ106及び/又はコンピューティングデバイス104に対応するエンドポイント識別子を挿入する。したがって、プラットフォームサーバ102は、所与のデバイスの認証セッション情報を維持する必要がない。
図3は、本発明の実施形態による、通信APIプロトコル204の例示的メッセージ構造300である。メッセージ構造300は、接続メタデータを提供するヘッダー302と、メッセージの内容(例えば、提供されるデータ)を提供するメッセージペイロード、つまり本体304と、を含んでよい。ヘッダー302は、エッジサーバ106及び/又はコンピューティングデバイス104からプラットフォームサーバ102への受信メッセージの基本伝送データを含んでよい。
いくつかの実施例では、ヘッダー302は、「SessionId 308」と呼ばれるセッションID番号308を含む。セッションID番号は一意の識別子であり、認証プロセスを経験しており、したがって、システムに認証される所与のデバイスのセッションを識別するために使用される。セッションID番号は、メッセージの送信元であるエンドポイントデバイス(例えば、コンピューティングデバイス104)の識別子(例えば、名前)、メッセージが受信される対応するエッジサーバ106、及び/又はメッセージが受信される接続(例えば、WebSocket接続)と関連付けられてよい。つまり、いくつかの実施例では、セッションID番号は、エンドポイントデバイス(例えば、エッジサーバ、コンピューティングデバイス)と関連付けられている永続的接続の接続ハンドルと関連付けられている。
接続サーバ110は、セッションID番号を使用して、プラットフォームサーバ102の代わりに認証セッション状態を管理してよい。いくつかの実施形態では、この関連性は、コンピューティングデバイス104のバインドパスを決定するために接続サーバ110によって使用される。
いくつかの実施例では、接続サーバ110は、所与のコンピューティングデバイス104の認証プロセス中にセッションID番号308を生成する。デバイス認証とは、あるシステム(例えば、コンピューティングデバイス104)が、別のシステム(例えば、プラットフォームサーバ102)が、実際に自身が主張するシステムであることを検証するプロセスを指す。認証プロセスは、パスワード、証明書、スマートカード、トークン、生体認証、近接性などを使用するものなど多数の技術を使用して達成されてよい。図5を参照しながら、認証プロセスの1つの例示的実施例を以下でより詳細に説明する。
認証プロセス中、接続サーバ204は、認証メッセージを受信すると、セッションID番号308を生成し、記憶する。いくつかの実施例では、接続サーバ204は、セッションID番号と関連付けられているカウンタなどを維持する。エンドポイントデバイス(例えば、エッジサーバ106、コンピューティングデバイス104)の認証要求を受信すると、接続サーバ204は、最新のカウンタ値をセッションID番号として使用してよい。接続サーバ204は、認証メッセージと併せてセッションID番号をプラットフォームサーバ102に転送し、認証メッセージは、そこで評価される。成功メッセージをプラットフォームサーバ102から受信すると、接続サーバ204は、ローカルテーブル、メモリ、データベースなどにセッションID番号308を記憶する。いくつかの実施例では、接続サーバ204は、セッションID番号と、エッジサーバ、WebSocket接続、及び/又はWebSocket接続を介してフェデレーションに接続されている任意のデバイスの名前のうちの1つ又は2つ以上との関連性を維持する。これは、好ましくは、エンドポイントデバイス及び/又はエッジサーバを含む。いくつかの実施例では、セッションID番号308は、好ましくは32桁長の2進数であり、最上位桁(MSB)が最初である。ただし、様々なデータ長及びエンディアンであり得る。
いくつかの実施例では、ヘッダー302は、「EndpointId 310」と呼ばれるエンドポイントID番号310を含んでよく、これは、エッジサーバ及び/又はコンピューティングデバイスからのメッセージが受信される所与の永続的接続200の接続ハンドルと関連付けられている。したがって、接続サーバは、エンドポイントID番号310を使用して永続的接続200の接続ハンドルを容易に取得することができる。エンドポイントID番号310は、好ましくは32桁長の2進数であり、最上位桁(MSB)が最初である。接続サーバ110はエンドポイントID番号を使用して、ステートレス接続サーバを経由した永続的接続の多重化により、そうしなければ失われるであろうルーティング状態情報を維持する。
ヘッダー302は、他の情報フィールドを含んで、メッセージングプロトコルの動作効率を更に向上してよい。いくつかの実施例では、ヘッダー302は、所与のメッセージと関連付けられている(及びこの所与のメッセージを識別するために使用される)要求ID番号306(「RequestId 306」と呼ばれる)を含む。要求ID番号306は、ランダムに生成されるか、増加的に生成されて、所与の永続的接続又は接続チャネル200で伝送されるメッセージに一意であってよい。要求ID番号306は、例えば、メッセージが処理されたかどうか(例えば、メッセージに含まれるサービス要求が満たされたかどうか)を決定するために使用されてよい。いくつかの実施例では、要求ID番号306は、好ましくは24桁長の2進数であり、最上位桁(MSB)が最初である。ただし、様々なデータ長及びエンディアンであり得る。いくつかの実施例では、1ビットの要求ID番号306は、メッセージ送信元の識別子として指定され、送信元のプラットフォームサーバ102、エッジサーバ106、及び/又はコンピューティングデバイス104を示す。これにより、要求ID番号306が必ず一意であるようにする。
いくつかの実施例では、ヘッダー302は、「Method code 312」と呼ばれるメッセージ型フィールド312を含んでよい。メッセージ型フィールド312は、1つ又は2つ以上のコードを含んで、受信メッセージ型(例えば、要求、応答、ステータス、受信確認など)を迅速に識別できるようにしてよい。受信確認又はエラーメッセージなど、より単純なメッセージでは、メッセージ型フィールド312は、メッセージペイロードを構成してよい。つまり、メッセージコードは、意図するやり取りの全体を構成する、受信確認又はエラーに対応し得るため、これらのメッセージは、メッセージ本体304内の他のデータを省略することができる。要求型のメッセージでは、メッセージ型フィールド312は、要求の型(例えば、get、put、post、delete、bind、authenticateなど)に対応するコードを含んでよい。いくつかの実施例では、要求型メッセージは、ハイパーテキスト転送プロトコル(HTTP)フレームワークに基づいてよい。
いくつかの実施例では、ヘッダー302は、「Multipart 314」と呼ばれるマルチパートメッセージフィールド314を含んでよい。このフィールドは、メッセージが同一の要求ID番号306を有するメッセージ群の一部であるかどうかを識別するために使用されてよい。
いくつかの実施例では、ヘッダー302は、「HeaderId 316」と呼ばれるヘッダーID番号316を含んでよい。このフィールドは、ヘッダー形式のバージョン番号を識別するために使用される。ヘッダーID番号316は、好ましくは8ビットの数である。
いくつかの実施例では、本体304は「エンティティ型」及び「エンティティ名」(例えば、データ又は要求の送信元に対応する)、「特性」フィールド、「ターゲット名」(例えば、データ又は要求の意図される受信者に対応する)、並びにメッセージ数を含む。
図4は、本発明の実施形態による、通信APIプロトコルによって使用される、例示的メッセージコードを示す。このコードとしては、HTTPベースの要求メッセージ318、HTTPベースの成功コード320、HTTPベースのサーバエラーコード322、及びHTTPベースのクライアントエラーコード324が挙げられる。
本発明の実施形態の一態様では、接続サーバ110は、プラットフォームサーバ102に送信される受信メッセージにルーティング状態情報を挿入する。ステートレス接続でルーティング状態情報を挿入すると、サーバ(例えば、接続サーバ110)によって記憶される情報量を減少させることによって、通常のステートフル接続での接続のパフォーマンスが向上する。つまり、各メッセージにルーティング状態情報を埋め込むことによって、接続サーバは往復のメッセージ転送を完了でき、いくつかの実施例では、ルーティング状態情報と関連付けられている接続ハンドルの検索のみを使用する。
本発明の実施形態の別の態様では、接続サーバ110は、プラットフォームサーバ102に送信される受信メッセージに認証セッション情報を挿入する(例えば、追加する、置換する)。メッセージに認証セッション情報を埋め込む際には、接続サーバ110は、プラットフォームサーバ102のために、所与の接続デバイス(例えば、コンピューティングデバイス104)の認証セッションの管理及び追跡を引き継ぐ。これによりリソースが解放され、プラットフォームサーバ102は他のタスクを実行して、例えば、好ましくはより多くのデバイスを管理する。
図5は、本発明の実施形態による、ステートレスな多重永続的接続で、プラットフォームサーバ102とエンドポイントデバイス104との間での通信交換に認証セッション情報及びルーティング状態情報を挿入する、例示的方法500のスイムレーン図である。当然のことながら、異なる目的(例えば、認証、削除、バインド)の様々な型のメッセージ(例えば、要求、応答)は、本明細書に記載のシステム及び/又は方法を使用して処理されてよい。
いくつかの実施例では、方法500は、コンピューティングデバイス104(エンドポイントデバイス「D1」と呼ばれる)をエッジサーバ106(エッジサーバ「E1」と呼ばれる)に登録する(工程501a)ことから始まる。いくつかの実施例では、登録は、ハンドシェイク、情報交換、又はエンドポイントデバイス「D1」とエッジサーバ「E1」との間に通信を確立する自動ネゴシエーションプロセスであってよい。エッジサーバ「E1」は、エンドポイントデバイスD1に接続するための通信ポートを含む電子デバイスである。
APIプロトコルライブラリ204を使用してクライアント側アプリケーションを実行しているエッジサーバ「E1」は、例えば、図3及び4に関して記載した要求メッセージ構造構造(「A」として示す)に従って認証要求メッセージ502bを準備する(工程502a)。要求メッセージ502bは、図3に関して記載した要求ID番号306に対応する「RequestId R1」(「R1」として示す)を更に含む。
エッジサーバ「E1」(106)は、エッジサーバ「E1」(106)と接続サーバ「A1」(110)との間に確立されている第1永続的接続で、認証要求メッセージ502bを接続サーバ110に送信する(工程502c)。
いくつかの例示的実施例では、エンドポイントデバイス(例えば、コンピューティングデバイス)104は、認証要求メッセージを準備し、エッジサーバと、又はこれ経由して最初に通信せずに、接続サーバ「A1」(110)に伝送する。
いくつかの実施例では、メッセージの本体(例えば、図3、メッセージペイロード304)は、認証メッセージ(「<Auth>」)として示す)を含む。認証メッセージは、エンドポイントデバイス「D1」(104)の名前(又は、名前識別子)及び対応するセキュリティコード、並びに併せて、適用される認証技術で使用される任意の他の情報を含んでよい。あるいは、いくつかの実施例では、認証名は、エッジサーバ「E1」(106)の名前識別子であってよい、名前識別子は、ランダムであっても、説明的であってもよい。名前識別子には、デバイスの所有者及び/又は種類を一部入れてもよい。例えば、John Doe Medical Institute所有の心電図装置番号123は、「JohnDMedInt_EKG_Dev_123」という説明的な名前識別子を有してよい。図10を参照しながら以下でより詳細に説明するように、名前又は名前識別子は、非アドレス可能識別子である。
いくつかの実施例では、認証名及び対応するセキュリティコードは、UTF8データ型文字列(「Unicode標準8ビット」)形式である。この文字列は任意の長さであってよく、メッセージでは、UTF8形式での文字列長に対応する長さ値が前に挿入されてよい。対応するセキュリティコードは、例えば、「GoodPassWord123」などパスワードであってよい。当然のことながら、様々な値及び長さを用いてよい。他の実施例では、認証メッセージ(「<Auth>」)はセキュリティキーであり、エッジサーバ「E1」の名前識別子と関連付けられているトークンを使用して生成される、暗号化データ文字列であってよい。様々な従来の認証技術が用いられてよい。
いくつかの実施例では、エッジサーバ「E1」(106)(及び/又はエンドポイントデバイス「D1」(104))は、名前及び認証要求メッセージで使用される、対応するパスワードに加えて、第2セットの認証資格情報を使用する。第2セットの認証資格情報は、エッジサーバ「E1」(106)(及び/又はエンドポイントデバイス「D1」(104))に固有であってよくて、非認証コンピューティングデバイスがバインドされないようにする。
更に図5を参照すると、いくつかの実施例では、認証要求メッセージ502bの受信時に、接続サーバ「A1」(110)は、メッセージ502eを生成するために「SessionId S1」(図5に「s1」として示す)及び「EndpointId e1」(「e1」として示す)を受信メッセージ502bに挿入する(工程502d)。次に接続サーバ「A1」(110)は、接続サーバ「A1」(110)とプラットフォームサーバ「P1」(102)との間に確立されている第2永続的接続で、メッセージ502eをプラットフォームサーバ102(プラットフォームサーバ「P1」(102)と呼ばれる)に送信する(工程502f)。図3に関して記載したように、「EndpointId e1」は、第1永続的接続の接続ハンドルと関連付けられているエンドポイントID番号310に対応してよい。「EndpointId e1」は、接続サーバ「A1」(110)によって受信メッセージが取得される通信チャネルの、及び/又はそれと関連付けられている接続ハンドル(例えば、WebSocketハンドル)などの取得に使用される識別子であってよい。これもまた図3に関して記載したように、「SessionId s1」は、エッジサーバ「E1」及び/又はエンドポイントデバイス「D1」(104)への接続と関連付けられているセッション番号と関連付けられている、セッションID番号に対応してよい。SessionId s1は、エンドポイントデバイス及び/又はエッジサーバの認証セッション状態を示す。
いくつかの実施例では、受信された認証メッセージ502bは、ヘッダーフィールド308及び310にNULL値又はEMPTY値を有する。このため、「SessionId s1」及び「EndpointId e1」は、そこで値(例えば、NULL)を置換することができる。他の実施例では、受信メッセージ502bは、「SessionId s1」及び「EndpointId e1」に連結される。当然のことながら、データストリームへのデータの様々な挿入方法(例えば、追加(adding)、追加(appending)、挿入、置換)が用いられてよい。
次に、メッセージ502eを受信すると、プラットフォームサーバ「P1」(102)は認証メッセージ(<「AUTH」>)を処理する(工程504a)。いくつかの実施例では、プラットフォームサーバ「P1」(102)は、(例えば、検索を実行することによって)維持する認証レジストリを使用して、エンドポイントデバイス「D1」(104)の資格情報を認証する。他の実施例では、プラットフォームサーバ「P1」(102)は、メッセージをバックオフィス認証サーバ(図示なし)にルーティングして、認証を実行してよい。以下の表1は、非アドレス可能名前識別子及びセキュリティコードを使用してデバイスを認証するための例示的認証レジストリを示す。
次に、プラットフォームサーバ「P1」(102)は、戻りメッセージ506bを準備する(工程506a)。戻りメッセージ506bは、認証プロセス(例えば、成功又は失敗)に関してであってよい、又はメッセージの受信の確認(例えば、受信成功又は受信エラー)であってよい。このため、戻りメッセージ506bは、図4に関して記載したように、ステータスコードであってよい。
いくつかの実施例では、プラットフォームサーバ102は、要求メッセージ502eで受信された「RequestId R1」、「SessionId s1」、及び/又は「EndpointId e1」を含む戻りメッセージ506bを準備する。本質的に、プラットフォームサーバ「P1」(102)は、受信メッセージのメタデータ情報を用いて、受信確認、つまり成功を示す戻りメッセージに含め、これをルーティングする。次いで、プラットフォームサーバ「P1」(102)は、第2永続的接続で接続サーバ110にメッセージ506bを送信する(工程506c)。
いくつかの実施例では、メッセージ506bを受信すると、接続サーバ「A1」(110)は、認証セッションと関連付けられているテーブル、データベース、バッファなどにエンドポイントデバイス「D1」104のデバイス名に関連する「SessionId S1」を記憶する。接続サーバ110は、かかるテーブル、データベース、バッファなどを用いて、受信メッセージが認証エンドポイントに属している、及び/又は認証エンドポイントと関連付けられていることを確認し、したがって、プラットフォームサーバ102にリレーすることができる。接続サーバ「A1」(11)は、エンドポイントデバイス及び/又はエッジサーバ(例えば、ゲートウェイの役割を果たす)への接続など、各ダウンストリーム接続(例えば、WebSocket接続)のためにセッションID番号「SessionID S1」を維持してよい。いくつかの実施例では、接続サーバは、例えば、プラットフォームサーバなどへのアップストリーム接続(例えば、WebSocket接続)のためにセッションID番号を維持する。
加えて、いくつかの実施例では、メッセージ506bを受信すると、接続サーバ「A1」(110)は「EndpointId e1」を使用して、メッセージ506bをエッジサーバ「E1」(106)に転送する接続を識別する(工程506d)。このため、エッジサーバ又はエンドポイントデバイスに戻り送信メッセージをルーティングするために、接続サーバ「A1」(110)での実行が必要な追加処理はない。いくつかの実施例では、「EndpointId e1」は、永続的接続と関連付けられている接続ハンドルにインデックスが付けられる。このインデックスは、ハッシュテーブル内の接続サーバ「A1」(110)にあってよいか、そこに記憶されてよい。次に、メッセージ506bは、取得された接続ハンドルを使用してエッジサーバ「E1」(106)に転送される(工程506e)。このため、多重永続的接続パラダイムを経由する往復ルーティングの状態情報を維持することは、所与の永続的接続と関連付けられている識別子(例えば、エンドポイント識別子)の単回ハッシュテーブル(など)検索、メッセージヘッダーにエンドポイント識別子を挿入する単回書き込み機能、メッセージをルーティングする永続的接続の接続ハンドルを取得するメッセージヘッダーの単回読み取りを集合的に用いてよい。
いくつかの実施例では、接続サーバ「A1」(110)及び/又はエッジサーバ「E1」(106)は、エンドポイントデバイス「D1」(104)にメッセージを送信して、登録プロセスの成功を確認する(工程506f)。
更に図5を参照すると、いくつかの実施例では、メッセージはバインド要求を含む。いくつかの実施例では、バインドプロセス(例えば、バインド要求の処理)は、認証プロセスの後で実行される。バインドプロセスは、1つ又は2つ以上のネットワーク及びシステム(例えば、サーバ)全体で、エンドポイントデバイス「D1」(104)とプラットフォームサーバ「P1」(102)との間でパスをバインドして、好ましくは、プラットフォームサーバ102からエッジサーバ及び/又はエンドポイントデバイスへの送信メッセージ/要求の伝達を可能にする。パスに沿った各ノード(例えば、サーバ)において、バインドプロセスは、エンドポイントデバイスに至る、各永続的接続の接続ハンドルを関連付ける。
バインドプロセスは、接続メタデータの使用と相乗的であり、接続メタデータなどルーティングメタデータによって、プラットフォームサーバからのメッセージが、迅速、正確、かつ効率的にエンドポイントデバイスに戻ることができるようになる。しかしながら、バインドプロセスによって、メッセージ内に情報が位置するのではなく、フェデレーション内の対応のサーバ(例えば、接続サーバ及びエッジサーバ)に情報維持されるようになる。
更に図5を参照すると、いくつかの実施例では、エッジサーバ「E1」(106)はバインド要求メッセージを準備し(工程508a)、第1永続的接続で接続サーバ「A1」(110)にメッセージ508bを送信する(工程508c)。エッジサーバ「E1」(106)は、「RequestId R2」を生成する。いくつかの実施例では、バインド要求メッセージ508bは、図4に関して記載し、メッセージ508bで「B」と示すように、「BIND」要求コードを含む。バインド要求メッセージ508bは、図5で「<name>」として示すように、ペイロード、エンドポイントデバイス「D1」(104)の名前識別子を含んでよい。いくつかの実施例では、エッジサーバ「E1」は、バインドされているエンドポイントデバイスのリストを維持する。いくつかの例示的実施例では、エンドポイントデバイス「D1」はバインド要求メッセージを準備し、第1永続的接続で接続サーバ「A1」(110)に送信する。
いくつかの実施例では、バインド要求メッセージ508bを受信すると、接続サーバ「A1」(110)は、エンドポイントデバイスの名前を認証セッションのリストと比較し、一致すると、「SessionId S1」(図5に「s1」として示す)及び「EndpointId e1」(「e1」として示す)を受信メッセージ508bに挿入して、メッセージ508eを生成する(工程508d)。
接続サーバ「A1」(110)は、受信メッセージがバインド要求であることを決定する。このため、接続サーバ「A1」(110)は、バインド要求メッセージ内に位置する名前識別子をそのバインドレジストリに追加する。バインドレジストリでは、名前識別子は、第1永続的接続の接続ハンドル、エンドポイントID、及びセッションIDと関連付けられていてよい。例えば、名前識別子は、接続ハンドルを有するハッシュテーブル(など)のインデックス値として使用される。以下の表2は、サーバ(例えば、接続サーバ「A1」(110))の例示的バインドレジストリを示す。
次に、接続サーバ「A1」(110)は、第2永続的接続で、バインド要求メッセージ508eをプラットフォームサーバ「P1」(102)に送信する(工程508f)。当然のことながら、いくつかの例示的実施例では、複数のデバイス(例えば、「Hospital_VendMach」及び「Store_POSDev」)は、エッジサーバ「E1」と接続サーバ「A1」との間の接続など同一の永続的接続(例えば、「Persist_ConnectA1」)と関連付けられてよい。いくつかの例示的実施例では、エンドポイントID(例えば、「epID1」)及びセッションID(「sessID1」)は、同一の永続的接続と関連付けられていてよい。
いくつかの実施例では、バインド要求メッセージ508eを受信すると、プラットフォームサーバ「P1」(102)はバインド要求を処理する(工程510a)。例えば、第2永続的接続の接続ハンドルと関連するバインドレジストリに名前識別子を追加してよい。いくつかの例示的実施例では、プラットフォームサーバは、デバイス名と関連付けられているエンドポイントIDを記憶してよい。以下の表3は、サーバ(例えば、プラットフォームサーバ「P1」(102))の例示的バインドレジストリを示す。
いくつかの実施例では、プラットフォームサーバ「P1」(102)は、成功メッセージ512bを準備する(工程512a)。プラットフォームサーバ「P1」(102)は、第2永続的接続で成功メッセージ512bを接続サーバ「A1」(110)に送信する。これは、名前識別子及び/又はEndPointIDを使用して取得した接続ハンドルに基づいて、決定されてよい。メッセージ512bを受信すると、接続サーバ「A1」(110)は、「EndpointId e1」を使用して、対応する接続ハンドルと関連付けられている永続的接続を識別してよい。接続サーバ「A1」(110)は、バインドレジストリを使用して識別された永続的接続(例えば、第1永続的接続)で、エッジサーバ「E1」(106)及び/又はエンドポイントデバイス「D1」にメッセージ512eを転送する(工程512f)。
図6は、本発明の実施形態による、ステートレス永続的接続での、プラットフォームサーバ102からの通信方法のスワンレーン図である。
いくつかの実施例では、方法600は、プラットフォームサーバ「P1」(102)が、図3のメッセージ構造に従って、エッジサーバ「E1」(106)及びエンドポイントデバイス「D1」のために要求メッセージ606bを準備する(工程606a)ことから始まる。
プラットフォームサーバ「P1」(102)は、バインドレジストリから決定された接続ハンドルを使用して、第2永続的接続で、要求メッセージ606bを接続サーバ「A1」(110)に送信する。
いくつかの実施例では、メッセージ606bを受信すると、接続サーバ「A1」(110)は、メッセージがプラットフォームサーバ「P1」(102)からの送信メッセージであることを決定する。この決定は、第2永続的接続の接続ハンドルに基づいていてよい、又はメッセージ606b内でのエンドポイントID又はセッションID番号308の存在に基づいてよい。接続サーバ「A1」(110)は、第2永続的接続の受信した接続ハンドルと関連付けられている「EndpointId e2」を挿入してよい(工程606d)。接続サーバ「A1」(110)は、メッセージ606b内の(例えば、エッジサーバ「E1」又はエンドポイントデバイス「D1」の)名前識別子及びバインドレジストリに記憶されている、対応する接続ハンドルを使用して、メッセージ606bに適切な永続的接続を識別してよい。次いで、接続サーバ「D1」(110)は、識別された接続ハンドルを使用して、メッセージ606eを適切なエッジサーバ「E1」(106)及び/又はエンドポイントデバイス「D1」に転送する(工程606f)。
メッセージ606eを受信すると、エッジサーバ「E1」(106)及び/又はエンドポイントデバイス「D1」(110)は、メッセージのペイロード304で要求されたデータを使用し(工程608a)、そのキューからデータサービス要求を削除する。エッジサーバ「E1」(106)及び/又はエンドポイントデバイス「D1」(110)は、成功/受信確認メッセージ610aを生成してよく(工程608a)、第1永続的接続で成功/受信確認メッセージ610aを接続サーバ「A1」に送信する。
接続サーバ「A1」(110)はメッセージ610aを受信し、「EndpointId e2」を使用して、第2永続的接続でこのメッセージをプラットフォームサーバ「P1」(102)へとリレーする。いくつかの実施例では、受信確認メッセージ610aを受信すると、プラットフォームサーバ「P1」(102)は、要求メッセージをそのキューから削除する。
図7は、本発明の実施形態による、接続サーバ110の例示的制御方法700のフローチャートである。いくつかの実施例では、制御は、接続サーバ110で動作するクライアント側アプリケーションから実行されるポリシーに基づいている。ポリシーとしては、例えば、規則ベースの方法、状態機械、モデルベースの制御、及び/又は順序論理が挙げられる。
メッセージを受信する(工程702)と、図5及び6に関して記載したように、接続サーバ110は、エンドポイントID番号310がメッセージ内に存在するかどうかを決定する(工程704)。いくつかの実施例では、エンドポイントID番号310は、メッセージヘッダー302内の固定フィールドに位置する。他の実施例では、接続サーバ110は、メッセージを解析して情報(例えば、エンドポイントID番号310)を取得する。メッセージ内でendpointId 310が識別されると、接続サーバ102は、図3、5、及び6に関して記載したように、endpointId 310を使用してメッセージをルーティングしてよい。
endpointId 310がNULL又は空の場合、接続サーバ110は、メッセージが受信されたチャネルと関連付けられている接続ハンドルと関連付けられているエンドポイントID番号を挿入してよい。
次に、接続サーバ110はメッセージのメソッドコード312をチェックして、メッセージ型(例えば、認証メッセージ、バインド/バインド解除メッセージ、要求メッセージ)を決定してよい(工程710、718、724)。
メッセージ型が認証メッセージである(工程710)場合、図5及び6に関して記載したように、接続サーバ110は、セッションID番号308をメッセージに挿入してよい(工程712)。接続サーバ110は、図5に関して記載したように、endpointId 310、SessionId 308、及び接続の接続ハンドルをバインドして(工程714)、メッセージをプラットフォームサーバ102に転送してよい(工程716)。
メッセージ型がバインドメッセージ又はバインド解除メッセージである(工程718)場合、接続サーバ110は、メッセージ内に位置する名前識別子をそのバインドレジストリにバインドし(又は、バインド解除メッセージの場合は、バインドレジストリからメッセージ内の名前識別子の関連付けを解除する、又はこれを削除し)(工程720)、メッセージをプラットフォームサーバ102に転送してよい(工程722)。
メッセージ型が要求型メッセージではない(工程724)場合、接続サーバ110は、メッセージをプラットフォームサーバ102に転送してよい(工程726)。
メッセージ型が要求型メッセージである場合、接続サーバ110は、要求メッセージをチェックして、SessionIdが存在するかどうかを決定してよい(工程728)。存在する場合、接続サーバ100は、バインドレジストリを使用してメッセージを対応のエッジサーバ106にルーティングして、適切な接続ハンドルであるかどうかを決定してよい。存在しない場合、接続サーバ110は、メッセージ内のnameIdを使用してSessionIdを取得し(工程732)、SessionIdをメッセージに挿入し(工程734)、要求メッセージをプラットフォームサーバに転送してよい(工程736)。
図8は、本発明の実施形態による、バインド及び再バインド方法を示す。バインドすることにより、所与のコンピューティングデバイス104は、フェデレーション(例えば、一連のネットワーク及び/又はシステム)のサービス提供を受けることができるものの、デバイスの自身の位置に関する何らかの知識又はフェデレーション内のノードに関するネットワーキング若しくはネットワーキングの何らかの詳細を有することなく、フェデレーション内の任意のエンドポイントデバイスに接続される。このため、フェデレーションのおかげで、永続的接続アーキテクチャ内の中間サーバに関係なく、コンピューティングデバイスからのメッセージをプラットフォームサーバに自由にルーティングすることができる。
この方法は、図5に関して記載したように、所与のコンピューティングデバイス104、すなわち、エンドポイントデバイス104aがエッジサーバ106aに登録されることから始まる。エッジサーバ106aは、永続的接続103aで、バインド要求を接続サーバ110aに送信する。バインド要求は、バインドリストに記載されているエンドポイントデバイス104の名前識別子を含んでよい。いくつかの例示的実施例では、コンピューティングデバイス104は、バインド要求をエッジサーバ106aに伝送して接続サーバ110aにリレーするのではなく、接続サーバ110aに伝送する。接続サーバ110aは、永続的接続105aでバインド要求802をプラットフォームサーバに転送する。接続サーバ110aは、エンドポイントデバイス104aを永続的接続103aと関連付け、バインドレジストリにその関連性を記憶する。この関連性は、永続的接続の接続ハンドルに基づいていてよい。バインドレジストリは、データテーブル又はハッシュテーブルであってよい。プラットフォームサーバ102aは、エンドポイントデバイス104aを永続的接続105aと関連付け、バインドレジストリにその関連性を記憶する。このため、要求メッセージをエンドポイントデバイス104aに送信するとき、プラットフォームサーバ102aは、エンドポイントデバイス104aと関連付けられている永続的接続105aを取得する。
エンドポイントデバイス104aがエッジサーバ106(例えば、106a)を介して接続サーバ110aにバインドされる場合、エンドポイントデバイス104aが別のエッジサーバ、すなわちエッジサーバ106cに移動すると、エンドポイントデバイス104aは、エッジサーバ106aでの登録を解除する。つまり、エッジサーバ106aは、バインドされているパス(103a、105a)を経由してプライマリサーバ102aにバインド解除要求を送信する。バインド解除要求によって、エンドポイントデバイス104aは、接続サーバ110a及びプラットフォームサーバ102aのバインドレジストリから削除される。エンドポイントデバイス104aはエッジサーバ106cに登録し、同一のバインドプロセスを繰り返す。
図9は、本発明の実施形態による、システム100を使用したネットワーク900のブロック図である。ネットワーク900は、図2で記載したように、バックエンドオフィスコンポーネントを含んでよい。
いくつかの実施例では、ネットワーク900は、1台又は2台以上の永続サーバ902を含む。この永続サーバは、ルーティングサーバ102として示すプラットフォームサーバ102に送信されるデータからの負荷を共有できる。永続サーバ902は、ストリーム及びデータテーブルなど特定種類の永続オブジェクトを用いてよい。ストリーム及びデータテーブルの例は、米国特許出願公開第13/678,885号(名称「Methods for Dynamically Generating Application Interface for Modeled Entity and Devices Thereoff」、2012年11月16日)に記載されている。この出願の内容は、その全体が参照により本明細書に援用される。
いくつかの実施例では、ネットワーク900は、図2に関して記載したように、CRM/ERPなど1台又は2台以上のバックオフィスサーバ904を含んでよい。
いくつかの実施例では、ネットワーク900は、1つ又は2つ以上のビッグデータ及びデータストア906を含んでよい。かかるサーバ906は、Java(登録商標) Database Connectivity(JDBC)又はネイティブAPIなどウェブプロトコルを使用してプラットフォームサーバ102と通信してよい。いくつかの実施例では、プラットフォームサーバ102は、データが所与のコンピューティングデバイス104から受信されると、適切なデータベースにデータをルーティングするイベントを処理してよい。あるいは、サードパーティアプリケーションは、イベントを開始してよい。
図10は、本発明の実施形態による、ステートレス永続的接続で、プラットフォームサーバ102とエンドポイントデバイス104との間での通信交換に状態情報及びルーティング情報を挿入する、例示的方法1000のフローチャートである。ステートレス永続的接続の例は、Web−Socket接続である。エンドポイントデバイスは、エッジサーバ106又はコンピューティングデバイス104であってよい。方法1000は、1台又は2台以上の中間サーバ110に接続されている、1台又は2台以上のプラットフォームサーバ102を含んでよい。中間サーバ110のそれぞれは、プラットフォームサーバ102に接続され、これとの永続的接続200aを維持してよい。中間サーバ110はまた、複数のエッジサーバと通信し、これらとの多数の一意の永続的接続200bを維持してよい。
いくつかの実施例では、所与の中間サーバ110のポートは、第1永続的接続200bで所与のエッジサーバ106からのサービス要求を受信する(工程1002)。中間サーバ110のプロセッサは、ルーティング状態識別子をサービス要求に挿入する(工程1004)。ルーティング状態識別子は、第1永続的接続の接続IDと関連付けられている。中間サーバ110は好ましくは「ステートレス」であるため、所与の要求メッセージと関連付けられている状態情報を保持しない。かかる実施例では、中間サーバ110は、好ましくは、類似の要求メッセージが以前送信されたかどうか、メッセージはどの一連のメッセージアクションに属するのか、及びメッセージの送信元に関する知識を維持しない。換言すると、中間サーバ110は、受信メッセージに沿って転送した後で、所与のメッセージを破棄する(例えば、記憶しない)。
かかるステートレスパラダイムでは、中間サーバ110がより少ない命令セットかつより少ないメモリ使用量要件で動作するように構成され得るため、中間サーバ110の負荷が低減されてよい。このため、所与の接続に必要なリソースが低減し、所与の中間サーバ110は、かかる状態情報を維持するという、追加のオーバーヘッド作業を行う他のハードウェアシステムと比較して、より多くの数のコンピューティングデバイス104にサービスを提供できる。いくつかの実施例では、所与のルーティング状態識別子は、ヘッダー402など各要求メッセージのヘッダー部分に挿入される。
中間サーバは、コンピューティングデバイス104の認証セッションと関連付けられている第2状態識別子をそのメモリに維持する。第2状態識別子は、コンピューティングデバイス104と関連付けられている名前値と関連付けられていてよい。いくつかの実施例では、中間サーバ110は、ハッシュテーブルなどで関連性を維持してよい。このテーブルは、名前値を使用して、第2状態識別子(例えば、セッションID番号)及びエンドポイントデバイスの名前(例えば、デバイス名/非アドレス可能識別子)にインデックスを付けてよい。
いくつかの実施例では、第2状態識別子はまた、第1永続的接続の接続IDと関連付けられている。この関連性は、中間サーバ110のローカルメモリに記憶されてよい。
いくつかの実施例では、名前値は、好ましくは非アドレス可能識別子又は非ネットワークベースアドレス可能識別子である。名前値は、例えば、Uniform Resource Identifier(URI)又はインターネットプロトコル(IP)アドレスであり得る、ネットワーク可能識別子ではなく、ネットワークアドレスとは無関係の数列又は文字列など非アドレス可能識別子である。
いくつかの実施例では、中間サーバ110は、第2永続的接続でサービス要求をプラットフォームサーバ102に伝達する(工程1006)。
いくつかの実施例では、中間サーバ110は、第2永続的接続200aで応答メッセージを受信する。応答メッセージは、サービス要求に応じてプラットフォームサーバによって生成され、セッション識別子を含んでよい(工程1008)。
いくつかの実施例では、中間サーバ110は、セッション識別子を使用して第1永続的接続の接続IDを取得する(工程1010)。セッション識別子は、サービス要求で伝達されたセッション識別子と同一である。
いくつかの実施例では、中間サーバ110は、エッジサーバ及び/又はコンピューティングデバイスと接続された多数の永続的接続から選択された接続に応答メッセージをルーティングする(工程1012)。選択された接続は、取得した接続IDに基づいていてよい。
図11は、本発明の実施形態による、永続的接続での2つのネットワークノードと中間ノードとの例示的通信方法1100のフローチャートである。いくつかの実施例では、方法1100は、工程1102における初期化状態から開始され、2つのネットワークノードは、プラットフォームサーバ102及びエンドポイントデバイス(例えば、コンピューティングデバイス104)を含んでよい。方法1100は、1台又は2台以上の中間サーバ110に接続されている、1台又は2台以上のプラットフォームサーバ102を含んでよい。中間サーバ110のそれぞれは、プラットフォームサーバ102に接続され、これとの永続的接続200aを維持してよい。中間サーバ102はまた、複数のエッジサーバ106及び/又はコンピューティング(例えば、エンドポイント)デバイスと通信し、これらとの多数の一意の永続的接続200bを維持してよい。
いくつかの実施例では、プラットフォームサーバ102は、初回インスタンスにおいて、エンドポイントデバイス104をプラットフォームサーバ102にバインドする(工程1104)。第1インスタンスにおいてバインドすることにより、ネットワーク上で第1パスに関連付けてよい。第1パスは、1台又は2台以上の中間サーバをまたいで、いくつかの例示的実施例では、1台又は2台以上のエッジサーバをまたいで、エンドポイントデバイス104とプラットフォームサーバ102との間に規定されてよい。
いくつかの実施例では、プラットフォームサーバ102は、第1パスに沿って第1メッセージをエンドポイントデバイス104に伝達する(工程1106)。
いくつかの実施例では、プラットフォームサーバ102は、第2インスタンスにおいて、エンドポイントデバイス104をプラットフォームサーバ102に再バインドする(工程1108)。これは、エンドポイントデバイス104が、(例えば、第1パス以外のパスをまたいで位置するエッジサーバとバインドすることによって)第1パスの外側を有した後で生じてよい。
いくつかの実施例では、プラットフォームサーバ102は、第2パスに沿って第2メッセージをエンドポイントデバイスに伝達する(工程1110)。このため、エンドポイントデバイスは、それ自身の位置に関する知識を有さずに、様々な地理的場所を移動できる。それどころか、ネットワークは、エンドポイントデバイス104の側に関する何らかの知識又は位置情報を有さずに、プラットフォームサーバに対してメッセージを送受信するためのパスを検出してよい。
図12は、本発明の実施形態による、プラットフォームサーバと複数のエンドポイントデバイス(例えば、エンドポイントデバイス104)との例示的通信方法1200のフローチャートである。いくつかの実施例では、方法1200は、初期化状態で開始される(工程1202)。いくつかの実施例では、プラットフォームサーバ102は、第1エンドポイントデバイス104aから第1データメッセージを受信する。第1データメッセージは、第1永続的接続105aで第1エンドポイントデバイス104aから第1中間サーバ110aに送信され(工程1204)、第2永続的接続103aでプラットフォームサーバ102に送信される。
いくつかの実施例では、プラットフォームサーバ102は、第2エンドポイントデバイス104aから第2データメッセージを受信する。第2データメッセージは、第3永続的接続105bで第2エンドポイントデバイス104bから第2中間サーバ110bに送信され(工程1206)、第4永続的接続103bでプラットフォームサーバ102に送信される。
第1中間サーバ110a及び第2中間サーバ110bのそれぞれは、エンドポイントデバイス104とプラットフォームサーバ102との間での認証セッション及び接続性の両方を管理してよい。
いくつかの実施例では、プラットフォームサーバ102は、第1データメッセージ及び第2データメッセージ(工程1208)を提供する。プラットフォームサーバ102は、メッセージをバックオフィスサーバにルーティングすることによって、第1データメッセージ及び第2データメッセージを提供してよい。図2に関して記載したように、バックオフィスサーバとしては、例えば、永続サーバ、データベースサーバ、顧客関係管理(CRM)サーバ、エンタープライズリソースプランニング(ERP)サーバ、業務支援システム(OSS)サーバ、営業支援システム(BSS)サーバ、データウェアハウスなどが挙げられてよい。
図13は、本開示に記載の技術を実施するために使用できる、コンピューティングデバイス1300及びコンピューティングデバイス1350の例を示す。コンピューティングデバイス1300は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、及び他の適切なコンピュータなど様々な形式のデジタルコンピュータを表すことを意図する。モバイルコンピューティングデバイス1350は、携帯情報端末、携帯電話、スマートフォン、及び他の類似のコンピューティングデバイスなど様々な形式のモバイルデバイスを表すことを意図する。本明細書に示すコンポーネント、これらの接続及び関係、並びにこれらの機能は、例示することのみを意味し、限定することは意味しない。
コンピューティングデバイス1300は、プロセッサ1302と、メモリ1304と、記憶装置1306と、メモリ1304及び複数の高速拡張ポート1310に接続している高速インターフェース1308と、低速拡張ポート1314及び記憶装置1306に接続している低速インターフェース1312と、を含んでよい。プロセッサ1302、メモリ1304、記憶装置1306、高速インターフェース1308、高速拡張ポート1310、及び低速インターフェース1312のそれぞれは、様々なバスを使用して相互に接続されており、共通マザーボードに、又は他の適切な方法で取り付けられてよい。プロセッサ1302は、メモリ1304又は記憶装置1306に記憶されて、高速インターフェース1308に接続されているディスプレイ131など外付け入出力デバイスでGUIのグラフィカル情報を表示するなど、コンピューティングデバイス1300内で実行する命令を処理できる。他の実施例では、複数のプロセッサ及び/又は複数のバスが、複数の、様々な種類のメモリと共に、必要に応じて使用されてよい。また、複数のコンピューティングデバイスが接続されてよく、各デバイスは、(例えば、サーババンク、一連のブレードサーバ、又はマルチプロセッサシステムとして)必要な作業の一部を提供する。
メモリ1304は、コンピューティングデバイス1300内の情報を記憶する。いくつかの実施例では、メモリ1304は、1つ又は2つ以上の揮発性メモリユニットである。いくつかの実施例では、メモリ1304は、1つ又は2つ以上の非揮発性メモリユニットである。メモリ1304はまた、磁気ディスク又は光ディスクなど、別の形式のコンピュータ読み取り可能な媒体である。
記憶装置1306は、コンピューティングデバイス1300に大容量ストレージを提供することができる。いくつかの実施例では、記憶装置1306は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、又はテープデバイスなどコンピュータ読み取り可能な媒体、フラッシュメモリ若しくは様々なソリッドステートメモリデバイス、又はストレージエリアネットーワーク内のデバイス若しくは様々な構成のデバイスなどデバイスアレイであってよい、又はこれらを含んでよい。命令は、情報キャリアに記憶され得る。命令は、1台又は2台以上の処理装置(例えば、プロセッサ1302)による実行時に、上述したような1つ又は2つ以上のメソッドを実行する。命令はまた、コンピュータ又はマシン読み取り可能媒体(例えば、メモリ1304、記憶装置1306、又はプロセッサ1302上のメモリ)など1台又は2台以上の記憶装置によって記憶され得る。
高速インターフェース1308は、コンピューティングデバイス1300のために帯域幅を集中的に使用する動作を管理し、一方、低速インターフェース1312は、帯域幅をあまり集中的に使用しない動作を管理する。かかる機能の割り当ては、例示のみを目的とするものである。いくつかの実施例では、高速インターフェース1308は、メモリ1304、ディスプレイ1316(例えば、グラフィックプロセッサ又はアクセラレータを経由して)、及び様々な拡張カード(図示なし)に対応してよい高速拡張ポート1310に接続される。実施例では、低速インターフェース1312は、記憶装置1306及び低速拡張ポート1314に連結される。様々な通信ポート(例えば、USB、Bluetooth(登録商標)、イーサネット(登録商標)、無線イーサネット(登録商標))を含んでよい低速拡張ポート1314は、キーボード、ポインティングデバイス、スキャナーなど1つ又は2つ以上の入出力デバイス、又はスイッチ若しくはルーターなどネットワーキングデバイスに、例えば、ネットワークアダプタを経由して接続されてよい。
コンピューティングデバイス1300は、図に示すように、多数の異なる形式で実施されてよい。例えば、標準的なサーバ1320として、又はかかるサーバ群で何回も実施されてよい。加えて、ラップトップコンピュータ1322などパーソナルコンピュータとして実施されてよい。また、ラックサーバシステム1324の一部として実施されてよい。あるいは、コンピューティングデバイス1300のコンポーネントは、モバイルコンピューティングデバイス1350などモバイルデバイス(図示なし)の他のコンポーネントと組み合わされてよい。かかるデバイスのそれぞれは、コンピューティングデバイス1300及びモバイルコンピューティングデバイス1350のうちの1つ又は2つ以上を含んでよく、システム全体は、互いに通信する、複数のコンピューティングデバイスで構成されてよい。
モバイルコンピューティングデバイス1350は、他のコンポーネントの中でも、プロセッサ1352と、メモリ1364と、ディスプレイ1354など入出力デバイスと、通信インターフェース1366と、トランシーバ1368と、を含んでよい。モバイルコンピューティングデバイス1350はまた、マイクロドライブ又は他のデバイスなど記憶装置を備えて、更なるストレージを提供してよい。プロセッサ1352、メモリ1364、ディスプレイ1354、通信インターフェース1366、及びトランシーバ1368のそれぞれは、様々なバスを使用して相互に接続され、いくつかのコンポーネントは、必要に応じて、共通マザーボードに、又は他の方法で搭載される。
プロセッサ1352は、メモリ1364に記憶された命令など命令をモバイルコンピューティングデバイス1350内で実行できる。プロセッサ1352は、別個の、複数のアナログ及びデジタルプロセッサを含むチップのチップセットとして実施されてよい。プロセッサ1352は、例えば、ユーザーインターフェース、モバイルコンピューティングデバイス1350によって実行されるアプリケーション、及びモバイルコンピューティングデバイス1350による無線通信の制御などモバイルコンピューティングデバイス1350の他のコンポーネントを調整するために提供されてよい。
プロセッサ1352は、ディスプレイ1354に接続されている制御インターフェース1358、ディスプレイインターフェース1356を通してユーザーとやり取りしてよい。ディスプレイ1354は、例えば、TFT(薄膜トランジスタ液晶)ディスプレイ、OLED(有機発光ダイオード)ディスプレイ、又は他の適切なディスプレイ技術であってよい。ディスプレイインターフェース1356は、ディスプレイ1354に、グラフィカル情報及び他の情報をユーザーに対して提示させるための適切な回路を備えてよい。制御インターフェース1358は、ユーザーからのコマンドを受信し、プロセッサ1352に送信するために変換してよい。加えて、外部インターフェース1362は、モバイルコンピューティングデバイス1350の他のデバイスとの近傍領域通信を可能にするために、プロセッサ1352との通信を提供してよい。外部インターフェース1362は、例えば、有線通信ではある実施例で提供され、無線通信では他の実施例で提供され、複数のインターフェースも使用されてよい。
メモリ1364は、モバイルコンピューティングデバイス1350内の情報を記憶する。メモリ1364は、1つ又は2つ以上のコンピュータ読み取り可能な媒体、1つ又は2つ以上の揮発性メモリユニット、1つ又は2つ以上の非揮発性メモリユニットのうちの1つ又は2つ以上として実施され得る。増設メモリ1374も提供され、例えば、SIMM(シングルインラインメモリモジュール)カードインターフェースなどであってよい拡張インターフェース1372を介してモバイルコンピューティングデバイス1350に接続されてよい。増設メモリ1374は、モバイルコンピューティングデバイス1350に追加ストレージ容量を提供してよい、又はモバイルコンピューティングデバイス1350向けのアプリケーション若しくは他の情報も記憶してよい。具体的には、増設メモリ1374は、上記のプロセスを実行する又は補完する命令を含んでよく、情報を保護してもよい。したがって、例えば、増設メモリ1374は、セキュリティモジュールとしてモバイルコンピューティングデバイス1350に提供されてよく、モバイルコンピューティングデバイス1350の安全な使用を可能にする命令でプログラミングされていてよい。加えて、SIMMカードを介して、ハッキングできない方法でSIMMカードに識別情報を配置するなど追加情報と共に、安全なアプリケーションが提供されてよい。
メモリとしては、以下に記載するように、例えば、フラッシュメモリ及び/又はNVRAMメモリ(非揮発性ランダムアクセスメモリ)が挙げられてよい。いくつかの実施例では、命令は情報キャリアに記憶され、命令は、1つ又は2つ以上の処理装置(例えば、プロセッサ1352)による実行時に、上述したような1つ又は2つ以上のメソッドを実行する。命令はまた、1つ又は2つ以上のコンピュータ又はマシン読み取り可能な媒体(例えば、メモリ1364、増設メモリ1374、又はプロセッサ1352上のメモリ)など1つ又は2つ以上の記憶装置によって記憶され得る。いくつかの実施例では、命令は、例えば、トランシーバ1368又は外部インターフェース1362によって、伝播した信号で受信され得る。
モバイルコンピューティングデバイス1350は、必要に応じてデジタル信号処理回路を含んでよい通信インターフェース1366を介して無線通信してよい。通信インターフェース1366は、とりわけ、GSM(登録商標)音声電話(Global System for Mobile communications)、SMS(ショートメッセージサービス)、EMS(Enhanced Messaging Service)、又はMMSメッセージング(マルチメディアメッセージングサービス)、CDMA(符号分割多元接続)、TDMA(時分割多元接続)、PDC(Personal Digital Cellular)、WCDMA(登録商標)(広帯域符号分割多元接続)、CDMA2000、又はGPRS(General Packet Radio Service)など様々なモード又はプロトコルで通信を提供してよい。かかる通信は、例えば、無線周波を使用するトランシーバ1368を介して生じてよい。加えて、Bluetooth(登録商標)、Wi−Fi(商標)、又は他のかかるトランシーバ(図示なし)を使用して、狭域通信が生じてよい。加えて、GPS(全地球測位システム)レシーバモジュール1370は、更なるナビゲーション及び位置に関する無線データをモバイルコンピューティングデバイス1350に提供してよく、このデータは、必要に応じて、モバイルコンピューティングデバイス1350で実行しているアプリケーションによって使用されてよい。
モバイルコンピューティングデバイス1350はまた、ユーザーからの音声情報を受信し、使用可能なデジタル情報に変換してよいオーディオコーデック1360を使用して、音声通信を行ってよい。オーディオコーデック1360は、例えば、モバイルコンピューティングデバイス1350のハンドセット内のスピーカーを通してなど、ユーザーのために可聴音を同様に生成してよい。かかる音声は、音声通話からの音声を含んでよく、録音音声(例えば、ビデオメッセージ、音楽ファイルなど)を含んでよく、モバイルコンピューティングデバイス1350で動作するアプリケーションによって生成された音声も含んでよい。
モバイルコンピューティングデバイス1350は、図に示すように、多数の異なる形式で実施されてよい。例えば、携帯電話1380として実施されてよい。スマートフォン1382、情報携帯端末、又は他の類似のモバイルデバイスの一部としても実施されてよい。
本明細書に記載のシステム及び技術の様々な実施例は、デジタル電子回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はこれらの組み合わせにおいて実現し得る。これらの様々な実施例は、特定用途向け又は汎用であってよく、記憶システムからデータ及び命令を受信し、これらにデータ及び命令を伝送するために接続されている、少なくとも1つのプログラム可能プロセッサと、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスと、を含む、プログラム可能システムで実行可能及び/又は解釈可能である1つ又は2つ以上のコンピュータプログラムでの実施を含み得る。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとしても知られる)は、プログラム可能プロセッサ向けの機械命令を含み、高級プロシージャ言語及び/若しくはオブジェクト指向プログラミング言語、並びに/又はアセンブリ言語/機械言語で実施され得る。本明細書で使用するとき、用語「機械読み取り可能な媒体」及び「コンピュータ読み取り可能な媒体」は、機械命令及び/又はデータをプログラム可能プロセッサに提供するために使用される、任意のコンピュータプログラム製品、装置、及び/又はデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラム可能論理デバイス(PLD))を指し、機械命令を機械読み取り可能な信号として受信する機械読み取り可能な媒体を含む。用語「機械読み取り可能な信号」は、機械命令及び/又はデータをプログラム可能プロセッサに提供するために使用される任意の信号を指す。
ユーザーとの対話を提供するために、本明細書に記載のシステム及び技術は、ユーザーに情報を表示するためのディスプレイデバイス(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)と、ユーザーがコンピュータに入力を提供できるキーボード及びポインティングデバイス(例えば、マウス又はトラックボール)と、を有するコンピュータで実施され得る。他の種類のデバイスを使用して、同様にユーザーとの対話を提供できる。例えば、ユーザーに提供されるフィードバックは、任意の形式の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であり得、ユーザーからの入力は、音響入力、音声入力、又は、触覚入力など任意の形式で受信され得る。
本明細書に記載のシステム及び技術は、バックエンドコンポーネント(例えば、データサーバとして)を含んでよい、又は(例えば、アプリケーションサーバとして)ミドルウェアコンポーネントを含んでよい、又はフロントエンドコンポーネント(例えば、ユーザーが使用して本明細書に記載のシステム及び技術の実施例と対話できる、グラフィカルユーザーインターフェース又はウェブブラウザを有するクライアントコンピュータ)を含んでよい、又はかかるバックエンドコンポーネント、ミドルウェアコンポーネント、若しくはフロントエンドコンポーネントの任意の組み合わせを含んでよい、コンピューティングシステムで実施され得る。システムのコンポーネントは、デジタルデータ通信の任意の形式又は媒体(例えば、通信ネットワーク)によって相互に接続され得る。通信ネットワークの例としては、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、及びインターネットが挙げられる。
コンピューティングシステムは、クライアントと、サーバと、を含み得る。クライアント及びサーバは、概ね互いに離れており、通常、通信ネットワークを介してやり取りする。クライアントとサーバとの関係は、対応のコンピュータ上で実行され、互いに対してクライアント−サーバ関係を有する、コンピュータプログラムのおかげで生じる。
本明細書に記載のシステム及び方法の構造、機能、及び装置を考慮すると、いくつかの実施例では、ステートレス永続的接続で、プラットフォームサーバとエンドポイントデバイスとの間での通信交換に状態情報及びルーティング情報を挿入するシステム及び方法が提供される。状態情報及びルーティング情報の通信交換への挿入を支援する方法及び装置の特定の実施例を説明してきたため、当業者には、本開示の概念を組み込んでいる他の実施例が使用され得ることが明らかであろう。
更に、本明細書に記載のシステム及び方法の構造、機能、及び装置を考慮すると、いくつかの実施例では、2つのネットワークノードと中間ノードとの間の一連の永続的接続で通信するシステム及び方法が提供される。永続的接続での通信を支援する方法及び装置の特定の実施例を説明してきたため、当業者には、本開示の概念を組み込んでいる他の実施例が使用され得ることが明らかであろう。
更に、本明細書に記載のシステム及び方法の構造、機能、及び装置を考慮すると、いくつかの実施例では、2つのネットワークノードと中間ノードとの間の一連の永続的接続で通信するシステム及び方法が提供される。永続的接続での通信を支援する方法及び装置の特定の実施例を説明してきたため、当業者には、本開示の概念を組み込んでいる他の実施例が使用され得ることが明らかであろう。
したがって、本開示は、特定の実施例に限定されるべきではなく、むしろ以下の特許請求の範囲の趣旨及び範囲によってのみ限定されるべきである。