JP2018060580A - フェデレーション方式のアプリケーションサービス - Google Patents

フェデレーション方式のアプリケーションサービス Download PDF

Info

Publication number
JP2018060580A
JP2018060580A JP2018000164A JP2018000164A JP2018060580A JP 2018060580 A JP2018060580 A JP 2018060580A JP 2018000164 A JP2018000164 A JP 2018000164A JP 2018000164 A JP2018000164 A JP 2018000164A JP 2018060580 A JP2018060580 A JP 2018060580A
Authority
JP
Japan
Prior art keywords
service
software
application
access
applications
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018000164A
Other languages
English (en)
Other versions
JP6646076B2 (ja
Inventor
ペノフ、フランシスラフ
Penov Francislav
ジェイ. マルチェック、マイケル
J Marucheck Michael
ジェイ. マルチェック、マイケル
ランドルフ ロンギーノ、オースティン
Randolph Longino Austin
ランドルフ ロンギーノ、オースティン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meta Platforms Inc
Original Assignee
Facebook Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Facebook Inc filed Critical Facebook Inc
Publication of JP2018060580A publication Critical patent/JP2018060580A/ja
Application granted granted Critical
Publication of JP6646076B2 publication Critical patent/JP6646076B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/303Terminal profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)
  • Telephone Function (AREA)

Abstract

【課題】クライアントアプリケーションのためのサービスの提供方法を改良する。【解決手段】一実施形態では、方法は、アプリケーションからサービスへのアクセスのための要求を受信することを含む。アプリケーションは、サービスにアクセスするためのソフトウェアを各々が含む複数のアプリケーションのうちの1つである。方法は、サービスにアクセスするために使用するアプリケーションのうちの1つを選択すること、サービスにアクセスするために選択されたアプリケーションのソフトウェアを介して要求元のアプリケーションにサービスへのアクセスを提供することを含む。【選択図】 図2

Description

本開示は、一般に、クライアントアプリケーションのためのサービスに関する。
コンピューティングデバイスは、ゲーム、ウェブブラウザ、メッセージングサービス、またはソーシャルネットワーキングアプリケーションなどのソフトウェアアプリケーションを実行することができる。ソーシャルネットワーキングアプリケーションでは、ユーザは、ソーシャルネットワーク内の他のユーザと情報を連絡し、通信し、共有することができる。アプリケーションは、ハードウェアおよびソフトウェアとインタフェースして、ユーザに機能を提供することができる。例えば、モバイルデバイスは、モバイルデバイス上のグローバルポジショニングシステム(GPS:global positioning system)チップセットからの出力など、センサ出力にアクセスしてクライアントデバイスの位置を特定するアプリケーションを含むことができる。別の例として、コンピューティングデバイス上のアプリケーションは、アプリケーションの実行中に、メモリ管理機能などのオペレーティングシステムの機能を使用することができる。
クライアントデバイス上のアプリケーションは、ユーザに機能を提供するため、および/またはハードウェアまたはソフトウェアとインタフェースするために、1つまたは複数のサービスを利用することができる。特定の実施形態では、特定のサービスを使用するか、または特定のサービスにアクセスするクライアントデバイス上のアプリケーションのソフトウェアは、アプリケーション用のソフトウェアクライアントおよびサービスのインスタンス(即ち、サービスにアクセスまたはサービスを提供するソフトウェア)の両方を含み得る。特定の実施形態では、複数のアプリケーションのクライアントは、それらのアプリケーションの各々にサービスの独自のインスタンスが含まれていても、プッシュサービスなどのクライアントデバイス上の特定のアプリケーションに関連付けられたサービスの使用を共有するか、またはサービスへのアクセスを共用することができる。
アプリケーションがサービスへのアクセスを要求した後、アプリケーションによってアクセスまたは使用されるべきサービスのインスタンスに関する決定が行われる。使用されるインスタンスは、要求元のアプリケーションに含まれるインスタンスであってもよく、または、代替的に、クライアントデバイス上の別のアプリケーションに関連付けられたインスタンスであってもよい。決定は、任意の適切な基準に基づいて行うことができる。例えば、インスタンスのプロトコルバージョン、インスタンスに関連付けられたアプリケーションの属性、インスタンスのバージョン、またはそれらの任意の組み合わせを使用して、サービスの特定のインスタンスがサービスを要求しているクライアントデバイスの1つまたは複数のアプリケーションによって使用されるべきかどうかが決定される。
特定の実施形態では、サービスは、他のサービスなどのサービスのどのインスタンスを要求元のアプリケーションが使用すべきかを決定する選択サービスとすることができる。選択サービスの複数のインスタンスが存在する場合(例えば、複数のアプリケーションがそれぞれ選択サービスのインスタンスを含む場合)、選択サービスの適切なインスタンスが決定され、かつ要求されたサービスのインスタンスを選択するために使用される。選択サービスのインスタンスは、任意の適切な基準に基づいて選択され、この基準は、限定されるものではないが、上記の基準を含む。
上述した実施形態は一例にすぎず、本開示の範囲はこれらに限定されるものではない。特定の実施形態は、上に開示した実施形態の構成要素、要素、特徴、機能、動作、またはステップの全て、一部を含むか、またはいずれも含まない。本発明による実施形態は、特に、方法、記憶媒体、システム、およびコンピュータプログラム製品に関する添付の特許請求の範囲に開示され、1つの請求項のカテゴリ(例えば、方法)に記載された任意の特徴は、他の請求項のカテゴリ(例えば、システム)においても同様に請求することができる。添付の特許請求の範囲に記載された従属性または特許請求の範囲を裏付ける参照番号は、形式的な理由のためにのみ選択される。しかしながら、何れかの前の請求項(特に、多数項従属性)を意図的に参照した結果生じる主題を同様に請求することができ、添付の請求項において選択された従属性に関係なく、請求項またはその特徴の何れの組み合わせも開示され、かつ請求することができる。請求することができる主題は、添付の特許請求の範囲の請求項に記載された特徴の組み合わせだけでなく、特許請求の範囲の請求項における他の特徴のあらゆる組み合わせをも含み、特許請求の範囲の請求項に記載された各特徴は、請求項における任意の他の特徴とも、または他の特徴の組み合わせとも組み合わせることができる。さらに、本明細書に記載または図示された実施形態および特徴のいずれは、別個の請求項および/または本明細書に記載または図示される任意の実施形態または特徴とも、または添付の特許請求の範囲の請求項の任意の特徴とも組み合わせて請求することができる。
ソーシャルネットワーキングシステムに関連する例示的なネットワーク環境を示す。 アプリケーションが使用すべきサービスの2つまたは複数のインスタンスのうちのいずれかのインスタンスを決定するための例示的な方法を示す。 アプリケーションが使用すべきサービスの2つまたは複数のインスタンスのうちのいずれかのインスタンスを決定するための例示的な方法を示す。 例示的なコンピュータシステムを示す。
図1は、ソーシャルネットワーキングシステムに関連付けられている例示的なネットワーク環境100を示す。ネットワーク環境100は、互いにネットワーク110によって接続されたユーザ101、クライアントシステム130、ソーシャルネットワーキングシステム160、およびサードパーティシステム170を含む。図1は、ユーザ101、クライアントシステム130、ソーシャルネットワーキングシステム160、サードパーティシステム170、およびネットワーク110の特定の構成を示すが、この開示は、ユーザ101、クライアントシステム130、ソーシャルネットワーキングシステム160、サードパーティシステム170、およびネットワーク110の任意の好適な構成を企図する。限定するものとしてではなく一例として、クライアントシステム130、ソーシャルネットワーキングシステム160、およびサードパーティシステム170の2以上は、ネットワーク110をバイパスして互いに直接的に接続されてもよい。別の例として、クライアントシステム130、ソーシャルネットワーキングシステム160、およびサードパーティシステム170の2以上が、全体として、または部分的に互いに物理的に、または論理的に同じ場所にあってもよい。さらに、図1は、特定の数のユーザ101、クライアントシステム130、ソーシャルネットワーキングシステム160、サードパーティシステム170、およびネットワーク110を示すが、この開示は、任意の好適な数のユーザ101、クライアントシステム130、ソーシャルネットワーキングシステム160、サードパーティシステム170、およびネットワーク110を企図する。限定するものとしてではなく一例として、ネットワーク環境100は、複数のユーザ101、クライアントシステム130、ソーシャルネットワーキングシステム160、サードパーティシステム170、およびネットワーク110を含んでもよい。
特定の実施形態では、ユーザ101は、ソーシャルネットワーキングシステム160と、またはソーシャルネットワーキングシステム160を通じて対話、すなわち通信する個人(人間のユーザ)、エンティティ(たとえば、企業、事業者、またはサードパーティアプリケーション)、または(たとえば、個人またはエンティティの)グループであってよい。特定の実施形態では、ソーシャルネットワーキングシステム160は、オンラインソーシャルネットワークをホストするネットワークアドレス指定可能なコンピューティングシステムであってよい。ソーシャルネットワーキングシステム160は、たとえばユーザプロフィールデータ、コンセプトプロフィールデータ、ソーシャルグラフ情報、またはオンラインソーシャルネットワークに関係する他の好適なデータなど、ソーシャルネットワーキングデータを生成、記憶、受信、および送信する。ソーシャルネットワーキングシステム160は、ネットワーク環境100の他の構成要素によって、直接的に、またはネットワーク110を通じてアクセスされてもよい。特定の実施形態では、ソーシャルネットワーキングシステム160は、ユーザ101がたとえば適切なプライバシ設定を設定することによってなど、自分達のアクションをソーシャルネットワーキングシステム160によって記録させる、または他のシステム(たとえば、サードパーティシステム170)と共有させることについてオプトインまたはオプトアウトすることを可能にする認可サーバ(または他の適切な構成要素)を含んでもよい。ユーザのプライバシ設定は、そのユーザに関連付けられているどの情報が記録されるか、そのユーザに関連付けられている情報がどのように記録されるか、そのユーザに関連付けられている情報がいつ記録されるか、そのユーザに関連付けられている情報を誰が記録するか、そのユーザに関連付けられている情報が誰と共有されるか、およびそのユーザに関連付けられている情報が何の目的で記録され共有されるかを決定することができる。認可サーバは、ブロッキング、データのハッシュ化、匿名化、または他の適切な技術を通じて、ソーシャルネットワーキングシステム30のユーザの1以上のプライバシ設定を適切に実施するために用いられる。特定の実施形態では、サードパーティシステム170は、ネットワークアドレス指定可能なコンピューティングシステムであってよい。サードパーティシステム170は、データを生成、記憶、受信、および送信する。サードパーティシステム170は、ネットワーク環境100の他の構成要素によって、直接的に、またはネットワーク110を通じてアクセスされてもよい。特定の実施形態では、1または複数のユーザ101が1または複数のクライアントシステム130を使用し、ソーシャルネットワーキングシステム160またはサードパーティシステム170にアクセスし、データを送り、それらからデータを受信してもよい。クライアントシステム130は、ソーシャルネットワーキングシステム160またはサードパーティシステム170に直接的に、ネットワーク110を通じて、またはサードパーティシステムを通じてアクセスしてもよい。限定するものとしてではなく一例として、クライアントシステム130は、サードパーティシステム170にソーシャルネットワーキングシステム160を通じてアクセスしてもよい。クライアントシステム130は、たとえばパーソナルコンピュータ、ラップトップコンピュータ、携帯電話、スマートフォン、またはタブレットコンピュータなど、任意の好適なコンピューティングデバイスであってよい。
この開示は、任意の好適なネットワーク110を企図する。限定するものとしてではなく一例として、ネットワーク110の1または複数の部分は、アドホックネットワーク、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、ローカルエリアネットワーク(LAN)、無線LAN(WLAN)、ワイドエリアネットワーク(WAN)、無線WAN(WWAN)、メトロポリタンエリアネットワーク(MAN)、インターネットの一部分、公衆交換電話網(PSTN)の一部分、携帯電話ネットワーク、またはこれらの2以上の組合せを含んでもよい。ネットワーク110は、1または複数のネットワーク110を含んでもよい。
リンク150は、クライアントシステム130、ソーシャルネットワーキングシステム160、およびサードパーティシステム170を通信ネットワーク110に、または互いに接続する。この開示は、任意の好適なリンク150を企図する。特定の実施形態では、1または複数のリンク150は、1または複数の有線(たとえば、デジタル加入者線(DSL)またはDOCSIS(Data Over Cable Service Interface Specification)など)、無線(たとえば、Wi−FiまたはWiMAX(Worldwide interoperability for Microwave Access)など)、または光(たとえば、同期光ネットワーク(SONET)または同期デジタルハイアラーキ(SDH)など)リンクを含む。特定の実施形態では、1または複数のリンク150は、それぞれ、アドホックネットワーク、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、WWAN、MAN、インターネットの一部分、PSTNの一部分、セルラ技術ベースのネットワーク、衛星通信技術ベースのネットワーク、別のリンク150、または2以上のそのようなリンク150の組合せを含む。リンク150は、必ずしもネットワーク環境100全体を通じて同じであることを必要としない。1または複数の第1のリンク150は、1または複数の点で1または複数の第2のリンク150と異なってもよい。
クライアントデバイス上のアプリケーションは、1つまたは複数のサービスを利用して、ユーザに機能を提供し、かつ/またはハードウェアまたはソフトウェアとインタフェースすることができる。例えば、アプリケーションは、1つまたは複数のアプリケーションプログラミングインタフェース(API)にアクセスして、オペレーティングシステム、他のソフトウェアプログラム(例えば、グラフィックスレンダリングプログラム等)、クライアントデバイス上のハードウェアまたは1つまたは複数のサーバまたは無線ネットワーク通信ポイントなどの外部ハードウェア、またはサーバまたは他の外部またはリモートコンピューティングデバイス上で動作するソフトウェアと通信することができる。APIまたはAPIとインタフェースするソフトウェアまたはハードウェアによって提供される機能は、サービスの一例である。例えば、クライアントコンピューティングデバイスは、APIを介して外部プッシュサーバと通信してプッシュ通知を受信することができる。プッシュ通知は、1つまたは複数のサーバによって1つまたは複数の特定のアプリケーションに提供されてもよい。例えば、ソーシャルネットワーキングアプリケーションは、ソーシャルネットワーキングシステム上でアプリケーションのユーザに関連するアクティビティが発生したときに、そのアプリケーションに関連付けられたソーシャルネットワーキングシステムの1つまたは複数のサーバからプッシュ通知を受信することができる。別の例として、サービスは、コンピューティングデバイス上のGPSセンサ(またはGPSセンサが出力するデータ)またはコンピューティングデバイスのクロックなど、コンピューティングデバイスのハードウェアまたはソフトウェア機能へのアクセスを含むことができる。本開示はサービスの特定の例を記載しているが、本開示は任意の適切なサービスを企図する。
特定の実施形態では、サービスを使用するか、またはサービスにアクセスするアプリケーションのソフトウェアは、クライアントおよびサービスのインスタンス(例えば、サービスにアクセスまたはサービスを提供するためのソフトウェア)を含み得る。例えば、メッセージングアプリケーションは、プッシュサービスにアクセスするためのメッセージングクライアントおよび1つまたは複数のAPIを含み、ナビゲーションアプリケーションは、プッシュサービスにアクセスするためのナビゲーションクライアントを含むとともに、1つまたは複数のAPIも含み、各ケースにおけるプッシュサービスは、同じ(または関連する)通信プロトコルを使用して同じ(または関連する)サーバとの通信によって提供される。例えば、メッセージングアプリケーションおよびナビゲーションアプリケーションは、いずれの場合もプッシュ通知が、例えばソーシャルネットワーキングシステムの同じサーバによって提供されにもかかわらず、プッシュサービスのそれぞれ独自の関連するインスタンスをそれぞれ使用して通知を受信する。
特定の実施形態では、それらのアプリケーションの各々がその特定のサービスの独自のインスタンスを含む場合であっても、複数のアプリケーションがプッシュサービスのようなサービスの特定のインスタンスの使用を共有するか、または特定のインスタンスへのアクセスを共有する。換言すれば、いくつかのアプリケーションは、各々サービスのインスタンスを含み、更に、2つまたは複数のアプリケーションはサービスの複数のインスタンスのうちの特定の1つのインスタンスを介してサービスにアクセスすることができる。例えば、それらのアプリケーションの各々が、プッシュサーバと通信する性能(例えば、それら独自の必要なソフトウェアのインスタンスを含むか、またはアクセスすること)を含んでいても、1つのアプリケーションに関連付けられたプッシュサービスのインスタンスは、1つまたは複数のプッシュサーバと通信して、複数のアプリケーションにプッシュサービスを提供することができる。したがって、特定の実施形態では、1つのアプリケーションは、サーバと通信するようにオープン状態のソケットを有し、サーバからのデータは、複数のアプリケーションにサービスを提供するために単一のソケット接続を通じて多重化される(multiplexed)。
図2は、アプリケーションが使用すべきサービスの2つまたは複数のインスタンスのうちのいずれかを決定するための例示的な方法200を示す。この方法は、任意の適切なソフトウェアによって実行することができる。例えば、クライアントコンピューティングデバイス上の全てのまたは一部のアプリケーションは、方法200を実行することができる。別の例として、クライアントコンピューティングデバイス上の全てのまたは一部のアプリケーションは、別のアプリケーションなどの方法を実行するソフトウェアにアクセスする。例えば、本明細書でより十分に説明するように、方法200は、デバイス上の1つまたは複数のアプリケーションによってアクセス可能な独立した選択サービスによって実行することができる。
図2の方法は、ステップ210で開始され、サービスにアクセスするためのアプリケーションからの(例えば、選択サービスにアクセスするためのアプリケーションのクライアントからの)の要求が、例えば、選択サービスのインスタンスまたは選択サービスのインスタンスに関連付けられたソフトウェアによって受信される。上述のように、要求は、要求を提出するアプリケーションの一部である選択サービスのインスタンスによって受信されてもよい。言い換えると、要求を受信することは、その選択サービスに関連するアプリケーションによって生成された要求を選択サービスによって受信することを含むことができる。特定の実施形態では、サービスへのアクセスの要求は、アプリケーションがクライアントデバイス上で起動されるたびにアプリケーションによって行われる。言い換えれば、クライアントデバイスのバックグラウンドまたはフォアグラウンドで動作しているかどうかにかかわらず、クライアントデバイス上のランダムアクセスメモリにロードされているアプリケーションは、アプリケーションによって1つまたは複数のサービスに対する要求を生成する。例えば、ソーシャルネットワーキングアプリケーションがクライアントデバイス上にロードされるたびに、アプリケーションは、アプリケーションに関連するプッシュ通知を受信するために、プッシュサービスへのアクセスのための要求を提出する。別の例として、ソーシャルネットワーキングアプリケーションがクライアントデバイスにロードされるたびに、ソーシャルネットワーキングアプリケーションによるプッシュサービスへのアクセスの要求を構成するイベントの通知を方法200を実施するソフトウェアに提供してもよい。
特定の実施形態では、サービスのインスタンスを含むアプリケーションがデバイスにインストールされるたびに、インストールは、アプリケーションがサービスにアクセスするための要求として選択サービスによって(またはインストールを監視し、かつ選択サービスによってアクセス可能なソフトウェアによって)解釈される。例えば、複数のアプリケーションが、特定のアプリケーションに関連付けられたプッシュサービスのインスタンスへのアクセスを共有していると想定する。換言すれば、特定のアプリケーションに関連するプッシュサービスのインスタンスは、クライアントデバイス上の各アプリケーションがプッシュサービスのためにアクセスすべきインスタンスであると決定される。プッシュサービスのインスタンスを有する別のアプリケーションがクライアントデバイスにインストールされると、その新たにインストールされたインスタンスは、アプリケーションが使用するための適切なインスタンスとなり得る。その理由は、例えば、新たにインストールされたアプリケーションに関連するサービスは、そのサービスの最新のインスタンスであり得るからである。従って、インストールは、例えば、図2の例示的な決定方法を実行することによって、プッシュサービスのどのインスタンスを使用するかの決定(インストールされたばかりのアプリケーションを含む、いくつかまたは全てのインストールされたアプリケーションを考慮した決定)をトリガする。サービスのインスタンスを使用する全てまたはいくつかのアプリケーションが、アプリケーションのインストール時にサービスへのアクセスに対する独自の要求を提出するか、あるいは、代替的に、アプリケーションのインストールがサービスにアクセスするためのサービスを用いる全てまたはいくつかのアプリケーションからの要求とみなされる。
特定の実施形態では、サービスのインスタンスを含むアプリケーションがデバイス上で更新されるたびに、更新は、そのアプリケーションがサービスにアクセスする要求として解釈される。特定の実施形態では、サービスのインスタンスを含むアプリケーションが更新されるたびに、更新は、アプリケーションがアクセスする要求として、選択サービスによって(または、更新を監視し、かつ選択サービスによってアクセス可能なソフトウェアによって)解釈される。例えば、複数のアプリケーションが、特定のアプリケーションに関連付けられたプッシュサービスのインスタンスへのアクセスを共有していると想定する。換言すれば、特定のアプリケーションに関連するプッシュサービスのインスタンスは、クライアントデバイス上の各アプリケーションがプッシュサービスのためにアクセスすべきインスタンスであると決定される。プッシュサービスのインスタンスを有する別のアプリケーションがクライアントデバイス上で更新されると、アプリケーションが使用するための適切なインスタンスとなり得る。その理由は、例えば、新たに更新されたアプリケーションに関連するサービスは、そのサービスの最新のインスタンスであり得るからである。従って、更新は、例えば、図2の例示的な決定方法を実行することによって、プッシュサービスのどのインスタンスを使用するかの決定(いくつかのまたは全てのアプリケーション、またはいくつかまたは全ての更新されたばかりのアプリケーションを考慮した決定)をトリガする。サービスのインスタンスを使用する全てまたはいくつかのアプリケーションは、アプリケーションが更新されたときにサービスへのアクセスのための独自の要求を提出するか、あるいは、代替的に、アプリケーションの更新がサービスにアクセスするためのサービスを用いる全てまたはいくつかのアプリケーションのからの要求とみなされる。特定の実施形態では、要求が、更新されるアプリケーションに含まれるサービスのインスタンスに更新が少なくとも部分的に適用されるとき(例えば、サービスのインスタンスが更新されるとき)に行われる。
ステップ220において、ステップ210において要求されたサービスのインスタンスを含む1つのアプリケーションが選択される。特定の実施形態では、サービスの所望のインスタンス(例えば、サービスのその所望のインスタンスを含むアプリケーション)は、選択サービスに要求を提出することによって選択され、その選択サービスは、要求元のアプリケーションに含まれるソフトウェアであるか、または要求元のアプリケーション(例えば、独立したアプリケーション)とは無関係のソフトウェアであり得る。選択サービスは、サービスにアクセスするために使用するアプリケーション(例えば、サービスの所望のインスタンスを含むアプリケーション)を決定し、そのアプリケーションの識別情報を返信する。特定の実施形態では、選択サービスは、それ自体が、例えば例示的な方法200を使用して選択サービスのどのインスタンスを使用するかを決定してアプリケーションに対するサービスを選択するようにアプリケーションに対して選択されたサービスである。特定の実施形態では、サービスのインスタンスに関連付けられたアプリケーションを識別するデジタル署名または他のデータをチェックして、例えば、アプリケーションが既知または信頼できるアプリケーションであることを確認する。
特定の実施形態では、サービスにアクセスするために使用するアプリケーションは、1つまたは複数の所定の基準に従って決定されてもよい。例えば、基準は、サービスのインスタンスのプロトコルバージョンを含むことができる。特定の実施形態では、プロトコルバージョンは、サービスのインスタンスが、サービスを提供するサーバまたは他の外部コンピューティングデバイス上のソフトウェアのバージョンなど、サービスの特定のバージョンに対応していることを示し得る。例えば、プッシュサービスの場合、プロトコルバージョンは、プッシュサービスを提供するサーバ上のソフトウェアのバージョン、サーバとクライアントデバイスとの間で情報を通信するために使用されるプロトコルのバージョン、またはその両方に対応し得る。より高いプロトコルバージョンは、クライアントデバイス上のプッシュサービスのインスタンスが、プッシュサービスをサーバに提供するソフトウェア(プッシュサービスにアクセスするために使用される通信プロトコルを含む)と互換性があること、またはインスタンスがソフトウェアまたは通信プロトコルのバージョンに対応する増強された機能(例えば、セキュリティ機能など)を提供することができることを示す。
特定の実施形態では、サービスの使用するインスタンスを決定するための基準は、サービスのインスタンスを含むアプリケーションの属性またはアスペクト(aspect)を含むことができる。例えば、あるアプリケーションは、他のサービスよりもサービスにアクセスするのにより望ましいものであることがある。例えば、データ、ハードウェア、またはソフトウェアにアクセスする権限が小さいアプリケーションを上回る、データ、ハードウェア、またはソフトウェアにアクセス(センサ出力へのアクセスなど)する権限が大きいアプリケーションを選択することができる。特定の実施形態では、クライアントコンピューティングデバイスに予めインストールされたアプリケーションは、ユーザがインストールするアプリケーションよりも大きい権限を有し得る。特定の実施形態では、アプリケーションは、ユーザの設定またはユーザの嗜好に基づいてより大きい権限を有し得る。特定の実施形態では、属性はアプリケーションのタイプを含み得る。例えば、所望のサービスがメッセージングに関係する場合、メッセージングアプリケーションのサービスのインスタンスが使用するのにより望ましい。特定の実施形態では、属性は、アプリケーションの開発者または発行者を含み得る。例えば、サービスへのアクセスを望むアプリケーションは、要求するアプリケーションを設計、製作、または配布した同じ開発者または発行者によって設計、製作、または配布されるアプリケーションの一部であるサービスのインスタンスを使用することが好ましい。本開示は、サービスのインスタンスを選択するために使用される任意の適切な属性を企図する。特定の実施形態では、使用される属性は、例えば、デバイスのユーザによって、またはサービスの使用するインスタンスを決定するソフトウェアに対する更新によって交換または変更されてもよい。
特定の実施形態では、サービスの使用するインスタンスを決定する基準は、サービスにアクセスするために使用されるアプリケーションのバージョンを識別する情報を含み得る。特定の実施形態では、バージョンは、サービスのインスタンスのバージョンであり得る。アプリケーションまたはサービスのバージョンは、アプリケーションまたはサービスに対するソフトウェア更新に対応する。したがって、直近の更新アプリケーション(特定の実施形態では、直近の更新されたサービスのインスタンス)は、最新のアプリケーション(またはサービス)のバージョンに更新されていないアプリケーション(またはサービスのインスタンス)から選択することができる。
特定の実施形態では、サービスのインスタンスを決定するために使用される基準は、ランク付けまたは重み付けされてもよい。例えば、基準は、1)サービスのインスタンスのプロトコルバージョン、2)サービスのインスタンスを含むアプリケーションの属性またはアスペクト、3)サービスにアクセスするために使用されたアプリケーションのバージョンを識別する情報を含むことができる。1)に対応する基準は、2)に対応する基準よりも優先することができ、2)に対する基準は、3)に対応する基準よりも優先することができる。言い換えれば、より高いプロトコルバージョンを有するサービスのインスタンスは、より所望の属性を有するアプリケーションに関連するサービスのインスタンスより常に選択されてもよい。特定の実施形態では、より低いプロトコルバージョンを有する場合であっても非常に望ましい属性を有するアプリケーションが選択されるように、基準が重み付けされてもよい。本開示は、任意の適切な基準をランク付けまたは重み付けするための任意の適切な方法を企図する。
ステップ230で、サービスへのアクセス(例えば、ステップ220で選択されたサービスのインスタンス)が、要求元のアプリケーションに提供される。特定の実施形態では、アプリケーションが既にサービスのインスタンスを介してサービスにアクセスしており、かつどのインスタンスが適切なものであるかの決定が行われた場合(例えば、サービスのインスタンスがクライアントデバイス上で更新された場合)、ステップ230は、アプリケーションがすでに使用しているインスタンスが適切なインスタンスであることを決定することを含む。特定の実施形態では、ステップ230は、使用されるインスタンスを含むアプリケーションが少なくともクライアントデバイスのバックグラウンドで動作しているかどうかを決定することを含む。アプリケーションが少なくともクライアントデバイスのバックグラウンドで実行されていない場合、ステップ230は、要求元のアプリケーションがサービスの所望のインスタンスにアクセスできるように、クライアントデバイスのバックグラウンドにアプリケーションをロードすることを含む。特定の実施形態では、アプリケーションをロードすることは、所望のサービスを実施するために必要なアプリケーションの一部のみをロードすることを含んでもよい。言い換えれば、所望のサービスを使用する必要がないアプリケーションの他の実行可能な部分は、クライアントデバイスのバックグラウンドにロードされなくてもよい。特定の実施形態では、ステップ230は、アプリケーションがサービスにアクセスするために使用していたが、もはや使用するのに所望のインスタンスではない、サービスのインスタンスまたはサービスのインスタンスを含むアプリケーションを閉じることを含む。
特定の実施形態は、適切な場合、図2の方法の1つまたは複数のステップを繰り返すことができる。本開示は、図2の方法の特定のステップを説明しかつ例示しているが、本開示は、任意の適切な順序で生じる図2の方法の任意の適切なステップを企図している。さらに、本開示は、図2の方法の特定のステップを含む、アプリケーションが使用すべきサービスの2つまたは複数のインスタンスのうちのどれを決定するかの一例の方法を説明し例示するが、本開示は、適切な場合、図2の方法のステップの全て、一部、またはいずれも含まない、任意の適切なステップを含む、アプリケーションが使用すべきサービスの2つまたは複数のインスタンスのいずれかを決定するための任意の適切な方法を企図する。さらに、本開示は、図2の方法の特定のステップを実行する特定の構成要素、デバイス、またはシステムを説明しかつ例示しているが、本開示は、図2の方法の任意の適切なステップを実行する任意の適切な構成要素、デバイス、またはシステムの任意の適切な組み合わせを企図する。
本明細書でさらに十分に説明するように、例示的なサービスは、サービスのどのインスタンスを1つまたは複数のアプリケーションが使用すべきかを決定するための選択サービスであってもよい。選択サービスは、サービスへのアクセスを望むアプリケーションの一部であるか、または独立したソフトウェアであり得る。選択サービスは、例えば、方法200のステップのいくつかまたは全てを実装することによって、アプリケーションが使用すべきサービスの2つまたは複数のインスタンスのうちのいずれかを決定するための全てまたはいくつかのステップを実行してもよい。選択サービスの複数のインスタンスが存在する場合、選択サービスの使用に適切なインスタンスが決定される。例えば、方法200のステップ220に関連して説明された基準のいずれかを使用して、選択サービスのどのインスタンスを使用するかを決定して別のサービスのインスタンスを選択することができる。次いで、選択サービスは、例えば、方法200のステップを実行することによって、他のサービスのどのインスタンスを使用するかを決定し得る。
図3は、アプリケーションが使用すべきサービスの2つまたは複数のインスタンスのうちのいずれかを決定するための例示的な方法300を示す。方法300は、サービスを要求するクライアントアプリケーションの観点から記述される。
方法300は、クライアントアプリケーションがサービスへのアクセスを要求するステップ310で開始される。特定の実施形態では、クライアントアプリケーションがインストールされたときにアクセスのための要求が発生してもよい。特定の実施形態では、アクセスのための要求は、要求されたサービスのインスタンスをホストしているクライアントアプリケーションがインストールされたときに発生してもよい。特定の実施形態では、クライアントアプリケーションが更新されたときにアクセスのための要求が発生してもよい。特定の実施形態では、アクセスのための要求は、要求されたサービスのインスタンスをホストしているクライアントアプリケーションが更新されたときに発生してもよい。特定の実施形態では、要求は、定期的な間隔で、またはオンデマンドで(例えば、ユーザによって、クライアントアプリケーションによって、別のアプリケーションによって、またはそれらの任意の適切な組み合わせによって開始される)生じてもよい。特定の実施形態では、クライアントアプリケーションの要求が選択サービスに対して行われてもよい。特定の実施形態では、選択サービスは、例えば、選択サービスがクライアントアプリケーションのインストールまたは更新が発生したと判断したときに、クライアントアプリケーションに代わって要求を提出してもよい。
ステップ320において、クライアントは、要求に対する応答を受信する。特定の実施形態では、応答は、サービスにアクセスするためのクライアントの要求を満たすことができるサービスの1つまたは複数のインスタンスの識別情報を含む。特定の実施形態では、要求は、サービスを提供することができる全てのインスタンスに対するものであるか、またはサービスを提供することができるいくつかのインスタンスに対するものであり、対応する応答は、適宜、全てのインスタンスまたはいくつかのインスタンスを識別する。一例として、アプリケーションAは、サービスへのアクセスを要求し、アプリケーションA、アプリケーションC、アプリケーションD、およびアプリケーションFを、要求されたサービスのインスタンスを全て含む(または関連する)アプリケーションとして識別する応答を受信する。特定の実施形態では、識別されたインスタンスは、要求元のクライアントアプリケーションによって受信される前に、上記により十分に説明したように、ランク付けまたはスコア付けされてもよい。特定の実施形態では、クライアントアプリケーションは、インスタンスをそのクライアントアプリケーションに関連する選択サービスを使用することによって少なくとも部分的にランク付けまたはスコア付けすることができる。特定の実施形態では、応答を受信することは、クライアントアプリケーションが使用すべき要求されたサービスの選択されたインスタンス(例えば、選択サービスによって選択されるような最高スコアを有するインスタンス)の識別情報のみを受信することを含んでもよい。本明細書でさらに詳細に説明するように、選択サービスは、クライアントアプリケーションの一部、別のクライアントアプリケーションの一部、またはそれ独自の専用アプリケーションであってもよい。
特定の実施形態では、クライアントアプリケーションが、サービスにアクセスするために使用するサービスの選択されたインスタンスを識別した後、クライアントアプリケーションは、インスタンス、インスタンスに関連するアプリケーション、選択サービス、インスタンスに関するプロキシまたはインスタンスに関連するアプリケーションに関するプロキシ、またはそれらの任意の適切な組み合わせを通知し、クライアントアプリケーションが選択されたインスタンスを使用してサービスにアクセスすることを通知してもよい。特定の実施形態では、クライアントアプリケーションは、サービスのインスタンスと直接通信してもよい。特定の実施形態では、クライアントアプリケーションは、サービスのインスタンスと通信するために、スタンドアロン選択サービスなどの仲介を使用することができる。
特定の実施形態は、適切な場合、図3の方法の1つまたは複数のステップを繰り返してもよい。本開示は、図2の方法の特定のステップを説明かつ例示しているが、本開示は、任意の適切な順序で生じる図3の方法の任意の適切なステップを企図する。さらに、本開示は、図3の方法の特定のステップを含む、アプリケーションが使用すべきサービスの2つまたは複数のインスタンスのうちのいずれかを決定するための例示的な方法を説明し例示するが、本開示は、適切な場合、図3の方法のステップの全て、一部、またはいずれも含まない、任意の適切なステップを含む、アプリケーションが使用すべきサービスの2つまたは複数のインスタンスのいずれかを決定するための任意の適切な方法を企図する。さらに、本開示は、図3の方法の特定のステップを実行する特定の構成要素、デバイス、またはシステムを説明しているが、本開示は、図3の方法の任意の適切なステップを実行する任意の適切な構成要素、デバイス、またはシステムの任意の適切な組み合わせを企図する。
図4は、例示的なコンピュータシステム400を示す。特定の実施形態では、1または複数のコンピュータシステム400は、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施する。特定の実施形態では、1または複数のコンピュータシステム400は、本明細書に記載され、または示されている機能を提供する。特定の実施形態では、1または複数のコンピュータシステム400上で動作するソフトウェアは、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施し、または本明細書に記載され、または示されている機能を提供する。特定の実施形態は、1または複数のコンピュータシステム400の1または複数の部分を含む。本明細書では、コンピュータシステムに言及することは、適切な場合、コンピューティングデバイスを包含してもよく、逆も同様である。さらに、コンピュータシステムに言及することは、適切な場合、1または複数のコンピュータシステムを包含してもよい。
この開示は、任意の好適な数のコンピュータシステム400を企図する。この開示は、任意の好適な物理形態をとるコンピュータシステム400を企図する。限定するものとしてではなく一例として、コンピュータシステム400は、組込みコンピュータシステム、システムオンチップ(SOC)、シングルボードコンピュータシステム(SBC)(たとえば、コンピュータオンモジュール(COM)またはシステムオンモジュール(SOM)など)、デスクトップコンピュータシステム、ラップトップもしくはノートブックコンピュータシステム、対話キオスク、メインフレーム、コンピュータシステムのメッシュ、移動体電話、携帯情報端末(PDA)、サーバ、タブレットコンピュータシステム、またはこれらの2以上の組合せであってよい。適切な場合、コンピュータシステム400は、1または複数のコンピュータシステム400を含んでもよく、一元的なものであっても分散型であってもよく、複数のロケーションに跨ってもよく、複数のマシンに跨ってもよく、複数のデータセンタに跨ってもよく、クラウド内にあってもよく、クラウドは、1または複数のネットワーク内で1または複数のクラウドコンポーネントを含んでもよい。適切な場合、1または複数のコンピュータシステム400は、実質的な空間的または時間的制限なしに、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施してもよい。限定するものとしてではなく一例として、1つまたは複数のコンピュータシステム400は、リアルタイムで、またはバッチモードで、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施してもよい。1または複数のコンピュータシステム400は、適切な場合、異なる時に、または異なるロケーションで、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施してもよい。
特定の実施形態では、コンピュータシステム400は、プロセッサ402、メモリ404、ストレージ406、入力/出力(I/O)インタフェース408、通信インタフェース410、およびバス412を含む。この開示は、特定の数の特定の構成要素を特定の構成で有する特定のコンピュータシステムについて記載し示しているが、この開示は、任意の好適な数の任意の好適な構成要素を任意の好適な構成で有する任意の好適なコンピュータシステムを企図する。
特定の実施形態では、プロセッサ402は、コンピュータプログラムを構成するものなど命令を実行するためのハードウェアを含む。限定するものとしてではなく一例として、命令を実行するために、プロセッサ402は、内部レジスタ、内部キャッシュ、メモリ404、またはストレージ406から命令を取り出し(またはフェッチし)、それらを復号および実行し、次いで、1または複数の結果を内部レジスタ、内部キャッシュ、メモリ404、またはストレージ406に書き込む。特定の実施形態では、プロセッサ402は、データ、命令、またはアドレス用に1または複数の内部キャッシュを含んでもよい。この開示は、適切な場合、任意の好適な数の任意の好適な内部キャッシュを含むプロセッサ402を企図する。限定するものとしてではなく一例として、プロセッサ402は、1または複数の命令キャッシュ、1または複数のデータキャッシュ、および1または複数の変換索引バッファ(TLB)を含んでもよい。命令キャッシュ内の命令は、メモリ404またはストレージ406内の命令のコピーであってもよく、命令キャッシュは、プロセッサ402によるこれらの命令の取り出しを高速化する。データキャッシュ内のデータは、プロセッサ402にて実行される命令が操作するための、メモリ404またはストレージ406内のデータのコピー、プロセッサ402で実行される後続の命令によるアクセスのための、またはメモリ404もしくはストレージ406に書き込むための、プロセッサ402で実行された以前の命令の結果、あるいは他の好適なデータであってもよい。データキャッシュは、プロセッサ402による読出しまたは書込み動作を高速化する。TLBは、プロセッサ402のために仮想アドレス変換を高速化する。特定の実施形態では、プロセッサ402は、データ、命令、またはアドレス用に1または複数の内部レジスタを含む。この開示は、適切な場合、任意の好適な数の任意の好適な内部レジスタを含むプロセッサ402を企図する。適切な場合、プロセッサ402は、1または複数の算術論理演算ユニット(ALU)を含むことができ、マルチコアプロセッサであってもよく、1または複数のプロセッサ402を含んでもよい。この開示は、特定のプロセッサについて記載し示しているが、この開示は、任意の好適なプロセッサを企図する。
特定の実施形態では、メモリ404は、プロセッサ402が実行するための命令、またはプロセッサ402が操作するためのデータを記憶するための主記憶装置を含む。限定するものとしてではなく一例として、コンピュータシステム400は、ストレージ406または別のソース(たとえば、別のコンピュータシステム400など)からメモリ404に命令をロードする。次いで、プロセッサ402は、メモリ404から内部レジスタまたは内部キャッシュに命令をロードする。命令を実行するために、プロセッサ402は、内部レジスタまたは内部キャッシュから命令を取り出し、それらを復号する。命令の実行中、または実行後、プロセッサ402は、1または複数の結果(中間結果であることも最終結果であることもある)を内部レジスタまたは内部キャッシュに書き込む。次いで、プロセッサ402は、それらの結果の1または複数をメモリ404に書き込む。特定の実施形態では、プロセッサ402は、1もしくは複数の内部レジスタもしくは内部キャッシュ内、または(ストレージ406もしくは他の場所ではなく)メモリ404内の命令だけを実行し、1もしくは複数の内部レジスタもしくは内部キャッシュ内、または(ストレージ806もしくは他の場所ではなく)メモリ404内のデータだけを操作する。1または複数のメモリバス(それぞれがアドレスバスとデータバスを含むことがある)がプロセッサ402をメモリ404に結合してもよい。バス412は、下記に記載されているように、1または複数のメモリバスを含んでもよい。特定の実施形態では、1または複数のメモリ管理ユニット(MMU)が、プロセッサ402とメモリ404との間に存在し、プロセッサ402によって要求されるメモリ404へのアクセスを容易にする。特定の実施形態では、メモリ404は、ランダムアクセスメモリ(RAM)を含む。このRAMは、適切な場合、揮発性メモリであり得る。適切な場合、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であってよい。さらに、適切な場合、このRAMは、シングルポート型またはマルチポート型RAMであってよい。この開示は、任意の好適なRAMを企図する。メモリ404は、適切な場合、1または複数のメモリ404を含んでもよい。この開示は、特定のメモリについて記載し示しているが、この開示は、任意の好適なメモリを企図する。
特定の実施形態では、ストレージ306は、データまたは命令用のマスストレージを含む。限定するものとしてではなく一例として、ストレージ306は、ハードディスクドライブ(HDD)、フロッピー(登録商標)ディスクドライブ、フラッシュメモリ、光ディスク、光磁気ディスク、磁気テープ、もしくはユニバーサルシリアルバス(USB)ドライブ、またはこれらの2以上の組合せを含んでもよい。ストレージ306は、適切な場合、取外し式または非取外し式(または固定)媒体を含んでもよい。ストレージ306は、適切な場合、コンピュータシステム300に対して内部であっても外部であってもよい。特定の実施形態では、ストレージ306は、不揮発性のソリッドステートメモリである。特定の実施形態では、ストレージ306は、読出し専用メモリ(ROM)を含む。適切な場合、このROMは、マスクプログラムドROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書き換え可能ROM(EAROM)、もしくはフラッシュメモリ、またはこれらの2以上の組合せであってよい。この開示は、任意の好適な物理形態をとるマスストレージ306を企図する。ストレージ306は、適切な場合、プロセッサ302とストレージ306の間の通信を容易にする1または複数のストレージ制御ユニットを含んでもよい。適切な場合、ストレージ306は、1または複数のストレージ306を含んでもよい。この開示は、特定のストレージについて記載し示しているが、この開示は、任意の好適なストレージを企図する。
特定の実施形態では、I/Oインタフェース308は、コンピュータシステム300と1または複数のI/Oデバイスとの間の通信のために1または複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータシステム300は、適切な場合、これらのI/Oデバイスの1または複数を含んでもよい。これらのI/Oデバイスの1または複数は、人とコンピュータシステム300の間の通信を可能にする。限定するものとしてではなく一例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチルカメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、別の好適なI/Oデバイス、またはこれらの2以上の組合せを含んでもよい。I/Oデバイスは、1または複数のセンサを含んでもよい。この開示は、任意の好適なI/Oデバイス、およびそれらのための任意の好適なI/Oインタフェース308を企図する。適切な場合、I/Oインタフェース308は、プロセッサ302がこれらのI/Oデバイスの1または複数を駆動することを可能にする1または複数のデバイスまたはソフトウェアドライバを含む。I/Oインタフェース308は、適切な場合、1または複数のI/Oインタフェース308を含んでもよい。この開示は、特定のI/Oインタフェースについて記載し示しているが、この開示は、任意の好適なI/Oインタフェースを企図する。
特定の実施形態では、通信インタフェース310は、コンピュータシステム300と1もしくは複数の他のコンピュータシステム300または1もしくは複数のネットワークとの間の通信(たとえば、パケットベースの通信など)のために1または複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定するものとしてではなく一例として、通信インタフェース310は、ETHERNET(登録商標)もしくは他の有線ベースのネットワークとの通信のためのインタフェースコントローラ(NIC)もしくはネットワークアダプタ、またはWI−FIネットワークなど無線ネットワークとの通信のための無線NIC(WNIC)もしくは無線アダプタを含んでもよい。この開示は、任意の好適なネットワーク、およびそのための任意の好適な通信インタフェース310を企図する。限定するものとしてではなく一例として、コンピュータシステム300は、アドホックネットワーク、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、またはインターネットの1もしくは複数の部分、あるいはこれらの2以上の組合せと通信する。これらのネットワークの1または複数のうちの1または複数の部分は、有線であっても無線であってもよい。一例として、コンピュータシステム300は、無線PAN(WPAN)(たとえば、BLUETOOTH(登録商標)WPANなど)、WI−FIネットワーク、WI−MAXネットワーク、携帯電話ネットワーク(たとえば、グローバル移動体通信システム(GSM(登録商標))ネットワークなど)、もしくは他の好適な無線ネットワーク、またはこれらの2以上の組合せと通信する。コンピュータシステム300は、適切な場合、これらのネットワークのいずれかのための任意の好適な通信インタフェース310を含んでもよい。通信インタフェース310は、適切な場合、1または複数の通信インタフェース310を含んでもよい。この開示は、特定の通信インタフェースについて記載し示しているが、この開示は、任意の好適な通信インタフェースを企図する。
特定の実施形態では、バス312は、コンピュータシステム300の構成要素を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定するものとしてではなく一例として、バス312は、アクセラレィティッドグラフィックスポート(AGP)もしくは他のグラフィックスバス、EISA(Enhanced Industry Standard Architecture)バス、フロントサイドバス(FSB)、HT(HYPERTRANSPORT)相互接続、ISA(Industry Standard Architecture)バス、インフィニバンド相互接続、LPC(low−pin−count)バス、メモリバス、MCA(Micro Channel Architecture)バス、PCI(Peripheral Component Interconnect)バス、PCIエクスプレス(PCIe)バス、SATA(serial advanced technology attachment)バス、VLB(Video Electronics Standards Association local)バス、もしくは別の好適なバス、またはこれらの2以上の組合せを含んでもよい。バス312は、適切な場合、1または複数のバス312を含んでもよい。この開示は、特定のバスについて記載し示しているが、この開示は、任意の好適なバスまたは相互接続を企図する。
本明細書では、1または複数の非一時的コンピュータ可読記憶媒体は、適切な場合、1または複数の半導体ベースの、もしくは他の集積回路(IC)(たとえば、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向けIC(ASIC))、ハードディスクドライブ(HDD)、ハイブリッドハードドライブ(HHD)、光ディスク、光ディスクドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピー(登録商標)ディスケット、フロッピー(登録商標)ディスクドライブ(FDD)、磁気テープ、ソリッドステートドライブ(SSD)、RAMドライブ、セキュアデジタルカードもしくはセキュアデジタルドライブ、任意の他の好適な非一時的コンピュータ可読記憶媒体、またはこれらの2以上の組合せを含んでもよい。非一時的コンピュータ可読記憶媒体は、適切な場合、揮発性、不揮発性、または揮発性と不揮発性の組合せであってよい。
本明細書では、「または(もしくは)」は、別段明確に示されていない限り、または別段文脈によって示されない限り、包括的(inclusive)であり、排他的なものではない。したがって、本明細書では、「AまたはB」は、別段明確に示されていない限り、または別段文脈によって示されない限り、「A、B、またはその両方」を意味する。さらに、「および」は、別段明確に示されていない限り、または別段文脈によって示されない限り、共同であり、個別的でもある。したがって、本明細書では、「AおよびB」は、別段明確に示されていない限り、または別段文脈によって示されない限り、「AおよびBを共同で、または個別的に」意味する。
この開示の範囲は、当業者であれば理解するであろう、本明細書に記載され、または示されている例示的な実施形態に対する変更、置換、変形、代替、および修正全てを包含する。この開示の範囲は、本明細書に記載され、または示されている例示的な実施形態に限定されない。さらに、この開示は、それぞれの実施形態について、本明細書では、特定の構成要素、要素、特徴、機能、動作、またはステップを含むものとして記載し示しているが、これらの実施形態のいずれも、当業者であれば理解するであろう、本明細書のどこかに記載され、または示されている構成要素、要素、特徴、機能、動作、またはステップのいずれかの任意の組合せまたは並べ替えを含んでもよい。さらに、添付の特許請求の範囲において、特定の機能を実施するように適合された、するように配置された、することが可能な、するように構成された、することが可能である、するように動作可能である、またはするように動作する装置もしくはシステム、または装置もしくはシステムの構成要素に言及することは、その装置、システム、または構成要素がそのように適合され、配置され、動作可能であり、構成され、可能であり、動作可能であり、動作する限り、それ、またはその特定の機能が作動される、オンにされる、またはロック解除されるか否かにかかわらず、その装置、システム、構成要素を包含する。

Claims (20)

  1. ソフトウェアを実施形態化する1つまたは複数のコンピュータ可読の非一時的記憶媒体であって、前記ソフトウェアは、実行時に
    クライアントデバイスの複数のアプリケーションのうちの1つからサービスへのアクセスのための要求を受信し、前記複数のアプリケーションの各々が前記サービスにアクセスするためのソフトウェアを含み、
    前記サービスへのアクセスを提供するために前記複数のアプリケーションの1つを選択し、
    前記サービスにアクセスするために選択されたアプリケーションのソフトウェアを介して要求元のアプリケーションに前記サービスへのアクセスを提供するように動作可能である媒体。
  2. 前記サービスがプッシュサービスを含む、請求項1に記載の媒体。
  3. 前記複数のアプリケーションのうちの1つまたは複数が、前記ソフトウェアをさらに備え、前記ソフトウェアは、実行時に、
    前記サービスにアクセスするためのアプリケーションから要求を受信し、該アプリケーションは、前記サービスにアクセスするためのソフトウェアをそれぞれが含む複数のアプリケーションのうちの1つを含み、
    前記サービスにアクセスするために使用する前記複数のアプリケーションのうちの1つを選択し、
    前記サービスにアクセスするために使用されるものと決定されたアプリケーションを介して要求元のアプリケーションに前記サービスへのアクセスを提供するように動作可能である、請求項1に記載の媒体。
  4. 実行時に前記サービスにアクセスするために使用する前記複数のアプリケーションのうちの1つを選択するように実行可能な前記ソフトウェアは、実行時に1つまたは複数の基準に基づいて前記サービスへのアクセスに使用する前記複数のアプリケーションのうちの1つを決定するように更に動作可能なソフトウェアを含む、請求項1に記載の媒体。
  5. 前記基準は、前記サービスにアクセスするための前記ソフトウェアのプロトコルバージョンを識別する情報を含む、請求項4に記載の媒体。
  6. 前記基準は、前記複数のアプリケーションのうちの1つアプリケーションの属性を含む、請求項4に記載の媒体。
  7. 前記属性は、前記複数のアプリケーションの1つが常駐するクライアントデバイス上のデータにアクセスするための1つまたは複数の権限を含む、請求項6に記載の媒体。
  8. 前記基準は、前記サービスにアクセスするための前記ソフトウェアのバージョンを識別する情報を含む、請求項4に記載の媒体。
  9. 前記基準は、
    前記サービスにアクセスするためのソフトウェアのプロトコルバージョンを識別する情報を含む第1の基準と、
    前記複数のアプリケーションのうちの1つアプリケーションの属性を含む第2の基準と、
    前記サービスにアクセスするための前記ソフトウェアのバージョンを識別する情報を含む第3の基準とを含み、
    前記第1の基準が前記第2の基準よりも優先され、前記第2の基準が前記第3の基準よりも優先される、請求項4に記載の媒体。
  10. 実行時に前記要求元のアプリケーションに前記サービスへのアクセスを提供するように動作可能な前記ソフトウェアは、実行時に
    前記サービスにアクセスするために使用される前記アプリケーションが少なくともクライアントデバイス上のバックグラウンドで動作しているかどうかを決定し、
    アプリケーションが少なくともクライアントデバイス上のバックグラウンドで動作していない場合には、前記サービスにアクセスするためのソフトウェアを含むアプリケーションの少なくとも一部をクライアントデバイスによって実行させるように更に動作可能なソフトウェアを含む、請求項1に記載の媒体。
  11. 実行時に前記サービスにアクセスするためのソフトウェアを含む前記アプリケーションの少なくとも一部を前記クライアントデバイスによって実行させるように動作可能な前記ソフトウェアは、実行時に前記サービスにアクセスするためのソフトウェアを含むアプリケーションの一部のみを前記クライアントデバイスによって実行させるように更に動作可能なソフトウェアを含む、請求項10に記載の媒体。
  12. 実行時に前記サービスにアクセスするために使用する前記複数のアプリケーションのうちの1つを選択するように動作可能な前記ソフトウェアは、実行時に
    前記サービスにアクセスするために使用する前記複数のアプリケーションの1つを選択するための選択サービスに前記サービスにアクセスする要求を提出し、
    前記選択サービスから、選択されたアプリケーションの識別情報を受信するように更に動作可能なソフトウェアを含む、請求項1に記載の媒体。
  13. 各アプリケーションは、前記選択サービスのインスタンスをさらに含み、
    実行時に前記サービスにアクセスする要求を選択サービスに提出するように動作可能な前記ソフトウェアは、実行時に
    前記選択サービスのインスタンスのうちの1つを選択し、
    前記選択サービスの選択されたインスタンスに要求を提出するように更に動作可能なソフトウェアを含む、請求項12に記載の方法。
  14. 実行時に前記選択サービスのインスタンスの1つを選択するように動作可能な前記ソフトウェアは、実行時に1つまたは複数の基準に基づいて前記選択サービスのインスタンスを選択するように更に動作可能なソフトウェアを含み、前記基準は、
    前記選択サービスのインスタンスのプロトコルバージョンを識別する情報を含む第1の基準と、
    前記選択サービスのインスタンスを含むアプリケーションの属性を含む第2の基準と、
    前記選択サービスのインスタンスのバージョンを識別する情報を含む第3の基準とを含む、請求項13に記載の方法。
  15. 実行時にサービスにアクセスするためのアプリケーションから要求を受信するように実行可能な前記ソフトウェアは、実行時に前記アプリケーションがクライアントデバイス上で動作しているという通知を受信するように更に動作可能なソフトウェアを含む、請求項1に記載の媒体。
  16. 実行時にサービスにアクセスするためのアプリケーションから要求を受信するように動作可能な前記ソフトウェアは、実行時に前記複数のアプリケーションのうちの1つがクライアントデバイスにインストールされたという通知を受信するように更に動作可能なソフトウェアを含む、請求項1に記載の媒体。
  17. 実行時にサービスにアクセスするためのアプリケーションから要求を受信するように動作可能な前記ソフトウェアは、実行時に前記複数のアプリケーションのうちの1つに対する更新がクライアントデバイスにインストールされたという通知を受信するように更に動作可能なソフトウェアを含む、請求項1に記載の媒体。
  18. 方法であって、
    コンピューティングデバイスが、クライアントデバイスの複数のアプリケーションのうちの1つからサービスへのアクセスのための要求を受信するステップであって、前記複数のアプリケーションの各々が前記サービスにアクセスするためのソフトウェアを含む、前記受信するステップと、
    前記コンピューティングデバイスが、前記サービスにアクセスするために使用する前記複数のアプリケーションの1つを選択するステップと、
    前記コンピューティングデバイスが、前記サービスにアクセスするために選択されたアプリケーションのソフトウェアを介して要求元のアプリケーションに前記サービスへのアクセスを提供するステップと
    を含む方法。
  19. 前記サービスにアクセスするために使用する前記複数のアプリケーションの1つを選択するステップは、1つまたは複数の基準に基づいて前記サービスへのアクセスに使用する前記複数のアプリケーションのうちの1つを決定することを含み、
    前記基準は、
    前記サービスにアクセスするためのソフトウェアのプロトコルバージョンを識別する情報を含む第1の基準と、
    前記複数のアプリケーションのうちの1つアプリケーションの属性を含む第2の基準と、
    前記サービスにアクセスするための前記ソフトウェアのバージョンを識別する情報を含む第3の基準とを含み、
    前記第1の基準が前記第2の基準よりも優先され、前記第2の基準が前記第3の基準よりも優先される、請求項18に記載の方法。
  20. システムであって、
    1つまたは複数のプロセッサと、プロセッサに接続され、前記プロセッサにより実行可能な命令を含むメモリとを備え、前記プロセッサは前記命令の実行時に
    クライアントデバイスの複数のアプリケーションのうちの1つからサービスへのアクセスのための要求を受信し、前記複数のアプリケーションの各々が前記サービスにアクセスするためのソフトウェアを含み、
    前記サービスへのアクセスを提供するために前記複数のアプリケーションの1つを選択し、
    前記サービスにアクセスするために選択されたアプリケーションのソフトウェアを介して要求元のアプリケーションに前記サービスへのアクセスを提供するように動作可能である、システム。
JP2018000164A 2015-01-09 2018-01-04 フェデレーション方式のアプリケーションサービス Active JP6646076B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/593,215 US9692837B2 (en) 2015-01-09 2015-01-09 Federated application services
US14/593,215 2015-01-09

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017536296A Division JP6273077B1 (ja) 2015-01-09 2015-01-12 フェデレーション方式のアプリケーションサービス

Publications (2)

Publication Number Publication Date
JP2018060580A true JP2018060580A (ja) 2018-04-12
JP6646076B2 JP6646076B2 (ja) 2020-02-14

Family

ID=56356266

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2017536296A Active JP6273077B1 (ja) 2015-01-09 2015-01-12 フェデレーション方式のアプリケーションサービス
JP2018000164A Active JP6646076B2 (ja) 2015-01-09 2018-01-04 フェデレーション方式のアプリケーションサービス

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2017536296A Active JP6273077B1 (ja) 2015-01-09 2015-01-12 フェデレーション方式のアプリケーションサービス

Country Status (7)

Country Link
US (2) US9692837B2 (ja)
JP (2) JP6273077B1 (ja)
KR (2) KR101840757B1 (ja)
AU (2) AU2015375511B2 (ja)
CA (1) CA2972684C (ja)
IL (2) IL253223A (ja)
WO (1) WO2016111711A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190007517A1 (en) * 2015-07-02 2019-01-03 Vid Scale, Inc. Sensor processing engine for mobile devices
CN109240740B (zh) * 2018-11-15 2022-08-02 北京金山云网络技术有限公司 控制台版本兼容方法、装置及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005275613A (ja) * 2004-03-23 2005-10-06 Sharp Corp 画像読取システム
JP2007034810A (ja) * 2005-07-28 2007-02-08 Ntt Docomo Inc コンテンツダウンロードシステム、コンテンツサーバ、移動通信端末及びコンテンツダウンロード方法
JP2011053785A (ja) * 2009-08-31 2011-03-17 Ntt Docomo Inc 通信端末及びアプリケーション取得方法
JP2012226670A (ja) * 2011-04-21 2012-11-15 Panasonic Corp 携帯端末及びマルチメディアシステム
JP2012234279A (ja) * 2011-04-28 2012-11-29 Eqs Kk 情報処理システム、情報処理方法、およびインストールプログラム
WO2013179557A1 (ja) * 2012-05-30 2013-12-05 パナソニック株式会社 無線装置
WO2014073882A1 (ko) * 2012-11-08 2014-05-15 삼성전자 주식회사 액세스 노드에 의한 애플리케이션 호스팅 방법 및 장치

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6999762B2 (en) * 2002-06-05 2006-02-14 Qualcomm, Incorporated Method and apparatus for handling roaming lists in a wireless communication system
JP4676329B2 (ja) * 2005-12-27 2011-04-27 株式会社日立製作所 サービス提供システム、インタラクティブディスプレイ装置及びサービス提供方法
US20080002711A1 (en) * 2006-06-30 2008-01-03 Bugenhagen Michael K System and method for access state based service options
US20080126471A1 (en) * 2006-09-19 2008-05-29 Samsung Electronics Co., Ltd. Method and apparatus for generating plurality of applications, and method and apparatus for processing application suitable for broadcasting receiving apparatus
CN102099802B (zh) * 2008-07-28 2015-05-27 索尼公司 访问联网服务的客户端、信息处理系统和相关联方法
JP5500860B2 (ja) * 2009-04-17 2014-05-21 キヤノン株式会社 周辺機器の管理方法及びそのシステムと装置
JP5266163B2 (ja) * 2009-08-24 2013-08-21 株式会社日立製作所 情報提供方法、これを実行する情報提供サーバ、情報提供サーバを含むサービス提供システム、情報提供を受ける無線通信端末、及びその動作プログラム
US9215548B2 (en) * 2010-09-22 2015-12-15 Ncc Group Security Services, Inc. Methods and systems for rating privacy risk of applications for smart phones and other mobile platforms
US8615772B2 (en) * 2010-09-28 2013-12-24 Qualcomm Incorporated Apparatus and methods of extending application services
US20140053234A1 (en) * 2011-10-11 2014-02-20 Citrix Systems, Inc. Policy-Based Application Management
JP5877040B2 (ja) * 2011-11-16 2016-03-02 株式会社Nttドコモ 接続制御装置、通信システム及び接続制御方法
US9106721B2 (en) 2012-10-02 2015-08-11 Nextbit Systems Application state synchronization across multiple devices
US9276869B2 (en) * 2013-01-02 2016-03-01 International Business Machines Corporation Dynamically selecting an identity provider for a single sign-on request
US20140366080A1 (en) * 2013-06-05 2014-12-11 Citrix Systems, Inc. Systems and methods for enabling an application management service to remotely access enterprise application store
US20140379801A1 (en) * 2013-06-25 2014-12-25 Qualcomm Incorporated User experience on a shared computing device

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005275613A (ja) * 2004-03-23 2005-10-06 Sharp Corp 画像読取システム
JP2007034810A (ja) * 2005-07-28 2007-02-08 Ntt Docomo Inc コンテンツダウンロードシステム、コンテンツサーバ、移動通信端末及びコンテンツダウンロード方法
JP2011053785A (ja) * 2009-08-31 2011-03-17 Ntt Docomo Inc 通信端末及びアプリケーション取得方法
JP2012226670A (ja) * 2011-04-21 2012-11-15 Panasonic Corp 携帯端末及びマルチメディアシステム
JP2012234279A (ja) * 2011-04-28 2012-11-29 Eqs Kk 情報処理システム、情報処理方法、およびインストールプログラム
WO2013179557A1 (ja) * 2012-05-30 2013-12-05 パナソニック株式会社 無線装置
WO2014073882A1 (ko) * 2012-11-08 2014-05-15 삼성전자 주식회사 액세스 노드에 의한 애플리케이션 호스팅 방법 및 장치

Also Published As

Publication number Publication date
CA2972684A1 (en) 2016-07-14
US20160205201A1 (en) 2016-07-14
AU2018200041A1 (en) 2018-01-25
WO2016111711A1 (en) 2016-07-14
KR20180030947A (ko) 2018-03-26
US20170257442A1 (en) 2017-09-07
JP6646076B2 (ja) 2020-02-14
AU2015375511A1 (en) 2017-08-17
KR102142971B1 (ko) 2020-08-11
CA2972684C (en) 2018-12-11
JP6273077B1 (ja) 2018-01-31
AU2015375511B2 (en) 2017-10-05
JP2018505596A (ja) 2018-02-22
IL253223A (en) 2017-12-31
IL253223A0 (en) 2017-08-31
IL256355A (en) 2018-02-28
US9692837B2 (en) 2017-06-27
KR20170097218A (ko) 2017-08-25
KR101840757B1 (ko) 2018-03-21

Similar Documents

Publication Publication Date Title
JP6615166B2 (ja) プロキシ認証のための方法、システム、およびコンピュータ読取り可能な記録媒体
US11128629B2 (en) Escalating user privileges in cloud computing environments
US20210258208A1 (en) Fast Provisioning in Cloud Computing Environments
US20210124821A1 (en) Operating System Implementation of Language to Describe Permissions
US20210126823A1 (en) Operating System with Context-based Permissions
JP6646076B2 (ja) フェデレーション方式のアプリケーションサービス
KR102288023B1 (ko) 인터넷 프로토콜(ip) 주소 할당
US9135452B2 (en) Method and system for anonymization in continuous location-based services
US11245640B1 (en) Systems, methods, and apparatuses for predicting availability of a resource
KR102365807B1 (ko) 도메인 포털을 통해 세션 고정을 방지하기 위한 시스템들 및 방법들
KR102565414B1 (ko) 데이터 처리 가속기에 사용되는, 난독화 유닛에 의해 난독화 를 진행하는 데이터 전송
US11442873B2 (en) Microkernel architecture with enhanced reliability and security
US11366922B1 (en) Systems and methods for transferring capabilities
US20230034196A1 (en) Techniques for providing synchronous and asynchronous data processing
US9521153B2 (en) Platform trust extension

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190129

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190424

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190520

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190703

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200109

R150 Certificate of patent or registration of utility model

Ref document number: 6646076

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250