(57)【要約】【課題】非同期ネットワーク要求を実行するために柔軟な属性を適用する。【解決手段】柔軟な属性が、非同期に実行することのできるネットワーク要求に付加される。どのような数の基準もネットワーク要求に付加することができる。要求は、関連する基準が満たされるまでキューに入れられる。基準が満たされると、要求が実行される。要求を行うアプリケーションには、様々な論理で応答することのできる単純な成功および失敗の通知が提供される。どのようタイプの基準も要求に付加することができる。基準の要求への関連付けは、アプリケーションの設計時に、グラフィカルユーザインタフェースを用いて行うことができる。【選択図】図３
2006229953.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク要求を基準で属性化するためのコンピュータ実装方法であって、
アプリケーションに関連付けられたネットワーク要求を作成するステップと、
基準を前記ネットワーク要求と関連付けることを、前記ネットワーク要求が実行のために提出される前に行うステップと、
前記基準に関するプロパティを調節することを含む、前記基準を構成するステップと、
行うべき前記ネットワーク要求を提出するステップと、
前記ネットワーク要求と関連付けられている前記基準が満たされるときを判定し、前記基準が満たされると、前記要求の実行を試みるステップと
を備えたことを特徴とする方法。
【請求項２】
前記ネットワーク要求の実行が成功するときを判定するステップと、前記アプリケーションに前記要求の実行の成功を示すイベントを提供するステップとをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項３】
前記アプリケーションに提供される前記イベントに応答して実行されるイベント駆動コードを関連付けるステップをさらに備えたことを特徴とする請求項２に記載の方法。
【請求項４】
前記基準は、ネットワークリンク基準およびアプリケーション基準のうちの少なくとも１つから選択されることを特徴とする請求項３に記載の方法。
【請求項５】
前記基準は、帯域幅、リンクタイプ、時刻、場所、サーバ到達可能、ＩＰアドレス、信号強度、セキュリティトークンのうちの少なくとも１つを含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記基準を論理的にリンクすることができることを特徴とする請求項２に記載の方法。
【請求項７】
前記ネットワーク要求の実行を異なるネットワークタイプを用いて行うことができることを特徴とする請求項２に記載の方法。
【請求項８】
ネットワーク要求を基準で属性化するためのコンピュータ実行可能命令を有するコンピュータ読み取り可能な記録媒体であって、前記命令は、
アプリケーションに関連付けられたネットワーク要求を作成するステップと、
基準を前記ネットワーク要求と関連付け、ネットワークリンク基準に関係する前記基準を構成することを、前記ネットワーク要求が実行のために提出される前に行うステップと、
行うべき前記ネットワーク要求を提出するステップと、
前記ネットワーク要求と関連付けられている前記基準が満たされるときを判定し、前記基準が満たされると、前記要求の実行を試み、前記ネットワーク要求の実行が成功するときを判定し、および前記要求の実行の成功を示すイベントを前記アプリケーションに提供するステップと
を備えたことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項９】
前記基準の少なくとも２つをリンクすることを特徴とする請求項８に記載のコンピュータ読み取り可能な記録媒体。
【請求項１０】
前記基準が満たされているときを判定するステップは、前記基準が１つより多くのアプリケーションに関連付けられているとき、前記基準のそれぞれが１回満たされているかどうかを判定することを含むことを特徴とする請求項８に記載のコンピュータ読み取り可能な記録媒体。
【請求項１１】
前記基準は、帯域幅、リンクタイプ、時刻、場所、サーバ到達可能、ＩＰアドレス、信号強度、セキュリティトークンのうちの少なくとも１つを含むことを特徴とする請求項１０に記載のコンピュータ読み取り可能な記録媒体。
【請求項１２】
前記ネットワーク要求の実行を１つより多くのタイプのネットワークを用いて行うことができることを特徴とする請求項１０に記載のコンピュータ読み取り可能な記録媒体。
【請求項１３】
ネットワーク要求を処理するためのシステムであって、
ネットワークに結合され、実行のためにネットワーク要求を提出するように構成されたアプリケーションであって、前記ネットワーク要求は０個以上の関連する基準を有するアプリケーションと、
前記アプリケーションに結合され、
ネットワーク要求提出を前記アプリケーションから受け取るステップと、
前記ネットワーク要求と関連付けられている前記基準が満たされるときを判定し、前記基準が満たされると、前記要求を非同期に実行し、前記実行の結果を判定し、および、前記実行の前記結果を示すイベントを前記アプリケーションに提供するステップと
を含む動作を行うように構成されたネットワーク要求マネージャと
を備えたことを特徴とするシステム。
【請求項１４】
前記ネットワーク要求マネージャは、前記基準が満たされていると判定されるまで、前記ネットワーク要求を未解決要求キュー内に置くようにさらに構成されることを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記ネットワーク要求マネージャは、前記実行の前記結果が成功を示すときは前記ネットワーク要求を成功キューに移し、前記実行の前記結果が失敗を示すときは前記ネットワーク要求を失敗キューに移すようにさらに構成されることを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記アプリケーションは、前記ネットワーク要求の前記結果に関連付けられているイベント駆動コードをアクティブにするようにさらに構成されることを特徴とする請求項１３に記載のシステム。
【請求項１７】
前記ネットワーク要求に関連付けられている前記基準は、帯域幅、リンクタイプ、時刻、場所、サーバ到達可能、ＩＰアドレス、信号強度、セキュリティトークンのうちの少なくとも１つから選択されることを特徴とする請求項１３に記載のシステム。
【請求項１８】
前記ネットワーク要求マネージャは、基準スパンが複数のアプリケーションに関連付けられているときを判定し、前記基準が１つより多くのアプリケーションに関連付けられているときには前記基準が満たされているかどうかの判定を１回だけ行うようにさらに構成されることを特徴とする請求項１４に記載のシステム。
【請求項１９】
前記基準をネットワーク要求に関連付けるように構成されたグラフィカルユーザインタフェースをさらに備えたことを特徴とする請求項１３に記載のシステム。
【請求項２０】
前記グラフィカルユーザインタフェースは、コードを、前記ネットワーク要求の前記実行の前記結果に応答して実行すべき前記基準に関連付けるようにさらに構成されることを特徴とする請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非同期ネットワーク要求を実行するために柔軟な属性を適用することに関する。
【背景技術】
【０００２】
モバイル装置は、仕事と家庭のどちらでも、個人の生活の不可分な一部分となってきている。デスクトップおよびラップトップコンピュータと同様に、今やモバイル装置上で動作させる豊かなアプリケーションが利用可能である。
【０００３】
デスクトップとは異なって、またラップトップコンピュータよりもはるかに、モバイル装置は、絶えずネットワークの接続性のエリアを出入りしている。さらに、こうしたモバイル装置、特に移動体電話は、一般に常に動作状態にあり、絶えずそのユーザに携帯されている。
【０００４】
通常、こうした装置のほとんどは、主として、ＣＤＭＡネットワーク、ＧＳＭまたはＵＭＴＳネットワーク、Ｗｉ−Ｆｉネットワークなどの、１種類の無線ネットワークと動作するように最適化されている。しかし、確立されるこうしたモバイル装置とのネットワーク接続は、一定ではない。
【０００５】
たとえば、移動体電話のユーザは、接続性のゾーンを一日中出入りする。１人の人が、一日中、地上と地下を移動し、建物から出ては入っている可能性がある。この移動の結果、ユーザが地点間を移動する際に、１度に数秒からより長い時間、ネットワークアクセスが失われることになる。ネットワークが断続的になるだけでなく、利用可能なネットワークのタイプが場所によって変わる可能性がある。
【０００６】
多くの場所には、ネットワーク接続が存在しない「弱電地帯」（ｄｅａｄ  ｓｐｏｔｓ）がある。たとえば、弱電地帯は、建物の中心で、ならびにエレベータ内で生じる可能性もある。さらに、多くの最新の職場では、公衆の移動体電話網に加えて、自前の私有無線ネットワーク（たとえば、Ｗｉ−Ｆｉ）を提供している。こうした異なるネットワークオプション間でスイッチングを行うこと、およびネットワーク接続が一時的にないことを頑健に扱うことは、装置上で動作するソフトウェアアプリケーションにとって問題となる。
【０００７】
無線ネットワークへのアクセスを、原則としてしないように構成されている場所もある。こうした制限エリアとしては、航空機、世界中の政府の大使館および官庁、他のセキュリティで保護された（ｓｅｃｕｒｅ）エリアなどの場所がある。最終的に、モバイル装置にはユビキタスな接続性が存在しない結果となる。このことは、デスクトップまたはラップトップの接続性とは著しく異なる。接続性は、いつもユーザの近くにはあるかも知れないのに、ユーザのまさにその場所にはないことが多いのである。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来のシステムには上述したような種々の問題があり、さらなる改善が望まれている。
【０００９】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、非同期ネットワーク要求の実行のために柔軟な属性を適用するためのシステムおよび方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の諸実施形態は、非同期ネットワーク要求を実行するために柔軟な属性を適用することに関する。
【００１１】
本発明のある態様によれば、どのような数の基準もネットワーク要求に付加することができる。要求は、提出されると、それに関連する基準が満たされるまでキューに入れられる。基準が満たされると、その要求が実行される。要求を行ったアプリケーションには、そのアプリケーションが様々な論理で応答することの可能な、成功および失敗の通知が提供される。たとえば、要求が成功したときには、アプリケーションには成功イベントが返され、要求が失敗したときには、アプリケーションには失敗イベントが返される。
【００１２】
本発明の別の態様によれば、どのようなタイプの基準も要求に付加することができる。たとえば、基準は、ネットワーク関連（帯域幅、リンク品質、リンクのタイプなど）、場所関連、時間関連（要求を特定の時刻に実行する）などとすることができる。
【００１３】
本発明のさらに別の態様によれば、基準の要求への関連付けを、アプリケーションの設計時に、グラフィカルユーザインタフェースを用いて行うことができる。あるいは、基準の要求への関連づけは、ＡＰＩを用いて行うのでもよい。このユーザインタフェースは、ネットワーク要求をどのように取り扱うかについて宣言的ステートメントを行うための容易な手法を提供することを対象とする。
【発明の効果】
【００１４】
本発明によれば、非同期ネットワーク要求を実行するために柔軟な属性を適用することができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。
【００１６】
一般に、本発明の諸態様は、非同期のネットワーク要求を実行するために柔軟な属性を適用することに関する。基準をネットワーク要求に付加することができる。要求は、提出されると、それに関連する基準が満たされるまでキューに入れられる。基準が満たされると、その要求が実行される。要求を行ったアプリケーションには、そのアプリケーションが様々な論理で応答することの可能な、成功および失敗の通知が提供される。たとえば、要求が成功したときには、アプリケーションには成功イベントが返され、要求が失敗したときには、アプリケーションには失敗イベントが返される。
【００１７】
どのようなタイプの基準も要求に付加することができる。たとえば、基準は、ネットワーク関連（帯域幅、リンク品質、リンクのタイプなど）、場所関連、時間関連（要求を特定の時刻に実行する）などとすることができる。可能な基準の集合は、プログラマによって拡張可能であるように設計される。
【００１８】
基準の要求への関連付けを、アプリケーションの設計時に、グラフィカルユーザインタフェースを用いて行うことができる。あるいは、基準の要求への関連づけは、ＡＰＩを用いて行うのでもよい。このユーザインタフェースは、ネットワーク要求をどのように取り扱うかについて宣言的ステートメントを行うための容易な手法を提供することを対象とする。
【００１９】
例示的なネットワーク基準システム 
図３は、本発明の諸態様による、ネットワーク要求基準システム３００を全体として示す機能的構成図である。一般に、システム３００は、任意の数の基準をネットワーク要求に付加し、その要求をキューに入れ、その要求を、必要とされる基準が満たされるときに効率的に実行できるようにすることを対象とする。
【００２０】
コンピューティング装置３３１は、図１に関連して説明したものなどのコンピューティング装置であり、モバイル装置３１１およびモバイル装置３１５は、図２に関連して説明したものなどのモバイルコンピューティング装置である。
【００２１】
コンピューティング装置３１１は、基準を構成し、装置３１１および３１５上で動作するアプリケーション３１２、３１６、および３１７の内部で使用されるネットワーク要求などのネットワーク要求に関連付けることを対象とするアプリケーション設計環境（３３２）を動作させるように構成される。一般に、アプリケーション設計環境３３２により、ユーザは、自分の通信の必要なものを構成し、基準を設定し、次いでネットワーク要求に応答するための通信コードを書くことをグラフィカルに行えるようになる。キューに入れられたネットワーク要求を扱い、通信の成功と失敗のどちらのイベント通知も得るためのイベント駆動のランタイムモデルが提供される。本発明のある実施形態によれば、設計環境３３２は、ユーザが基準を構成し、ネットワーク要求に関連付けることができるようにするグラフィカルユーザインタフェースである（図７および８ならびに関連する議論を参照されたい）。
【００２２】
アプリケーション３１２、３１６、および３１７には、これに関連する０個以上の基準（３２０、３２１）がある。基準は、どのような所望の状態も表すことができる。たとえば、基準は、信号強度が情報を送るまたは取り出すことを試みる前に所定のレベルよりも大きくなければならないなどの低水準の要件でも、または、モバイル装置が物理的に特定の場所の内側に位置していなければならない、ユーザが装置に取り付けられたセキュリティトークンを持っていなければならず、時刻が午前９時と午後５時の間になければならず、「ＭＹＳＥＲＶＥＲ−１４」という名前のサーバがアクセス可能でなければならないなどの複雑で高水準の要件でもよい。任意の複雑さの、異なる要件に関する、技術的抽象化の低水準と高水準のどちらにも対応する基準を定義することができることにより、アプリケーション開発者には、こうした基準を宣言的に使用する際の柔軟性が与えられる。
【００２３】
また、アプリケーション３１２、３１６、および３１７では、キューに入れられた要求を動的に閲覧し、どの基準が満たされており、どの基準が満たされないままであるかの判定を簡単に行うことができる。この情報を使用すると、状況を救済するようにプログラムまたはエンドユーザの動作の指示を行うことができる。たとえば、アプリケーションは、ユーザに、その要求の処理が、信号強度が信頼できる効率のよい通信のためには低すぎるという理由で行われていない、ということを知らせることが可能である。この情報に基づいて、ユーザは、信号強度がよりよい場所に移動し、要求を、必要とされる基準が満たされたときに自動的に行わせることを決定することができる。基準（３２０、３２１）の集合は、拡張可能である。プログラマは、さらに別の基準を作成し、それをあらかじめ定義された基準と同様に使用し、要求にそれを付加することが可能である。
【００２４】
これらの宣言的な基準（３２０、３２１）は、変化する状態に動的に応答することができる。ユーザの確立した所与の基準（たとえば、「サーバＸＸＸＸが到達可能でなければならない」、「帯域が５１２ｋｂｉｔより大きくなければならない」）を、複数のネットワーク要求に結びつけることが可能である。基準は、あるテストで真でないとわかっている場合、その基準が付加されている要求すべてに適用することが、その状態を繰り返しまたは要求ごとにテストする必要なしに可能である。このようにして、共通の基準は、１回検査する必要があるだけである。
【００２５】
同様に、基準は、真であるとネットワーク要求マネージャ３１２が判定した場合、要求ごとに何度も何度も再テストする必要はない。その基準は、単に、そうでないとわかるまで真であると仮定することが可能である。一般に、スマートな基準では、断続的な失敗／成功と最終的な失敗／成功を区別することが可能であり、アプリケーションは、この情報を利用してインテリジェントな通信の判断を行う能力を持つ。
【００２６】
上で論じたように、基準はグループ化することができる。基準のグループ化により、ユーザがより複雑な式を作成できるようになるだけでなく、そのユーザが基準をリンクできるようになる。たとえば、１０Ｍｂｓという要求されるリンク速度基準を宣言すること、および「非Ｗｉ−Ｆｉ」というリンクタイプ基準を宣言することを考える。現在、装置がＧＰＲＳ接続およびＷｉ−Ｆｉ接続を有している場合、１０Ｍｂｓというリンク速度基準はＷｉ−Ｆｉアダプタによっては満たされるが、「非Ｗｉ−Ｆｉ」基準はＧＰＲＳ接続によっては満たされないはずである。基準のグループ化およびリンクが可能であることにより、受容可能な接続条件について豊富なステートメントを作ることができるようになる。
【００２７】
基準の一部はアプリケーション間で共用することができるのに対し、他の基準はアプリケーションそれぞれに特有のものとすることができる（図４〜６および関連する議論を参照されたい）。
【００２８】
一般に、ネットワーク要求マネージャ３１２は、ネットワーク要求の実行を、その要求に関連する何らかの基準が満たされたときに行うように構成される。ネットワーク要求マネージャ３１２では、基準に関連する属性を得て、それがいつ満たされるかを判定する（図６および関連する議論を参照されたい）。
【００２９】
ネットワーク要求マネージャ（３１２）は、ネットワークサービスとの相互作用を、様々なプロトコルを通して行う。たとえば、ネットワーク要求マネージャ３１２は、ソケット、ＨＴＴＰ要求、またはＷｅｂサービス要求を使用することができよう。
【００３０】
ネットワーク要求マネージャ３１２の利用により、非同期通信モデルをアプリケーション（３１２、３１６、および３１７）で使用することができる。ソケット、ＨＴＴＰ、およびＷｅｂサービス通信モデルは、デスクトップおよびサーバコンピュータ上での使用のために開発され洗練されたものである。「通信のソケットのオープンを試みる」アプリケーション開発者は、同期プログラミングモデルを利用しており、一般に、ネットワークのインフラストラクチャは整備され（ｉｎ  ｐｌａｃｅ）動作しているものと仮定している。このことは、デスクトップおよびサーバコンピュータに関しては一般に正しいが、モバイル装置に関してはそれほど正しくない。
【００３１】
セルラ／ページャネットワーク３５０は、無線装置との間でのメッセージの送付とメッセージの受信を、セルラ網を用いて行うことを役目とするネットワークである。セルラ／ページャネットワーク３５０は、無線と有線の構成要素をどちらも含むことができる。たとえば、セルラ／ページャネットワークは、有線の電話網にリンクされたセルラタワー（ｃｅｌｌｕｌａｒ  ｔｏｗｅｒ）を含むことができる。通常、セルラタワーは、セルラ電話、長距離通信リンクなどとの間の通信を搬送する。
【００３２】
ゲートウェイ３６０は、セルラ／ページャネットワーク３５０と無線ネットワーク３４０の間でメッセージのルーティングを行う。たとえば、コンピュータのユーザが、あるセルラ電話宛てのメッセージを送るとしよう。ゲートウェイ３６０では、そのメッセージをネットワーク３４０からセルラ／ページャネットワーク３５０へと輸送する手段を提供する。逆に、セルラ網に接続された装置をもつユーザが、インターネット（ｔｈｅ  Ｗｅｂ）をブラウズしているとしよう。ゲートウェイ３６０により、ＨＴＴＰ（ｈｙｐｅｒｌｉｎｋ  ｔｅｘｔ  ｐｒｏｔｏｃｏｌ）メッセージの転送を、ネットワーク３４０とセルラ／ページャネットワーク３５０の間で行うことができるようになる。
【００３３】
次の想定状況（ｓｃｅｎａｒｉｏｓ）の例により、このシステムの様々な使用法を示す。あるユーザ、ジョン（Ｊｏｈｎ）が、自分の移動体電話を頼りに生活しており、その情報およびサービスのオンデマンドでの配布に依存していると仮定しよう。ジョンは日中、自分の街を頻繁に行き来して街中の会議に出向き、出張にもよく出かける。すでに自分の面会予定（ｓｃｈｅｄｕｌｅ  ａｎｄ  ｃｏｎｔａｃｔｓ）は自分の移動体電話に記録してあり、自分の生活を助けてくれるインテリジェントなサービスを望んでいる。また、ジョンは情報にとりつかれており、時間を無駄にするのを嫌う。自分の移動体電話が自分に付いてきてくれ、情報およびサービスの必要なものを一日中供給して欲しいと思っている。ジョンの手助けのために、移動体電話上には、彼にとって必要な情報およびサービスを提供してくれる一連のカスタムアプリケーションがある。
【００３４】
ジョンは朝起き、仕事に出かける前に自分の移動体電話で１日のスケジュールに目を通す。仕事に向かう途中でニュースを読みながら、ジョンは地下鉄に入り、通勤の間、ネットワークの接続性を出たり入ったりする。列車を待つ間、自分の移動体電話を取り出し、「ニュースクリッピング」アプリケーションを動作させる。ジョンは自宅にＷｉ−Ｆｉおよびそれを利用できるスマートなモバイルアプリケーションがあるので、ジョンが興味をもっている最新のヘッドラインは、すでに自分の電話にダウンロードしてある。様々なニュース項目にざっと目を通し、キャッシュされた記事を読む。興味を持っている「台頭するデジタルペット」に関する記事へのリンクを見つけ、それに緑のリンクがあることに気付くが、これは、その内容がキャッシュされていないことを示している。そのリンクをクリックして、可能なときに自分用にその記事のダウンロードを希望することを示す。ジョンがこの要求を行うと、ネットワーク要求マネージャは、この要求をキューに入れ、その要求に関連する基準が満たされているかどうかを判定する。ニュースクリッピングのアプリケーションに関連する基準が満たされている場合、その要求は、ネットワークの状態によって可能なときいつでも処理される。ジョンは接続性のないエリアにいるため、要求はこのとき満たされない可能性がある。ジョンの列車が地下から出てきて、地上の空の下を数分走ると、装置はジョンのためのＧＰＲＳ接続を確立することができ、ネットワーク要求マネージャはキューに入れられた要求を実行し、アプリケーションは要求されたニュース項目をダウンロードしてニュースクリッピングキューに入れる。作業が完了すると、アプリケーションは、キューに入れられた作業が成功裏に完了しているという、ネットワーク要求マネージャからのプログラム上のイベントを受信する。このイベントに応答して、アプリケーションは、目立たない「ニュースのダウンロードが完了しました」というアイコンをニュースリーダの下部に表示して、要求された記事がダウンロードされていることを示す。ジョンは今読んでいる記事を終え、今度はニュースダウンロードに切り替え、「台頭するデジタルペット」および「南米のスキー休暇」についての記事を読む。その間に、列車は地下に戻っており、ネットワークの接続性はまた失われている─ジョンは気付いておらず、この影響を受けていない。「台頭するデジタルペット」についての記事を読みながら、ジョンは、行って動作中のものを見てみたいものだという気になる。その記事では、「お近くの販売店についてはここをクリック」というリンクが提供されている。ジョンはそのリンクをクリックし、１つの要求がジョンの現在の場所を用いてログに記録される。ジョンはオフライン中であるため、その要求はローカルにキャッシュされ、ジョンが受容可能なネットワークの地理的状況（ｔｅｒｒａｉｎ）に戻ったときに送信されることになる。ジョンには、その要求がログに記録されており、可能なときにいつでも処理されるだろうということがわかっているだけである。ジョンはその要求を自分自身でログに再記録する必要はない。ジョンの列車はじきに職場に到着する。
【００３５】
職場にいる間のスケジュールの変更：職場にいる間に、ジョンに電話が入る。この電話の会話に基づいて、ジョンは、その後その日午後に街の別の場所である会議に同意する。会議の世話役はジョンに、会議の場所を含むＳＭＳメッセージを送る。ジョンのスケジューリングアプリケーションは、ジョンには数時間街の別の場所で新しい会議があることを理解し、会議のエリアの詳しい地図をダウンロードするネットワーク要求をキューに入れる。ジョンの電話機は職場にあるので、そこのＷｉ−Ｆｉネットワークにアクセスでき、要求された地図をすぐにダウンロードし始め、その装置上にキャッシュすることができる。この作業は一連のネットワーク要求（たとえば、様々な地図および道順に関する一連の個別の要求）からなり、この作業のすべてがキューに入れられ動作し始めるのは、ネットワーク要求マネージャで決定された要件が満たされるときである。地図の要求およびダウンロードの最中に、ジョンはエレベータに乗り込み、ドアが閉まり、ジョンのネットワーク接続が失われる。ネットワーク障害がネットワーク要求マネージャで検出され、中断された作業はネットワーク要求キュー上に（そこでの他の作業と並んで）戻されて、適切なネットワーク接続が回復したときに取り扱われることになる。数分後、ジョンがエレベータを出て、ジョンの電話機がＷｉ−Ｆｉネットワークにアクセスできるようになった後で、電話機は低電力モードから少しの間復帰し、残りの要求された地図をダウンロードする。
【００３６】
別の例は、音楽ファイルのダウンロードを希望するユーザである。このユーザが自分の移動体電話上で音楽の買い物をし、ダウンロードしたいトラックをリストにして行く間、そのダウンロードをバックグラウンドで行うことが可能である。曲すべてのダウンロードが、ユーザの移動のため接続が失われる前に完了できない場合には、ダウンロードは後で再開されることになる。ユーザは、音楽の買い物を切断されている間に続け、要求されたダウンロードをリストにして行くことさえ可能である。
【００３７】
図４に、本発明の諸態様による、キューに入れられたネットワーク要求に適用可能な基準からなる木を示している。ある実施形態によれば、基準は、抽象SmartRequestAttributeクラス（４０２）から導出される。上で論じたように、基準は多くの異なる項目に関係することができる。たとえば、基準のある集合は、ネットワークリンク基準（４０８）とすることができる。一部のネットワークリンク基準は、リンク速度、リンクタイプ、利用可能な帯域幅、ＩＰアドレス、などを含むが、これに限定されるものではない。アプリケーション層基準（４１０）は、特定のサーバが到達可能かどうかなどの項目を含む。その他（ｍｉｓｃｅｌｌａｎｅｏｕｓ）基準（４１２）は、物理的な場所、時刻、成功にせよ失敗にせよそれまでに完了した要求の結果、コスト、セキュリティなどの様々な項目を含むことができる。どのようなタイプの基準も要求に付加することができる。プログラマが、基準を様々な要因に基づいて付け加えることも可能である。たとえば、プログラマが、ネットワークカード、使用されるネットワーク、訪問される場所などの特徴に関する基準の集合を付け加えることも可能である。
【００３８】
上で論じたように、共通の基準の検査を、要求マネージャで１回だけ行い、それにより、利用可能な資源を節約することができる。また、集められた基準は集約する（ａｇｇｒｅｇａｔｅｄ）こともできる（４０６）。また、異なる基準を一緒にグループ化して、様々な基準の間の関係を作成することもできる（４０４）。
【００３９】
図５に、本発明の諸態様による、異なる基準属性が関連付けられたいくつかのスマートなネットワーク要求を示している。
【００４０】
これらの基準属性は、要求の間で共用することが可能であり、この意味は、ある要求に関して真である１つの属性は、他のものに関しても真であると仮定することができ、逆に、その属性が、ある要求に関して偽である場合は、要求すべてに関して偽と仮定することができる、ということである。この点で、属性は共用することが可能であり、ラッチすることが可能である。このラッチする振る舞いは、特に、テストが高く付く属性基準に対して価値がある。そのような基準の一例は、サーバ上の所与のサービスが到達可能かどうかのテストを行う属性である。ネットワーク上の特定のサーバのサービスが到達可能かどうかを最終的に知る唯一のやり方は、そのサーバへの連絡を取ろうと試み、受容可能な応答がいつ返されるかを判定することである。モバイルネットワークでは、そのような要求は、レイテンシが高く、かなりのバッテリ電力を必要とする可能性があり、行うと金銭的コストを生じる可能性がある。こうした理由から、１つの属性基準は、真であると判定された場合、偽であるとわかり、またはアプリケーション論理によってリセットされるまで、真の位置にラッチされる。この属性を共用する要求は、このスマートな振る舞いから利益を得ることが可能である。
【００４１】
図５の第１の要求を参照すると、要求５１０は、満たす必要のある基準をなにも含まない。したがって、要求５１０は、直ちに動作する準備ができている。
【００４２】
要求５２０は、動作の前に満たさなければならない３つの異なる基準を含む。要求５２０が動作させられる前に満たさなければならない基準は、サーバ「ＸＸ」が到達可能であること、接続の帯域幅が３００Ｋｂ／ｓより大きいこと、および、物理的場所の制約が満たされることを含む。これらの基準のすべてが満たされると、要求５２０は動作させられる。
【００４３】
要求５３０は、共通の基準を共用する２つの異なる作業要求（未解決の要求３および未解決の要求４）を示している。共有される基準は、物理的場所基準および帯域幅基準である。２つの未解決の作業ユニットは、いくつかの共通の基準を含む一方、それぞれに特有な基準も含むことができる。たとえば、未解決の作業３では、サーバ「ＸＸ」が到達可能であることが必要であるが、未解決の作業４では、サーバ「ＹＹＹ」が到達可能であることが、リンクタイプが「Ｗｉ−Ｆｉ」リンクであることと並んで必要である。
【００４４】
図６に、本発明の諸態様による、ネットワーク要求マネージャのランタイム時の振る舞いを示している。ネットワーク要求マネージャ６０４に結合されるアプリケーション６０２などの各アプリケーションは、作業を未解決要求キュー６１０上に置く。ある実施形態では、各ネットワーク要求が、最初は未解決要求キュー上に置かれる。ここに示すように、未解決要求キュー６１０は、作業７、作業２、作業３、作業１、および作業９を含めて、５つの作業要求を含む。各作業項目は、０個以上の「基準属性」を含む（ラベル６０５
〜６０９を参照されたい）。要求マネージャ（６０４）は、定期的に、キュー内の作業項目を監視しどの項目が実行の準備ができているかを判定する。作業の１つの項目は、その基準属性のすべてが真である場合に実行の準備ができている。基準属性が真であると、その項目は未解決要求キュー６１０から取り除かれ、そのコードの実行は、障害を検出可能な制御された環境内で行われる。ある実施形態によれば、要求は、その要求に関連する基準が満たされるとすぐに行われる。作業が開始されるとともに、非同期イベントがクライアントアプリケーション（６０２）へと発せられて、そのアプリケーションが、ユーザへの通知または他の何らかの適切な動作など、何らかの動作を行うことができるようにする。実行される作業は成功または失敗することになる。作業は、実行後に成功キュー（６１２）内または失敗キュー（６１４）内へ置かれ、アプリケーション（６０２）への成功または失敗の通知が、非同期イベントを介して行われる。ある実施形態によれば、イベントは、作業実行中、作業成功、および作業失敗を含む。
【００４５】
要求がシステム６００内部にある間、アプリケーション（６０２）は、どの作業が現在未解決要求キュー６１０上にあるか、および作業項目の属性基準のそれぞれのステータスがなにであるかを調べることができる。たとえば、作業２の要求を提出したアプリケーションは、基準属性番号２のステータス問い合わせることができるはずである。
【００４６】
また、アプリケーションは、もはやそのタスクを動作させる意味がない場合には、作業を未解決要求キューから取り除くことができる。たとえば、ユーザが、すでに要求されている既存の作業に取って代わる新しい通信タスクを要求していることがある。単純なファンクションコールを使用すると作業をキューから取り除くことができる。
【００４７】
未解決要求キューと同様に、アプリケーションは、成功キュー（６１２）内または失敗キュー（６１４）内にどのような作業があるかを調べることも可能である。望ましいときには、アプリケーションは、現在失敗キュー（６１４）内にある作業を未解決要求キュー（６１０）へと戻すことが可能である。
【００４８】
図７に、本発明の諸態様による、スマートな要求を構成するための例示的なユーザインタフェースを示している。
【００４９】
楕円７１０を参照することによってわかるように、SmartNetworkRequestとSmartNetworkRequestManagerをどちらもアプリケーション設計サーフェス（７３０）に追加し、その構成をソフトウェア開発者がユーザインタフェースのプロパティ部分（７２０）内で行うことが可能である。開発者は、ユーザインタフェース７００を用いて、ネットワーク要求マネージャのランタイム時の振る舞いを構成することができる。たとえば、要求をバックグラウンドでいくつ並列に動作させられるかなどの振る舞いを構成することが可能である。
【００５０】
また、開発者は、要求マネージャの提供するイベントに応答するコードを書くことができる。たとえば、SmartNetworkRequestが「未解決要求キュー」から取り出されて動作させられること、SmartNetworkRequestが成功すること、SmartNetworkRequestが失敗することなどのイベントに応答するコードを書くことができる。
【００５１】
ユーザは、SmartNetworkRequestの構成を、これらを設計サーフェス（７３０）上にドラッグアンドドロップすることによって行うことができる。各SmartNetworkRequestは、指定された基準が満たされたときに開発者が動作させたい通信タスクを表す。開発者は、ネットワーク要求マネージャ用のコードを開発するのと同様に、SmartNetworkRequestをダブルクリックし、その要求用のコードを書くことができる。これは、フォームデザイナ（ｆｏｒｍ−ｄｅｓｉｇｎｅｒ）上のボタンコントロールをダブルクリックし、ランタイム時にそのボタンが押されると動作が行われることになるコードを書くという非常に一般的な習慣と相似的である。ここでは、開発者の書くコードが、RequestManagerによって、そのSmartNetworkRequestの基準属性が満たされたときに呼び出されることになる。このコードは、基準が満たされたときに開発者が行いたい作業に対応する。
【００５２】
図８に、本発明の諸態様による、スマートネットワーク要求（Ｓｍａｒｔ  Ｎｅｔｗｏｒｋ  Ｒｅｑｕｅｓｔ）への基準属性の付加を示す詳細なデザイナビュー（ｄｅｓｉｇｎｅｒ  ｖｉｅｗ）を示している。
【００５３】
どのような数の基準もスマートネットワーク要求に関連付けることができる。楕円８１０で示すように、２つの基準が現在ネットワーク要求に関連付けられている。開発者は、ネットワーク要求への基準の追加および削除を、グラフィカルインタフェース８３０を通して行うことができる。ドロップダウンリスト８３０は、１２の例示的な基準を含んでいる。上で論じたように、さらに多くのタイプの基準があってもよい。このユーザインタフェースを使用すると、基準をリンクすることもできる。
【００５４】
例示的な動作環境 
図１に関しては、本発明を実装するためのある例示的なシステムは、コンピューティング装置１００などのコンピューティング装置を含む。非常に基本的な構成では、コンピューティング装置１００は、通常、少なくとも１つのプロセッサ（処理ユニット）１０２およびシステムメモリ１０４を含む。システムメモリ１０４は、コンピューティング装置の厳密な構成およびタイプに応じて、（ＲＡＭなどの）揮発性、（ＲＯＭ、フラッシュメモリなどの）非揮発性、またはこの２つの何らかの組み合わせとすることができる。システムメモリ１０４は、通常、オペレーティングシステム１０５、１つまたは複数のアプリケーション１０６を含むが、プログラムデータ１０７を含んでもよい。ある実施形態では、アプリケーション１０６は、ネットワーク要求基準を構成することを対象とするスマートネットワーク要求設計ツール１２０を含むことができる。この基本的な構成を、図１で、破線１０８の内部の構成要素によって示している。
【００５５】
コンピューティング装置１００には、さらに別の特徴または機能があってもよい。たとえば、コンピューティング装置１００は、たとえば、磁気ディスク、光ディスク、またはテープなど、さらに別のデータストレージ装置（リムーバブルおよび／またはノンリムーバブル）を含むこともできる。そのようなさらに別のストレージを図１でリムーバブルストレージ１０９およびノンリムーバブルストレージ１１０によって示している。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報のストレージのためのどのような方法または技術の形で実装される、揮発性と非揮発性の、リムーバブルとノンリムーバブルの媒体を含むことができる。システムメモリ１０４、リムーバブルストレージ１０９、およびノンリムーバブルストレージ１１０はすべて、コンピュータストレージ媒体の例である。コンピュータストレージ媒体としては、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋｓ、デジタル多用途ディスク）、または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ストレージ装置、あるいは所望の情報を格納するのに使用することが可能で、コンピューティング装置１００のアクセスすることの可能な他の任意の媒体があるが、これに限定されるものではない。そのような任意のコンピュータストレージ媒体を装置１００の一部とすることができる。また、コンピューティング装置１００は、キーボード、マウス、ペン、音声入力装置、接触型入力装置（ｔｏｕｃｈ  ｉｎｐｕｔ  ｄｅｖｉｃｅ）などの入力装置１１２を有していてもよい。また、ディスプレイ、スピーカ、プリンタなどの出力装置１１４が含まれていてもよい。
【００５６】
また、コンピューティング装置１００は、この装置が他のコンピューティング装置１０８との通信をネットワークなどを介して行えるようにする通信接続１１６を含むことができる。通信接続１１６は、通信媒体の１つの例である。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または、搬送はまたは他の輸送機構などの変調されたデータ信号の形の他のデータによって実施することができ、どのような情報送付媒体も含む。「変調されたデータ信号」という用語は、その特徴の１つまたは複数が情報をその信号中に符号化する形で設定または変更される信号を意味する。限定ではなく、例として、通信媒体は、有線ネットワークまたは直接ワイヤード接続などの有線媒体、ならびに音響、無線（ＲＦ）、赤外線、および他の無線媒体などの無線媒体を含む。本明細書で使用するコンピュータ可読媒体という用語は、ストレージ媒体と通信媒体のどちらも含む。
【００５７】
図２に、本発明のある例示的な実施形態で使用することのできるモバイルコンピューティング装置を示している。図２に関しては、本発明を実装するためのある例示的なシステムは、モバイルコンピューティング装置２００などのモバイルコンピューティング装置を含む。モバイルコンピューティング装置２００は、プロセッサ２６０、メモリ２６２、ディスプレイ２２８、およびキーパッド２３２を含む。メモリ２６２は、一般に、揮発性メモリ（たとえば、ＲＡＭ）と非揮発性メモリ（たとえば、ＲＯＭ、フラッシュメモリなど）をどちらも含む。モバイルコンピューティング装置２００は、マイクロソフトコーポレーション製のＷｉｎｄｏｗｓ（登録商標）  ＣＥオペレーティングシステムなどのオペレーティングシステム２６４、または、メモリ２６２内に常駐しプロセッサ２６０上で実行される、別のオペレーティングシステムを含む。キーパッド２３２は、（典型的な電話などの上の）プッシュボタン数字ダイアリングパッド、（従来型キーボードなどの）マルチキーキーボードとすることができる。ディスプレイ２２８は、ＬＣＤ（ｌｉｑｕｉｄ  ｃｒｙｓｔａｌ  ｄｉｓｐｌａｙ、液晶ディスプレイ）、または、モバイルコンピューティング装置で一般的に使用される他のどのようなタイプのディスプレイとすることもできる。ディスプレイ２２８は、接触感知式（ｔｏｕｃｈ−ｓｅｎｓｉｔｉｖｅ）とすることもでき、その場合、入力装置としても働くことになるはずである。
【００５８】
１つまたは複数のアプリケーションプログラム２６６は、メモリ２６２へとロードされ、オペレーティングシステム２６４上で実行される。スマートネットワーク要求を用いるアプリケーションは、モバイルコンピューティング装置２００上に常駐しており、ネットワーク要求マネージャとやり取りして、ネットワーク要求を非同期に実行するようにプログラムされている。このアプリケーションは、この装置のハードウェアまたはソフトウェア内に常駐することができる。また、モバイルコンピューティング装置２００は、メモリ２６２内部の非揮発性ストレージ２６８を含む。非揮発性ストレージ２６８を使用すると、モバイルコンピューティング装置２００がパワーダウンされた場合に失われるべきではない永続的な情報を格納することができる。
【００５９】
モバイルコンピューティング装置２００は、１つまたは複数のバッテリとして実装することのできる、電源２７０を含む。電源２７０は、このバッテリの補足または再充電を行うＡＣアダプタまたは充電スタンド（ｐｏｗｅｒｅｄ  ｄｏｃｋｉｎｇ  ｃｒａｄｌｅ）などの外部電源をさらに含む可能性がある。
【００６０】
モバイルコンピューティング装置２００は、２つのタイプのオプションの外部通知機構、すなわち、ＬＥＤ２４０およびオーディオインタフェース２７４とともに示してある。これらの装置は、電源２７０に直接に結合して、アクティブにされたとき、プロセッサ２６０および他の構成要素がバッテリ電力の保存のためにシャットダウンする可能性のある場合でも、通知機構の指示する期間、オンのままであるようにすることができる。オーディオインタフェース２７４は、ユーザとの間のオーディオ信号の提供および受け取りのために使用される。たとえば、オーディオインタフェース２７４は、電話の会話を容易にするなどのために、聴取可能な出力を提供するためにスピーカに、聴取可能な入力を受け取るためにマイクロホンに結合することができる。
【００６１】
また、モバイルコンピューティング装置２００は、無線インタフェース層などの通信接続を含み、これは通信を送信および受信する機能を行う。通信接続２７２により、モバイルコンピューティング装置２００と外部世界の間の無線の接続性が容易になる。通信接続は、どのようなタイプの無線ネットワークにも接続するように構成することができる。ある実施形態によれば、通信接続２７２との間の伝送は、オペレーティングシステム２６４の制御下で行われる。
【００６２】
上の明細書、例、およびデータは、本発明の構成（ｃｏｍｐｏｓｉｔｉｏｎ）の製作および使用の完全な説明を提供している。本発明の多くの実施形態は、本発明の趣旨および範囲を逸脱することなく行うことができるので、本発明は、以下に付け加える特許請求の範囲の中にある。
【図面の簡単な説明】
【００６３】
【図１】本発明の例示的な実施形態で使用することのできる例示的なコンピューティング装置を示す図である。
【図２】本発明の例示的な実施形態で使用することのできる例示的なコンピューティング装置を示す図である。
【図３】ネットワーク要求基準システムを全体として示す機能的構成図である。
【図４】キューに入れられたネットワーク要求に適用可能な基準の例からなる木を示す図である。
【図５】異なる基準属性が関連付けられたいくつかのスマートなネットワーク要求を示す図である。
【図６】ネットワーク要求マネージャのランタイム時の振る舞いを示す図である。
【図７】スマートな要求を構成するための例示的なユーザインタフェースを示す図である。
【図８】本発明の諸態様による、スマートネットワーク要求（Ｓｍａｒｔ  Ｎｅｔｗｏｒｋ  Ｒｅｑｕｅｓｔ）への基準属性の付加を示す詳細なデザイナビュー（ｄｅｓｉｇｎｅｒ  ｖｉｅｗ）である。
【符号の説明】
【００６４】
３１１  モバイル装置
３１２  アプリケーション
３１５  モバイル装置
３１６  アプリケーション
３１７  アプリケーション２
３２０  基準
３２１  基準
３３１  コンピューティング装置
３３２  アプリケーション設計環境
３１２  ネットワーク要求マネージャ
３５０  セルラ／ページャネットワーク
３６０  ゲートウェイ
【図１】
2006229953.tif 000003
【図２】
2006229953.tif 000004
【図３】
2006229953.tif 000005
【図４】
2006229953.tif 000006
【図５】
2006229953.tif 000007
【図６】
2006229953.tif 000008
【図７】
2006229953.tif 000009
【図８】
2006229953.tif 000010