(57)【要約】いくつかの実施形態は、アバターサーバを動作させる方法を含む。本方法は、アプリケーションサービスを複数のクライアントアプリケーションに提供するためのアプリケーションサービス・サーバへの少なくとも断続的なネットワークアクセスを有するアバターサーバにアプリケーションサービス・アバターを実装することを含むことができる。アバターサーバは、アバターサーバに接続された1つ以上のエンドユーザデバイスのプロファイルを管理してアプリケーションサービスにアクセスすることによってサービスグループを設定することができる。アバターサーバは、１つ以上のエンドユーザデバイスに対して、アプリケーションサービスによって提供される複数の機能の少なくとも一部分をエミュレートすることによって、例えば、少なくとも部分的に、１つ以上のエンドユーザデバイスのうちの少なくとも1つからのサービス要求をローカルで処理することによって、ローカライズされたアプリケーションサービスを提供することができる。アバターサーバは、アプリケーションサービス・サーバと非同期で通信してサービス要求を完了することができる。
2018509672.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
複数のクライアントサービスにアプリケーションサービスを提供するためのアプリケーションサービス・サーバへのバックホール・ネットワークチャネルを介した少なくとも断続的なネットワークアクセスを有するアバターサーバにアプリケーションサービス・アバターを実装すること、
前記アプリケーションサービスにアクセスするために前記アバターサーバに接続された１つ以上のエンドユーザデバイスのリストを管理することによってサービスグループを確立すること、
前記アプリケーションサービスによって提供される複数の機能の少なくとも一部分をエミュレートすることによって、前記アバターサーバを介して、ローカライズされたアプリケーションサービスを前記１つ以上のエンドユーザデバイスに提供することであって、少なくとも部分的に、前記アバターサーバにおける前記１つ以上のエンドユーザデバイスのうちの少なくとも１つからのサービス要求をローカルで処理することを含む、前記ローカライズされたアプリケーションサービスを前記エンドユーザデバイスに提供すること、
前記アプリケーションサービス・サーバと非同期で通信して前記サービス要求を完了すること、を備える方法。
【請求項２】
前記ローカライズされたアプリケーションサービスを提供することは、
前記サービスグループの少なくとも第１のエンドユーザデバイスから、前記サービス要求を前記アバターサーバで受信することであって、前記サービス要求は、前記サービスグループの第２のエンドユーザデバイスと関連する、前記サービス要求を前記アバターサーバで受信すること、
前記第１のエンドユーザデバイスに代わって前記第２のエンドユーザデバイスにメッセージを通信することによって、前記サービス要求を少なくとも部分的に処理することを含む、請求項１に記載の方法。
【請求項３】
前記メッセージを通信することが、前記バックホール・ネットワークチャネルが利用できないこと、または前記アプリケーションサービス・サーバが到達不能であると判定したことに応答して実施されること、および
前記サービス要求を処理することは、前記サービス要求によって示されるか、前記サービス要求において参照されるか、または前記サービス要求から導出されたメッセージを識別することを含むこと、
のうちの少なくとも一方を含む請求項２に記載される方法。
【請求項４】
前記アプリケーションサービス・サーバと非同期で通信することは、前記バックホール・ネットワークチャネルが利用可能であると判定することに応答して実施される、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記ローカライズされたアプリケーションサービスを提供することは、
前記１つ以上のエンドユーザデバイスのうちの１つからメディアコンテンツのデータ変換要求を受信すること、
前記アバターサーバに保存された処理モジュールのローカルバージョンを利用することによって、前記アプリケーションサービス・アバターを利用して前記メディアコンテンツを変換すること、をさらに含み、
好ましくは、前記バックホール・ネットワークチャネルが利用可能である場合に、前記アプリケーションサービス・サーバからの前記処理モジュールのローカルバージョンへの更新を受信することをさらに含む、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記ローカライズされたアプリケーションサービスを提供することは、
前記１つ以上のエンドユーザデバイスのうちの要求デバイスからコンテンツ識別子を含むコンテンツ提供要求を受信すること、
前記コンテンツ識別子を用いて前記アバターサーバのローカルデータバンクにおいてコンテンツを特定すること、
前記ローカルデータバンクにおいて前記コンテンツを特定することに応答して、前記コンテンツを要求デバイスに提供すること、を含む、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記ローカライズされたアプリケーションサービスを提供することは、
前記１つ以上のエンドユーザデバイスのうちの要求デバイスからコンテンツ識別子を含むコンテンツ提供要求を受信すること、
前記コンテンツ識別子を用いて前記アバターサーバのローカルデータバンクにおいてコンテンツを特定すること、
前記バックホール・ネットワークチャネルが利用可能である場合、前記コンテンツを前記ローカルデータバンクにおいて特定できないことに応答して、前記アプリケーションサービス・サーバから前記コンテンツをフェッチして前記要求デバイスに配信すること、を含む、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記ローカライズされたアプリケーションサービスを提供することは、
前記１つ以上のエンドユーザデバイスのうちの要求デバイスからコンテンツ識別子を含むコンテンツ提供要求を受信すること、
前記コンテンツ識別子を用いて前記アバターサーバのローカルデータバンクにおいてコンテンツを特定すること、
前記バックホール・ネットワークチャネルが利用できない場合に前記ローカルデータバンクにおいて前記コンテンツを特定できないことに応答して、前記コンテンツのためのコンテンツ要求をアプリケーションサービス・サーバにキューイングし、前記要求デバイスに配信すること、を含む、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
前記ローカライズされたアプリケーションサービスを提供することは、
前記１つ以上のエンドユーザデバイスのうちの要求デバイスから公開可能なコンテンツを含むコンテンツ公開要求を受信すること、
前記公開可能なコンテンツを前記アプリケーションサービス・サーバに送信する前に、前記サービスグループに利用可能な前記公開可能なコンテンツを作成することによって前記サービスグループ内で前記公開可能なコンテンツを事前に公開すること、を含む、請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
アバターサーバを動作させるためのコンピュータにより実行可能な複数の命令を記憶するコンピュータ可読記憶メモリであって、
前記アバターサーバにアプリケーションサービス・アバターを実装するための命令であって、前記アバターサーバは、バックホール・ネットワークチャネルを介してアプリケーションサービス・サーバへの断続的なネットワークアクセスを少なくとも有し、前記アプリケーションサービス・サーバは、複数のクライアントアプリケーションにアプリケーションサービスを提供する、前記アバターサーバにアプリケーションサービス・アバターを実装するための命令と、
前記アプリケーションサービスにアクセスするために前記アバターサーバに接続された１つ以上のエンドユーザデバイスのリストを管理することによってサービスグループを確立するための命令と、
前記サービスグループの少なくとも第１のエンドユーザデバイスからのサービス要求を前記アバターサーバで受信するための命令であって、前記サービス要求は、前記サービスグループの第２のエンドユーザデバイスに関連する、前記サービス要求を前記アバターサーバで受信するための命令と、
前記第１のエンドユーザデバイスに代わって前記第２のエンドユーザデバイスにメッセージを通信することによって、少なくとも部分的に、前記サービス要求を処理するための命令と、を備えるコンピュータ可読記憶メモリ。
【請求項１１】
前記１つ以上のエンドユーザデバイスに対して、前記アプリケーションサービスによって提供される複数の機能の少なくとも一部分をエミュレートすることによって、前記アバターサーバを用いてローカライズされたアプリケーションサービスを提供するための命令、
前記バックホール・ネットワークチャネルが利用可能である場合に、前記サービス要求を前記アプリケーションサービス・サーバに非同期で通信するための命令、
前記アプリケーションサービス・サーバに対して、前記１つ以上のエンドユーザデバイスのうちの１つに代わってリモートプロシージャコールにおいて複数のパラメータを変換するクライアントアプリケーション・スタブを呼び出すための命令、および
前記１つ以上のエンドユーザデバイスのデバイスプロファイルおよび前記１つ以上のエンドユーザデバイスに関連付けられたユーザプロファイルを管理するための命令のうちの少なくとも１つをさらに備える請求項１０に記載のコンピュータ可読記憶メモリ。
【請求項１２】
アバターサーバであって、
１つまたは複数のエンドユーザデバイスのローカルセットに接続し、バックホール・ネットワークチャネルを介して少なくとも断続的にアプリケーションサービスを提供するアプリケーションサービス・サーバに接続するように構成された１つまたは複数のネットワークインタフェースと、
前記バックホール・ネットワークチャネルが利用可能である場合、前記アプリケーションサービス・サーバと通信するアプリケーションサービス・アバターをホストするように構成されたプロセッサであって、前記アプリケーションサービス・アバターは、アバター・アプリケーションプログラミングインタフェース（ＡＰＩ）を提供し、前記アバター・アプリケーションプログラミングインタフェースは、前記１つ以上のエンドユーザデバイスに対して、前記アプリケーションサービスによって提供される複数の機能の少なくとも一部分をエミュレートすることによって、前記アプリケーションサービス・アバターを介してローカライズされたアプリケーションサービスを提供する、前記プロセッサと、
前記１つ以上のエンドユーザデバイスのローカルセットに対するコンテンツをキャッシュし、前記１つ以上のエンドユーザデバイスのプロファイルを追跡するためのメモリと、を備えるアバターサーバ。
【請求項１３】
前記アバターサーバは、前記１つ以上のエンドユーザデバイスのネットワークアクセスまたはアグリゲーション通信データを提供するネットワーク機器に実装される、請求項１２に記載のアバターサーバ。
【請求項１４】
前記アバターサーバは、前記１つ以上のエンドユーザデバイスのネットワークアクセスを提供するネットワーク機器とは独立して実装される、請求項１２に記載のアバターサーバ。
【請求項１５】
前記アバターサーバは、前記１つ以上のエンドユーザデバイスのうちの１つに実装される、請求項１４に記載のアバターサーバ。
【発明の詳細な説明】
【背景技術】
【０００１】
地方の地理的地域を電力網及び／又はインターネットに接続することは困難であり、例えば、ネットワーク事業者、政府機関、電力会社等によるかなりの投資を必要とする可能性がある。これらの理由の少なくともいくつかのために、開発途上国の多くの地方では、ケーブルや電話回線などを介して、継続的な電力供給や有線によるインターネット接続にアクセスできないことがよくある。しかし、世界中のインターネットサービスの普及に伴い、これらの地域の人々は、モバイルデバイス、例えば、限られた計算能力（例えば、低速のプロセッサおよび／またはクライアントサイドのスクリプト実行機能の欠如）を有するローエンド携帯電話端末（ローエンドのモバイルデバイス）を用いていることがある。ローエンドのモバイルデバイス上で実行される（また、「実行中」の）アプリケーションは、サーバへの計算およびメモリ消費を軽減し、複数のユーザ間の対話をより促進にするためにクライアントサーバ・アーキテクチャを実装することが多い。しかし、これらのモバイルデバイスのための無線ネットワークは、信頼できるネットワークインフラストラクチャの欠如のために、断続的なネットワーク中断を被る可能性がある。従来のクライアントサーバ・コンピューティング・アーキテクチャを実装するアプリケーションでは、クライアントとしてのアプリケーションが、その対応するサーバから命令やデータを例えば、命令またはデータが必要な場合に受け取ることができない可能性があるため、断続的なネットワーク中断は、アプリケーションの適切な動作を妨げる可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００２】
本発明に従った実施形態は、特に、方法、記憶媒体、システム、およびコンピュータプログラム製品に関する添付の特許請求の範囲に開示されている。1つの請求項カテゴリ、例えば方法に記載されている任意の特徴は、他の請求項カテゴリ、例えば、システムにおいても同様に請求され得る。添付の請求項に記載された従属または参照は、形式的な理由のためにのみ選択されている。しかしながら、前の請求項への意図的な参照（特に複数従属）に起因する特定事項は、同様に請求され、添付の特許請求の範囲において選択される従属に関係なく、特許請求の範囲およびその特徴の任意の組み合わせが開示され請求され得る。請求され得る特定事項は、添付の特許請求の範囲に記載された特徴の組み合わせだけでなく、特許請求の範囲における他の特徴の組み合わせも含む。特許請求の範囲に記載された各特徴は、特許請求の範囲における他の特徴または他の特徴の組み合わせと組み合わせることができる。さらに、本明細書に記載または図示された実施形態および特徴のうちのいずれかは、別個の請求項および/または本明細書に記載または図示される任意の実施形態または特徴並びに添付の特許請求の範囲の複数の特徴のいずれかとの任意の組み合わせにおいて請求され得る。
【０００３】
本発明に従った実施形態では、方法は、複数のクライアントサービスにアプリケーションサービスを提供するためのアプリケーションサービス・サーバへのバックホール・ネットワークチャネルを介した少なくとも断続的なネットワークアクセスを有するアバターサーバにアプリケーションサービス・アバターを実装すること、アプリケーションサービスにアクセスするためにアバターサーバに接続された１つ以上のエンドユーザデバイスのリストを管理することによってサービスグループを確立すること、アプリケーションサービスによって提供される複数の機能の少なくとも一部分をエミュレートすることによって、アバターサーバを介して、ローカライズされたアプリケーションサービスを１つ以上のエンドユーザデバイスに提供することであって、少なくとも部分的に、アバターサーバにおける１つ以上のエンドユーザデバイスのうちの少なくとも１つからのサービス要求をローカルで処理することを含む、ローカライズされたアプリケーションサービスをエンドユーザデバイスに提供すること、
アプリケーションサービス・サーバと非同期で通信してサービス要求を完了すること、を備える。
【０００４】
ローカライズされたアプリケーションサービスを提供することは、サービスグループの少なくとも第１のエンドユーザデバイスから、サービス要求をアバターサーバで受信することであって、サービス要求は、サービスグループの第２のエンドユーザデバイスと関連する、サービス要求をアバターサーバで受信すること、第１のエンドユーザデバイスに代わって第２のエンドユーザデバイスにメッセージを通信することによって、サービス要求を少なくとも部分的に処理することを含み得る。
【０００５】
メッセージを通信することは、バックホール・ネットワークチャネルが利用できないこと、またはアプリケーションサービス・サーバが到達不能であると判定したことに応答して実施され得る。
【０００６】
サービス要求を処理することは、サービス要求によって示されるか、サービス要求において参照されるか、またはサービス要求から導出されたメッセージを識別することを含み得る。
【０００７】
アプリケーションサービス・サーバと非同期で通信することは、バックホール・ネットワークチャネルが利用可能であると判定することに応答して実施され得る。
ローカライズされたアプリケーションサービスを提供することは、１つ以上のエンドユーザデバイスのうちの１つからメディアコンテンツのデータ変換要求を受信すること、アバターサーバに保存された処理モジュールのローカルバージョンを利用することによって、アプリケーションサービス・アバターを利用してメディアコンテンツを変換することを含み得る。
【０００８】
本発明に従った実施形態では、方法は、バックホール・ネットワークチャネルが利用可能である場合に、アプリケーションサービス・サーバからの処理モジュールのローカルバージョンへの更新を受信することをさらに備えることができる。
【０００９】
ローカライズされたアプリケーションサービスを提供することは、１つ以上のエンドユーザデバイスのうちの要求デバイスからコンテンツ識別子を含むコンテンツ提供要求を受信すること、コンテンツ識別子を用いてアバターサーバのローカルデータバンクにおいてコンテンツを特定すること、ローカルデータバンクにおいてコンテンツを特定することに応答して、コンテンツを要求デバイスに提供すること、を含み得る。
【００１０】
ローカライズされたアプリケーションサービスを提供することは、１つ以上のエンドユーザデバイスのうちの要求デバイスからコンテンツ識別子を含むコンテンツ提供要求を受信すること、コンテンツ識別子を用いてアバターサーバのローカルデータバンクにおいてコンテンツを特定すること、バックホール・ネットワークチャネルが利用可能である場合、コンテンツをローカルデータバンクにおいて特定できないことに応答して、アプリケーションサービス・サーバからコンテンツをフェッチして要求デバイスに配信すること、を含み得る。
【００１１】
ローカライズされたアプリケーションサービスを提供することは、１つ以上のエンドユーザデバイスのうちの要求デバイスからコンテンツ識別子を含むコンテンツ提供要求を受信すること、コンテンツ識別子を用いてアバターサーバのローカルデータバンクにおいてコンテンツを特定すること、バックホール・ネットワークチャネルが利用できない場合にローカルデータバンクにおいてコンテンツを特定できないことに応答して、コンテンツのためのコンテンツ要求をアプリケーションサービス・サーバにキューイングし、要求デバイスに配信すること、を含み得る。
【００１２】
ローカライズされたアプリケーションサービスを提供することは、１つ以上のエンドユーザデバイスのうちの要求デバイスから公開可能なコンテンツを含むコンテンツ公開要求を受信すること、公開可能なコンテンツをアプリケーションサービス・サーバに送信する前に、サービスグループに利用可能な公開可能なコンテンツを作成することによってサービスグループ内で公開可能なコンテンツを事前に公開すること、を含み得る。
【００１３】
本発明に従ったさらなる実施形態では、アバターサーバを動作させるためのコンピュータにより実行可能な複数の命令を記憶するコンピュータ可読記憶メモリは、アバターサーバにアプリケーションサービス・アバターを実装するための命令であって、アバターサーバは、バックホール・ネットワークチャネルを介してアプリケーションサービス・サーバへの断続的なネットワークアクセスを少なくとも有し、アプリケーションサービス・サーバは、複数のクライアントアプリケーションにアプリケーションサービスを提供する、アバターサーバにアプリケーションサービス・アバターを実装するための命令と、アプリケーションサービスにアクセスするためにアバターサーバに接続された１つ以上のエンドユーザデバイスのリストを管理することによってサービスグループを確立するための命令と、サービスグループの少なくとも第１のエンドユーザデバイスからのサービス要求をアバターサーバで受信するための命令であって、サービス要求は、サービスグループの第２のエンドユーザデバイスに関連する、サービス要求をアバターサーバで受信するための命令と、第１のエンドユーザデバイスに代わって第２のエンドユーザデバイスにメッセージを通信することによって、少なくとも部分的に、サービス要求を処理するための命令と、を備える。
【００１４】
本発明に従ったさらなる実施形態では、コンピュータ可読記憶メモリは、１つ以上のエンドユーザデバイスに対して、アプリケーションサービスによって提供される複数の機能の少なくとも一部分をエミュレートすることによって、アバターサーバを用いてローカライズされたアプリケーションサービスを提供するための命令をさらに備えることができる。
【００１５】
本発明に従ったさらなる実施形態では、コンピュータ可読記憶メモリは、バックホール・ネットワークチャネルが利用可能である場合に、サービス要求をアプリケーションサービス・サーバに非同期で通信するための命令をさらに備えることができる。
【００１６】
本発明に従ったさらなる実施形態では、コンピュータ可読記憶メモリは、アプリケーションサービス・サーバに対して、１つ以上のエンドユーザデバイスのうちの１つに代わってリモートプロシージャコールにおいて複数のパラメータを変換するクライアントアプリケーション・スタブを呼び出すための命令をさらに備えることができる。
【００１７】
本発明に従ったさらなる実施形態では、コンピュータ可読記憶メモリは、１つ以上のエンドユーザデバイスのデバイスプロファイルおよび１つ以上のエンドユーザデバイスに関連付けられたユーザプロファイルを管理するための命令をさらに備えることができる。
【００１８】
本発明に従ったさらなる実施形態では、アバターサーバは、１つまたは複数のエンドユーザデバイスのローカルセットに接続し、バックホール・ネットワークチャネルを介して少なくとも断続的にアプリケーションサービスを提供するアプリケーションサービス・サーバに接続するように構成された１つまたは複数のネットワークインタフェースと、バックホール・ネットワークチャネルが利用可能である場合、アプリケーションサービス・サーバと通信するアプリケーションサービス・アバターをホストするように構成されたプロセッサであって、アプリケーションサービス・アバターは、アバター・アプリケーションプログラミングインタフェース（ＡＰＩ）を提供し、アバター・アプリケーションプログラミングインタフェースは、１つ以上のエンドユーザデバイスに対して、アプリケーションサービスによって提供される複数の機能の少なくとも一部分をエミュレートすることによって、アプリケーションサービス・アバターを介してローカライズされたアプリケーションサービスを提供する、プロセッサと、１つ以上のエンドユーザデバイスのローカルセットに対するコンテンツをキャッシュし、１つ以上のエンドユーザデバイスのプロファイルを追跡するためのメモリと、を備える。
【００１９】
アバターサーバは、１つ以上のエンドユーザデバイスのネットワークアクセスまたはアグリゲーション通信データを提供するネットワーク機器に実装され得る。
アバターサーバは、１つ以上のエンドユーザデバイスのネットワークアクセスを提供するネットワーク機器とは独立して実装され得る。
【００２０】
アバターサーバは、１つ以上のエンドユーザデバイスのうちの１つに実装され得る。
同様に請求され得る本発明に従ったさらなる実施形態では、1つまたは複数のコンピュータ可読非一時的記憶媒体は、実行されたときに本発明または上記した実施形態のいずれかに従った方法で動作可能なソフトウェアを具体化する。
【００２１】
同様に請求され得る本発明に従ったさらなる実施形態では、システムは、1つまたは複数のプロセッサと、該プロセッサに接続され且つ該プロセッサによって実行可能な命令を含む少なくとも1つのメモリとを含み、該プロセッサは、命令を実行すると、本発明または上記した実施形態のいずれかに従った方法を実行するように動作可能である。
【００２２】
同様に請求され得る本発明に従ったさらなる実施形態では、コンピュータプログラム製品は、好ましくは、コンピュータ可読非一時的記憶媒体を備え、データ処理システム上で実行されると、本発明または上記した実施形態のいずれかに従った方法を実行するように動作可能である。
【図面の簡単な説明】
【００２３】
【図１】様々な実施形態に従った地方ネットワーキングシステムのネットワークシステム環境を示すブロック図である。
【図２】様々な実施形態に従った地方ネットワーキングシステムの地方エッジにアプリケーションサービス・アバターを実装する潜在的な複数の位置を示すブロック図である。
【図３】様々な実施形態に従ったアプリケーションサービス・アバターを実装するために使用されるシステム環境の一例を示すブロック図である。
【図４】様々な実施形態に従ったアプリケーションサービス・アバターのアプリケーションプログラミングインタフェース（API）を示す機能ブロック図である。
【図５】様々な実施形態に従ったアプリケーションサービス・アバターとしてコンピューティングデバイスを動作させる方法を示すフローチャートである。
【図６】様々な実施形態による、本明細書に記載の1つまたは複数のコンピューティングデバイスまたはサーバを示すコンピューティングデバイスの一例のブロック図である。
【発明を実施するための形態】
【００２４】
図面は、例示のみを目的として本開示の様々な実施形態を示す。当業者であれば、本明細書に記載された本発明の原理から逸脱することなく、本明細書に例示された構造および方法の代替の実施形態を使用できることを容易に認識するであろう。
【００２５】
いくつかの実施形態は、広域ネットワーク（例えば、インターネット）、つまりアプリケーションサービス・アバター（application service avatar）に対応する１つまたは複数のアプリケーションサービス・サーバへの断続的な接続性を有するローカルネットワークアイランド（local network island）におけるアプリケーションサービス「アバター（avatar）」を具体化することを含む。断続的な接続は、高いレイテンシおよび／または低い帯域幅（例えば、タイムスライス帯域幅共有（time sliced bandwidth sharing））を有し、頻繁に利用できないことがある。各アプリケーションサービス・アバターは、アプリケーションサービスと、アプリケーションサービスを提供する１つ以上のアプリケーションサービス・サーバとに対応することができる。例えば、アプリケーションサービスは、メッセージングサービス、ソーシャルネットワーキングサービス、写真共有サービス、コンテンツ検索サービス、コラボレーションサービス、他の無料の基本サービス（free basic services : FBSs）、またはそれらの任意の組み合わせとすることができる。通常、アプリケーションサービス・アバターの存在なしに、１つまたは複数のエンドユーザデバイスは、１つまたは複数のアプリケーションサービス・サーバからアプリケーションサービスを直接要求することができる。例えば、エンドユーザデバイスは、１つまたは複数のアプリケーションサービス・サーバのサーバ・サービス・アプリケーション・プログラミング・インタフェイス（server service application programming interface : API）にアクセスするように構成されたクライアントプログラムを実行することができる。例えば、クライアントプログラムは、モバイルアプリケーション、デスクトップアプリケーション、ブラウザベースのアプリケーション、またはそれらの任意の組み合わせとして具体化することができる。
【００２６】
アプリケーションサービス・アバターは、アバターサーバ上に実装することができる。アバターサーバは、計算能力を有し、エンドユーザデバイスのローカルセット（ｌｏｃａｌ  ｓｅｔ）のコンテンツをキャッシュし、エンドユーザデバイスのプロファイルを追跡するメモリ容量を有し、エンドユーザデバイスのローカルセットへの連続的な接続性を有し（一方で、ローカルセットの関係性は時間とともに変化する）、１つまたは複数のアプリケーションサービス・サーバへの少なくとも断続的な接続性を有する。アバターサーバは、（例えば、アバターサーバ上で動作する仮想マシンまたはアバターアプリケーションプロセスとして）単一のアプリケーションサービス・アバターまたは複数のアプリケーションサービス・アバターをホストするためのプラットフォームを提供することができる。
【００２７】
各アプリケーションサービス・アバターは、アプリケーションサービス・アバターの存在なしに、１つまたは複数のアプリケーションサービス・サーバがエンドユーザデバイスに通常提供する複数の機能の少なくとも一部分を記憶することができる。１つまたは複数のアプリケーションサービス・サーバは、サービス機能をアプリケーションサービス・アバターに公開し、アプリケーションサービス・アバターへの断続的な接続性だけを有するにもかかわらず、１つまたは複数のアプリケーションサービス・サーバによって提供されるサービス機能の少なくとも一部分をエミュレート（emulate）できるようにする委譲（delegation）ＡＰＩを提供することができる。例えば、このセットアップの下では、サービスタスクは、例えばアプリケーションサービス・アバターによって局所的に部分的に完了され、サービスタスクの完了は、断続的な接続が再び利用可能になるまで遅延させることができる。
【００２８】
アプリケーションサービス・アバターは、次に、アバターＡＰＩを実装することができる。アバターＡＰＩは、アプリケーションに、１つまたは複数のアプリケーションサービス・サーバによって提供されるサービス機能の少なくとも一部分をプログラム的に公開し、アプリケーションサービス・アバターに接続されたローカルネットワークアイランド内のエンドユーザデバイス（例えば、携帯電話ハンドセットまたは他のコンピューティングデバイス）のサービス要求に応答し、エンドユーザデバイスをターゲットとする１つ以上のアプリケーションサービス・サーバからのコマンドを処理し、またはそれらの任意の組み合わせを実行する。アバターＡＰＩは、１つまたは複数のアプリケーションサービス・サーバと非同期で通信することもできる（たとえば、１つまたは複数のアプリケーションサービス・サーバでサービス要求をさらに処理するためにサービス要求を受信することとは非同期）。アバターＡＰＩによって提供されるこれらのサービス機能は、例えば、エンドユーザデバイスのローカルセットのプロファイルを識別すること、エンドユーザ要求が受信されたが断続的な接続が利用できない場合の「ストアアンドフォワード（store and forward）」機能、エンドユーザデバイスのローカルセットなどの、広域（「コア（core）」）ネットワーク内の１つまたは複数のアプリケーションサービス・サーバまたは他のソースから）コンテンツをキャッシュすることを含む。
【００２９】
開示された実施形態は、１つまたは複数のアバターサーバが、「バックホール（backhaul）」ネットワークとエンドユーザデバイスとの間のどこにでも実装されることを可能にする。バックホール・ネットワークは、断続的に接続されるクライアントに代わってインターネットに接続されたサーバと情報を交換するように構成されたネットワーク（例えば、イントラネットまたはインターネット）の一部である。例えば、アバターサーバは、ローカルネットワークアクセスポイントまたはアグリゲーションネットワーク機器（aggregation network appliance）に結合された独立したサーバとすることができる。あるいは、アバターサーバは、ローカルネットワークアクセスポイント、アグリゲーションネットワーク機器、またはエンドユーザデバイスと統合され得る。アバターサーバは、エンドユーザデバイス上のアプリケーション・ポータルとアプリケーションサービス・サーバとの間で相互通信することができ、または遅延対話を促進することができる。
【００３０】
アプリケーションサービス・アバターは、ローカル地理的領域（local geographical region）内のエンドユーザデバイスにサービスを提供することができる。アプリケーションサービス・アバターは、断続的なネットワーク中断があっても、（アプリケーションサービス・サーバのサービス機能の一部分またはすべてであり得る）継続的なサービスを提供することができる。
【００３１】
アプリケーションサービス・アバターは、少なくとも別の「ネットワークアイランド（network island）」（例えば、少なくとも断続的にネットワークおよび／またはコアネットワーク（例えば、インターネット）に接続された１組のコンピューティングデバイス）への断続的または継続的なネットワークアクセスを有する。例えば、断続的なネットワーク接続は、衛星（例えば、低軌道衛星または静止軌道衛星）、無人航空機または他の航空機、列車、船舶または他の水系の船舶、他の断続的に接続された通信リレー、またはそれらの任意の組み合わせを含むことができる。ネットワークアイランドは、一緒に「メッシュ（mesh）」ネットワークを形成することができる。メッシュ・ネットワークは、各メッシュ・ノード（例えば、ネットワークデバイス）がネットワークのデータを中継し、すべてのノードがネットワーク内のデータの分散において協力するネットワークトポロジである。
【００３２】
いくつかの実施形態では、１つまたは複数のアプリケーションサービス・アバターは、ネットワークアイランド内のユーザに、ニュースフィード、メッセージング、メディアブラウジングなどを含む基本的なソーシャルネットワーク機能を提供することができる。アプリケーションサービス・アバターは、バックホール・ネットワークチャネルが利用できなくなったときに、ネットワークアイランド内の１つまたは複数のデバイスからの下り通信（outgoing communications）（例えば、コンテンツ、メッセージ、データ要求など）をバッファし、バックホール・ネットワークチャネルが利用可能になったときに、これらを送信することができる。アプリケーションサービス・アバターは、バックホール・ネットワークチャネルがアクティブなときに例えば、ネットワークアイランドの外部のコンピューティングデバイスからの上り通信（例えば、ウェブページ、上りメッセージ、メディアコンテンツ、テキスト、スクリプト、または実行可能ファイル）を受信してキャッシュし、バックホール・ネットワークチャネル、つまり断続的なネットワークアクセスが利用できないとき、ネットワークアイランド内のデバイスがリソースにアクセスすることができる。例えば、アプリケーションサービス・アバターは、最近要求されたリソース、通常要求されたリソース、およびネットワークアイランド内のユーザのプリファレンスプロファイル（preference profiles）に一致するリソースをキャッシュすることができる。アプリケーションサービス・アバターは、そのユーザのアイデンティティをアプリケーションサービス・サーバに提供することができる。例えば、ソーシャルネットワーキングシステムのアプリケーションサービス・サーバは、ローカルネットワークアイランド内のユーザのプロファイルを生成して格納し、キャッシングのためにアプリケーションサービス・アバターにどのプロファイル特有のリソース（profile-specific resources）を「プッシュ（push）」するかを予測することができる。プッシュは、宛先クライアント（destination client）（例えば、アプリケーションサービス・アバター）に対するデータ送信要求がサーバ（例えば、アプリケーションサービス・サーバ）によって開始されるデータ転送通信を含む。一例として、アプリケーションサービス・サーバは、プロファイル特有のリソース、通常、アクセス可能な公的に利用可能なデータ、または実際には他の任意のタイプの適切なデータをプッシュすることができる。
【００３３】
プロファイル特有のリソースは、ネットワークアイランド内でアクティブであるユーザプロファイルに関連するデータ（例えば、個人データ）を含むことができる。ユーザプロファイルのプロファイル特有リソースは、関連するユーザプロファイル（affiliated user profiles）に関連付けられたデータも含むことができる。例えば、関連するソーシャルネットワークノードは、プロファイルのプリファレンス、属性、動作、またはユーザプロファイルのアクティビティに基づいて識別され得る。地理的近接度（例えば、同じ都市または閾値距離半径内）、（例えば、ソーシャルネットワーキングシステムのソーシャルグラフにおける閾値の分離度内のユーザプロファイルに社会的に結合されている）社会的近接度、または、（例えば、同じネットワークアイランド内の）ネットワーク近接性を含むことができる。
【００３４】
いくつかの実施形態は、有利には、アプリケーションサービス・アバターを利用して地方にコンテンツアクセスおよびアプリケーションサービス機能を提供する。アプリケーションサービス・アバターは、（例えば、複数のネットワーク構成要素のタイムスライス／帯域幅共有（time slicing/bandwidth sharing）のために）断続的な接続性および高いレイテンシを有するバックホールチャネルから生じる帯域幅制限に技術的解決策を提供する。アプリケーションサービス・アバターは、バックホールチャネルの断続的な接続性にもかかわらず、アプリケーションサービス機能の少なくとも一部分をエンドユーザに配信することを可能にする。アプリケーションサービス・アバターのアーキテクチャはまた、ネットワーク内の近くにサーバーロジックを複数のエンドユーザデバイスを移動させることによって、バックホールチャネルが存在しない場合でもネットワーク速度を向上させる。アプリケーションサービス・アバターは、さらに、完全なピアツーピアアーキテクチャ（peer-to-peer architecture）に変換することなく、従来のクライアントサーバ・アーキテクチャにおけるピアツーピアリンクを可能にする。いくつかのアプリケーションサービスは、地方のコミュニケーションのための基本的な手段と、人々の生活に関係する基本的な情報の更新を提供する。したがって、断続的なバックホール接続しか存在しないにもかかわらず、継続的なアプリケーションサービスを可能にすることは非常に有用であり得る。
【００３５】
図１は、様々な実施形態に従った地方ネットワーキングシステム（rural networking system）１００のネットワークシステム環境を示すブロック図である。地方ネットワーキングシステム１００は、ネットワークアイランド（例えば、ネットワークアイランド１０２）の集合を含む。各ネットワークアイランドは、ネットワーク機器１０４（例えば、ネットワークデバイス）によって確立され得る。ネットワーク機器１０４は、タワー、ボックス、ルータ、アクセスポイント、またはネットワーク接続を提供するための他の電子ハードウェアとすることができる。いくつかの実施形態では、ネットワーク機器１０４に接続された１つまたは複数のデバイスは、さらなるサブネットワークを確立することができ、これらのサブネットワークに接続されたデバイスは、さらに低レベルのネットワークなどを確立することができる。
【００３６】
例えば、ネットワーク機器１０４は、エンドユーザデバイス１０６のためのネットワーク接続を提供することができる。エンドユーザデバイス１０６は、コンピューティングデバイスである。例えば、エンドユーザデバイス１０６は、パーソナルコンピュータ、携帯電話、タブレット、ウェアラブルデバイス、ＩｏＴ（Internet of Things）デバイス、または他の任意のモバイルデバイスまたは固定デバイスを含むことができる。複数のエンドユーザデバイス１０６間のネットワーク接続は、無線プロトコル、例えばＬＴＥ（long-term evolution）、３Ｇ、２Ｇ、Ｗｉ−Ｆｉ、Ｗｉ−Ｆｉ  Ｄｉｒｅｃｔ、ＷｉＭＡＸ、ブルートゥース、ブルートゥースＬＥ、または任意のそれらの組み合わせを用いて確立され得る。ネットワーク接続は、有線プロトコル、例えば、ユニバーサルシリアルバス（ＵＳＢ）またはイーサネット（登録商標）に基づくこともできる。ネットワーク接続のネットワークアーキテクチャは、メッシュ・ネットワークまたはスター・ネットワークに基づくことができる。
【００３７】
いくつかの実施形態では、ネットワークデバイスのそれぞれは、コアネットワーク１０８、例えばインターネットまたは他の地域ネットワークに直接的または間接的に接続され得る。例えば、ネットワーク機器１０４は、バックホール・ネットワークチャネル１１０を介してコアネットワーク１０８に接続され得る。バックホール・ネットワークチャネル１１０は、そのエンドポイント間の接続を非連続的に提供する伝送媒体である。すなわち、バックホール・ネットワークチャネル１１０は、定期的にまたは散発的に機能することを停止し得る。バックホール・ネットワークチャネル１１０の例には、列車、無人機、衛星、船、またはそれらの任意の組み合わせによって実現されるネットワークが含まれる。
【００３８】
いくつかの実施形態では、ネットワーク機器１０４は、ネットワークアイランド１０２内の複数のエンドユーザデバイス１０６間の連続的な接続（continuous connectivity）と、エンドユーザデバイス１０６とコアネットワーク１０８との間の非連続的な接続（non-continuous connectivity）を提供することができる。ネットワーク機器１０４は、他のネットワークアイランドにも接続され得る。例えば、ネットワーク機器１０４は、別の断続的なネットワークチャネルを介して別の基地局、つまり、他の基地局に接続された別のネットワークアイランド内の他のコンピューティングデバイスに接続されてもよい。
【００３９】
バックホール・ネットワークチャネル１１０によって課せられる制限のために、ネットワークアイランド１０２は、コアネットワーク１０８に接続された外部システムと常にリアルタイムで通信することはできない。したがって、地方ネットワーキングシステム１００は、アプリケーションサービス・サーバ１１４（例えば、ソーシャルネットワーキングシステム、クラウドアプリケーション、またはモバイルアプリケーションサーバのアプリケーションサーバ）に対応するアプリケーションサービス・アバター１１２を介して非同期アプリケーションサービスを支援するメカニズムを提供する。アプリケーションサービス・アバター１１２は、バックホール・ネットワークチャネル１１０とエンドユーザデバイス１０６との間（例えば、その間で包括的に）に具体化され、ネットワークアイランド１０２を確立することができる。すなわち、アプリケーションサービス・アバター１１２は、地方ネットワーキングシステム１００の地方エッジ（rural edge）で具体化され得る。
【００４０】
いくつかの実施形態では、バックホール・ネットワークチャネル１１０は、ネットワーク機器のチェーン（例えば、アグリゲーションサーバ、基地局、スイッチ、ルータ、または他のネットワーク対応コンピューティングデバイス）を介してエンドユーザデバイス１０６に接続され得る。（例えば、ネットワーク距離の点で）エンドユーザデバイス１０６に最も近いのは、モバイルコア１１６、例えば進化したパケットコア（evolved packet core : EPC）とすることができる。ＥＰＣは、セルラーネットワーク、例えば、ＬＴＥ（long-term evolution）ネットワークを介してユーザと接続するための統合された音声（converged voice）およびデータネットワーキングフレームワークを提供する。
【００４１】
モバイルコア１１６は、インターネットサービスプロバイダ（Internet service provider : ISP）のエッジＰＯＰ（edge point of presence）１１８に接続され得る。ＩＰエッジＰＯＰ１１８は、複数の通信エンティティ間のインタフェースポイントである。例えば、ＩＳＰのエッジＰＯＰ１１８は、モバイルコア１１６とアプリケーションサービス・サーバ１１４との間、またはモバイルコア１１６とコンテンツ配信ネットワーク（content delivery network : CDN）１２０との間でデータ通信するためのインタフェースを提供し得る。ＣＤＮは、ユーザの地理的位置に基づいてウェブページおよび他のウェブコンテンツをユーザに配信する。ＣＤＮ１２０は、アプリケーションサービスまたはアプリケーションサービスのグループ（例えば、ソーシャルネットワーキングシステムの複数のアプリケーションサービス）に固有のものであってもよい。ＣＤＮ１２０は、アプリケーションサービスまたは複数のアプリケーションサービスのグループの静的コンテンツ（static content）を格納することができる。対照的に、アプリケーションサービス・サーバ１１４は、エンドユーザデバイス１０６からのサービス要求に応答して、ＣＤＮ１２０によって提供される静的コンテンツへのリンクを生成することを含む動的コンテンツを生成することができる。ＣＤＮ１２０が、サービス要求が目的とするアプリケーションサービスに関連する静的コンテンツをまだキャッシュしていない場合、ＣＤＮ１２０は、アプリケーションサービスのデータセンター１２２にアクセスすることができる。いくつかの実施形態では、ＣＤＮ１２０に格納されたコンテンツは、不正アクセスを防止するために暗号化または符号化される。
【００４２】
アプリケーションサービス・アバター１１２は、アプリケーションサービス・サーバ１１４によって提供されるアプリケーションサービスに対応することができる。例えば、アプリケーションサービスは、メッセージングサービス、ソーシャルネットワーキングサービス、写真共有サービス、コンテンツ検索サービス、コラボレーションサービス、その他の無料基本サービス、またはそれらの任意の組み合わせを含む。通常、アプリケーションサービス・アバターの存在なしに、１つ以上のエンドユーザデバイスは、アプリケーションサービス・サーバからアプリケーションサービスを直接要求することができる。例えば、エンドユーザデバイスは、アプリケーションサービス・サーバ１１４のアプリケーションサービスＡＰＩ  １２４にアクセスするように構成されたクライアントプログラムを実行することができる。例えば、クライアントプログラムは、１つ以上のモバイルアプリケーション、デスクトップアプリケーション、（例えば、ＪａｖａＳｃｒｉｐｔ（登録商標）ベース、フラッシュベースなどの）ブラウザベースアプリケーション、またはそれらの任意の組み合わせであってもよい。
【００４３】
アプリケーションサービス・アバター１１２は、アバターサーバ１２６上で動作する仮想マシンまたはアプリケーションスレッドとして具体化され得る。アプリケーションサービス・アバター１１２は、アバターサーバ１２６のメモリスペース１２８にアクセス（例えば、読み書き）することができる。いくつかの実施形態では、メモリスペース１２８は、アプリケーションサービス・サーバ１１４の認証されたエージェントによってのみアクセス可能な暗号鍵で部分的または全体的に暗号化される。アバターサーバ１２６は、計算能力を有し、エンドユーザデバイス（例えば、エンドユーザデバイス１０６）のローカルセットのコンテンツをキャッシュし、エンドユーザデバイスのプロファイルを追跡するためのメモリ容量を有し、（ローカルセットの関係性は時間とともに変化するかもしれないが）エンドユーザデバイスのローカルセットへの連続的な接続を有し、アプリケーションサービス・サーバ１１４への断続的な接続（例えば、バックホール・ネットワークチャネル１１０）を有する。アバターサーバ１２６は、アプリケーションサービス・アバター１１２（すなわち、単一のインスタンス）またはアプリケーションサービス・アバター１１２を含む複数のアプリケーションサービス・アバター（複数のインスタンス）をホストするためにプラットフォームを提供する。
【００４４】
アプリケーションサービス・アバター１１２は、アプリケーションサービス・アバター１１２の存在なしに、アプリケーションサービス・サーバ１１４が通常、複数のエンドユーザデバイス（例えば、複数のエンドユーザデバイス１０６）に提供する複数の機能の少なくとも一部を保存することができる。アプリケーションサービス・サーバ１１４は、サービス機能をアプリケーションサービス・アバター１１２に公開し、アプリケーションサービス・アバター１１２に、アプリケーションサービス・サーバ１１４に提供されるサービス機能の少なくとも一部をエミュレートさせる委譲ＡＰＩ  １３０を提供することができる。例えば、この設定の下では、サービス要求に対応するサービスタスクの完了が遅れることがある。
【００４５】
サービスタスクは、例えば、コンテンツプロビジョニングタスク（content provisioning task）（例えば、検索エンジンのタスク、メディアライブラリ、デジタルイエローブック（digital yellow book）、ニュースフィード、デジタル辞書または百科事典、デジタルマップ、ニュースフィード、またはそれらの任意の組み合わせ）であり、コンテンツ仕様または嗜好に従ってコンテンツを提供することができる。アプリケーションサービス・アバター１１２は、メモリスペース１２８においてコンテンツインデックスを事前キャッシングすることによって、コンテンツプロビジョニングタスクをエミュレートすることができる。アプリケーションサービス・アバター１１２は、コンテンツインデックスに基づいて要求ユーザの要求されたコンテンツを見つける（locate）ことができる。アプリケーションサービス・アバター１１２は、アプリケーションサービス・サーバ１１４への断続的な接続性（例えば、バックホール・ネットワークチャネル１１０の）が利用可能であるときに、コンテンツインデックスを更新することができる。アプリケーションサービス・アバター１１２は、ローカルデータバンク（例えば、メモリスペース１２８内）に以前に要求されたコンテンツをキャッシュすることができる。いくつかの実施形態では、アプリケーションサービス・サーバ１１４は、（例えば、ローカルネットワークアイランドに関連付けられたユーザプロファイルに基づいて）コンテンツをローカルデータバンクに予測的にプッシュする。いくつかの実施形態では、アプリケーションサービス・アバター１１２は、（アプリケーションサービス・サーバ１１４を含む）コアネットワーク１０８から要求される可能性のあるコンテンツをプリフェッチ（ｐｒｅ−ｆｅｔｃｈ）（すなわち、読み出し）して、ユーザの要求に先立ってローカルデータバンクにコンテンツを記憶する。プリフェッチは、ローカルネットワークアイランドに関連付けられたユーザプロファイルに基づいて、要求される可能性のあるコンテンツを予測し、バックホール・ネットワークチャネル１１０、つまり、断続的な接続が利用可能であるときにコンテンツをフェッチすることによって行うことができる。アプリケーションサービス・アバター１１２は、どの情報／コンテンツがローカルデータバンクにキャッシュされているかに基づいてコンテンツインデックスを更新することができる。要求されたコンテンツを見つけるとき、アプリケーションサービス・アバター１１２は、コンテンツインデックスに従ってローカルデータバンクから要求されたコンテンツを最初に見つけようとすることができる。要求されたコンテンツがローカルデータバンクで利用できない場合、アプリケーションサービス・アバター１１２は、コアネットワーク１０８内のコンテンツのネットワークロケーションを識別することができる。バックホール・ネットワークチャネル１１０が利用できない場合、アプリケーションサービス・アバター１１２は、フェッチ・キュー（fetch queue）に格納するためにフェッチ要求を生成する。アプリケーションサービス・アバター１１２が、バックホール・ネットワークチャネル１１０が利用可能であることを検出すると、アプリケーションサービス・アバター��１２は、フェッチ・キューにおいて識別されたコンテンツのフェッチを開始し、フェッチされたコンテンツをローカルデータバンクに格納する。いくつかの実施形態では、コンテンツがフェッチされると、アプリケーションサービス・アバター１１２は、コンテンツを要求側ユーザのエンドユーザデバイスに転送するか、またはコンテンツがローカルデータバンクからの検索に利用可能であることをエンドユーザデバイスに通知する。
【００４６】
サービスタスクは、例えば、コンテンツルーティングタスク（例えば、メッセージングアプリケーション、掲示板、ソーシャルネットワーキングアプリケーション、イベント管理アプリケーション、コラボレーションアプリケーション、またはこれらの任意の組み合わせのタスク）であってもよく、ユーザからユーザへのメッセージまたはデバイスからデバイスへのメッセージをルーティングする。コンテンツルーティング要求を受信すると、アプリケーションサービス・アバター１１２は、メッセージの宛先と、宛先に関連付けられた宛先プロファイル（例えば、ユーザプロファイル、グループプロファイル、ページプロファイル、掲示板プロファイル）を識別する。アプリケーションサービス・アバター１１２は、メモリスペース１２８内のローカルエンティティのプロファイルのリストを管理する（maintain）ことができる。プロファイルの各々は、固有の識別、ネットワークアイランド１０２への接続の頻度、現在の位置、コンテンツプリファレンス、またはそれらの組み合わせを含む。宛先プロファイルがプロファイルリスト内で見つかると、アプリケーションサービス・アバター１１２は、直ちに宛先プロファイルに関連付けられたエンドユーザデバイスにメッセージを配信することができる。宛先プロファイルがプロファイルのリスト内で見つからない場合、アプリケーションサービス・アバター１１２は、バックホール・ネットワークチャネル（例えば、バックホール・ネットワークチャネル１１０）が利用可能であるかどうかを判定することができる。利用可能な場合、アプリケーションサービス・アバター１１２は、アプリケーションサービス・サーバ１１４にメッセージを送信して、その宛先にルーティングすることができる。利用できない場合、アプリケーションサービス・アバター１１２は、メッセージを発信キュー（outgoing queue）にキューイングし（queue）、メッセージをアプリケーションサービス・サーバ１１４に送信するためにバックホール・ネットワークチャネルが利用可能になるまで待機することができる。
【００４７】
サービスタスクは、例えば、コンテンツ公開タスク（例えば、ステータスを更新し、ブログを公開し、ローカル広告を公表し、イベントを発表し、オークションを発表し、販売のためにアイテムまたはサービスを発表し、またはそれらの任意の組み合わせのタスク）であり、共有可能なパブリックドメインにコンテンツをプッシュする。アプリケーションサービス・アバター１１２は、コンテンツ公開要求を受信したことに応答して、ローカルデータバンクに公開コンテンツを格納し、公開すべきコンテンツ（例えば、ニュースフィードの作成）を公開するためにアプリケーションサービス・サーバ１１４に転送することができる。バックホール・ネットワークチャネル１１０が利用できない場合、バックホール・ネットワークチャネル１１０が再び利用可能になると、コンテンツは、転送のためにキューイングされる。いくつかの実施形態では、アプリケーションサービス・アバター１１２は、公開プラットフォーム（publishing platform）のローカルバージョン（例えば、ニュースレター、ブログ、オークションサイト、プロフィールページ、発表ページ、イベントサイト、Ｗｉｋｉ、またはそれらの任意の組み合わせなど）に公開されるべきコンテンツをローカルで事前に公開する（pre-publish）ことができる。公開プラットフォームのローカルバージョンは、バックホール・ネットワークチャネル１１０からコアネットワーク１０８へのアクセスができない場合であっても利用可能である。アプリケーションサービス・アバター１１２は、バックホール・ネットワークチャネル１１０が利用可能になったときにアプリケーションサービス・サーバ１１４を介してローカルバージョン（local version）をグローバルバージョン（global version）と同期させることができる。
【００４８】
いくつかの実施形態では、アプリケーションサービス・アバター１１２は、アプリケーションサービス・サーバ１１４と通信する時間（例えば、同期の実行、メッセージの送信、タスク要求の転送など）を決定して選択することができる。例えば、選択された時間は、バックホール・ネットワークチャネル１１０のリアルタイム帯域幅利用可能性、バックホール・ネットワークチャネル１１０の輻輳レベル、バックホール・ネットワークチャネル１１０の使用に関連する費用、通信に関連するアプリケーション要件、またはそれらの任意の組み合わせに基づいた最適な時間であり得る。
【００４９】
アプリケーションサービス・アバター１１２は、次に、アバターＡＰＩ  １３２を実装することができる。アバターＡＰＩ  １３２は、アプリケーションサービス・アバター１１２に接続されたネットワークアイランド１０２のエンドユーザのサービス要求に応答して、１つまたは複数のアプリケーションサービス・サーバによって提供されるサービス機能の少なくとも一部を公開し、エンドユーザデバイス１０６をターゲットとするアプリケーションサービス・サーバ１１４からのコマンドを処理するか、またはそれらの任意の組み合わせである。アバターＡＰＩ  １３２は、アプリケーションサービス・サーバ１１４と非同期で通信して（例えば、アプリケーションサービス・サーバ１１４でサービス要求をさらに処理するために）サービス要求を送信したり、コンテンツまたはコマンドを受信したりすることもできる。アバターＡＰＩ  １３２によって提供されるこれらのサービス機能は、エンドユーザデバイス１０６のローカルセットのプロファイルの識別、エンドユーザ要求が受信されたがバックホール・ネットワークチャネル１１０が利用できない場合の「ストアアンドフォワード（store and forward）」機能、エンドユーザデバイス１０６のローカルセットの（例えば、アプリケーションサービス・サーバ１１４またはコアネットワーク１０８内の他のソースからの）コンテンツのキャッシュなどを含む。
【００５０】
アプリケーションサービス・アバター１１２は、エンドユーザデバイスがバックホール・ネットワークチャネル１１０を介してアプリケーションサービス・サーバ１１４に接続されているにもかかわらず、リモートエリアのエンドユーザデバイスに連続アプリケーションサービスを提供する機会を付与する。アプリケーションサービス・アバター１１２は、エンドユーザデバイスに向いているバックホール・ネットワークチャネル１１０の側のネットワークアクセスエッジ（network access edge）からコンテンツおよびサービスを提供することができる。アプリケーションサービス・アバター１１２は、エンドユーザデバイス１０６に配信することができるコンテンツを事前にキャッシュすることによって、または複数のエンドユーザデバイス１０６の間でメッセージを配信することにより、オフラインおよびローカルエクスペリエンス（local experiences）を提供することができる。
【００５１】
図２は、地方ネットワーキングシステム２００（例えば、図１の地方ネットワーキングシステム１００）の地方エッジ２０１にアプリケーションサービス・アバター２０２（例えば、図１のアプリケーションサービス・アバター１１２）を具体化する潜在的な複数の位置を示すブロック図である。図１の地方エッジ（rural edge）２０１は、バックホール・ネットワーク２０６を介してコアネットワーク２０４に接続される。コアネットワーク２０４は、複数の相互接続されたコンピューティングデバイスおよびコンピュータサーバを含む。例えば、コアネットワーク２０４は、アプリケーションデータセンター２０８（例えば、図１のデータセンター１２２）およびＩＳＰ  ＰＯＰ２０６（図１のＩＳＰエッジＰＯＰ１１８）を含むことができる。
【００５２】
アプリケーションサービス・アバター２０２は、地方エッジ２０１の様々なデバイス上に実装され得る。アプリケーションサービス・アバター２０２がバックホール・ネットワーク２０６に近づくにつれて、より多くのユーザが、アプリケーションサービス・アバター２０２から利益を得ることができ、よりサービス機能性が利用され得る。アプリケーションサービス・アバターがエンドユーザデバイスに向かって近づくほど、サービス要求に対する応答時間がより速くなる。例えば、アプリケーションサービス・アバター２０２は、アグリゲーションネットワーク２１２またはアクセスネットワーク２１４に実装され得る。アグリゲーションネットワーク２１２は、アグリゲーションネットワーク機器２１６、例えば、無線ネットワークコントローラ（radio network controller : RNC）、基地局コントローラ（ＢＳＣ）、またはマイクロ波コントローラとすることができる。アクセスネットワーク２１４は、アクセスネットワーク機器２１８、例えば、３Ｇ基地局、Ｗｉ−Ｆｉアクセスポイント、またはルータによって確立され得る。アプリケーションサービス・アバター２０２は、アグリゲーションネットワーク機器２１６によって、またはアクセスネットワーク機器２１８によって実装されてもよい。代わりに、アプリケーションサービス・アバター２０２は、アグリゲーションネットワーク機器２１６、アクセスネットワーク機器２１８、またはバックホール・ネットワーク２０６に関連するネットワーク機器のいずれかとのネットワーク通信におけるアバターサーバ（例えば、図１のアバターサーバ１２６）に実装され得る。
【００５３】
いくつかの実施形態では、アプリケーションサービス・アバター２０２は、複数のエンドユーザデバイスのうちの１つ、例えばエンドユーザデバイス２２２に実装され得る。いくつかの実施形態では、アプリケーションサービス・アバター２０２のインスタンス（instance）が実装され、各エンドユーザデバイス上でアクティブとなる。いくつかの実施形態では、アプリケーションサービス・アバター２０２のインスタンスは、各エンドユーザデバイス上に実装されるが、これらのインスタンスの一部分のみがアクティブとなる。例えば、アプリケーションサービス・アバター２０２に関連するアプリケーションサービス・サーバ（例えば、図１のアプリケーションサービス・サーバ１１４）は、アプリケーションサービス・アバター２０２のアクティブインスタンスをホストするエンドユーザデバイスのうちの少なくとも１つを選択することができる。アプリケーションサービス・サーバは、その能力（例えば、ネットワークインタフェースおよびプロトコルの可用性）、仕様（例えば、プロセッサタイプまたは最大メモリスペース）、リソース容量（例えば、利用可能なバッテリ電力、利用可能なメモリスペース、利用可能な帯域幅、または利用可能な処理能力）、および／または他のエンドユーザデバイスと比較した接続性（例えば、特定の数の他のエンドユーザデバイスと通信することができる）に基づいてエンドユーザデバイスを選択することができる。別例では、アプリケーションサービス・アバター２０２のアクティブインスタンスは、他のエンドユーザの能力、仕様、リソース容量、および／または接続性に基づいて、他のエンドユーザデバイス内のアプリケーションサービス・アバター２０２の休止インスタンス（dormant instance）をアクティブにすることができる。例えば、このアクティブ化プロセスは、アプリケーションサービス・アバター２０２の役割を１つのエンドユーザデバイスから別のエンドユーザデバイスにハンドオーバするプロセスとすることができる。これにより、アプリケーションサービス・アバター２０２の実装を動的にすることができる。いくつかの実施形態では、これらのインスタンスの選択的なアクティブ化（activation）は、アプリケーションサービス・サーバによって制御されてもよい。アプリケーションサービス・アバター２０２がエンドユーザデバイス内に実装されるいくつかの実施形態では、アプリケーションサービス・アバター２０２のインスタンスは、エンドユーザではなく、アプリケーションサービス・サーバによって制御および構成され、アプリケーションサービス・アバター２０２によって管理されるデータのプライバシーを保護する。これにより、例えば、暗号鍵による暗号認証を含むセキュリティ機構を用いて達成することができる。
【００５４】
図３は、様々な実施形態に従って、アプリケーションサービス・アバター（例えば、図１のアプリケーションサービス・アバター１１２）を実装するために使用され得るシステム環境の例を示すブロック図である。いくつかの実施形態では、アプリケーションサービス・アバターは、アバターサーバ３０２に実装される。アバターサーバ３０２は、１つまたは複数のアプリケーションサービス・サーバ（例えば、アプリケーションサービス・サーバ３０４Ａおよびアプリケーションサービス・サーバ３０４Ｂ、総称して「アプリケーションサービス・サーバ３０４」）に少なくとも断続的に接続される。アバターサーバ３０２は、１つまたは複数のエンドユーザデバイス３０６の動的セット（dynamic set）を含むローカルネットワークに連続的に接続される。
【００５５】
アバターサーバ３０２は、そのオペレーティングシステム３０７上でアバターエンジン３０８を実行することができる。アバターエンジン３０８は、１つ以上のアバタープロセスをアバターサーバ３０２上で実行することを可能にする。いくつかの実施形態において、各アバタープロセスは、異なるアプリケーションサービスに対応する単一のアプリケーションサービス・アバターを含む。いくつかの実施形態では、複数のアバタープロセスは、ハードウェアの異なるセットでそれぞれ実装され得る。例えば、複数のアバタープロセスは、複数のサーバブレード（server blades）（例えば、アプリケーションブレード３１０Ａおよびアプリケーションブレード３１０Ｂ、総称して「アプリケーション・サーバブレード３１０」）上にそれぞれ実装され得る。アプリケーション・サーバブレード３１０の各々は、独立した複数のプロセッサ、独立したオペレーティングメモリ、独立した永続データストレージ（persistent data storage）、またはそれらの任意の組み合わせを有することができる。アプリケーション・サーバブレード３１０は、ネットワークインタフェース、電源、永続データストレージ、またはそれらの任意の組み合わせを共有することができる。
【００５６】
いくつかの実施形態では、アバターサーバ３０２は、コンピュータ仮想化のためのハイパーバイザ３１２を実装することができる。ハイパーバイザ３１２は、１つまたは複数の仮想アバターサーバ（例えば、仮想サーバ３１４Ａおよび仮想サーバ３１４Ｂ、総称して「仮想アバターサーバ３１４」）を実装することができる。各仮想アバターサーバ３１４は、単一のアプリケーションサービス・アバターまたは複数のアプリケーションサービス・アバターを実装することができる。いくつかの実施形態では、ハイパーバイザ３１２上、アプリケーション・サーバブレード上、および／またはオペレーティングシステム３０７上で動作する１つまたは複数のアプリケーションサービス・アバターは、ネットワーク環境において互いに通信し、且つ他のアプリケーションサービス・アバターと通信することができる。
【００５７】
いくつかの実施形態では、アバターサーバ３０２は、アバターデータベース３１６を実装することができる。アバターデータベース３１６は、オペレーティングシステム３０７、複数のアプリケーション・サーバブレード３１０のうちの１つ以上、または１つ以上の仮想アバターサーバにおいて実装され得る。アバターデータベース３１６は、キャッシュされたコンテンツ、キャッシュされたコンテンツのインデックス、エンドユーザデバイス３０６のデバイスプロファイル、エンドユーザデバイス３０６に関連付けられたユーザプロファイル、アプリケーションサービス・サーバ３０４または断続的なバックホール・ネットワークチャネルが利用できないことによって遅延される他のデバイスへのメッセージのためのメッセージキュー、またはそれらの任意の組み合わせを含むことができる。
【００５８】
図４は、様々な実施形態に従ったアプリケーションサービス・アバターのアバター・アプリケーションプログラミングインタフェース（ＡＰＩ）４００を示す機能ブロック図である。アバターＡＰＩ  ４００は、図１のアバターＡＰＩ  １３２であってもよい。アプリケーションサービス・アバターは、図１のアプリケーションサービス・アバター１１２または図２のアプリケーションサービス・アバター２０２であってもよい。アバターＡＰＩ  ４００は、アプリケーション層４０２、接続層４０４、ルーティング層４０６、システム層４０８、またはそれらの任意の組み合わせを含む。
【００５９】
アプリケーション層４０２は、アプリケーションサービス・アバターに対応するアプリケーションサービス・サーバ（例えば、図１のアプリケーションサービス・サーバ１１４）に送信するための１つ以上のメッセージをキューイングするように構成される。例えば、アプリケーション層４０２は、サービス品質（quality of service : QoS）メカニズムを使用してこれを達成することができる。ＱｏＳメカニズムは、コンピュータネットワークのメッセージングトラフィックを促進するためのリソース予約制御メカニズムである。例えば、リソース予約制御メカニズムは、ＡＳＡＰ（as-soon-as-possible）キュー、「Ｅｘｐｉｒｅ−Ａｆｔｅｒ」キュー、優先順位に基づくキュー、またはそれらの任意の組み合わせを具体化することができる。
【００６０】
アプリケーション層４０２は、キューからアプリケーションサービス・サーバにメッセージを送信することが可能であるかどうかを判断することができる。メッセージを送信することが可能な場合、アプリケーション層４０２は、クライアントアプリケーション・スタブを管理および／または呼び出す（invoke）ことができる。クライアントアプリケーション・スタブは、リモートプロシージャコール（remote procedure call : RPC）において転送されたパラメータを変換するために使用される実行可能命令によって具体化される。ＲＰＣは、クライアントコンピュータ（例えば、アプリケーションサービス・アバター）がサーバコンピュータ（例えば、アプリケーションサービス・サーバ）上のプロシージャ（例えば、実行可能なオブジェクト、関数またはプロセス）をリモートで呼び出すことを可能にする。関数呼び出しで使用されるパラメータは、クライアントコンピュータおよびサーバコンピュータが異なるアドレス空間を使用するため、変換する必要がある。クライアントアプリケーション・スタブはコンバージェンス（convergence）を実行し、リモートサーバーコンピュータがＲＰＣをローカル関数呼び出しとして受け取る。
【００６１】
接続層４０４は、アプリケーションサービス・アバターをホストするアバターサーバ（例えば、図２に記載された複数のデバイスのいずれかのアバターサーバ）に利用可能な１つ以上のネットワークインタフェースを監視する。接続層４０４は、アバターサーバが１つまたは複数のローカルエンドユーザデバイス（例えば、図１のエンドユーザデバイス１０６）に接続されているかどうか、および／またはアバターサーバがアプリケーションサービス・サーバに接続されているかどうかを判定することができる。接続層４０４は、デバイスプロファイル（例えば、ソフトウェアおよびハードウェア能力、リソース容量、仕様、接続可否、アイデンティティ、またはそれらの任意の組み合わせ）および／またはユーザプロファイル（例えば、ソーシャルネットワーク、ロケーションベースのプロファイル、ネットワークアクセスプリファレンス、またはそれらの任意の組み合わせ）を含む全ての接続されたデバイスのリストを管理することができる。
【００６２】
接続層４０４は、エンドユーザデバイスが接続または切断するときに、他の層（例えば、アプリケーション層４０２またはルーティング層４０６）のうちの少なくとも１つに割り込みメッセージ（例えば、ｐｉｎｇメッセージ）を送信することができる。接続層４０４は、バックホール・ネットワークチャネルが切断されたとき（例えば、アプリケーションサービス・サーバが切断されたとき）、他の層の少なくとも１つに割り込みメッセージを送信することができる。例えば、接続層４０４は、アプリケーション層４０２によって管理される１つまたは複数のクライアントアプリケーション・スタブに割り込みメッセージを送信することができる。接続層４０４はまた、バックホール・ネットワークチャネルが利用可能になる予測されるスケジュールを管理することもできる。いくつかの実施形態では、接続層４０４は、バックホール・ネットワークチャネルを使用することに関連するコストマップ（cost map）を管理することができる。例えば、これにより、ルーティング層４０６は、アプリケーションサービス・アバターのネットワーク利用のコストを最適化することができる。接続層４０４は、（例えば、断続的な接続が利用可能になったときの）アプリケーションサービス・サーバのＱｏＳキューのためのバックホールＱｏＳパラメータをさらに設定することができる。接続層４０４は、（例えば、アプリケーションサービス・アバターによって提供されるアプリケーションサービスに対応する）クライアントアプリケーション・スタブに対するメッセージまたはコンテンツを受信することもできる。アプリケーションサービス・サーバは（例えば、図１の委譲ＡＰＩ  １３０を介して）メッセージまたはコンテンツをプッシュメッセージとして送信することができる。
【００６３】
ルーティング層４０６は、エンドユーザデバイスとアプリケーションサービス・サーバとの間のメッセージまたはコンテンツのトラフィックを促進することができる。ルーティング層４０６は、接続層４０４によって管理された接続情報およびプロファイル情報を使用して、どのようにおよびいつメッセージをルーティングするかを決定することができる。例えば、アプリケーションサービス・サーバからの受信メッセージ（incoming message）の場合、ルーティング層４０６は、接続層４０４から、エンドユーザデバイスが、受信メッセージによってターゲットとされているユーザプロファイルに関連付けられたアプリケーションサービス・アバターに接続されているかまたは頻繁に接続するかを判定することができる。別の例として、エンドユーザデバイスからの発信メッセージの場合、ルーティング層４０６は、接続層４０４から、ターゲットデバイスのアイデンティティを特定することができる。ターゲットデバイスがアプリケーションサービス・サーバまたは断続的なネットワークチャネルを介して接続された別のコンピューティングデバイスである場合、接続層４０４は、予想される配信の時間でルーティング層４０６に応答し、および／またはメッセージをメッセージキューに配置することを促進することができる。ターゲットデバイスがアプリケーションサービス・アバターに接続されたエンドユーザデバイスである場合、接続層４０４は、ターゲットデバイスへのメッセージのルーティングを促進するために必要な情報をルーティング層４０６に提供することができる。
【００６４】
システム層４０８は、クライアントアプリケーション・スタブをＱｏＳパラメータで登録または登録解除することができる。システム層４０８は、システムログを記録および格納することもできる。システムログは、例えば、各クライアントアプリケーション・スタブに関連するＱｏＳパラメータ、アプリケーションサービス・サーバまたはエンドユーザデバイスに／から送信されるメッセージ、アバターＡＰＩ  ４００のレイヤによって実行される動作、エラーまたはサービスタスクに関する例外、および／またはそれらの任意の組み合わせを含む。
【００６５】
アプリケーションサービス・サーバおよび／またはアバターサーバ（例えば、アプリケーションサービスＡＰＩ  １２４、委譲ＡＰＩ  １３０、アバターＡＰＩ  １３２、またはアバターＡＰＩ  ４００）に実装されるモジュールは、ハードウェアコンポーネント、ソフトウェアコンポーネント、またはそれらの任意の組み合わせとして具体化され得る。例えば、説明されたモジュールは、図６で説明されるコンピュータシステム上のプロセッサまたはコントローラによって実行可能な非一時的メモリの命令として実装されたソフトウェアコンポーネントであってもよい。別の例として、モジュールに導入された方法および他の技術は、ソフトウェアおよび／またはファームウェアによってプログラムまたは構成されたプログラマブル回路によって具体化されるか、またはそれらは専用の「ハードワイヤード（hardwired）」回路によって全体として、またはそのような形態の組み合わせによって具体化され得る。（存在する場合）そのような専用回路は、例えば、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤｓ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などの形態であり得る。
【００６６】
各モジュールは、個別にかつ他のモジュールとは独立して動作することができる。複数のモジュールの一部または全部を１つのモジュールとして組み合わせることもできる。単一のモジュールをサブモジュールに分割することもでき、それぞれが単一のモジュールの別個の方法ステップまたは方法ステップを実行する。モジュールは、メモリスペースへのアクセスを共有することができる。１つのモジュールは、別のモジュールによってアクセスされるかまたは変換されたデータにアクセスできる。モジュールは、物理的な接続または仮想的な接続を直接的または間接的に共有し、あるモジュールからアクセスまたは修正されたデータに別のモジュールでアクセスすることを可能にする場合に、互いに「接続」されたとみなすことができる。各「メモリスペース（memory space）」または「データバンク（data bank）」は、データストレージに実装され、他のデータストレージとは個別に独立して動作することができる。データストレージの一部または全部を１つのデータストレージとして組み合わせることができる。単一のデータストレージは、各々、単一のデータストレージの一部を含む複数のサブストレージに分割することもできる。
【００６７】
説明されたストレージまたは「ストア（store）」は、ハードウェアコンポーネントまたはデジタルデータを格納するためのハードウェアコンポーネントの一部である。各ストレージは、単一の物理エンティティでも、複数の物理デバイスを介して分散されてもよい。各ストレージは、別個の物理デバイスであっても、同じ物理デバイスまたは複数の物理デバイスを共有してもよい。各ストレージは、実行時間アプリケーション、プロセス、またはモジュールに複数の特定のストレージスペースを割り当てることができる。
【００６８】
図５は、様々な実施形態に従った、コンピューティングデバイス（例えば、図１のアバターサーバ１２６）をアプリケーションサービス・アバター（例えば、図１のアプリケーションサービス・アバター１１２）として動作させる方法５００を示すフローチャートである。ブロック５０２で、コンピューティングデバイスは、アプリケーションサービス・アバターを実装する。コンピューティングデバイスは、アプリケーションサービスをクライアントアプリケーションに提供するためのアプリケーションサービス・サーバ（例えば、図１のアプリケーションサービス・サーバ１１４）へのバックホール・ネットワークチャネルを介して少なくとも断続的なネットワークアクセスを有することができる。
【００６９】
ブロック５０４において、コンピューティングデバイスは、コンピューティングデバイスに接続された１つ以上のエンドユーザデバイスのリストを管理し、アプリケーションサービスにアクセスすることによってサービスグループを確立することができる。例えば、ブロック５０４は、コンピューティングデバイスが、エンドユーザデバイスのデバイスプロファイルおよびエンドユーザデバイスに関連付けられたユーザプロファイルを管理することを含むことができる。
【００７０】
ブロック５０６において、コンピューティングデバイスは、アプリケーションサービスによってエンドユーザデバイスに提供される複数の機能の少なくとも一部分をエミュレートすることによって、ローカライズされた（localized）アプリケーションサービスを提供する。例えば、ローカライズされたアプリケーションサービスを提供することは、アバターサーバにおける複数のエンドユーザデバイスの少なくとも１つからのサービス要求を少なくとも部分的にローカルで処理することを含むことができる。サービス要求を処理することは、アプリケーションサービス・サーバに対して、複数のエンドユーザデバイスのうちの１つの代わりにリモートプロシージャコールにおいて複数のパラメータを変換するクライアントアプリケーション・スタブを呼び出すことを含むことができる。
【００７１】
いくつかの実施形態では、ローカライズされたアプリケーションサービスを提供することは、サービスグループ内の少なくとも第１のエンドユーザデバイスからサービス要求を受信することを含むことができる。サービス要求は、サービスグループ内の第２のエンドユーザデバイスを呼び出すことを含み得る。ローカライズされたアプリケーションサービスを提供することは、第１のエンドユーザデバイスに代わって第２のエンドユーザデバイスにメッセージを通信することによって、サービス要求を少なくとも部分的に処理することをさらに含むことができる。メッセージを通信することは、バックホール・ネットワークチャネルが利用できないこと、またはアプリケーションサービス・サーバが到達不能である（unreachable）と判定したことに応答してもよい。サービス要求を処理することは、サービス要求によって示されるか、参照されるか、またはサービス要求から導出されたメッセージを識別することを含むことができる。
【００７２】
いくつかの実施形態では、ローカライズされたアプリケーションサービスを提供することは、エンドユーザデバイスのうちの１つからメディアコンテンツのデータ処理要求（例えば、データ変換要求）を受信することを含むことができる。例えば、エンドユーザは、アプリケーションサービス用の音声コマンドを送信することができる。音声コマンドは、音声認識および／または変換処理タスクを含むことができる。コンピューティングデバイスは、アバターサーバに格納された処理モジュールのローカルバージョンを利用することによって、アプリケーションサービス・アバターを使用してメディアコンテンツを変換することができる。
【００７３】
いくつかの実施形態では、ローカライズされたアプリケーションサービスを提供することは、複数のエンドユーザデバイスにおいて要求デバイスからコンテンツ識別子を含むコンテンツ提供要求を受信することを含むことができる。コンピューティングデバイスは、コンピューティングデバイスに利用可能なまたはコンピューティングデバイス内で利用可能なローカルデータバンクのコンテンツ識別子を介してコンテンツを見つけることができる。コンピューティングデバイスがローカルデータバンク内でコンテンツを見つけることができず、バックホール・ネットワークチャネルが利用できないとき、コンピューティングデバイスは、要求デバイスへのコンテンツのその後の配信のために、コンテンツのためのコンテンツ要求をアプリケーションサービス・サーバにキューイングする。コンピューティングデバイスがローカルデータバンク内のコンテンツを見つけることができず、バックホール・ネットワークチャネルが利用可能であるとき、コンピューティングデバイスは、アプリケーションサービス・サーバからコンテンツをフェッチして、要求デバイスに配信する。コンピューティングデバイスがローカルデータバンクにコンテンツを配置すると、コンピューティングデバイスは、要求デバイスにコンテンツを提供する。
【００７４】
いくつかの実施形態では、ローカライズされたアプリケーションサービスを提供することは、複数のエンドユーザデバイスにおいて要求デバイスから公開可能なコンテンツを含むコンテンツ公開要求を受信することを含む。次いで、コンピューティングデバイスは、公開可能なコンテンツをアプリケーションサービス・サーバに送信する前に、公開可能なコンテンツをサービスグループが利用できるようにすることによって、サービスグループ内の公開可能なコンテンツを事前に公開することができる。
【００７５】
ブロック５０８において、コンピューティングデバイスは、アプリケーション要求に非同期でアプリケーションサービス・サーバと通信して、サービス要求をファイナライズすることができる。ブロック５０８のロジックは、バックホール・ネットワークチャネルが利用可能であると判定したことに応答して実行され得る。
【００７６】
ブロック５１０において、コンピューティングデバイスは、アプリケーションサービス・サーバからプッシュメッセージを受信することができる。プッシュメッセージは、アプリケーションサービス・アバターのシステムアップデートとすることができる。例えば、ブロック５１０は、アプリケーションサービス・サーバから処理モジュールのローカルバージョンへの更新を受信することを含むことができる。プッシュメッセージは、サービスグループ内の複数のエンドユーザデバイスのうちの１つに向けられたメッセージであってもよい。
【００７７】
プロセスまたは方法が所定の順序で提示されるが、代替的な実施形態は、異なる順序で、複数のステップを有する複数のルーチンを実行するかまたは複数のブロックを有する複数のシステムを使用し、且つ、いくつかのプロセスまたはブロックが、代替またはサブコンビネーションを提供するために、削除、移動、追加、細分化、結合および／または修正されてもよい。これらのプロセスまたはブロックの各々は、様々な異なる方法で具体化され得る。さらに、複数のプロセスまたは複数のブロックが直列に実行されるように示されているが、これらのプロセスまたはブロックは代わりに並列に実行されてもよく、または異なる時間に実行されてもよい。
【００７８】
図６は、様々な実施形態に従った、本明細書に記載の１つまたは複数のコンピューティングデバイスまたはサーバを示すコンピューティングデバイス６００の一例のブロック図である。コンピューティングデバイス６００は、図１のアプリケーションサービス・アバター１１２、図１のアプリケーションサービス・サーバ１１４、または本開示に記載された複数の方法および複数のプロセス（例えば、図５の方法５００）を実装する１つまたは複数のコンピューティングデバイスであり得る。コンピューティングデバイス６００は、相互接続部６３０に結合された１つ以上のプロセッサ６１０およびメモリ６２０を含む。図６に示された相互接続部６３０は、１つまたは複数の別個の物理バス、ポイントツーポイント接続、または適切な複数のブリッジ、複数のアダプタ、または複数のコントローラによって接続された両方を表す抽象概念（abstraction）である。したがって、相互接続部６３０は、例えば、システムバス、ＰＣＩ（Peripheral Component Interconnect）バスまたはＰＣＩ−Ｅｘｐｒｅｓｓバス、ＨｙｐｅｒＴｒａｎｓｐｏｒｔまたは業界標準アーキテクチャ（ＩＳＡ）バス、ＳＣＳＩ（Small Computer System Interface）バス、ユニバーサルシリアルバス（ＵＳＢ）、ＩＩＣ（Ｉ２Ｃ）バス、または「Ｆｉｒｅｗｉｒｅ」を含む。
【００７９】
（複数の）プロセッサ６１０は、コンピューティングデバイス６００の中央処理装置（ＣＰＵ）であり、したがって、コンピューティングデバイス６００の全体的な動作を制御する。特定の実施形態では、プロセッサ６１０は、メモリ６２０に格納されたソフトウェアまたはファームウェアを実行することによってこれを達成する。プロセッサ６１０は、１つまたは複数のプログラム可能な汎用マイクロプロセッサまたは専用マイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、プログラマブルコントローラ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、トラステッドプラットフォームモジュール（ＴＰＭ）など、またはそのようなデバイスの組み合わせを含む。
【００８０】
メモリ６２０は、コンピューティングデバイス６００の主メモリであるか、またはそれを含む。メモリ６２０は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ、またはそれらの組み合わせの任意の形態を表す。使用において、メモリ６２０は、本明細書で開示されるメッシュ接続システムによる命令を含むコード６７０を含むことができる。
【００８１】
また、相互接続部６３０を介してプロセッサ６１０に接続されるのは、ネットワークアダプタ６４０とストレージアダプタ６５０である。ネットワークアダプタ６４０は、コンピューティングデバイス６００に、ネットワークを介してリモート装置と通信する機能を提供し、たとえば、イーサネット・アダプタまたはファイバ・チャネル・アダプタなどである。ネットワークアダプタ６４０はまた、コンピューティングデバイス６００に、他のコンピュータと通信する能力を機能してもよい。ストレージアダプタ６５０は、コンピューティングデバイス６００が永続的ストレージにアクセスすることを可能にし、例えば、ファイバ・チャネル・アダプタまたはＳＣＳＩアダプタでもよい。
【００８２】
メモリ６２０に格納されたコード６７０は、上述の動作を実行するようにプロセッサ６１０をプログラムするためのソフトウェアおよび／またはファームウェアとして具体化してもよい。特定の実施形態では、そのようなソフトウェアまたはファームウェアは、コンピューティングデバイス６００を介して（例えば、ネットワークアダプタ６４０を介して）リモートシステムからダウンロードすることによって、コンピューティングデバイス６００に最初に提供されてもよい。
【００８３】
本明細書で紹介された技法は、例えば、ソフトウェアおよび／またはファームウェアでプログラムされたプログラム可能な回路（例えば、１つまたは複数のマイクロプロセッサ）によって、または完全に専用のハードワイヤード回路で、またはそのような形態の組み合わせによって具体化され得る。専用ハードワイヤード回路は、例えば、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などの形態であってもよい。
【００８４】
明細書において紹介された技術を具体化する際に使用するソフトウェアまたはファームウェアは、機械可読記憶媒体（machine-readable storage medium）に格納されてもよいし、１つまたは複数の汎用または専用のプログラム可能なマイクロプロセッサによって実行されてもよい。本明細書で使用される「機械可読記憶媒体」は、機械によってアクセス可能な形式で情報を格納することができる任意のメカニズムを含む（機械は、例えば、コンピュータ、ネットワーク装置、携帯電話、パーソナルデジタルアシスタント（ＰＤＡ）、製造ツール、１つ以上のプロセッサを有する任意のデバイスなどとすることができる。）。例えば、機械アクセス可能な記憶媒体は、記録可能／記録不可能媒体（例えば、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置など）等を含む。
【００８５】
本明細書で使用される用語「ロジック」は、例えば、特定のソフトウェアおよび／またはファームウェアでプログラムされたプログラム可能な回路、専用ハードワイヤード回路、またはそれらの組み合わせを含み得る。
【００８６】
ソーシャルネットワーキングシステムの概要
開示されるアプリケーションサービスの様々な実施形態は、ソーシャルネットワーキングシステムを利用するか、またはソーシャルネットワーキングシステムの一部である。ソーシャルネットワーキングシステムは、一般に、ユーザがソーシャルネットワーキングシステムのコンテキスト内外のオブジェクトおよび他のユーザと対話することを可能にするメカニズムを提供する。ソーシャルネットワーキングシステムユーザは、個人または任意の他のエンティティ、例えば、ビジネスエンティティまたは他の非パーソンエンティティ（non-person entity）であってもよい。ソーシャルネットワーキングシステムは、ユーザを表示してユーザがソーシャルネットワーキングシステムのオブジェクトおよび情報と対話することを可能にする一連の相互接続されたページを含むウェブベースのインタフェースまたはモバイルインタフェースを利用することができる。例えば、ソーシャルネットワーキングシステムは、ソーシャルネットワーキングシステムユーザによって入力された、またはソーシャルネットワーキングシステムユーザに関連するオブジェクトおよび情報を含む各ソーシャルネットワーキングシステムユーザのページ（例えば、ユーザの「プロファイル」）を表示することができる。ソーシャルネットワーキングシステムは、複数のコンセプトに注目した、類似の関心のある複数のユーザー（「グループ」）に注目した、または他のユーザへの、他のユーザから、または他のユーザによる複数のコミュニケーションやソーシャルネットワーキングシステムのアクティビティを含む写真やビデオを含む複数のページを有してもよい。ソーシャルネットワーキングシステムページは、他のソーシャルネットワーキングシステムページへのリンクを含むことができ、検索、リアルタイム通信、コンテンツアイテムアップロード、購入、広告、および他のウェブベース推論エンジンまたは機能などの追加機能を含み得る。ソーシャルネットワーキングシステムインタフェースは、ウェブブラウザまたは非ウェブブラウザアプリケーション、例えば、モバイルコンピューティングデバイスまたは他のコンピューティングデバイス上で実行される専用のソーシャルネットワーキングシステムアプリケーションからアクセス可能であり得ることに留意されたい。したがって、本明細書で使用される「ページ（ｐａｇｅ）」は、ウェブページ、アプリケーションインタフェースまたはディスプレイ、ウェブページまたはアプリケーション上に表示されるウィジェット、ボックスまたは他のグラフィカルインタフェース、（ソーシャルネットワーキングシステムコンテキスト内か外のどちらかの）別のページ上のオーバーレイウィンドウ（ｏｖｅｒｌａｙ  ｗｉｎｄｏｗ）、または複数の機能におけるソーシャルネットワーキングシステムプラグインまたは統合機能を有するソーシャルネットワーキングシステムの外部のウェブページであってもよい。
【００８７】
上述したように、ソーシャルグラフは、（相互作用、アクティビティまたは関連性を表す）エッジによって相互接続されたノードのセット（ソーシャルネットワーキングシステムオブジェクト、またはソーシャルオブジェクトとしても知られている）を含むことができる。ソーシャルネットワーキングシステムオブジェクトは、ソーシャルネットワーキングシステムユーザ、非パーソスエンティティ、コンテンツアイテム、グループ、ソーシャルネットワーキングシステムページ、ロケーション、アプリケーション、主題、概念または他のソーシャルネットワーキングシステムオブジェクト、例えば映画、バンド、本であってもよい。コンテンツアイテムは、ソーシャルネットワーキングシステムのユーザまたは他のオブジェクトが、例えば、メッセージ、キューイングされたメッセージ（例えば電子メール）、テキストおよびＳＭＳ（ショートメッセージサービス）メッセージ、コメントメッセージ、他の好適なメッセージ技術を用いたメッセージ、ＨＴＴＰリンク、ＨＴＭＬファイル、画像、ビデオ、オーディオクリップ、文書、文書編集、カレンダーエントリまたはイベント、および他のコンピュータ関連ファイルを作成、アップロード、編集、または対話することができるもののいずれかを含み得る。主題と概念は、ソーシャルグラフの説明において、任意の人物、場所、物、またはアイデアを表すノードを含む。
【００８８】
ソーシャルネットワーキングシステムは、ユーザが、ユーザの関心、教育および勤務経験、連絡先情報、人口統計情報、およびユーザのプロフィールページ内の他の経歴情報に関連する情報を入力および表示することを可能にすることができる。プロフィールページに含まれる各学校、雇用者、関心（例えば、音楽、書籍、映画、テレビ番組、ゲーム、政治的見解、哲学、宗教、グループ、またはファンページ）、地理的位置、ネットワーク、またはその他の情報は、ソーシャルグラフ内のノードによって表される。ソーシャルネットワーキングシステムは、ユーザが写真、ビデオ、文書、歌、または他のコンテンツアイテムをアップロードまたは作成することを可能にし、ユーザがイベントを作成およびスケジュールすることを可能にすることができる。コンテンツアイテムおよびイベントは、ソーシャルグラフ内のノードによって表されてもよい。
【００８９】
ソーシャルネットワーキングシステムは、ソーシャルネットワーキングシステム内の非パーソンオブジェクトと対話するための様々な手段を提供することができる。例えば、ユーザは、ソーシャルネットワーキングシステム内でグループを形成したり、グループに参加したり、ファンページのファンになることができる。さらに、ユーザは、ソーシャルネットワーキングシステムオブジェクトを作成、ダウンロード、閲覧、アップロード、リンク付け、タグ付け、編集、または再生することができる。ユーザは、ソーシャルネットワーキングシステムのコンテキスト外でソーシャルネットワーキングシステムオブジェクトと対話することができる。例えば、ニュースウェブサイト上の記事は、ユーザがクリックできる「いいね（like）」ボタンを有する可能性がある。これらの各インスタンスにおいて、ユーザとオブジェクトとの間の対話は、ユーザのノードをオブジェクトのノードに接続するソーシャルグラフ内のエッジによって表される。ユーザは、特定の場所に「チェックイン（check in）」するために（モバイルデバイスのＧＰＳ受信機のような）位置検出機能を使用することができ、エッジは、ユーザのノードをソーシャルグラフ内の場所のノードに接続することができる。
【００９０】
ソーシャルネットワーキングシステムは、様々な通信チャネルをユーザに提供することができる。例えば、ソーシャルネットワーキングシステムは、ユーザが電子メール、インスタントメッセージ、またはテキスト／ＳＭＳメッセージを１人以上の他のユーザに実行することを可能にし、ユーザのウォール（wall）またはプロフィールまたは他のユーザのウォールまたはプロフィールにメッセージを掲示し、ユーザがグループまたはファンページにメッセージを投稿し、またはユーザがユーザまたは他のユーザによって作成またはアップロードされた画像、ウォールのポストまたは他のコンテンツアイテムにコメントすることを可能にすることができる。少なくとも１つの実施形態では、ユーザは、現在のイベント、心の状態、思考、感情、アクティビティ、または現時点で他に関連する任意のコミュニケーションを示すステータスメッセージをユーザのプロファイルに掲示する。ソーシャルネットワーキングシステムは、ユーザがソーシャルネットワーキングシステムの内部および外部の両方で通信することを可能にすることができる。例えば、第１のユーザは、ソーシャルネットワーキングシステムにおけるメッセージ、ソーシャルネットワーキングシステムを介した電子メール、ソーシャルネットワーキングシステムに起因するが外部の電子メール、ソーシャルネットワーキングシステムにおけるインスタントメッセージ、およびソーシャルネットワーキングシステムに起因するが外部のインスタントメッセージを第２のユーザに送信してもよい。さらに、第１のユーザは、第２のユーザのプロファイルページにコメントすることができ、または第２のユーザに関連するオブジェクト、例えば第２のユーザによってアップロードされたコンテンツアイテムにコメントすることができる。
【００９１】
ソーシャルネットワーキングシステムは、複数のユーザがソーシャルネットワーキングシステムの他のユーザと自身を関連付けて複数の接続を確立することを可能にする。２人のユーザ（例えば、ソーシャルグラフノード）がソーシャルネットワーキングシステムにおいてソーシャル接続を明示的に確立すると、２人のユーザは、ソーシャルネットワーキングシステムのコンテキスト内で「友達」（または「接続」）になる。例えば、「Ｊａｎｅ  Ｓｍｉｔｈ」によって受け入れられた「Ｊｏｈｎ  Ｄｏｅ」から「Ｊａｎｅ  Ｓｍｉｔｈ」への友達要求は、ソーシャル接続である。ソーシャル接続は、ソーシャルネットワークのエッジである。ソーシャルネットワーキングシステムで友達になると、ユーザは、接続されていないユーザに利用可能な他の情報よりも多くの情報にアクセスすることができる。例えば、友達であることは、ユーザが別のユーザのプロフィールを見ること、他のユーザの友達を見ること、または別のユーザの写真を見ることを可能にすることができる。同様に、ソーシャルネットワーキングシステム内で友達となることは、ユーザが、（ソーシャルネットワーキングシステムの内部および外部の）電子メール、インスタントメッセージ、テキストメッセージ、電話、または他の任意の通信インタフェースなどによって他のユーザとコミュニケーションするためにより多くのアクセスを可能にする。コミュニケーションのアップロードされたコンテンツアイテムを閲覧、コメント、ダウンロード、承認または他の方法で対話することを可能にすることができる。接続を確立すること、ユーザ情報にアクセスすること、コミュニケーションすること、およびソーシャルネットワーキングシステムのコンテキスト内で対話することは、２人のソーシャルネットワーキングシステムユーザを表すノード間のエッジによって表される。
【００９２】
ソーシャルネットワーキングシステムにおける接続を明示的に確立することに加えて、共通の特性を有する複数のユーザは、通信のトピックを決定する際に使用するためのソーシャルコンテキストを決定する目的で（ソフトまたは暗黙的接続（soft or implicit connection）などの）接続されたものと見なすことができる。少なくとも１つの実施形態では、共通のネットワークに属する複数のユーザは、接続されているとみなされる。たとえば、共通の学校に通う人、共通の会社に所属する人、または共通のソーシャルネットワーキングシステムグループに属する複数のユーザは、接続されているとみなされる。少なくとも１つの実施形態では、共通の経歴特徴を有する複数のユーザは、接続されているとみなされる。例えば、ユーザが生まれたかまたは生きている地理的領域、ユーザの年齢、ユーザの性別およびユーザの関係状態が使用されて、複数のユーザが接続されているかどうかを判定することができる。少なくとも１つの実施形態では、共通の関心を有する複数のユーザが、接続されているとみなされる。例えば、ユーザの映画の好み、音楽の好み、政治的な意見、宗教的な意見、または他の関心が、複数のユーザが接続されているかどうかを判定するために使用されてもよい。少なくとも１つの実施形態では、ソーシャルネットワーキングシステム内で共通の行動を取った複数のユーザは、接続されたとみなされる。たとえば、共通のオブジェクトを推薦または推奨するユーザ、共通のコンテンツアイテムにコメントするユーザ、または共通のイベントに喜んで出席する（ＲＳＶＰ）複数のユーザは、接続されたとみなされる。ソーシャルネットワーキングシステムは、ソーシャルグラフを利用して、複数のユーザ間のソーシャルコンテキストを判定または評価するために、特定のユーザと接続されているかまたは類似している複数のユーザを特定することができる。ソーシャルネットワーキングシステムは、そのようなソーシャルコンテキストおよび共通の属性を利用して、特定のソーシャルネットワークアカウントに関連付けられたキャッシュアプライアンス（cache appliance）内のキャッシングのための複数のコンテンツ項目を予測可能に選択するコンテンツ配信システムおよびコンテンツキャッシングシステムを支援することができる。
【００９３】
本開示のいくつかの実施形態は、上述のものに加えて、またはその代わりに、他の態様、要素、特徴およびステップを有する。これらの潜在的な追加および置換は、本明細書の残りの部分で説明される。
【００９４】
例えば、幾つかの実施形態は、アバターサーバを含み、アバターサーバは、１つまたは複数のエンドユーザデバイスのローカルセットに接続し、バックホール・ネットワークチャネルを介して少なくとも断続的にアプリケーションサービスを提供するアプリケーションサービス・サーバに接続するように構成された１つまたは複数のネットワークインタフェースと、バックホール・ネットワークチャネルが利用可能である場合、アプリケーションサービス・サーバと通信するアプリケーションサービス・アバターをホストするように構成されたプロセッサであって、アプリケーションサービス・アバターは、アバター・アプリケーションプログラミングインタフェース（ＡＰＩ）を提供し、アバター・アプリケーションプログラミングインタフェースは、１つ以上のエンドユーザデバイスに対して、アプリケーションサービスによって提供される複数の機能の少なくとも一部分をエミュレートすることによって、アプリケーションサービス・アバターを介してローカライズされたアプリケーションサービスを提供する、プロセッサと、１つ以上のエンドユーザデバイスのローカルセットに対するコンテンツをキャッシュし、１つ以上のエンドユーザデバイスのプロファイルを追跡するためのメモリと、を備える。アバターサーバは、１つ以上のエンドユーザデバイスのネットワークアクセスまたはアグリゲーション通信データを提供するネットワーク機器に実装され得る。アバターサーバは、１つ以上のエンドユーザデバイスのネットワークアクセスを提供するネットワーク機器とは独立して実装され得る。アバターサーバは、１つ以上のエンドユーザデバイスのうちの１つに実装され得る。
【００９５】
幾つかの実施形態は、アバターサーバを動作させるためのコンピュータにより実行可能な複数の命令を記憶するコンピュータ可読記憶メモリ（例えば、非一時的データ記憶メモリ）を含む。コンピュータ可読記憶メモリは、アバターサーバにアプリケーションサービス・アバターを実装するための命令であって、アバターサーバは、バックホール・ネットワークチャネルを介してアプリケーションサービス・サーバへの断続的なネットワークアクセスを少なくとも有し、アプリケーションサービス・サーバは、複数のクライアントアプリケーションにアプリケーションサービスを提供する、アバターサーバにアプリケーションサービス・アバターを実装するための命令と、アプリケーションサービスにアクセスするためにアバターサーバに接続された１つ以上のエンドユーザデバイスのリストを管理することによってサービスグループを確立するための命令と、サービスグループの少なくとも第１のエンドユーザデバイスからのサービス要求をアバターサーバで受信するための命令であって、サービス要求は、サービスグループの第２のエンドユーザデバイスに関連する、サービス要求をアバターサーバで受信するための命令と、第１のエンドユーザデバイスに代わって第２のエンドユーザデバイスにメッセージを通信することによって、少なくとも部分的に、サービス要求を処理するための命令と、を含み得る。コンピュータ可読記憶メモリは、１つ以上のエンドユーザデバイスに対して、アプリケーションサービスによって提供される複数の機能の少なくとも一部分をエミュレートすることによって、アバターサーバを用いてローカライズされたアプリケーションサービスを提供するための命令をさらに含み得る。コンピュータ可読記憶メモリは、バックホール・ネットワークチャネルが利用可能である場合に、サービス要求をアプリケーションサービス・サーバに非同期で通信するための命令をさらに含み得る。コンピュータ可読記憶メモリは、アプリケーションサービス・サーバに対して、１つ以上のエンドユーザデバイスのうちの１つに代わってリモートプロシージャコールにおいて複数のパラメータを変換するクライアントアプリケーション・スタブを呼び出すための命令をさらに含み得る。コンピュータ可読記憶メモリは、１つ以上のエンドユーザデバイスのデバイスプロファイルおよび１つ以上のエンドユーザデバイスに関連付けられたユーザプロファイルを管理するための命令をさらに含み得る。
【図１】
2018509672.tif 000003
【図２】
2018509672.tif 000004
【図３】
2018509672.tif 000005
【図４】
2018509672.tif 000006
【図５】
2018509672.tif 000007
【図６】
2018509672.tif 000008
【国際調査報告】
2018509672.tif 000009
2018509672.tif 000010
2018509672.tif 000011