説明

非同期ネットワーク要求の実行のために柔軟な属性を適用するためのシステムおよび方法

【課題】非同期ネットワーク要求を実行するために柔軟な属性を適用する。
【解決手段】柔軟な属性が、非同期に実行することのできるネットワーク要求に付加される。どのような数の基準もネットワーク要求に付加することができる。要求は、関連する基準が満たされるまでキューに入れられる。基準が満たされると、要求が実行される。要求を行うアプリケーションには、様々な論理で応答することのできる単純な成功および失敗の通知が提供される。どのようタイプの基準も要求に付加することができる。基準の要求への関連付けは、アプリケーションの設計時に、グラフィカルユーザインタフェースを用いて行うことができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、非同期ネットワーク要求を実行するために柔軟な属性を適用することに関する。
【背景技術】
【0002】
モバイル装置は、仕事と家庭のどちらでも、個人の生活の不可分な一部分となってきている。デスクトップおよびラップトップコンピュータと同様に、今やモバイル装置上で動作させる豊かなアプリケーションが利用可能である。
【0003】
デスクトップとは異なって、またラップトップコンピュータよりもはるかに、モバイル装置は、絶えずネットワークの接続性のエリアを出入りしている。さらに、こうしたモバイル装置、特に移動体電話は、一般に常に動作状態にあり、絶えずそのユーザに携帯されている。
【0004】
通常、こうした装置のほとんどは、主として、CDMAネットワーク、GSMまたはUMTSネットワーク、Wi−Fiネットワークなどの、1種類の無線ネットワークと動作するように最適化されている。しかし、確立されるこうしたモバイル装置とのネットワーク接続は、一定ではない。
【0005】
たとえば、移動体電話のユーザは、接続性のゾーンを一日中出入りする。1人の人が、一日中、地上と地下を移動し、建物から出ては入っている可能性がある。この移動の結果、ユーザが地点間を移動する際に、1度に数秒からより長い時間、ネットワークアクセスが失われることになる。ネットワークが断続的になるだけでなく、利用可能なネットワークのタイプが場所によって変わる可能性がある。
【0006】
多くの場所には、ネットワーク接続が存在しない「弱電地帯」(dead spots)がある。たとえば、弱電地帯は、建物の中心で、ならびにエレベータ内で生じる可能性もある。さらに、多くの最新の職場では、公衆の移動体電話網に加えて、自前の私有無線ネットワーク(たとえば、Wi−Fi)を提供している。こうした異なるネットワークオプション間でスイッチングを行うこと、およびネットワーク接続が一時的にないことを頑健に扱うことは、装置上で動作するソフトウェアアプリケーションにとって問題となる。
【0007】
無線ネットワークへのアクセスを、原則としてしないように構成されている場所もある。こうした制限エリアとしては、航空機、世界中の政府の大使館および官庁、他のセキュリティで保護された(secure)エリアなどの場所がある。最終的に、モバイル装置にはユビキタスな接続性が存在しない結果となる。このことは、デスクトップまたはラップトップの接続性とは著しく異なる。接続性は、いつもユーザの近くにはあるかも知れないのに、ユーザのまさにその場所にはないことが多いのである。
【発明の開示】
【発明が解決しようとする課題】
【0008】
従来のシステムには上述したような種々の問題があり、さらなる改善が望まれている。
【0009】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、非同期ネットワーク要求の実行のために柔軟な属性を適用するためのシステムおよび方法を提供することにある。
【課題を解決するための手段】
【0010】
本発明の諸実施形態は、非同期ネットワーク要求を実行するために柔軟な属性を適用することに関する。
【0011】
本発明のある態様によれば、どのような数の基準もネットワーク要求に付加することができる。要求は、提出されると、それに関連する基準が満たされるまでキューに入れられる。基準が満たされると、その要求が実行される。要求を行ったアプリケーションには、そのアプリケーションが様々な論理で応答することの可能な、成功および失敗の通知が提供される。たとえば、要求が成功したときには、アプリケーションには成功イベントが返され、要求が失敗したときには、アプリケーションには失敗イベントが返される。
【0012】
本発明の別の態様によれば、どのようなタイプの基準も要求に付加することができる。たとえば、基準は、ネットワーク関連(帯域幅、リンク品質、リンクのタイプなど)、場所関連、時間関連(要求を特定の時刻に実行する)などとすることができる。
【0013】
本発明のさらに別の態様によれば、基準の要求への関連付けを、アプリケーションの設計時に、グラフィカルユーザインタフェースを用いて行うことができる。あるいは、基準の要求への関連づけは、APIを用いて行うのでもよい。このユーザインタフェースは、ネットワーク要求をどのように取り扱うかについて宣言的ステートメントを行うための容易な手法を提供することを対象とする。
【発明の効果】
【0014】
本発明によれば、非同期ネットワーク要求を実行するために柔軟な属性を適用することができる。
【発明を実施するための最良の形態】
【0015】
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。
【0016】
一般に、本発明の諸態様は、非同期のネットワーク要求を実行するために柔軟な属性を適用することに関する。基準をネットワーク要求に付加することができる。要求は、提出されると、それに関連する基準が満たされるまでキューに入れられる。基準が満たされると、その要求が実行される。要求を行ったアプリケーションには、そのアプリケーションが様々な論理で応答することの可能な、成功および失敗の通知が提供される。たとえば、要求が成功したときには、アプリケーションには成功イベントが返され、要求が失敗したときには、アプリケーションには失敗イベントが返される。
【0017】
どのようなタイプの基準も要求に付加することができる。たとえば、基準は、ネットワーク関連(帯域幅、リンク品質、リンクのタイプなど)、場所関連、時間関連(要求を特定の時刻に実行する)などとすることができる。可能な基準の集合は、プログラマによって拡張可能であるように設計される。
【0018】
基準の要求への関連付けを、アプリケーションの設計時に、グラフィカルユーザインタフェースを用いて行うことができる。あるいは、基準の要求への関連づけは、APIを用いて行うのでもよい。このユーザインタフェースは、ネットワーク要求をどのように取り扱うかについて宣言的ステートメントを行うための容易な手法を提供することを対象とする。
【0019】
例示的なネットワーク基準システム
図3は、本発明の諸態様による、ネットワーク要求基準システム300を全体として示す機能的構成図である。一般に、システム300は、任意の数の基準をネットワーク要求に付加し、その要求をキューに入れ、その要求を、必要とされる基準が満たされるときに効率的に実行できるようにすることを対象とする。
【0020】
コンピューティング装置331は、図1に関連して説明したものなどのコンピューティング装置であり、モバイル装置311およびモバイル装置315は、図2に関連して説明したものなどのモバイルコンピューティング装置である。
【0021】
コンピューティング装置311は、基準を構成し、装置311および315上で動作するアプリケーション312、316、および317の内部で使用されるネットワーク要求などのネットワーク要求に関連付けることを対象とするアプリケーション設計環境(332)を動作させるように構成される。一般に、アプリケーション設計環境332により、ユーザは、自分の通信の必要なものを構成し、基準を設定し、次いでネットワーク要求に応答するための通信コードを書くことをグラフィカルに行えるようになる。キューに入れられたネットワーク要求を扱い、通信の成功と失敗のどちらのイベント通知も得るためのイベント駆動のランタイムモデルが提供される。本発明のある実施形態によれば、設計環境332は、ユーザが基準を構成し、ネットワーク要求に関連付けることができるようにするグラフィカルユーザインタフェースである(図7および8ならびに関連する議論を参照されたい)。
【0022】
アプリケーション312、316、および317には、これに関連する0個以上の基準(320、321)がある。基準は、どのような所望の状態も表すことができる。たとえば、基準は、信号強度が情報を送るまたは取り出すことを試みる前に所定のレベルよりも大きくなければならないなどの低水準の要件でも、または、モバイル装置が物理的に特定の場所の内側に位置していなければならない、ユーザが装置に取り付けられたセキュリティトークンを持っていなければならず、時刻が午前9時と午後5時の間になければならず、「MYSERVER−14」という名前のサーバがアクセス可能でなければならないなどの複雑で高水準の要件でもよい。任意の複雑さの、異なる要件に関する、技術的抽象化の低水準と高水準のどちらにも対応する基準を定義することができることにより、アプリケーション開発者には、こうした基準を宣言的に使用する際の柔軟性が与えられる。
【0023】
また、アプリケーション312、316、および317では、キューに入れられた要求を動的に閲覧し、どの基準が満たされており、どの基準が満たされないままであるかの判定を簡単に行うことができる。この情報を使用すると、状況を救済するようにプログラムまたはエンドユーザの動作の指示を行うことができる。たとえば、アプリケーションは、ユーザに、その要求の処理が、信号強度が信頼できる効率のよい通信のためには低すぎるという理由で行われていない、ということを知らせることが可能である。この情報に基づいて、ユーザは、信号強度がよりよい場所に移動し、要求を、必要とされる基準が満たされたときに自動的に行わせることを決定することができる。基準(320、321)の集合は、拡張可能である。プログラマは、さらに別の基準を作成し、それをあらかじめ定義された基準と同様に使用し、要求にそれを付加することが可能である。
【0024】
これらの宣言的な基準(320、321)は、変化する状態に動的に応答することができる。ユーザの確立した所与の基準(たとえば、「サーバXXXXが到達可能でなければならない」、「帯域が512kbitより大きくなければならない」)を、複数のネットワーク要求に結びつけることが可能である。基準は、あるテストで真でないとわかっている場合、その基準が付加されている要求すべてに適用することが、その状態を繰り返しまたは要求ごとにテストする必要なしに可能である。このようにして、共通の基準は、1回検査する必要があるだけである。
【0025】
同様に、基準は、真であるとネットワーク要求マネージャ312が判定した場合、要求ごとに何度も何度も再テストする必要はない。その基準は、単に、そうでないとわかるまで真であると仮定することが可能である。一般に、スマートな基準では、断続的な失敗/成功と最終的な失敗/成功を区別することが可能であり、アプリケーションは、この情報を利用してインテリジェントな通信の判断を行う能力を持つ。
【0026】
上で論じたように、基準はグループ化することができる。基準のグループ化により、ユーザがより複雑な式を作成できるようになるだけでなく、そのユーザが基準をリンクできるようになる。たとえば、10Mbsという要求されるリンク速度基準を宣言すること、および「非Wi−Fi」というリンクタイプ基準を宣言することを考える。現在、装置がGPRS接続およびWi−Fi接続を有している場合、10Mbsというリンク速度基準はWi−Fiアダプタによっては満たされるが、「非Wi−Fi」基準はGPRS接続によっては満たされないはずである。基準のグループ化およびリンクが可能であることにより、受容可能な接続条件について豊富なステートメントを作ることができるようになる。
【0027】
基準の一部はアプリケーション間で共用することができるのに対し、他の基準はアプリケーションそれぞれに特有のものとすることができる(図4〜6および関連する議論を参照されたい)。
【0028】
一般に、ネットワーク要求マネージャ312は、ネットワーク要求の実行を、その要求に関連する何らかの基準が満たされたときに行うように構成される。ネットワーク要求マネージャ312では、基準に関連する属性を得て、それがいつ満たされるかを判定する(図6および関連する議論を参照されたい)。
【0029】
ネットワーク要求マネージャ(312)は、ネットワークサービスとの相互作用を、様々なプロトコルを通して行う。たとえば、ネットワーク要求マネージャ312は、ソケット、HTTP要求、またはWebサービス要求を使用することができよう。
【0030】
ネットワーク要求マネージャ312の利用により、非同期通信モデルをアプリケーション(312、316、および317)で使用することができる。ソケット、HTTP、およびWebサービス通信モデルは、デスクトップおよびサーバコンピュータ上での使用のために開発され洗練されたものである。「通信のソケットのオープンを試みる」アプリケーション開発者は、同期プログラミングモデルを利用しており、一般に、ネットワークのインフラストラクチャは整備され(in place)動作しているものと仮定している。このことは、デスクトップおよびサーバコンピュータに関しては一般に正しいが、モバイル装置に関してはそれほど正しくない。
【0031】
セルラ/ページャネットワーク350は、無線装置との間でのメッセージの送付とメッセージの受信を、セルラ網を用いて行うことを役目とするネットワークである。セルラ/ページャネットワーク350は、無線と有線の構成要素をどちらも含むことができる。たとえば、セルラ/ページャネットワークは、有線の電話網にリンクされたセルラタワー(cellular tower)を含むことができる。通常、セルラタワーは、セルラ電話、長距離通信リンクなどとの間の通信を搬送する。
【0032】
ゲートウェイ360は、セルラ/ページャネットワーク350と無線ネットワーク340の間でメッセージのルーティングを行う。たとえば、コンピュータのユーザが、あるセルラ電話宛てのメッセージを送るとしよう。ゲートウェイ360では、そのメッセージをネットワーク340からセルラ/ページャネットワーク350へと輸送する手段を提供する。逆に、セルラ網に接続された装置をもつユーザが、インターネット(the Web)をブラウズしているとしよう。ゲートウェイ360により、HTTP(hyperlink text protocol)メッセージの転送を、ネットワーク340とセルラ/ページャネットワーク350の間で行うことができるようになる。
【0033】
次の想定状況(scenarios)の例により、このシステムの様々な使用法を示す。あるユーザ、ジョン(John)が、自分の移動体電話を頼りに生活しており、その情報およびサービスのオンデマンドでの配布に依存していると仮定しよう。ジョンは日中、自分の街を頻繁に行き来して街中の会議に出向き、出張にもよく出かける。すでに自分の面会予定(schedule and contacts)は自分の移動体電話に記録してあり、自分の生活を助けてくれるインテリジェントなサービスを望んでいる。また、ジョンは情報にとりつかれており、時間を無駄にするのを嫌う。自分の移動体電話が自分に付いてきてくれ、情報およびサービスの必要なものを一日中供給して欲しいと思っている。ジョンの手助けのために、移動体電話上には、彼にとって必要な情報およびサービスを提供してくれる一連のカスタムアプリケーションがある。
【0034】
ジョンは朝起き、仕事に出かける前に自分の移動体電話で1日のスケジュールに目を通す。仕事に向かう途中でニュースを読みながら、ジョンは地下鉄に入り、通勤の間、ネットワークの接続性を出たり入ったりする。列車を待つ間、自分の移動体電話を取り出し、「ニュースクリッピング」アプリケーションを動作させる。ジョンは自宅にWi−Fiおよびそれを利用できるスマートなモバイルアプリケーションがあるので、ジョンが興味をもっている最新のヘッドラインは、すでに自分の電話にダウンロードしてある。様々なニュース項目にざっと目を通し、キャッシュされた記事を読む。興味を持っている「台頭するデジタルペット」に関する記事へのリンクを見つけ、それに緑のリンクがあることに気付くが、これは、その内容がキャッシュされていないことを示している。そのリンクをクリックして、可能なときに自分用にその記事のダウンロードを希望することを示す。ジョンがこの要求を行うと、ネットワーク要求マネージャは、この要求をキューに入れ、その要求に関連する基準が満たされているかどうかを判定する。ニュースクリッピングのアプリケーションに関連する基準が満たされている場合、その要求は、ネットワークの状態によって可能なときいつでも処理される。ジョンは接続性のないエリアにいるため、要求はこのとき満たされない可能性がある。ジョンの列車が地下から出てきて、地上の空の下を数分走ると、装置はジョンのためのGPRS接続を確立することができ、ネットワーク要求マネージャはキューに入れられた要求を実行し、アプリケーションは要求されたニュース項目をダウンロードしてニュースクリッピングキューに入れる。作業が完了すると、アプリケーションは、キューに入れられた作業が成功裏に完了しているという、ネットワーク要求マネージャからのプログラム上のイベントを受信する。このイベントに応答して、アプリケーションは、目立たない「ニュースのダウンロードが完了しました」というアイコンをニュースリーダの下部に表示して、要求された記事がダウンロードされていることを示す。ジョンは今読んでいる記事を終え、今度はニュースダウンロードに切り替え、「台頭するデジタルペット」および「南米のスキー休暇」についての記事を読む。その間に、列車は地下に戻っており、ネットワークの接続性はまた失われている─ジョンは気付いておらず、この影響を受けていない。「台頭するデジタルペット」についての記事を読みながら、ジョンは、行って動作中のものを見てみたいものだという気になる。その記事では、「お近くの販売店についてはここをクリック」というリンクが提供されている。ジョンはそのリンクをクリックし、1つの要求がジョンの現在の場所を用いてログに記録される。ジョンはオフライン中であるため、その要求はローカルにキャッシュされ、ジョンが受容可能なネットワークの地理的状況(terrain)に戻ったときに送信されることになる。ジョンには、その要求がログに記録されており、可能なときにいつでも処理されるだろうということがわかっているだけである。ジョンはその要求を自分自身でログに再記録する必要はない。ジョンの列車はじきに職場に到着する。
【0035】
職場にいる間のスケジュールの変更:職場にいる間に、ジョンに電話が入る。この電話の会話に基づいて、ジョンは、その後その日午後に街の別の場所である会議に同意する。会議の世話役はジョンに、会議の場所を含むSMSメッセージを送る。ジョンのスケジューリングアプリケーションは、ジョンには数時間街の別の場所で新しい会議があることを理解し、会議のエリアの詳しい地図をダウンロードするネットワーク要求をキューに入れる。ジョンの電話機は職場にあるので、そこのWi−Fiネットワークにアクセスでき、要求された地図をすぐにダウンロードし始め、その装置上にキャッシュすることができる。この作業は一連のネットワーク要求(たとえば、様々な地図および道順に関する一連の個別の要求)からなり、この作業のすべてがキューに入れられ動作し始めるのは、ネットワーク要求マネージャで決定された要件が満たされるときである。地図の要求およびダウンロードの最中に、ジョンはエレベータに乗り込み、ドアが閉まり、ジョンのネットワーク接続が失われる。ネットワーク障害がネットワーク要求マネージャで検出され、中断された作業はネットワーク要求キュー上に(そこでの他の作業と並んで)戻されて、適切なネットワーク接続が回復したときに取り扱われることになる。数分後、ジョンがエレベータを出て、ジョンの電話機がWi−Fiネットワークにアクセスできるようになった後で、電話機は低電力モードから少しの間復帰し、残りの要求された地図をダウンロードする。
【0036】
別の例は、音楽ファイルのダウンロードを希望するユーザである。このユーザが自分の移動体電話上で音楽の買い物をし、ダウンロードしたいトラックをリストにして行く間、そのダウンロードをバックグラウンドで行うことが可能である。曲すべてのダウンロードが、ユーザの移動のため接続が失われる前に完了できない場合には、ダウンロードは後で再開されることになる。ユーザは、音楽の買い物を切断されている間に続け、要求されたダウンロードをリストにして行くことさえ可能である。
【0037】
図4に、本発明の諸態様による、キューに入れられたネットワーク要求に適用可能な基準からなる木を示している。ある実施形態によれば、基準は、抽象SmartRequestAttributeクラス(402)から導出される。上で論じたように、基準は多くの異なる項目に関係することができる。たとえば、基準のある集合は、ネットワークリンク基準(408)とすることができる。一部のネットワークリンク基準は、リンク速度、リンクタイプ、利用可能な帯域幅、IPアドレス、などを含むが、これに限定されるものではない。アプリケーション層基準(410)は、特定のサーバが到達可能かどうかなどの項目を含む。その他(miscellaneous)基準(412)は、物理的な場所、時刻、成功にせよ失敗にせよそれまでに完了した要求の結果、コスト、セキュリティなどの様々な項目を含むことができる。どのようなタイプの基準も要求に付加することができる。プログラマが、基準を様々な要因に基づいて付け加えることも可能である。たとえば、プログラマが、ネットワークカード、使用されるネットワーク、訪問される場所などの特徴に関する基準の集合を付け加えることも可能である。
【0038】
上で論じたように、共通の基準の検査を、要求マネージャで1回だけ行い、それにより、利用可能な資源を節約することができる。また、集められた基準は集約する(aggregated)こともできる(406)。また、異なる基準を一緒にグループ化して、様々な基準の間の関係を作成することもできる(404)。
【0039】
図5に、本発明の諸態様による、異なる基準属性が関連付けられたいくつかのスマートなネットワーク要求を示している。
【0040】
これらの基準属性は、要求の間で共用することが可能であり、この意味は、ある要求に関して真である1つの属性は、他のものに関しても真であると仮定することができ、逆に、その属性が、ある要求に関して偽である場合は、要求すべてに関して偽と仮定することができる、ということである。この点で、属性は共用することが可能であり、ラッチすることが可能である。このラッチする振る舞いは、特に、テストが高く付く属性基準に対して価値がある。そのような基準の一例は、サーバ上の所与のサービスが到達可能かどうかのテストを行う属性である。ネットワーク上の特定のサーバのサービスが到達可能かどうかを最終的に知る唯一のやり方は、そのサーバへの連絡を取ろうと試み、受容可能な応答がいつ返されるかを判定することである。モバイルネットワークでは、そのような要求は、レイテンシが高く、かなりのバッテリ電力を必要とする可能性があり、行うと金銭的コストを生じる可能性がある。こうした理由から、1つの属性基準は、真であると判定された場合、偽であるとわかり、またはアプリケーション論理によってリセットされるまで、真の位置にラッチされる。この属性を共用する要求は、このスマートな振る舞いから利益を得ることが可能である。
【0041】
図5の第1の要求を参照すると、要求510は、満たす必要のある基準をなにも含まない。したがって、要求510は、直ちに動作する準備ができている。
【0042】
要求520は、動作の前に満たさなければならない3つの異なる基準を含む。要求520が動作させられる前に満たさなければならない基準は、サーバ「XX」が到達可能であること、接続の帯域幅が300Kb/sより大きいこと、および、物理的場所の制約が満たされることを含む。これらの基準のすべてが満たされると、要求520は動作させられる。
【0043】
要求530は、共通の基準を共用する2つの異なる作業要求(未解決の要求3および未解決の要求4)を示している。共有される基準は、物理的場所基準および帯域幅基準である。2つの未解決の作業ユニットは、いくつかの共通の基準を含む一方、それぞれに特有な基準も含むことができる。たとえば、未解決の作業3では、サーバ「XX」が到達可能であることが必要であるが、未解決の作業4では、サーバ「YYY」が到達可能であることが、リンクタイプが「Wi−Fi」リンクであることと並んで必要である。
【0044】
図6に、本発明の諸態様による、ネットワーク要求マネージャのランタイム時の振る舞いを示している。ネットワーク要求マネージャ604に結合されるアプリケーション602などの各アプリケーションは、作業を未解決要求キュー610上に置く。ある実施形態では、各ネットワーク要求が、最初は未解決要求キュー上に置かれる。ここに示すように、未解決要求キュー610は、作業7、作業2、作業3、作業1、および作業9を含めて、5つの作業要求を含む。各作業項目は、0個以上の「基準属性」を含む(ラベル605
〜609を参照されたい)。要求マネージャ(604)は、定期的に、キュー内の作業項目を監視しどの項目が実行の準備ができているかを判定する。作業の1つの項目は、その基準属性のすべてが真である場合に実行の準備ができている。基準属性が真であると、その項目は未解決要求キュー610から取り除かれ、そのコードの実行は、障害を検出可能な制御された環境内で行われる。ある実施形態によれば、要求は、その要求に関連する基準が満たされるとすぐに行われる。作業が開始されるとともに、非同期イベントがクライアントアプリケーション(602)へと発せられて、そのアプリケーションが、ユーザへの通知または他の何らかの適切な動作など、何らかの動作を行うことができるようにする。実行される作業は成功または失敗することになる。作業は、実行後に成功キュー(612)内または失敗キュー(614)内へ置かれ、アプリケーション(602)への成功または失敗の通知が、非同期イベントを介して行われる。ある実施形態によれば、イベントは、作業実行中、作業成功、および作業失敗を含む。
【0045】
要求がシステム600内部にある間、アプリケーション(602)は、どの作業が現在未解決要求キュー610上にあるか、および作業項目の属性基準のそれぞれのステータスがなにであるかを調べることができる。たとえば、作業2の要求を提出したアプリケーションは、基準属性番号2のステータス問い合わせることができるはずである。
【0046】
また、アプリケーションは、もはやそのタスクを動作させる意味がない場合には、作業を未解決要求キューから取り除くことができる。たとえば、ユーザが、すでに要求されている既存の作業に取って代わる新しい通信タスクを要求していることがある。単純なファンクションコールを使用すると作業をキューから取り除くことができる。
【0047】
未解決要求キューと同様に、アプリケーションは、成功キュー(612)内または失敗キュー(614)内にどのような作業があるかを調べることも可能である。望ましいときには、アプリケーションは、現在失敗キュー(614)内にある作業を未解決要求キュー(610)へと戻すことが可能である。
【0048】
図7に、本発明の諸態様による、スマートな要求を構成するための例示的なユーザインタフェースを示している。
【0049】
楕円710を参照することによってわかるように、SmartNetworkRequestとSmartNetworkRequestManagerをどちらもアプリケーション設計サーフェス(730)に追加し、その構成をソフトウェア開発者がユーザインタフェースのプロパティ部分(720)内で行うことが可能である。開発者は、ユーザインタフェース700を用いて、ネットワーク要求マネージャのランタイム時の振る舞いを構成することができる。たとえば、要求をバックグラウンドでいくつ並列に動作させられるかなどの振る舞いを構成することが可能である。
【0050】
また、開発者は、要求マネージャの提供するイベントに応答するコードを書くことができる。たとえば、SmartNetworkRequestが「未解決要求キュー」から取り出されて動作させられること、SmartNetworkRequestが成功すること、SmartNetworkRequestが失敗することなどのイベントに応答するコードを書くことができる。
【0051】
ユーザは、SmartNetworkRequestの構成を、これらを設計サーフェス(730)上にドラッグアンドドロップすることによって行うことができる。各SmartNetworkRequestは、指定された基準が満たされたときに開発者が動作させたい通信タスクを表す。開発者は、ネットワーク要求マネージャ用のコードを開発するのと同様に、SmartNetworkRequestをダブルクリックし、その要求用のコードを書くことができる。これは、フォームデザイナ(form−designer)上のボタンコントロールをダブルクリックし、ランタイム時にそのボタンが押されると動作が行われることになるコードを書くという非常に一般的な習慣と相似的である。ここでは、開発者の書くコードが、RequestManagerによって、そのSmartNetworkRequestの基準属性が満たされたときに呼び出されることになる。このコードは、基準が満たされたときに開発者が行いたい作業に対応する。
【0052】
図8に、本発明の諸態様による、スマートネットワーク要求(Smart Network Request)への基準属性の付加を示す詳細なデザイナビュー(designer view)を示している。
【0053】
どのような数の基準もスマートネットワーク要求に関連付けることができる。楕円810で示すように、2つの基準が現在ネットワーク要求に関連付けられている。開発者は、ネットワーク要求への基準の追加および削除を、グラフィカルインタフェース830を通して行うことができる。ドロップダウンリスト830は、12の例示的な基準を含んでいる。上で論じたように、さらに多くのタイプの基準があってもよい。このユーザインタフェースを使用すると、基準をリンクすることもできる。
【0054】
例示的な動作環境
図1に関しては、本発明を実装するためのある例示的なシステムは、コンピューティング装置100などのコンピューティング装置を含む。非常に基本的な構成では、コンピューティング装置100は、通常、少なくとも1つのプロセッサ(処理ユニット)102およびシステムメモリ104を含む。システムメモリ104は、コンピューティング装置の厳密な構成およびタイプに応じて、(RAMなどの)揮発性、(ROM、フラッシュメモリなどの)非揮発性、またはこの2つの何らかの組み合わせとすることができる。システムメモリ104は、通常、オペレーティングシステム105、1つまたは複数のアプリケーション106を含むが、プログラムデータ107を含んでもよい。ある実施形態では、アプリケーション106は、ネットワーク要求基準を構成することを対象とするスマートネットワーク要求設計ツール120を含むことができる。この基本的な構成を、図1で、破線108の内部の構成要素によって示している。
【0055】
コンピューティング装置100には、さらに別の特徴または機能があってもよい。たとえば、コンピューティング装置100は、たとえば、磁気ディスク、光ディスク、またはテープなど、さらに別のデータストレージ装置(リムーバブルおよび/またはノンリムーバブル)を含むこともできる。そのようなさらに別のストレージを図1でリムーバブルストレージ109およびノンリムーバブルストレージ110によって示している。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報のストレージのためのどのような方法または技術の形で実装される、揮発性と非揮発性の、リムーバブルとノンリムーバブルの媒体を含むことができる。システムメモリ104、リムーバブルストレージ109、およびノンリムーバブルストレージ110はすべて、コンピュータストレージ媒体の例である。コンピュータストレージ媒体としては、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CD−ROM、DVD(digital versatile disks、デジタル多用途ディスク)、または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ストレージ装置、あるいは所望の情報を格納するのに使用することが可能で、コンピューティング装置100のアクセスすることの可能な他の任意の媒体があるが、これに限定されるものではない。そのような任意のコンピュータストレージ媒体を装置100の一部とすることができる。また、コンピューティング装置100は、キーボード、マウス、ペン、音声入力装置、接触型入力装置(touch input device)などの入力装置112を有していてもよい。また、ディスプレイ、スピーカ、プリンタなどの出力装置114が含まれていてもよい。
【0056】
また、コンピューティング装置100は、この装置が他のコンピューティング装置108との通信をネットワークなどを介して行えるようにする通信接続116を含むことができる。通信接続116は、通信媒体の1つの例である。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または、搬送はまたは他の輸送機構などの変調されたデータ信号の形の他のデータによって実施することができ、どのような情報送付媒体も含む。「変調されたデータ信号」という用語は、その特徴の1つまたは複数が情報をその信号中に符号化する形で設定または変更される信号を意味する。限定ではなく、例として、通信媒体は、有線ネットワークまたは直接ワイヤード接続などの有線媒体、ならびに音響、無線(RF)、赤外線、および他の無線媒体などの無線媒体を含む。本明細書で使用するコンピュータ可読媒体という用語は、ストレージ媒体と通信媒体のどちらも含む。
【0057】
図2に、本発明のある例示的な実施形態で使用することのできるモバイルコンピューティング装置を示している。図2に関しては、本発明を実装するためのある例示的なシステムは、モバイルコンピューティング装置200などのモバイルコンピューティング装置を含む。モバイルコンピューティング装置200は、プロセッサ260、メモリ262、ディスプレイ228、およびキーパッド232を含む。メモリ262は、一般に、揮発性メモリ(たとえば、RAM)と非揮発性メモリ(たとえば、ROM、フラッシュメモリなど)をどちらも含む。モバイルコンピューティング装置200は、マイクロソフトコーポレーション製のWindows(登録商標) CEオペレーティングシステムなどのオペレーティングシステム264、または、メモリ262内に常駐しプロセッサ260上で実行される、別のオペレーティングシステムを含む。キーパッド232は、(典型的な電話などの上の)プッシュボタン数字ダイアリングパッド、(従来型キーボードなどの)マルチキーキーボードとすることができる。ディスプレイ228は、LCD(liquid crystal display、液晶ディスプレイ)、または、モバイルコンピューティング装置で一般的に使用される他のどのようなタイプのディスプレイとすることもできる。ディスプレイ228は、接触感知式(touch−sensitive)とすることもでき、その場合、入力装置としても働くことになるはずである。
【0058】
1つまたは複数のアプリケーションプログラム266は、メモリ262へとロードされ、オペレーティングシステム264上で実行される。スマートネットワーク要求を用いるアプリケーションは、モバイルコンピューティング装置200上に常駐しており、ネットワーク要求マネージャとやり取りして、ネットワーク要求を非同期に実行するようにプログラムされている。このアプリケーションは、この装置のハードウェアまたはソフトウェア内に常駐することができる。また、モバイルコンピューティング装置200は、メモリ262内部の非揮発性ストレージ268を含む。非揮発性ストレージ268を使用すると、モバイルコンピューティング装置200がパワーダウンされた場合に失われるべきではない永続的な情報を格納することができる。
【0059】
モバイルコンピューティング装置200は、1つまたは複数のバッテリとして実装することのできる、電源270を含む。電源270は、このバッテリの補足または再充電を行うACアダプタまたは充電スタンド(powered docking cradle)などの外部電源をさらに含む可能性がある。
【0060】
モバイルコンピューティング装置200は、2つのタイプのオプションの外部通知機構、すなわち、LED240およびオーディオインタフェース274とともに示してある。これらの装置は、電源270に直接に結合して、アクティブにされたとき、プロセッサ260および他の構成要素がバッテリ電力の保存のためにシャットダウンする可能性のある場合でも、通知機構の指示する期間、オンのままであるようにすることができる。オーディオインタフェース274は、ユーザとの間のオーディオ信号の提供および受け取りのために使用される。たとえば、オーディオインタフェース274は、電話の会話を容易にするなどのために、聴取可能な出力を提供するためにスピーカに、聴取可能な入力を受け取るためにマイクロホンに結合することができる。
【0061】
また、モバイルコンピューティング装置200は、無線インタフェース層などの通信接続を含み、これは通信を送信および受信する機能を行う。通信接続272により、モバイルコンピューティング装置200と外部世界の間の無線の接続性が容易になる。通信接続は、どのようなタイプの無線ネットワークにも接続するように構成することができる。ある実施形態によれば、通信接続272との間の伝送は、オペレーティングシステム264の制御下で行われる。
【0062】
上の明細書、例、およびデータは、本発明の構成(composition)の製作および使用の完全な説明を提供している。本発明の多くの実施形態は、本発明の趣旨および範囲を逸脱することなく行うことができるので、本発明は、以下に付け加える特許請求の範囲の中にある。
【図面の簡単な説明】
【0063】
【図1】本発明の例示的な実施形態で使用することのできる例示的なコンピューティング装置を示す図である。
【図2】本発明の例示的な実施形態で使用することのできる例示的なコンピューティング装置を示す図である。
【図3】ネットワーク要求基準システムを全体として示す機能的構成図である。
【図4】キューに入れられたネットワーク要求に適用可能な基準の例からなる木を示す図である。
【図5】異なる基準属性が関連付けられたいくつかのスマートなネットワーク要求を示す図である。
【図6】ネットワーク要求マネージャのランタイム時の振る舞いを示す図である。
【図7】スマートな要求を構成するための例示的なユーザインタフェースを示す図である。
【図8】本発明の諸態様による、スマートネットワーク要求(Smart Network Request)への基準属性の付加を示す詳細なデザイナビュー(designer view)である。
【符号の説明】
【0064】
311 モバイル装置
312 アプリケーション
315 モバイル装置
316 アプリケーション
317 アプリケーション2
320 基準
321 基準
331 コンピューティング装置
332 アプリケーション設計環境
312 ネットワーク要求マネージャ
350 セルラ/ページャネットワーク
360 ゲートウェイ

【特許請求の範囲】
【請求項1】
ネットワーク要求を基準で属性化するためのコンピュータ実装方法であって、
アプリケーションに関連付けられたネットワーク要求を作成するステップと、
基準を前記ネットワーク要求と関連付けることを、前記ネットワーク要求が実行のために提出される前に行うステップと、
前記基準に関するプロパティを調節することを含む、前記基準を構成するステップと、
行うべき前記ネットワーク要求を提出するステップと、
前記ネットワーク要求と関連付けられている前記基準が満たされるときを判定し、前記基準が満たされると、前記要求の実行を試みるステップと
を備えたことを特徴とする方法。
【請求項2】
前記ネットワーク要求の実行が成功するときを判定するステップと、前記アプリケーションに前記要求の実行の成功を示すイベントを提供するステップとをさらに備えたことを特徴とする請求項1に記載の方法。
【請求項3】
前記アプリケーションに提供される前記イベントに応答して実行されるイベント駆動コードを関連付けるステップをさらに備えたことを特徴とする請求項2に記載の方法。
【請求項4】
前記基準は、ネットワークリンク基準およびアプリケーション基準のうちの少なくとも1つから選択されることを特徴とする請求項3に記載の方法。
【請求項5】
前記基準は、帯域幅、リンクタイプ、時刻、場所、サーバ到達可能、IPアドレス、信号強度、セキュリティトークンのうちの少なくとも1つを含むことを特徴とする請求項4に記載の方法。
【請求項6】
前記基準を論理的にリンクすることができることを特徴とする請求項2に記載の方法。
【請求項7】
前記ネットワーク要求の実行を異なるネットワークタイプを用いて行うことができることを特徴とする請求項2に記載の方法。
【請求項8】
ネットワーク要求を基準で属性化するためのコンピュータ実行可能命令を有するコンピュータ読み取り可能な記録媒体であって、前記命令は、
アプリケーションに関連付けられたネットワーク要求を作成するステップと、
基準を前記ネットワーク要求と関連付け、ネットワークリンク基準に関係する前記基準を構成することを、前記ネットワーク要求が実行のために提出される前に行うステップと、
行うべき前記ネットワーク要求を提出するステップと、
前記ネットワーク要求と関連付けられている前記基準が満たされるときを判定し、前記基準が満たされると、前記要求の実行を試み、前記ネットワーク要求の実行が成功するときを判定し、および前記要求の実行の成功を示すイベントを前記アプリケーションに提供するステップと
を備えたことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項9】
前記基準の少なくとも2つをリンクすることを特徴とする請求項8に記載のコンピュータ読み取り可能な記録媒体。
【請求項10】
前記基準が満たされているときを判定するステップは、前記基準が1つより多くのアプリケーションに関連付けられているとき、前記基準のそれぞれが1回満たされているかどうかを判定することを含むことを特徴とする請求項8に記載のコンピュータ読み取り可能な記録媒体。
【請求項11】
前記基準は、帯域幅、リンクタイプ、時刻、場所、サーバ到達可能、IPアドレス、信号強度、セキュリティトークンのうちの少なくとも1つを含むことを特徴とする請求項10に記載のコンピュータ読み取り可能な記録媒体。
【請求項12】
前記ネットワーク要求の実行を1つより多くのタイプのネットワークを用いて行うことができることを特徴とする請求項10に記載のコンピュータ読み取り可能な記録媒体。
【請求項13】
ネットワーク要求を処理するためのシステムであって、
ネットワークに結合され、実行のためにネットワーク要求を提出するように構成されたアプリケーションであって、前記ネットワーク要求は0個以上の関連する基準を有するアプリケーションと、
前記アプリケーションに結合され、
ネットワーク要求提出を前記アプリケーションから受け取るステップと、
前記ネットワーク要求と関連付けられている前記基準が満たされるときを判定し、前記基準が満たされると、前記要求を非同期に実行し、前記実行の結果を判定し、および、前記実行の前記結果を示すイベントを前記アプリケーションに提供するステップと
を含む動作を行うように構成されたネットワーク要求マネージャと
を備えたことを特徴とするシステム。
【請求項14】
前記ネットワーク要求マネージャは、前記基準が満たされていると判定されるまで、前記ネットワーク要求を未解決要求キュー内に置くようにさらに構成されることを特徴とする請求項13に記載のシステム。
【請求項15】
前記ネットワーク要求マネージャは、前記実行の前記結果が成功を示すときは前記ネットワーク要求を成功キューに移し、前記実行の前記結果が失敗を示すときは前記ネットワーク要求を失敗キューに移すようにさらに構成されることを特徴とする請求項14に記載のシステム。
【請求項16】
前記アプリケーションは、前記ネットワーク要求の前記結果に関連付けられているイベント駆動コードをアクティブにするようにさらに構成されることを特徴とする請求項13に記載のシステム。
【請求項17】
前記ネットワーク要求に関連付けられている前記基準は、帯域幅、リンクタイプ、時刻、場所、サーバ到達可能、IPアドレス、信号強度、セキュリティトークンのうちの少なくとも1つから選択されることを特徴とする請求項13に記載のシステム。
【請求項18】
前記ネットワーク要求マネージャは、基準スパンが複数のアプリケーションに関連付けられているときを判定し、前記基準が1つより多くのアプリケーションに関連付けられているときには前記基準が満たされているかどうかの判定を1回だけ行うようにさらに構成されることを特徴とする請求項14に記載のシステム。
【請求項19】
前記基準をネットワーク要求に関連付けるように構成されたグラフィカルユーザインタフェースをさらに備えたことを特徴とする請求項13に記載のシステム。
【請求項20】
前記グラフィカルユーザインタフェースは、コードを、前記ネットワーク要求の前記実行の前記結果に応答して実行すべき前記基準に関連付けるようにさらに構成されることを特徴とする請求項19に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2006−229953(P2006−229953A)
【公開日】平成18年8月31日(2006.8.31)
【国際特許分類】
【出願番号】特願2006−24867(P2006−24867)
【出願日】平成18年2月1日(2006.2.1)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】