JP2005506595A - プラットフォーム独立の分散ユーザインタフェースのシステムアーキテクチャ - Google Patents
プラットフォーム独立の分散ユーザインタフェースのシステムアーキテクチャ Download PDFInfo
- Publication number
- JP2005506595A JP2005506595A JP2002564734A JP2002564734A JP2005506595A JP 2005506595 A JP2005506595 A JP 2005506595A JP 2002564734 A JP2002564734 A JP 2002564734A JP 2002564734 A JP2002564734 A JP 2002564734A JP 2005506595 A JP2005506595 A JP 2005506595A
- Authority
- JP
- Japan
- Prior art keywords
- server
- client device
- client
- data items
- source data
- 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.)
- Pending
Links
Images
Landscapes
- Digital Computer Display Output (AREA)
Abstract
【選択図】図1
Description
【0001】
関連出願の相互参照
本願に対する関連する出願は、"Platform-Independent Distributed User Interface Server Architecture"という名称で2001年2月14日に出願された米国特許出願番号第09/782,845号、および"Platform-Independent Distributed User Interface Client Architecture"という名称で2001年2月14日に出願された米国特許出願番号第09/783,673号である。
【0002】
発明の分野
本発明は、包括的には、クライアント−サーバ型データ通信システムに関する。より詳細には、本発明は、ネイティブなクライアントユーザインタフェース機能を利用して、サーバから受信したデータを表示するシステムに関する。
【背景技術】
【0003】
発明の背景
インターネットおよび無線データネットワークを介してデータサービスを受けるユーザの数は急速なペースで増大し続けている。例えば、数百万人が従来型の方法でインターネットにアクセスし、多くの人々はウェブ対応無線電話機を使用している。さらに、ますます多くの人々がハンドヘルドコンピュータまたは携帯情報端末(PDA)を所有し、その多くはインターネットへの従来型接続および/または無線接続を確立することが可能である。
【0004】
この急激な技術的拡大の核心には、データ対応インターネット機器がある。こうしたデバイスには、次のような広範囲の形態要素(フォームファクタ)が含まれる:ウェブ対応電話機、多機能電話機、PDA、携帯ゲーム機及び他のデバイス。元来これらのデバイスは小型で、携帯性があり、手頃な価格であり、パーソナル情報マネージャ(PIM)のデータや電子メールのような貴重なデータ、ならびにゲーム、音楽、およびストリーミングビデオのような娯楽への即時アクセスを提供する。携帯コンピューティングデバイス(HCD)と無線ネットワーク接続との組合せはエンドユーザにとって極めて魅力的であり、HCDがかつて持っていたよりも相当に高い価値のものを提供する。この変化に伴い、携帯性、即時起動、および長いバッテリ寿命のような長期的利益がはるかに大切になる。ラップトップコンピュータを持ち運びそれが起動するのを待つという不便さのない安定的接続の魅力は明らかである。
【発明の開示】
【発明が解決しようとする課題】
【0005】
無線接続されたHCDに関しては、以下の有利な用途が想起される:電子メールへのアクセス、インターネットへのアクセス、カレンダおよびスケジューラへのアクセス、ならびに同僚とのコラボレーション。残念ながら、ほとんどのHCDは当初はパーソナルコンピュータの付属機器またはスタンドアロン型のデータバンクとして機能するように設計された。直接ネットワーク接続に重点を置くように状況を移行させることにより、これらのデバイスは、ネットワークへのそれらのインタフェースをパーソナルコンピュータが提供していた時にそれらがもともと持っていたレベルの処理機能を喪失している。歴史的には、リモートデータアクセスの問題を解決するためには2つのアプローチがある:(1)ユーザデバイス(「ファット(肥大)」(“fat”)クライアント)が小型コンピュータとして機能するというクライアント側処理、および(2)サーバ側処理と連係して動作するシンクライアント(thin(やせた)client)。
【0006】
無線接続デバイスの認知された価値を維持するのに十分な機能を提供するため、一部のソリューションプロバイダは、より多くの機能をデバイスに提供するという旧来アプローチをとることにより、ファットクライアントデバイスを作り出している。例えば、一部のプロバイダは、自社のプラットフォームやアプリケーションにソフトウェアや機能を付加して、エンドユーザが自分の電子メールサーバに直接接続し、ウェブページを閲覧し、ストリーミングメディアファイルのダウンロードおよび再生を行うことができるようにしている。その結果として、市場の最も広い部門に位置づけられる製品を作り出す努力がなされている。しかし、実際的な技術要求により、ベンダはしばしば、ますます多くのリソースをクライアントデバイスに付加するよう余儀なくされる。より高速なプロセッサおよび付加メモリがデバイスのコストを上昇させるだけでなく、付加の電力要求は、より大きいバッテリを必要とし、デバイスのサイズおよび重量の両方に不利になる。
【0007】
エンドユーザにとっての実用性を決める3つのパラメータは、携帯性、経済性、および価値である。ファットクライアントデバイスは、付加的機能から利益を受けるものの、通常は携帯性、経済性、製品の実用性、および主流の採用の減少を被る。さらに、このようなファットクライアントデバイスにより実際に与えられる機能を詳細に見ると、さらなる制限が明らかになる。例えば、このようなデバイスは通常、単純なPOP3およびIMAP4電子メールアカウントにはアクセスすることができるが、電子メールやPIMデータにアクセスするために集合的もしくは企業体のファイアウォールとかネゴシエートしたりプロプライエタリサーバ(例えば、Microsoft ExchangeやLotus Domino)と通信したりするほど十分には高機能でないことがある。結果として、集合的もしくは企業体のエンドユーザは、自分の無線HCDのために別個の電子メールアカウントを維持しなければならず、集合的もしくは企業体サーバのPIMデータにアクセスすることができなくなる。
【0008】
シンクライアントアーキテクチャは、次の3つの典型的なカテゴリに分けることができる:ウェブインタフェース、仮想マシン、およびシンクライアント。この3つのうち、ステートレスなウェブインタフェースのカテゴリは、無線通信事業者および電話機製造業者の間でのWAP(wireless application protocol)の人気の上昇とともに、最も注目を集めていると思われる。しかし、フォーマットがWAP、HTML(hypertext markup language)、または他のいかなるXML(extensible markup language)から派生したものであっても、基本概念は変わらない。すなわち、ステートレスなブラウザベースのユーザインタフェースを用いて、アプリケーション機能の100%およびフォーマット作業の一部を処理するサーバベースアプリケーションとやり取りすることである。その結果(少なくともWAPブラウザのインプリメンテーションもしくは実現については)、広範囲の安価なローエンドデバイスに適合するのに十分な、小型で簡易なクライアントが得られる。この方向に進むことにより、携帯性および経済性は解決されるが、価値は強力なサーバベースアプリケーションから引き出される。しかし、この種のアーキテクチャは、エンドユーザに多少の一部の実用性を提供するものの、WAP電話機およびその他のWAP対応デバイスはしばしばユーザインタフェースの観点からは制限される。
【0009】
インターネットの広範囲の普及とともに、いわゆる「ウェブベースアプリケーション」が非常に広まっている。人気のあるサイト(いくつかの例として、Hotmail、Yahoo! Mail、Yahoo! Calendar、およびMicrosoft Investorがあげられる)は、以前はクライアント側ソフトウェアとしてしか利用可能でなかった種類のアプリケーションへのウェブインタフェースをユーザに提供する。あるレベルでは、「アプリケーション」という用語は正確であると思われるが、旧来のクライアント側アプリケーションとウェブベースアプリケーションの使用モデルはかなり異なる。クライアント側モデルとは異なり、ウェブベースアプリケーションは、ステートレスかつ非インタラクティブである。例えば、エンドユーザのマウスのクリック、メニューの選択、または更新のいずれもが、サーバへの再接続と、ウェブページのリフレッシュを要求する。最も高速なインターネット接続を通じてでさえ、ウェブベースアプリケーション上でのユーザ経験は、クライアント側アプリケーションの持続的でインタラクティブな性質に比べると困難なものである。このアプローチのもう1つの欠点は、ウェブベースの電子メールアプリケーションは、そのユーザがさらに別の電子メールアドレスを管理することを要求することである。これらのアプローチは、デスクトップアプリケーションの真の意味では、すなわちサービスの代わりに個々のソースデータに到達するためのツールとしては、機能し得ない。
【0010】
一部の既存のソリューションプロバイダは、ユーザがインターネット経由で自分の会社のデータにアクセスすることを可能にするウェブベースのシステムを提供している。しかし、これらのプロバイダは、会社が仮想私設ネットワーク(VPN)をその会社のデータセンタとプロバイダのサービスセンタの間に設定することを要求する。これは、もっともらしい企業ソリューションのように思われるかもしれないが、個々のエンドユーザは依然として、ラップトップコンピュータを持ち歩くことに代わる実現可能な代替案なしに取り残される。さらに、多くの企業情報システム(IS)の専門家は、自分がサポートする人々から機能や要望が発生しないうちは、なかなか新しい技術を採用しない。エンドユーザの要望は、特定の状況を扱わなければ生じるものではなく、こうして、結果的に自己永続的な循環に陥る。
【0011】
インターネットの普及が本格化し始め、ウェブページの静的でステートレスな性質が明らかになると、Java、ActiveX、およびDHTML(dynamic hypertext markup language)のような新しい技術が開発された。無線HCDの人気の増大と、静的ウェブビューの不十分さは再び、ワイヤレス市場における次の開発プラットフォームに関連する競争を促すことになる。
【0012】
Javaアーキテクチャの主要な要素は仮想マシンである。この概念は健全であり、多くの場合にはかなり有効であるが、無線HCDを考慮する場合に障害となり得るいくつかの制限がある。仮想マシンは、オペレーティングシステム(OS)とアプリケーションの間に層(レイヤ)を確立する。各仮想マシンは種々のターゲットオペレーティングシステム用にコンパイルされるため、個々のアプリケーションをコンパイルすることを不要にする。アプリケーションが単に仮想マシン層に書き込みを行うだけで、仮想マシン層がOS層向けに翻訳を行う。仮想マシンは、OS内のOSとして機能する。このことから、「仮想」マシンという用語が用いられる。
【0013】
OSからの分離のレベルは、相当のパフォーマンスオーバーヘッドを伴うものである。仮想マシンは、アプリケーションを直接実行するというよりむしろ、まずアプリケーションを実行してから、そのコマンドを下位OSが理解可能な呼出しにマッピングしなければならない。仮想マシンが実現可能なクロスプラットフォームソリューションであるためには、デバイスの共通項の要求にも応じなければならないため、よりハイエンドなプラットフォームに対するその機能性は制限される。さらに、ほとんどの仮想マシンインプリメンテーションは、ユーザがアプリケーションにアクセスするたびにアプリケーション全体をデバイスにダウンロードし、それにより、遅い又は整合していない、無線接続により長い遅延を引き起こす。
【0014】
Javaへの最初の反応はActiveXであった。このソリューションは、ある一定の場合には非常に有効であるが、プラットフォーム独立性の欠如がその欠点となり得る。Javaに対する最近の反応はDHTMLである。これは、HTMLと連係してクライアント側スクリプティングを組み込み、プラットフォーム独立性を保持しながら標準HTMLよりもはるかにインタラクティブなユーザ経験を提供する。しかし、あるレベルでは、DHTMLは仮想マシンの概念に非常に類似している。DHTMLは、実際の仮想マシンを有するのではなく、Java仮想マシンが使用するのとほとんど同じようにして、スクリプトおよびコードのスニペットを使用する。この点で、ブラウザは、アプリケーションとOSの間の層(レイヤ)として機能するため、仮想マシンと同じ制限の多くを受ける。
【0015】
本明細書で論じられるいわゆる「シンクライアント」技術のほとんどとは異なり、ActiveXは、OSおよびプラットフォームを直接に補強的に支援し、(「ウェブベース」ではなく)「ウェブアクセス」アプリケーションに対する強力なソリューションとなっている。しかし、このために、ActiveXはOS依存およびプロセッサ依存となり、多重のOSおよびプロセッサ構成が多く存在するHCDの分野に対しては不適当なソリューションとなる。さらに、ActiveXは、いくつかの点で、ローカル処理のためにクライアント側ソフトウェアをインストールするというファットクライアントの概念への復帰である。
【0016】
ネットワーク帯域幅の増大に伴い、もっとも旧式のクライアント−サーバ型アーキテクチャの1つが復活しつつある。会社ISの専門家が急いで所有権の全コストを削減しようとするにつれて、Citrix、X−Windows、Windows Terminal Server、およびPC Anywhereのようなソリューションの人気が増大している。これらのソリューションはすべて、多重のプラットフォームに移植可能なシンクライアントを使用し、リモートサーバ上で実行中のそれらのアプリケーションの完全なグラフィック表現をユーザに提供する。
【0017】
この種の構成を使用することにより、会社は、そのすべてのユーザが自分のデスクトップ上にある(Windows CEベースのターミナルのような)簡易クライアントを通じて単一のWindows 2000サーバからアプリケーションにアクセスするようなシステムを使用できる。会社にとっての利点は、このシステムによれば多くのユーザが単一の管理ポイントでリソースを共有することが可能になるため、システム全体のサポートが容易になることである。欠点は、集中した障害ポイントを提示することにもなることである。
【0018】
残念ながら、このモデルは、通信リンクを通じてでは重く非効率的である。あらゆるキーストロークおよびユーザアクションがサーバへ送信され、クライアントに返されなければならず、そうしてはじめてユーザは、それが画面に登録されたのを見ることができる。さらに、この「ウィンドウ」をサーバに提示するためには、大きいビットマップがサーバとクライアントの間で送信され、これは相当の帯域幅を必要とする。
【0019】
ほとんどの場合、これらの種類のシステムは、高速ローカルエリアネットワーク(LAN)環境内に配置されるため、これらの問題点はユーザに悪影響を及ぼさない。しかし、無線HCDの状況で考えると、整合的でない、低帯域幅のコネクションがあると、ターミナルサーバの配備は実質的に使用不能となる。さらに、これらのターミナルは単にサーバ上で実行中のアプリケーションへのビューを提供するだけであるため、ユーザインタフェースは通常、HCDの小型の画面サイズには適合しない。
【0020】
したがって、ターミナルサーバアーキテクチャの価値は、デスクトップLAN環境では明らかであるが、より小型の無線接続デバイスに良好に釣り合いがとれているものではない。
【課題を解決するための手段】
【0021】
発明の簡単な要約
本発明の好ましい実施形態は、以下の属性を示すデータ通信アーキテクチャを提供する:クライアント側のリソース要求を削減するための比較的スリムなシンクライアント;持続性ステートを有するインタラクティブなエンドユーザ経験;クライアントプラットフォーム独立性;特定クライアントプラットフォームの能力の補強;および不整合な、低帯域幅のコネクションを通じて良好に機能する能力。本発明による分散ユーザインタフェース(UI)アーキテクチャは、特定的には、無線HCDの状況に対処することができる。このアーキテクチャは、サーバ側アプリケーションにアクセスするためにどのプラットフォームが使用されているかにかかわらず、クライアントの常駐OSユーザインタフェースを補強して、デバイスの残りの部分と整合性のあるルックアンドフィールを生成する持続的でインタラクティブなインタフェースを提供する。その結果、ほとんどの「ダム(dumb)」シンクライアントよりも実際にはサイズが小さいセミダム(semi-dumb)クライアントが得られる。
【0022】
分散UIアーキテクチャは、ターミナルセッションとして機能するサーバとの持続性ステートのコネクションを維持すなわちエミュレートする。分散アーキテクチャとターミナルサーバアプリケーションとの主な相違は、分散アーキテクチャはサーバとクライアントとの間でデータとその表示方法の簡単な記述(クライアントの能力に基づいてサーバにより決定されるような)とを送信するだけであるという点である。クライアント側ソフトウェアは、ネイティブGUIコントロールを用いて、クライアント上にUI要素を生成し、こうして、それらのコントロールにより提供できる利点を補強する。これは、アプリケーションデータの表示をクライアントデバイスにとってはるかにより適当なものにしながら、送信しなければならない情報の総量を大幅に削減する。
【0023】
その結果、いずれのキーストロークをも「往復」させることは不要となる。というのは、このような入力をクライアント側のコントロールを用いて生成できるからである。そして、データを、送信される各データパケットの使用をより効率的にするバンドルとして送信できる。さらに、Windows/WindowsCE,のような多少複雑なプラットフォーム上では、いくつかのコントロールは機能が比較的豊富である。例えば、これらのオペレーティングシステムのリストビューコントロールは、ユーザが、列幅を修正変更し、スクロールバーを用いてリストをスクロールすることを許容する。好ましい実施形態では、分散UIアーキテクチャは、UIをデータから分離し、こうして、クライアントは、サーバからの支援を必要とせずにこれらの機能を利用することができる。
【0024】
本発明の以上および他の側面を、一形態では、クライアント−サーバ型アーキテクチャに関連付けて実施されるデータ処理方法により実現できる。この方法は、クライアントデバイスがそのUI能力をUIサーバに記述することを含み、UIサーバは、受信したUI能力に基づいて、UI要素をどのように構成するかを決定する。UIサーバは、UIフォーム定義をクライアントデバイスに提供し、クライアントデバイスは、そのフォーム定義に従ってUIをレンダリングし、UIサーバから受信したデータ項目でUIを埋める。
【0025】
本発明のより完全な理解は、詳細な説明および特許請求の範囲を添付図面と併せて考慮して参照することにより得られる。図中、同一の参照番号は図面全体を通して類似の要素を指す。
【発明を実施するための最良の形態】
【0026】
望ましい実施形態の詳細な説明
本明細書において、本発明は、機能ブロックコンポーネントおよび種々の処理ステップによって説明できる。このような機能ブロックは、特定化された機能を実行するように構成された任意の数のハードウェアコンポーネントによって実現できることを了解すべきものである。例えば、本発明は、1つ以上のマイクロプロセッサまたは他の制御デバイスの制御下でさまざまな機能を実行可能な種々の集積回路コンポーネント、例えばメモリ要素、ディジタル信号処理要素、論理要素、ルックアップテーブル等を使用できる。さらに、当業者に明らかなように、本発明は、任意の数のデータ伝送プロトコル、サーバベースのエンドユーザアプリケーション、およびクライアントデバイスに関連付けて実施できるものであり、本明細書に記載されるシステムは本発明の1つの例示的適用例に過ぎない。
【0027】
本明細書に記載され図面に図示される所定のインプリメンテーションもしくは実現は本発明の例示であり、その最良の実施形態であって、それ以外の点ではいかなる意味においても本発明の範囲を限定するべきものでないと了解すべきものである。実際、簡単のため、データ処理、データ伝送、シグナリング、ネットワーク制御等のシステムの機能面(およびシステムの個々の動作側面コンポーネント)のための従来の技法は、本明細書では詳細には説明しないことがある。さらに、種々の添付図面に図示される連結線は、種々の要素間の例示的な機能関係および/または物理的結合を表すべきものである。具体的実施形態では、多くの代替的または付加的機能関係または物理的コネクションが存在してもよいことが留意されるべきである。
【実施例】
【0028】
システムの概要
本発明の技法は、ネットワークデータ通信システムと関連付けて実行されることが望ましい。したがって、図1は、本発明の技法が実施できる分散ユーザインタフェース(UI)システム100の概略図である。システム100は、少なくとも1つのサーバデバイス(またはシステム)から任意の数のリモートエンドユーザのクラアイントデバイスへ情報、データ、制御コマンド等を転送するように適切に構成される。システム100は、任意の数の相異なる通信システム、サービスプロバイダ、およびエンドユーザデバイスと協働するそのフレキシブルな性質および能力を反映するように一般化された方法で図示されている。本明細書の説明は、電子メールデータ、PIMデータ、ならびにカレンダ、ノート、タスク、および連絡先リストのような「オフィス管理」データの処理および提示に重点を置いているが、本発明の技法はそのようには限定されない。実際、本明細書で説明される概念は、静止画像、プレーンテキスト、スタイル付き組版、ワードプロセッサ文書、スプレッドシート、ディジタルメディア等、データ通信ネットワーク経由で伝送可能な任意の他の種類の情報を含む(これには限定されない)いかなる適当なデータフォーマットの処理、転送、および/または提示にも等価的にも適用可能である。
【0029】
システム100は、少なくとも1つのUIサーバ108と通信する任意の数のクライアント提示デバイス102、104、106を含む。典型的な配置構成において、UIサーバ108は、デスクトップ型または他のパーソナルコンピュータシステムとして実現される。このような配置構成では、個々のエンドユーザが、UIサーバ108およびそれぞれのクライアントデバイス102、104、106を維持する。代替的に、UIサーバ108は、より大規模な企業ネットワーク環境における任意の数のスケーラブルなコンポーネントとして実現可能である。この点で、スケーラブルな企業ソリューションは、いくつかのネットワークベースのエンドユーザアプリケーションを実行しながら、並行して任意の数の相異なるエンドユーザおよび任意の数の相異なるクライアントデバイスプラットフォームを同時にサポートするように構成されてもよい。さらに別の配置構成では、単一のエンドユーザが単一のクライアントデバイスで、相異なるサービス、アプリケーション等を表す複数の相異なるUIサーバと通信してもよい。例えば、1つのクライアントデバイスが、デスクトップUIサーバ、サービスプロバイダにより維持されるUIサーバ、娯楽サービスにより維持されるUIサーバ等によりサポートされてもよい。説明を簡単かつ簡潔にするため、以下ではデスクトップUIサーバ108のみについて詳細に説明する。しかし、デスクトップサーバの機能および概念は、スケーラブルな、またはネットワークベースのサーバとの関連でも等価的に適用可能であるため、システム100で利用されるサーバハードウェアデバイスの実際の数は、システムの特定の要件および/または仕様に応じて異なっていてよい。
【0030】
本明細書で使用する表現として、「クライアントデバイス」または「提示デバイス」とは、分散UIシステム100のエンドユーザに情報を提供することが可能な任意のデバイスまたはデバイスの組合せである。例えば、クライアントデバイス102、104、106は、パーソナルコンピュータ、テレビジョンモニタ、インターネット対応コンソール、無線電話機、携帯情報端末(PDA)、家庭電化製品、自動車内のコンポーネント、ビデオゲームコンソール等であってよい。クライアントデバイスは、種々の既知のオペレーティングシステム(OS)を使用しながら、任意の数の従来のプラットフォームに従って構成できる。例えばクライアントデバイスは、Palm OSが動作するHandspring Visor、Windows CE OSが動作するPocket PC、Windows 2000 OSが動作するラップトップコンピュータ、OEM供給のカスタムOSが動作する多機能電話機、またはWind RiverのpSosのような市販のRTOSで構築された特殊データデバイスであり得る。実際には、システム100は、無線クライアントデバイスとともに使用するのに特に適している。というのは、システム100は、現在の広域無線ネットワークに固有の帯域幅制限および不整合なコネクションを、既存の代替手段よりもはるかに良好に処理することができるからである。図1は、クライアントデバイス104を、無線デバイスまたはシステムとして図示している。
【0031】
好ましい実施形態によれば、クライアントデバイスは、ネットワーク110、例えばローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット等を経由してUIサーバ108と通信する。図1には示していないが、ネットワーク110は、任意の数の協働する無線および/または有線ネットワーク要素、例えばスイッチ、ルータ、ハブ、無線ベースステーション、ゲートウェイ等を含んでよい。本発明は、ネットワーク110を利用することは必ずしも必要でないことを了解すべきである。例えば、任意の数のクライアントデバイスがUIサーバ108に(直接に、または無線方式で)接続可能である。好ましい実施形態では、ネットワーク110はインターネットであり、個々のクライアントデバイスはそれぞれ、従来のアプリケーションプログラムおよび従来のデータ通信プロトコルを用いてインターネットとのコネクティビティを確立するように構成される。例えば、各クライアントデバイスは、インターネットサービスプロバイダ(ISP)(図1には図示せず)経由でインターネットに接続されるように構成できる。
【0032】
具体的実施形態では、クライアントデバイス102、104、106およびUIサーバ108は、種々の通信リンク112、114を通してネットワーク110に接続される。本明細書で用いられる表現として「通信リンク」とは、通信の媒体すなわちチャネルとともに、そのリンクを通じてコミュニケーションを実行するために用いられるプロトコルをも指す。一般に、通信リンクとしては、電話線、モデム接続、インターネット接続、サービス総合ディジタル網(ISDN)接続、非同期転送モード(ATM)接続、フレームリレー接続、イーサネット接続、ギガビットイーサネット接続、ファイバチャネル接続、同軸接続、光ファイバ接続、衛星接続(例えばDigital Satellite Service)、無線接続、無線周波数(RF)接続、電磁リンク、双方向ページング接続、およびそれらの組合せがあり得るが、これらには限定されない。
【0033】
通信リンク112、114は、所与のクライアントデバイスに関連する特定の通信技術および/またはデータ伝送プロトコルに従って適切に構成できる。例えば、通信リンク112、114はブロードバンドデータ伝送技法および/またはTCP/IPプロトコル一式を利用するが、このリンクは、NetBIOS、NetBEUI、DLC(data link control)、AppleTalk、またはそれらの組合せを使用することも可能であるのが望ましい。通信リンク112、114は、インフラストラクチャに応じて、連続的な通信およびデータ更新用に、または断続的通信用に確立できる。
【0034】
UIサーバ108は1つ以上のデータソースまたはデータサーバ116を含み、および/またはそれと通信するのが望ましい。データソースまたはデータサーバ116は、従来の技法に従って構成できる。本明細書で用いられる表現として、データサーバ116は、クライアントデバイスのユーザに転送できるソースデータ項目を管理する。具体的な分散UIシステム100では、データサーバ116は、クライアントデバイスとの間での電子メール、文書、PIMデータ、および/または他のいかなる種類のデータの転送をも管理できる。例えば、データサーバ116は、UIサーバ108と同じコンピュータ上のMicrosoft Outlookの「.pst」ファイルのようなローカルなパーソナルストレージとして、またはMicrosoft Exchange Server、Lotus Domino Server、POP3サーバ、IMAPサーバ等として実現できる。所与のデータサーバ116は、UIサーバ108に統合されてもよく、UIサーバ108に関連するサーバサイトで維持される別個のコンポーネントであってもよく、またはUIサーバ108の維持を担当するエンティティとは無関係の第三者によって維持されてもよい。したがって、データサーバ116は、直接通信リンク118を通じて、および/または間接通信リンク120を用いてネットワーク110経由で、UIサーバ108と通信するように構成できる。
【0035】
「サーバ」は、データの管理、処理、検索、および/または転送に関連する任意の数の機能およびオペレーションを、特にネットワーク環境で実行するように構成されたコンピューティングデバイスまたはシステムとしてしばしば定義される。あるいは、「サーバ」は、このようなプロセス、方法、および/または技法を実行するソフトウェアを指すこともある。本明細書で用いられる表現として、「UIサーバ」とは、クライアントデバイスによりアクセスされるいくつかのサーバベースのアプリケーションを実行する一方で、クライアント側UIのためにデータを処理しフォーマットを定義するコンピューティングアーキテクチャを包括的に指す。ほとんどの市販の汎用サーバと同様、実際のUIサーバは、UNIX、LINUX、APPLE MACINTOSH OS、またはMICROSOFT WINDOWSの任意の変形のような、いかなる適当なオペレーティングシステム上で動作するようにも構成可能であり、また任意の数のマイクロプロセッサデバイス、例えばINTELによるPENTIUMファミリのプロセッサやADVANCED MICRO DEVICES、IBM、SUN MICROSYSTEMS、またはMOTOROLAから市販されているプロセッサデバイスを使用可能である。
【0036】
サーバプロセッサは、システムメモリ(例えば、適当な量のランダムアクセスメモリ)、および適当な量のストレージすなわち「永久」メモリと通信する。永久メモリとしては、1つまたは複数のハードディスク、フロッピーディスク、CD−ROM、DVD−ROM、磁気テープ、リムーバブルメディア、ソリッドステートメモリデバイス、またはそれらの組合せがあり得る。公知の技法に従って、オペレーティングシステムプログラムおよびサーバアプリケーションプログラムは固定メモリに常駐し、動作中はその一部がシステムメモリにロードできる。コンピュータプログラミングの当業者の実務に従って、本発明は、UIサーバ108またはクライアントデバイスにより実行可能なオペレーションのシンボリックな表現に関して以下では説明される。このようなオペレーションは、コンピュータ実行(computer-executed)オペレーションと呼ばれることもある。認識されるように、シンボリックに表現されたオペレーションとしては、種々のマイクロプロセッサデバイスによるシステムメモリ内のメモリ位置におけるデータビットを表す電気信号の操作、および他の信号の処理がある。データビットが維持されるメモリ位置は、そのデータビットに対応する特定の電気、磁気、光、または有機特性を有する物理位置である。
【0037】
ソフトウェアで実現される場合、本発明の種々の要素(これはクライアントデバイスに常駐することも、あるいはUIサーバ108に常駐することもあり得る)は本質的に、種々のタスクを実行するコードセグメントである。プログラムすなわちコードセグメントは、プロセッサ可読媒体に記憶され、または伝送媒体すなわち通信パス上の搬送波に具現化されたコンピュータデータ信号により伝送されることが可能である。「プロセッサ可読媒体」または「機械可読媒体」は、情報の記憶または転送が可能ないかなる媒体をも含んでよい。プロセッサ可読媒体の例としては、電子回路、半導体メモリデバイス、ROM、フラッシュメモリ、消去可能ROM(EROM)、フロッピーディスケット、CD−ROM、光ディスク、ハードディスク、光ファイバ媒体、無線周波数(RF)リンク等がある。コンピュータデータ信号は、電子ネットワークチャネル、光ファイバ、無線、電磁パス、またはRFリンクのような伝送媒体を通じて伝搬可能ないかなる信号をも含んでよい。コードセグメントは、インターネット、イントラネット、LAN等のようなコンピュータネットワーク経由でダウンロード可能である。
【0038】
図2は、本発明による分散UIシステム200の典型的インプリメンテーションもしくは実現の高レベル概略図である。図2に示すように、適当なデータサーバ202は(データサーバ116に関して上記で説明したように)、ソースデータ項目を、1つまたは複数のサーバベースアプリケーションに関連するアプリケーション層204に転送する。具体的なインプリメンテーションもしくは実現では、ソースデータ項目の特性は、特定のアプリケーションによって規定できる。例えば、ソースデータ項目は、テキストメッセージ、電子メールアドレス、連絡先リスト、to−do項目、面会の約束、ディジタルメディアクリップ、任意のフォーマットのファイル、すなわちビットマップ、ワードプロセッサ文書、スプレッドシート文書またはパーソナルコンピュータによって普通に表示される他のいかなるタイプのデータをも表すことができる。
【0039】
アプリケーション層204は、ソースデータ項目を処理し、UIサーバ206と通信する。UIサーバ206は同じコンピュータまたは異なるコンピュータのいずれにあってもよい。上記のように、UIサーバ206は、サーバベースアプリケーションと協働して、UIレイアウト、生データ処理、およびデータの通信をUIサーバ206に任せながら、UIレンダリングの大部分がクライアントデバイスによって実行されるようにする。この点で、UIサーバ206は、クライアントデバイス208と通信する結果として、「仮想アプリケーションクライアント」デバイス208となる。以下でさらに詳細に説明するように、クライアントデバイスは、キャッシュされた情報を利用してアプリケーションファサード(application facade)を生成する。クライアントプラットフォームは、他の任意のアプリケーションと同じ方法でこのアプリケーションファサードを解釈し処理する。その結果、ターミナルサーバソリューションに関連する価値およびコンピューティングパワーの大部分を有しながら、ファットクライアントと同様のエンドユーザの経験が得られる。
【0040】
電子メールアプリケーションの例
例示のため、本発明の技法は、本明細書では、既存のデスクトップ電子メールアプリケーションとの関連で説明される。もちろん、分散UIシステムは、任意の数の代替的および/または付加的アプリケーションをサポートし得る(そして実際にサポートするのが望ましい)。図3は、デスクトップ電子メールアプリケーションに関連するUI300の例の図示である。本発明の要件ではないが、UI300は、標準的な、または市販のアプリケーションによって利用されるUIコンポーネント、コントロール、アイコン、およびフィーチャを利用してもよい。例えば、UI300は、MicrosoftのOutlook、MicrosoftのOutlook Express、NovellのGroupWise等の例であってもよい。
【0041】
UI300の全体的外観はいくつかの個別のUIコントロール要素からなるのが望ましい。本明細書で用いられる表現として、「UIコントロール」または「コントロール要素」とは、クライアントデバイスOSによって提供されるUIのユニットオブジェクト(すなわち、ネイティブUIコントロール)またはクライアントデバイスに常駐する他の何らかのアプリケーションによって提供されるUIのユニットオブジェクトを指す。また、分散UIシステムは、ある特定のサーバベースアプリケーションに固有の、および/またはある特定のクライアントプラットフォームに固有の「カスタム」UIコントロールを使用してもよい。アプリケーションは、これらの提供されるコントロールを補強することによって、過度のコーディングおよび処理を避けることができる。コントロールによって、クライアントエンドユーザは、データの表示、入力、修正変更、操作、および/または閲覧、ならびにアプリケーションによる実行のためのコマンドおよびアクションの起動を行うことができる。実際のシステムでは、各クライアントプラットフォームは、ネイティブUIコントロール(例えばボタン、スクロールバー、編集フィーチャ、メニュー、リストボックス、リストビュー、単一行編集領域、複数行編集領域、ラベル、および画像ツール)の固有のリストを有し得る。例えば、UI300は、メニューコントロール行302、ボタンコントロール行304、ツリービューコントロール306、リストビューコントロール308、およびテキスト編集コントロール310を含む。
【0042】
分散UIシステムは、システムによって処理される相異なるタイプのアプリケーションUIを表すUIフォームを使用する。本明細書で用いられる場合、「UIフォーム」は、任意の所与の瞬間におけるクライアントデバイスディスプレイのレイアウトの記述である。UIフォーム定義はコントロールのリスト、クライアントデバイス表示画面上にレンダリングされるコントロールのそれぞれの位置、イベントスクリプト、データソース、およびおそらくはその他の特性を指定する。UIフォームは、UIコントロールによって表示されるべきユーザのデータを含まないが、所与のコントロールがどこでソースデータ項目を検索できるか(例えば、クライアントデバイスにおけるメモリ位置へのポインタ)、および/またはある特定のコントロールの起動に応答してどのイベントスクリプトが実行されるかを指定できるのが望ましい。実際のシステムでは、UIサーバは、特定のクライアントデバイスプラットフォームと、クライアントデバイスによってアクセスされるサーバベースアプリケーションの特定のスクリーンショットとに対応する相異なるUIフォーム定義のリストを維持する。さらに、クライアントデバイスは、これらのUIフォーム定義のキャッシュされたコピーをセーブしてもよい(UIサーバは、UIフォーム定義をクライアントデバイスに必要に応じて送信するのがのぞましい)。
【0043】
図4は、図3に示したUI300に関連するリストビューコントロール400の例示である。リストビューコントロール400は、電子メールアプリケーションに関連するいくつかのリスト化されたエントリ(例えば電子メールメッセージ)をリスト表示することができる。リストビューコントロールは、公知のターミナルサーバのインプリメンテーションもしくは実現の場合のようにUIサーバに完全に頼るよりむしろ、クライアント側のデータ操作のために補強できるいくつかの高度な機能を有する。このような機能としては、列のサイズ修正変更およびスクロールバー402を用いたスクロールの能力がある。従来のデスクトップまたはLAN環境では、エンドユーザは単に、スクロールバーを操作してリストを閲覧することができるだけである。これに対して、分散UIシステムは、クライアントデバイスにおいて制限された数のリストを維持するように適切に構成される。エンドユーザがある一定のしきい値を超えて上または下にスクロールする時にクライアントデバイスはUIサーバから付加リストを要求するので、帯域幅およびクライアントメモリスペースを保つ。この「仮想」データ方式は、リストビューデータだけでなくそれ以外にも適用可能である。例えば、この機能は、いかなるタイプのデータ、例えばテキスト、ビットマップ等を操作するためにも利用できる。
【0044】
図5は、図3に示したUI300に関連するテキスト編集コントロール500の例示である。(図5は、種々のラベルコントロール(From、To、およびSubject)ならびにラベル付きフィールドに関連する「不可視」テキスト編集コントロールも含む;これらのコントロールは、テキスト編集コントロール500の上方の「ヘッダ」領域に位置する)。テキスト編集コントロール500は、エンドユーザが新規電子メールを作成し、または受信電子メールを閲覧する間に、生成および/または操作できる。テキスト編集コントロール500は、テキスト折り返しを収容するために複数行編集(MLE)機能を利用してもよい。実際には、テキスト編集コントロールは、テキストメッセージの一部のみを表示する一方で、他の部分はクライアントキャッシュメモリまたはUIサーバに常駐してもよい。エンドユーザ操作が付加的テキストの表示を要求する場合、テキストメッセージの付加的部分をクライアントキャッシュから検索でき、またはUIサーバから要求できる。新規電子メールメッセージが完了すると、テキスト編集コントロール500の内容はセーブされ、その後のUIサーバへの送信のため処理できる(後述)。
【0045】
上記のように、個々のボタンコントロール、メニューコントロール、およびツリービューコントロールは、UI300の全体的外観にも寄与し、この外観はそれぞれのクライアントデバイスによってレンダリングされる。もちろん、クライアントデバイスのサイズおよびデバイス能力に応じて、特定のUIを、より簡略かつより容易に小型ディスプレイ上でレンダリングできる。簡単に述べれば、はじめてコネクションが所与のクライアントデバイスからUIサーバへ形成された時に、ディスプレイ情報(これはたった数バイトのみでもよい)がクライアントデバイスに送信され、フォーム定義としてキャッシュされる。その後、UIはそのフォーム定義に基づいて生成される。重要な点として、コントロールはレイアウト内に配置されるが、フォーム定義はラベルまたはアイコンを含む必要がない。例えば、図6は、電子メールアプリケーションに関連する不完全すなわち「スケルトゥル」“skeletal”UI600の例示である。ユーザは通常動作中にスケルトゥルUI600を経験することはないが、クライアントデバイスは、相異なるUIコンポーネントを別々のメモリ位置に保持することによってそれらを区別するのが望ましい。これにより、個々の要素が別々に更新されることが可能となり、サーバ側での修正変更の場合のデータ転送が最小化される。一旦、種々のコントロールがUI600を形成するように位置付けると、アイコン、ラベル、およびメニュー項目は別個のキャッシュから一体化されることが可能であり、実際のソースデータ項目(例えば、メッセージリストの内容およびテキスト編集フィールド)が欠けただけの中間的UIが生じる。
【0046】
上記のように、クライアントデバイスによって生成される電子メールUIはアプリケーションファサード(appplication facade)であるとみなすことが可能であり、コントロールは単純なデータ操作のために使用可能であるが、このUIは実際には電子メールクライアントではない。実際の電子メールアプリケーションはサーバベースであり、UIサーバによって実行され、ソースデータ項目のみ(そしてほとんどの場合、クライアントUIによってサポートされる現在のビューを満たすのに十分なだけの)がUIフォームに送信される。これにより、分散UIシステムは、完全にインタラクティブで一定ステートの経験を提供し、しかもPPTPまたはIPsecのような仮想私設ネットワークを通じて、MAPIを用いたデータサーバへの直接コネクティビティのような豊富な機能性を提供することができる。
【0047】
さらに、大きいメッセージや添付ファイルを開くことがはるかに簡単になる。その理由は、添付ファイルは実際にはUIサーバ上で開かれており、どの時点においても、単一ページビュー(およびおそらくはある程度の付加的なキャッシュされたデータ)をクライアントに送信するだけでよいからである。これに対して、従来の無線PDA(例えば、PalmデバイスやBlackberryデバイス)は添付ファイルを開くことができず、無線Windows CEデバイスは、開く前に添付ファイル全体をダウンロードしなければならない(そしてユーザは、仮にその文書タイプがサポートされていると仮定しても、文書変換による書式喪失のリスクを負う)。クライアントデバイスにより提示されるビューは、添付ファイルタイプおよび/またはデバイス能力に応じて、編集可能であることも、読み出し専用のこともあり得る。
【0048】
望ましい実施形態では、クライアントデバイスは、相異なるコントロールに対応するイベントスクリプトを利用する。例えば、ユーザがInboxビューから「新規メッセージ作成(Compose New Message)」を選択した場合、そのボタンに関連付けられたイベントスクリプトがクライアントデバイスによって実行されることになり、「新規メッセージ(New Message)」フォームが表示できる。同様に、ユーザが「送信(Send)」ボタンを操作すると、アプリケーションはInboxビューに自動的に復帰し、作成されたデータを解析および処理のためにUIサーバへ送信できる。イベントスクリプトの主な利点は、それにより一部のオペレーションがクライアント/サーバ通信遅延なしに素早く実行できることである。これは例えば、クライアントデバイスが無線圏外にある場合には顕著になり得る。したがって、イベントスクリプトは、ある程度のオフライン機能を可能にしながら、オンライン動作を迅速化することができる。
【0049】
上記の例は、分散UIシステムの利点の一部を、特に従来のターミナルサーバアーキテクチャとの比較において例示している。とりわけ、データはその最も純粋なコンポーネントに圧縮されることが可能であり、データの本質的部分のみを送信すればよく、UIはクライアントデバイスプラットフォームに適しており、クライアントは各アプリケーションをサポートするように特別に構成される必要はない。例えば、典型的なファットクライアント環境では、添付されたワードプロセッサ文書付きの電子メールを開く場合、電子メールサーバと通信するクライアント側電子メールアプリケーションとともに、ワードプロセッサ文書を開いて表示することができるクライアント側アプリケーションが要求される。しかし、分散UIシステムを使用することにより、データは、(サーバのUIを使用するターミナルサーバとは異なり)クライアントデバイスによりそのネイティブUIでレンダリングするためにUIサーバ上で変換される。そしてクライアントデバイスは、そのデータをUIコンポーネントとマージして、持続ステートインタラクティブインタフェースに持続性のステートを提供することになる。その結果として、付加的ソフトウェアをクライアントデバイスにインストールすることを必要とせずに、付加的機能性(例えば、異なるファイルタイプを開く能力)をUIサーバに付加することができる。
【0050】
さらに、従来の状況では、ワードプロセッサ文書ファイル全体がクライアントデバイスにダウンロードされて変換されなければならないものである。しばしば整合していない、および/または低帯域幅の無線接続を通じてでは、長いファイルのダウンロードは失敗する可能性が高い。上記のように、文書がダウンロードされた後でさえ、クライアントデバイスの変換はしばしばフォーマットエラーにつながる。分散UIシステムでは、クライアントデバイスは比較的少量のデータを表示し記憶するだけであり、ユーザが閲覧するために下方にスクロールする時に、より多くのデータがUIサーバからダウンロードされる。その結果、従来のように初期的にダウンロードで失敗しやすいということがなく、巨大なローカルストレージを要求せず、しかも変換ロスなしに、同じ添付ファイルを素早く開くことができる。
【0051】
本発明の1つの側面で、クライアントデバイスは、ファイル全体を持たずにデータを「チャンク」すなわち少量ずつ編集するように適切に構成できる。したがって、文書の残りの部分がUIサーバに保持され、および/または文書の他の部分がダウンロードされている間に、文書の一部が編集のためにクライアントデバイスにダウンロードできる。エンドユーザの視点からは、文書またはデータ項目の全体がクライアントデバイスに常駐するように見えるようになる。この機能によれば、適当なサーバベースアプリケーションと協働して、データの編集部分すなわちチャンクが更新のためにUIサーバに返送されることも可能となる。
【0052】
結局、分散UIシステムは、ファットクライアントの経験の柔軟性を、そのようなシステムのリソース要求なしに提供する。クライアントデバイスは、現在のファットクライアントデバイスよりも多くの機能を有しながら、より小型で、より低い処理パワー、より少ないメモリ、およびより長いバッテリ寿命を有することが可能である。
【0053】
汎用システムアーキテクチャ
図7は、分散UIシステムの例のサーバおよびクライアントコンポーネントの概略図である。上記のように、図7に示す要素は、ソフトウェアプログラム、ソフトウェアプログラムモジュール、機能コンポーネント、処理タスクまたはスレッド、メモリ要素、アプリケーションプログラムコードセグメント等を表す。実際のシステムでは、図7に示すサーバ側要素は、UIサーバに常駐するUIサーバ処理アーキテクチャ702に含まれる一方、図7に示すクライアント側要素は、それぞれのクライアントデバイスに常駐するクライアント処理アーキテクチャ704に含まれる。これらの処理アーキテクチャのそれぞれは、1つまたは複数のプロセッサデバイスおよび任意の数のメモリデバイス(図7には図示せず)で実現できる。図24は、分散UIシステムの代替概略図である。図7および図24は同じ実用システムに適用可能である。
【0054】
簡単に述べれば、UIサーバ処理アーキテクチャ702は、いくつかのサーバベースアプリケーション710および第1の通信インタフェース要素712と通信するUIサーバアプリケーション708を含む。UIサーバアプリケーション708は、サーバ送信要素714、サーバ受信要素716、UIフォームデータベース要素717、シャドウキャッシュ要素718、およびデバイス能力記憶要素720を含むか、またはその他の方法でそれらに関連付けられる。サーバベースアプリケーション710は、1つまたは複数のデータソースモジュール722(これはまた任意の数のデータサーバと通信する)と通信できる。また、UIサーバ処理アーキテクチャ702は、デスクトップアプリケーションランチャ(これはアプリケーション710の別のインスタンスとして実現できる)をサポートしてもよく、このデスクトップアプリケーションランチャは、エンドユーザが利用可能な1つまたは複数のデスクトップアプリケーション726と通信する。
【0055】
クライアント処理アーキテクチャ704は、第2の通信インタフェース要素730と通信するクライアントアプリケーション728を含む。第1および第2の通信インタフェース要素712、730は、相互に通信し、ソースデータ項目、制御コマンド、アクション要求、およびクライアントデバイスとUIサーバの間で送信できるその他のコマンドの送受信を容易にするように適切に構成される(UIサーバおよびクライアントデバイスは、情報の実際の送信、受信、および交換を実行するために任意の数の公知の技法を利用可能であることが認識されるべきである;図7に示す実際の実施形態では通信インタフェース要素712、730が使用される)。クライアントアプリケーション728は、クライアント送信要素736、クライアント受信要素738、クライアントUIモジュール740、および1つまたは複数のクライアントデータキャッシュ742を含むか、またはその他の方法でそれらに関連付けられる。また、クライアントアプリケーション728は、OS依存コード732およびいくつかのOSアプリケーションプログラムインタフェース(API)734と協働して機能する。これらのOS関連要素は、メモリ割当てAPI、スレッド作成API、プロセス間通信API、UIコントロールからメッセージを検索するためのメカニズム等を表すものである。クライアントアプリケーションモジュールを、OS依存コード732およびOS API734から分離することにより、クライアントアーキテクチャは異なる既存のクライアントデバイスプラットフォームに容易に移植できる。
【0056】
図7は、ネットワークを通じての双方向通信をサポートする接続モードにおけるUIサーバおよびクライアントデバイスを図示している。このような接続モードは各通信セッション中に利用されるが、UIサーバおよびクライアントデバイスはオフラインで独立かつ個別に動作できる。言い換えれば永続的すなわち連続的セッションがUIサーバとクライアントデバイスの間に維持される必要はない。この例の目的上、UIサーバおよびクライアントデバイスは、ファイアウォール706を避けるように適切に接続される。例えば、実施形態では、UIサーバはポート80(ウェブブラウザポート)経由でクライアントデバイスと通信するのが望ましい。無線実施形態では、2つの通信インタフェース要素はHTTP以外の適当なプロトコルを利用するのが望ましい。HTTPは分散UIシステムの目的では面倒であり特に効率的ではないおそれがある。例えば、通信インタフェース要素は、以下の特性を有するプライベートプロトコルを使用できる:HTMLより小さい記述のオーバーヘッド;ウェブページに関連するすべてのデータではなく要求されたソースデータ項目のみを送信する能力;および対話性の付加を容易にする多数のコマンドのリストをサポートする能力。もちろん、ある一定の配置構成(例えばデスクトップネットワーク構成)は、HTTPを利用できる。
【0057】
実際には、通信インタフェース712、730は、クライアントデバイスおよびUIサーバに常駐する適当な(ダイナミックリンクライブラリ(DLL)のような)実行可能プログラムモジュールにより提供されるとよい。コミュニケーションDLLは、クライアントデバイスとUIサーバの間の通信を管理する種々の機能を含むがそれには限定されない。例えば、コミュニケーションDLLは、データ圧縮、暗号化、ポート選択、任意のポインタの自己関連付け、ワードサイズおよびバイト順序の管理(UIサーバがクライアントのためにこれらを処理してもよい)、ならびにソケット管理を実行できる。サーバ側コミュニケーションDLLは、通信セッションを確立するために、あるポート、例えば標準のHTTPポート80を選択し、クライアントと連絡をとる(またはクライアントをリッスンする)方法を決定する。サーバ側コミュニケーションDLLは、コネクションの切断をそれぞれのサーバベースアプリケーション710に報告するが、DLLがクライアントデバイスへの再接続に対して責務を引き続き担う。他の構成では、クライアントデバイスがUIサーバへの接続を行うことができる。
【0058】
UIサーバのアーキテクチャ
上記で簡単に述べたように、UIサーバはUIサーバ処理アーキテクチャ702を使用する。処理アーキテクチャ702は任意の数のサーバベースアプリケーション710を含み得る。サーバベースアプリケーション710は好ましくはUIサーバアプリケーション708により駆動される(実際のインプリメンテーションもしくは実現では、UIサーバアプリケーション708は単一の実行可能ファイル、すなわちドライバアプリケーションとして働く単一の「.exe」として実現される)。UIサーバアプリケーション708は、通信インタフェース要素712との間で情報を通信する「コーラー」として機能し得る。簡単に述べれば、UIサーバアプリケーション708は、それ以外のサーバ通信インタフェース要素712またはサーバベースアプリケーション710によっては処理されないサーバ側のタスクおよびプロセスを実行する。例えば、UIサーバアプリケーション708は、以下のタスクのいずれを実行することも可能である:コネクションを確立するために通信インタフェース要素712を呼び出す;接続、再接続、および複数のクライアントを管理する;どのサーバベースアプリケーションがインストールされており利用可能であるかをモニタする;サーバベースアプリケーション間の切り替えを行う;サーバベースアプリケーションをロードしそれにメッセージをディスパッチする;ならびにいくつかの共通機能フィーチャ、例えばフォーム定義の作成、フォント幅の計算等を提供する。とりわけ、UIサーバアプリケーション708は、複数のアプリケーションに共通のその他の機能も含み得る。例えば、デバイス能力情報およびアプリケーション登録機能を含み得る。
【0059】
UIサーバアプリケーション708のメインループは、サーバ受信要素716経由でクライアントデバイスから入力を取得し、現在のサーバベースアプリケーションに関連する適当な処理ルーチンへコマンドをディスパッチする(具体的実施形態では、サーバベースアプリケーション710はいくつかの標準ディスパッチエントリポイントを有するDLLを登録することになる)。すると、現在のアプリケーション710は、通信インタフェース要素712に関連するAPIを呼び出して、データをデバイスへ送信することができる。データの送信はサーバ送信要素714によって実行される(したがって、スレッド化システム上のUIサーバアプリケーション708は、「送信」キューのためのグローバルデータ、サーバ送信要素714をウェイクアップする方法、およびサーバ送信要素714に割込みをかけるためのフラグを有するのが望ましい)。動作中、UIサーバアプリケーション708は、クライアントデバイスへ送信すべきデータ項目、コマンド、およびその他の情報のリストを含む「送信」キューを維持する。
【0060】
システムが機能するための要件ではないが、実際の実施形態は、UIサーバアプリケーション708において少なくとも2つのスレッド、例えばサーバ送信スレッドおよびサーバ受信スレッドを利用するのが望ましい。特にUIサーバが情報をクライアントデバイスへの「チャンク」として処理し送信するという方法を考慮すると、個々のオペレーションを容易にキャンセルできることを保証するために、送信スレッドと受信スレッドを分離するのが望ましい。したがって、サーバ送信スレッドは、サーバ受信スレッド(これは独立にクライアントからコマンド、入力、および情報を収集する)から取得される取り消しおよびステート変化を処理することができる。ただし、このコードを非スレッド化モジュールとして実現することも可能である。このような実現は、スケーラブルなサーバ環境では望ましいことがある。
【0061】
サーバベースアプリケーション710は、任意の数の相異なるアプリケーション、フィーチャ、または機能、例えば電子メールアプリケーション、カレンダアプリケーション、アドレス帳すなわち連絡先リスト、チャットアプリケーション、タスクリマインダリスト、アラームフィーチャ、メッセージングサービス、またはデスクトップ(もしくはその他の)コンピュータ上で実行可能な他のいかなるアプリケーションをも表すことができる。これらのアプリケーションは主としてUIサーバに常駐し、UIサーバは、クライアントデバイスに代わってアプリケーション処理の全部ではないにしてもほとんどを処理する。現在のUIステートおよびユーザにより選択されたアクションに基づいてどのようなUI修正変更を行うかをクライアントデバイスに通知すること以外では、UIサーバの仕事は基本的にはリモートデータソースとなることである。この種のデータソースと典型的なデータソースの主な相違点は単に、クライアントがデータの名称、タイプ、またはソースを知る必要がないことである。UIサーバは、UIサーバがフォーム定義内のコントロール記述と関連付けているデータIDに基づいて、クライアントのためにデータの取得およびフォーマットを行うことに責務を持つ。とりわけ、UIサーバは、任意の所与のサーバベースアプリケーション710のために、複数のデータソースと通信しそれをサポートするように構成できる。例えば、PIMアプリケーションは、いくつかの相異なるデータソース、例えばMicrosoft Exchange、Starfish Organizer、Novell Communicator等を利用する可能性がある。よって、各サーバベースアプリケーション710は、アプリケーションごとのデータソースモジュール722へのインタフェースを含むことが望ましい。データソースモジュール722は、どのデータソースが使用されているかに応じて取り替え可能である。
【0062】
可能な一実現例によれば、UIサーバアプリケーション708は、いくつかのアプリケーションサイズのDLLを有するステートマシンとして実現できる。したがって、各サーバベースアプリケーション710は、実際にはアプリケーションモジュールの組合せとして実現されるが、クライアントデバイスのユーザにとっては別個のアプリケーションのように見えることになる。これらの各DLLは、所与のフォームのステートを処理する個別のルーチンを有し得る。UIサーバは、通信障害がサーバ通信インタフェース要素712によって報告される時であっても、各サーバベースアプリケーション710の現在のステートを維持するのが望ましい。この機能により、分散UIシステムは、クライアントデバイスの接続ステータスにかかわらず持続的に種々のアプリケーションを維持することができる。さらに、UIサーバアプリケーション708は、サーバベースアプリケーション710を登録するように構成されたAPIを含み、それぞれの個別のアプリケーション710は、サーバベースアプリケーション710のリストを取得するための別のAPIを呼び出すことができるのが望ましい。このようにして、すべての利用可能な、すなわちサポートされているアプリケーション710のリストを、それぞれの個別のアプリケーション710により生成されるメニューすなわちコントロール要素(例えば、「移動(GO)」メニュー)内に配置できる。
【0063】
別の可能なインプリメンテーションもしくは実現では、UIサーバアプリケーション708は、ステートマシンとして実現する必要はない。さらに、本発明の要件ではないが、いずれのサーバベースアプリケーション710も、個々にステートマシンとして実現できる。このインプリメンテーションもしくは実現では、個々のアプリケーション710にはアプリケーションリストが提供されない。むしろ、UIサーバアプリケーション708がアプリケーションリストをクライアントデバイスに送信することが可能であり、それによってクライアントデバイスがいずれかのサーバベースアプリケーション710内からアクセス可能となる。代替的に、クライアントデバイスは、アプリケーションリストを表示するために設けられた別個のアプリケーションを含んでもよい。
【0064】
サーバベースアプリケーション710は、任意の数のデータソースモジュール722と通信し、データソースモジュール722がソースデータ項目を1つまたは複数のデータサーバ(図1参照)から取得してもよい。データソースモジュール722は、任意の適当な通信プロトコルまたはモデル、例えばMicrosoft Outlook Object Model(OOM)を利用してデータサーバと通信できる。例えば、複数のデータソースモジュール722が、以下のサーバタイプの1つとそれぞれ通信するように(公知の技法に従って)適当に構成できる:Microsoft Exchange、Lotus Notes、IMAP、POP3、およびSMTP。代替的に、単一のデータソースモジュール722がOOMのようなマルチソースAPIを使用して、それらのデータソースのどの1つとも通信することが可能である。ソースデータ項目を取得後、データソースモジュール722は、ソースデータ項目を処理するサーバベースアプリケーション710のためのインタフェースまたは媒介手段として機能し得る。この点で、サーバベースアプリケーションは、クライアントデバイスにおいて提示および/または編集のためにソースデータ項目を操作するように構成される。
【0065】
上記で簡単に述べたように、UIサーバ処理アーキテクチャ702は、UIフォームデータベース要素717を含み、またはそれと通信するのが望ましい。UIフォームデータベース要素717は、フォーム、コントロール、レイアウト、パラメータ、および/またはアプリケーションUIに関連する特性に関係する情報を記憶するのが望ましい。具体的実施形態では、UIフォームデータベース要素717は、UIの処理およびレンダリング中にクライアントデバイスによって利用されるフォーム定義を記憶する。実施形態では、UIコントロール、UIフォーム、およびUI定義は、それぞれのクライアントデバイスのいくつかのデバイス能力に(少なくとも部分的に)基づくのが望ましい。この機能関係は図7に図示されている。図7は、デバイス能力記憶要素720に作用的に結合したUIフォームデータベース要素717を示している。
【0066】
UIフォーム上の任意の所与のコントロールは、そのコントロールがエンドユーザによって(例えばボタン押下、リストビュー項目のダブルクリック、リストボックス選択を行うこと等により)起動され、操作され、または選択される時に実行すべきコマンドのリスト(すなわちスクリプト)を有することができる。これらの「スクリプティング」コマンドは、UIサーバがクライアントデバイスに送信することができるコマンドの簡単なサブセットであってもよい。これらのコマンドにより、クライアントデバイスは、UIサーバに頼らずにローカルに、共通のアクションを実行することができる。とりわけ、コマンドスクリプトをUIサーバによって指定し、適当な時に(例えば、初期化セッション中に)クライアントデバイスに伝送することが可能であり、またはコマンドスクリプトは、対応するUIサーバアプリケーションと互換性のある適当なクライアントデバイス・ソフトウェア・アプリケーションにあらかじめロードされることが可能である。こうして、コマンドスクリプトは、クライアントデバイスによって実行されるが、UIサーバに由来してもよい。
【0067】
UIフォームは、テキストファイルとして、または任意の適当なファイルフォーマットに従って動的または静的に定義できる。サーバベースアプリケーション710は、新規なクライアントデバイス構成またはプラットフォームをサポートするためにデフォルトの動的レイアウトジェネレータを含んでもよい。さらに、UIサーバアプリケーション708およびアプリケーション710を、新規なクライアントプラットフォームとの互換性のために必要に応じて更新できる。前に注記したように、UIサーバアーキテクチャ702は、UIの詳細の、全部ではないにしてもほとんどを受け持ち、このことが、クライアントデバイスの処理を簡単化し、システムの更新をより容易にするのが望ましい。
【0068】
シャドウキャッシュ718は、UIサーバにより維持され、ソースデータ項目、UIフォーム情報、およびUIサーバからクライアントデバイスに送信されたその他のクライアント関連データのリストを含み得る。また、シャドウキャッシュ718は、新規な、または修正変更されたデータ項目、UIフォーム情報、およびクライアントデバイスから受信したその他のクライアント関連データのリストを含んでもよい。こうして、シャドウキャッシュ718は、UIサーバからクライアントデバイスへ送信された項目を表すデータおよび/またはクライアントキャッシュにセーブされた項目を表すデータを含むことができる。UIサーバは、シャドウキャッシュ718に問い合わせて、クライアントデバイスにキャッシュされているデータを判定すること、およびクライアントデバイスにより入力されたキャッシュされているデータへの修正変更に応答してシャドウキャッシュ718を更新することが可能である。シャドウキャッシュ718によって、UIサーバが、クライアントキャッシュのステータスをモニタし、クライアントデバイスとの同期化を維持し、ある特定のデータタイプをクライアントデバイスへいつ「プッシュ」するのが適当かを認識し、持続的アプリケーションステートをサポートすることが可能になるとともに、UIサーバアプリケーション708が、アプリケーション710を繰り返し呼び出すことなく新規な、または修正変更された情報をクライアントデバイスにダウンロードするのを管理することが可能となる。
【0069】
デバイス能力記憶要素720は各サーバベースアプリケーション710によってアクセス可能であるのが望ましい。この記憶要素720は、それぞれのクライアントデバイスのデバイス能力を記憶する。望ましい実施形態では、UIサーバは初期セッション中に各クライアントデバイスのデバイス能力を取得する。本明細書で用いられる表現として、「デバイス能力」とは、クライアントデバイスの任意のパラメータ、仕様、要件、制限、物理的または機能的特性、識別情報、またはステータス情報を意味する。UIサーバは、1つまたは複数のデバイス能力を利用して、クライアントデバイスのUIフォームを定義する。実際のUIサーバは、以下のデバイス能力の1つまたは複数を取得し、処理し、記憶できる(以下の例のリストは、本発明の範囲を限定し、またはその他の方法で制約するべきものではない):
・リッチテキスト、ビットマップ、HTML、WAP、および/またはテキストフォーマットの文書を処理する能力;
・デバイス製造元;
・バージョンまたはリリース識別子;
・デバイスOS;
・ディスプレイ画面寸法(例えば幅および高さ);
・画面のタイプ(例えばピクセル型かそれともブロック型か)および解像度;
・フォーム領域の寸法(例えば幅および高さ)ならびに位置;
・タスクバーの寸法(例えば幅および高さ)ならびに位置;
・スクロールバーの寸法(例えば幅および高さ)ならびに位置;
・最大受信可能パケットサイズ;
・望ましい、またはデフォルトのフォント;
・利用可能なネイティブコントロールのリスト;
・利用可能なネイティブアイコンのリスト;
・任意のカスタムアイコンの仕様またはフォーマット;ならびに
・クライアントキャッシュサイズ。
【0070】
デスクトップアプリケーションランチャ
UIサーバ処理アーキテクチャは、デスクトップアプリケーションランチャ724も含み得る。デスクトップアプリケーションランチャ724は、通常はデスクトップ経由でアクセス可能なアプリケーションまたはプログラムをユーザが起動することを可能にするように適切に構成される。実際のインプリメンテーションもしくは実現では、アプリケーションランチャ724は、サーバベースアプリケーション710の1つとして実現される。アプリケーションランチャ724は種々のデスクトップアプリケーション726と通信するのが望ましい。デスクトップアプリケーション726はUIサーバにより維持(またはアクセス)できる。アプリケーションランチャ724は、デスクトップアプリケーションを小さいウィンドウに縮小しようと試み、デスクトップアプリケーションの出力をモニタする。アプリケーションランチャ724は、デスクトップアプリケーションからの表示データを分散UIシステムと互換性のあるフォーマットに変換する。こうして、UIサーバは、レンダリングのために、変換されたデータをクライアントデバイスへ動的に送信することができる。アプリケーションランチャ724は、どのようなUI要素を描画すべきかをクライアントデバイスに通知し、テキストまたはグラフィック出力をクライアントデバイス上の適当なコントロールへ送信することになる。デバイス上で押下されたボタン(または他のユーザ入力)は、デスクトップアプリケーション726内の同一または同等の入力に変換される。
【0071】
実質的に、アプリケーションランチャ724は、所与のデスクトップアプリケーションからの出力をクアライアントデバイスへ送信し、クライアントデバイスからの入力をデスクトップアプリケーションへ送信する媒介手段として機能する。実際には、アプリケーションランチャ724は、サーバOSと互換性のある適当なメッセージングフォーマット(例えばWindowsメッセージ)を使用することができる。この点で、分散UIシステムは、ターミナルサーバと同様にも機能するが、帯域幅要求は大幅に削減される。
【0072】
UIサーバ処理アーキテクチャ702は、サードパーティ開発者がより多くのサーバベースアプリケーション710を書くことを可能にする第3者のソフトウェア開発者キット(SDK)を含んでもよい。SDKによれば、UIサーバとともに使用するために既存のデスクトップアプリケーションを移植することもより容易になる。
【0073】
クライアントデバイスのアーキテクチャ
好ましい実施形態では、クライアントアプリケーション728は(通信インタフェース要素730およびOS依存コード732とともに)クライアントデバイス内の読み出し専用メモリに埋め込まれる。実際の配置構成では、所与のクライアントデバイスは必ずしもアップグレード可能でなくてもよい。こうして、クライアントアプリケーション728は任意の数のUIサーババージョンと互換性があるように設計されるのが望ましい。クライアントアプリケーション728はUIサーバとの互換性のために特に設計されたクライアントデバイスに常駐してもよいが、クライアントアプリケーション728は、多くのデバイスプラットフォーム(おそらくは多くの異なる製造元によって発売された)に移植される可能性が高い。よって、クライアントアプリケーション728は、プラットフォーム固有の、および/またはOS依存のコード732(例えば、ウィンドウの作成、キャッシュメモリの割当て、ビットマップの表示等に関連するコード)を分離するように構成されるのが望ましい。
【0074】
複数のスレッドは必須ではないが、例示的実施形態では、クライアントアプリケーション728は次の3個の別個の処理スレッドすなわちモジュールを含む:クライアント送信(または応答)スレッド736、クライアント受信(またはコマンド)スレッド738、およびクライアントUIスレッド740。クライアント受信スレッド738は、コマンド、ソースデータ項目、およびUIサーバから来るその他の情報を処理するために設けられる。クライアント受信スレッド738は、UIスレッド740およびクライアントデータキャッシュ742と通信できる。受信スレッド738は基本的に、UIサーバからコマンドを受信しながらループしている。受信スレッド738は、コマンドに応答して、データをデータキャッシュ742に入れてもよく、またはUIスレッド740がすべき仕事がある時にはUIスレッド740に通知してもよい。クライアント受信スレッド738は、他のクライアント要素に割込みをかけるようにコマンドが要求する場合(例えば、コマンドが、新規のUIフォームに切り替えるようにクライアントデバイスに命令する場合)に割込みを行うことが可能である。
【0075】
UIサーバからのコマンドを受信し処理するため、クライアント受信要素738は、完全なコマンドがソケットに到着するのを待機するルーチンを呼び出す(実際のインプリメンテーションもしくは実現では、各コマンドの前に単に16ビットの長さが置かれる)。コマンドの一部が到着し、残りが適時に到着しない場合、クライアント受信要素738は再送要求を開始してもよい。クライアント受信要素738は、受信データの復号化および圧縮解除、自己関連ポインタの調整、ならびにデータを適当な構造体内に入れることに責務を持ってもよい。その後、受信要素738は、コマンドタイプに基づくスイッチ文に入る。例えば、ほとんどのコマンドは、キャッシュ内のデータを設定もしくは修正変更するか(およびその変化についてUIモジュール740に知らせる)、または改変を行うこと(例えば、コントロールの移動、新規フォームのロード等)をUIモジュール740に知らせるかのいずれかである。その結果として、受信要素は、UIサーバによって使用されるすべてのコマンドのフォーマットを理解するとともに、クライアントキャッシュ742の詳細を理解するのが望ましい。
【0076】
別個のUIモジュール740は、UIフォームの描画、クライアント受信要素738に到着したデータの表示、およびユーザによって与えられるコマンドに対する作用のようなUIタスクのために専用的に使用するのが望ましい。UIモジュール740は、クライアント受信要素738からのコマンドおよびクライアントデバイスのエンドユーザ操作によって発生されるコマンドを待機する。また、UIモジュール740は、クライアントデータキャッシュ742をも理解するので、UIモジュール740が受信要素738によってUIディスプレイを更新するように命令された時にその更新を行うことができる。例えば、UIモジュール740が、データキャッシュ742内にない何らかのデータ項目を必要とする場合、クライアント送信要素736経由でそのようなデータを要求することになる(しかし、受信要素738によってそれを表示するよう通知されるまではその表示を行わない)。UIモジュール740は、ユーザアクションに応答して、「スクリプト」コマンドのキャッシュされたテーブルを調べ、クライアントデバイスがどのようなアクションをとるべきかを決定してもよい。データは、クライアントデバイスがより多くの情報を要求した時にどのフォームがアクティブであったかを指定するトークン等の適当な識別子を含んでもよい(ユーザは、付加的データを待機している間に異なるフォームに切り替えている可能性がある)。このようなトークンは、データとともにUIサーバによって提供されることが可能である。クライアントデバイスは、そのトークンをトランスペアレントでない識別子(opaque identifier)のように処理し得る。
【0077】
クライアント送信要素736は、UIサーバへデータを送信するために設けられる。好ましい実施形態では、クライアント送信要素736は、クライアントデバイスが損失データパケットを容易に再送することができるように、UIモジュール740から分離される。送信要素736は主として、UIモジュール740による要求に応じて情報をUIサーバへ送信することになる。送信要素736は受信要素738と協働して、送信された要求が妥当な時間内に確実に受信の肯定応答されるようにしてもよい。もし受信の肯定応答されなければ、要求は再送されることが可能である。好ましい実施形態では、サーバ受信の肯定応答は、UIサーバへ送信されるすべての情報についてモニタされる。これにより、クライアントデバイスは、サーバが受信していないデータを追跡することができる。同様に、UIサーバがクライアントの要求に応答してマルチパート返信を送信する場合、UIサーバは最終パートとともに応答受信の肯定応答を送信するのが望ましい。
【0078】
送信要素736は、UIモジュール740からデータを取得し、それをソケットデータに(または、現在のデータ通信方式と互換性のある任意の適当なデータフォーマットに)変換するルーチンを呼び出すように構成されてもよい。また、送信要素736は、コマンド長およびコマンド識別(これに対して、UIサーバによって受信の肯定応答がなされ、クライアントデバイスは、通信が成功したことを告げることができる)を前に付加し、ポインタを自己関連性のあるものにし、データを圧縮し、それを暗号化して、それをUIサーバへ送信することも可能である。
【0079】
クライアントキャッシュ
クライアントデバイスは、データの種々のタイプごとにいくつかのキャッシュを維持する。例えば、クライアントデバイスは、UIフォームまたはUIフォーム定義のリストを記憶するのが望ましい。これらは、種々のサーバベースアプリケーションがそれらを共有することができるように名前付けされることが可能である。各UIフォームはキャッシュされたコントロールを有してもよく、各コントロールはキャッシュされたデータを含んでもよい。データは、どのフォームか、フォームのどのインスタンスか(例えば、「メッセージ読み出し(Read Message)」フォームは多数のメッセージ閲覧するために使用可能である)、およびどのコントロールかを指定する。さらに、複数コントロールのうちのあるもの(例えばリストビュー)は、データの配列を含むことができる。本発明はいかなる特定データタイプの処理にも限定されないが、典型的データ項目はテキスト、アイコン、またはビットマップを表すものである。実際の記憶スペースの制限により、クライアントデバイスはある使用期間後にキャッシュメモリを使い果たす可能性がある。その結果、クライアントデバイスは、到来データがUIサーバから到着する時にデータキャッシュ742から項目を消去しその到来データを収容するように構成されるのが望ましい。
【0080】
図8は、分散UIシステムによって使用できるクライアントアイコンおよびコントロールデータキャッシュ構造体800の概略図である。UIコントロールがアプリケーションから分離されることに加えて、フォーム定義においてコントロールにマッピングされるアイコン、メニュー項目、およびラベルもまた別のキャッシュ構造体に保持される。これは2つの理由で行われる。第1に、アプリケーションサービスプロバイダ(ASP)または無線通信事業者は、アプリケーションのUIレイアウトを変えずに、アプリケーションのルックアンドフィールを変えること、または単一の項目を変えることを選択する可能性がある。UIの個々の特性を分離することは、より多くの柔軟性をASPに与える。第2の理由は、所定のアイコン(例えば、フォーマットアイコンまたはメニュー項目)は種々のアプリケーションにまたがって繰り返される。別個のキャッシュからそれらを参照することは、冗長性の必要性を減らし、より低いリソース要求を維持する。
【0081】
実際のメモリストレージ制限により、クライアントキャッシュのサイズはプラットフォームごとに異なり得る。よって、クライアントデバイスアプリケーションは、新規にダウンロードされるデータを収容するために、一部の情報タイプは保護される一方、優先度の低い情報タイプはより簡単に削除されるようにして、階層的にクライアントキャッシュを維持するように構成されるのが望ましい。例えば、キャッシュ構造体800は、任意の数の論理レベルすなわち区分を含み得る。実際には、それぞれの記憶されるデータ項目は、このようなレベルを表す識別子を含んでもよい。図示した例では、第1レベル802は、最低優先度を有する通常のソースデータ項目に関連する。すなわち、これらの項目は、それよりも低いレベルに含まれる他の項目より前に破棄される。第5レベル810は、フォームデータまたはフォーム定義に関連する。第5レベル810は、最高の相対優先度を有する情報タイプを含む。すなわち、これらの項目は、クライアントデバイスが付加的なキャッシュスペースを必要とする場合に最も破棄されにくい。
【0082】
例示的実施形態では、UIサーバがはじめてクライアントデバイスに接続すると、コントロールがどのように配置されるべきかについての詳細がキャッシュされ、アプリケーション識別がそれらに関連付けられる。その時点から、サーバにより別段の要求がされなければ、そのアプリケーションファサードはキャッシュされたUIフォームデータから構築されることになる。記憶されているUIレイアウトに関して必ずしもUIサーバに問い合わせる必要はない。さらに、個々のUI要素が実際にダウンロードされる必要はない。代わりに、UIサーバは単に、クライアントデバイスがネイティブOSのGUI要素を使用するように命令する指示をクライアントデバイスに送信することができる。それらのGUI要素はすでにクライアントプラットフォームOSの一部としてクライアント上にある。ネイティブコントロールを補強的に支援することは、パフォーマンスを改善し、よりファットインタラクティブなクライアントのような感じ(feel)をリモートアプリケーションに提供する。さらに、このような補強的支援は、全体的なネットワーク帯域幅要求を低下させる。
【0083】
残りのレベルは、増大した重要度すなわちより高い優先度に対応する:第2レベル804はUIアイコンに関連し;第3レベル806は重要なデータに関連し;および第4レベル808は重要なUIアイコンに関連する。項目の「重要度」は、UIサーバによって規定されてもよい。重要なデータまたはアイコンとは、ユーザがすぐに使用する可能性が高いもの、またはクライアントデバイスが他のものより頻繁に利用する可能性があるものである。例えば、電子メールメッセージのテキストは、重要であるとラベル付けされる必要はない。というのは、いったん開かれた後は、ユーザがそれを近い将来に再び開く可能性は低いからである。他方、メッセージのリストは重要である。というのは、ユーザは、リストと、リスト内の特定のメッセージとの間で頻繁に切り替えを行う可能性が高いからである。
【0084】
任意の所与のキャッシュレベル内で、データは、いつそれがクライアントデバイスによって最後に使用されたかに応じて削除される。こうして、最も過去に使用されたもの(「古いほうの」データ)がまず破棄される一方、最も近時に使用されたもの(「新しいほうの」データ)はできるだけ長く保存される。よって、クライアントキャッシュ構造体800内の既存の項目のすべてが置き換わるとすれば、最も過去に使用された通常の種類のデータが最初に削除される一方、最も近時に使用されたフォームデータは最後に削除されることになる。図8中の矢印は、キャッシュ項目が破棄される順序を表す。
【0085】
キャッシュ構造体800に加えて、クライアントデバイスは、コントロール・オブジェクト・マッピング・キャッシュ、イベントキャッシュ、および/または他の論理的に分離されたキャッシュ構造体を維持してもよい。コントロール・オブジェクト・マッピング・キャッシュは、クライアントプラットフォームが分散UIシステムから独立であることを容易にする。アプリケーションがはじめて起動される時(または、変化が生じたことをUIサーバがクライアントに通知する時はいつでも)、UIサーバはクライアントデバイスにいくつかのフォーム定義を送信する。これらはアプリケーションファサードを記述するのに役立つ。しかし、どのプラットフォームも相異なるコントロールを有し得るので、コントロール・オブジェクト・マッピング・キャッシュは、どのコントロールが各UIサーバコマンドにマッピングされるかを決定するための「仮想マシン」として働く。各プラットフォームが相異なる制限を有することを理解すると、UIサーバは、クライアントデバイスに基づいてUI記述を変えることが可能であるが、基本的コントロールは依然として仮定できる。この情報は別個のキャッシュに記憶されることにより、プラットフォームの機能性を拡張するために後日にコントロールを付加し、それによってマッピングを変えることができるのが望ましい。コントロール・オブジェクト・マッピング・キャッシュを単に更新することにより、新規なコントロールをプラットフォームに容易に付加することができる。
【0086】
イベントキャッシュ(これは、UIフォームデータキャッシュの一部であるとみなしてもよい)は、特定のUI要素を1つのイベントまたは1つのアクションにマッピングするために使用される。例えば、電子メールアプリケーションでは、「新規メール作成(Compose New Mail)」ボタンを、ユーザがそのオプションを選択した時に、サーバを何ら参照することなくUIが直ちに表示されるように、対応するフォーム定義にマッピングできる。この場合も、これにより複数のアプリケーションが共通のイベントを共有することが可能となるために冗長性が低下し、イベントはUIサーバによって必要に応じて更新または付加されることが可能となる。
【0087】
仮想コントロール
上記のように、クライアントデバイスは任意の数の「仮想」コントロールを含み得る。例えば、比較的大きいデータ(例えばドロップダウンリスト、リストビュー、マルチライン編集コントロール、ピクチャ等)を含むいかなる項目も、UIサーバから小さいチャンクすなわち増分として送信できる。クライアントは、各セグメントをキャッシュし、ユーザがデータをナビゲートする時に必要に応じて付加セグメントを要求することになる。実際には、UIサーバは初期的に完全な長さの識別子またはいくつかのリストビュー項目を送信することができる。その後、クライアントデバイスがデータ管理責任を負い、クライアントキャッシュを満たすために必要な時に項目を要求する。クライアントキャッシュは、ユーザが過度の期間待機することなくUIディスプレイをナビゲートすることができるのに十分なデータを含むのが望ましい。
【0088】
具体的な一実施形態では、クライアントデバイスは、データの全部がクライアントデバイス上に存在するかのように見えながらユーザがデータをナビゲートすることができるように、仮想スクロールバー(または何らかのそのようなコントロール)を維持することができる。こうして、スクロールバーは、別のコントロール要素(例えばリストビュー)と連係してレンダリングされることが可能であるが、「リンクされている」コントロール要素の内容、特性、または表現を修正変更するために構成された顕著なコントロールとして実現できる。この点で、クライアントデバイスによってレンダリングされる仮想UIコントロールは、リモートデータソースに影響を与えるように適切に構成できる。クライアントUIモジュール740は、要求したデータを待機する必要はない。ユーザは、しばらくの間ビットマップを下へスクロールした後、ルックアヘッドデータがUIサーバによって送信されている間に別のフォームに切り替えてもよい。データ項目はUIサーバによって修正変更できる。例えば、新しい電子メールが来た時、またはユーザがメッセージを削除した時に、リストビュー項目が挿入および削除できる。
【0089】
送信/受信/再接続の処理
例示的な一インプリメンテーションもしくは実現によれば、データおよびコマンドの送受信の手続きは、UIサーバとクライアントデバイスで本質的に同じである。それぞれの側がデータパケットの2つのキューを維持する:一方は未送信パケットのリストであり、他方は送信されたが相手側によって受信の肯定応答がなされていないパケットのリストである。接続の確立後、送信要素は「送信」キューにデータがあればそれを見て、その接続を通じてデータパケットを(順に)送信し始める。送信オペレーションの成功後、(例外が存在しないと仮定すると)パケットは「送信済み」キューの末尾に移動される。
【0090】
その一方で、受信要素は、データが相手側から到着するのを待機している。完全なパケットすなわちコマンドが到着すると、受信要素はパケットヘッダを解析して、現在のパケットが、要求していないパケットであるか、それとも受信の肯定応答を意味するパケットであるかを判定する。例えば、クライアントデバイスは、現在のコマンドがクライアントコマンドの範囲内にあるか、それともサーバコマンドの範囲内にあるかをチェックすることによりこの判定を行うことができる。クライアントコマンドは、現在のパケットが単にサーバからの受信の肯定応答であり、クライアントによって以前に送信された対応するパケットが受信されたことを意味する。現在のパケットが実際に受信の肯定応答パケットである場合、受信要素は「送信済み」キューの先頭を見て、対応するパケットを削除する。そのパケットは今や首尾よく受信されており、もはやモニタする必要がない。
【0091】
受信パケットが要求していないコマンドである場合、受信側は直ちにそのパケットの応答受信の肯定を行うべきである。受信の肯定応答パケットが生成され、「送信」キューに入れられる。送信要素は、「送信」キューを処理している時にこのパケットを見ると、それを相手側に送信する。しかし、送信後に「送信済み」キューにその受信の肯定応答パケットを移動することはない。
【0092】
セッションが中断されてから再接続された後の回復のために、それぞれの側は、失われた可能性のあるデータが正しい順序で確実に再送されるようにする責任を負う。このために、それぞれの側はその「送信済み」キュー全体を「送信」キューの先頭に、または「再送」キューに入れる。この再優先順位付けは、相手側によって検証可能な形で受信されていないいかなるデータも正しい順序で送信されることを保証する。この方式は、受信の肯定応答がまだ送信または受信されていない場合に、実際には相手側によって受信されているパケットが再送される可能性があるという問題点を生じる。この問題点は、要求していないコマンドに対する受信の肯定応答をわずかに異なる方法で処理することによって対処することができる。例えば、それぞれの側は、送信した最後の受信の肯定応答パケットのためのプレースホルダを記憶しておくことができる。最後に受信の肯定応答をしたプレースホルダよりも小さいプレースホルダを有する要求をしていない新たなパケットを受信した場合、その要求をしていない新たなパケットは、すでに処理した何かの再送として認識される。こうして、もう一度受信の肯定応答を送信し、その新しいパケットは破棄することができる。
【0093】
プロセスフローの例
UIサーバおよびクライアントデバイスはそれぞれ、分散UIシステムの動作をサポートするためにいくつかの手続き、プロセス、およびタスクを実行するように構成される。以下で、いくつかの例示的なプロセスフロー状況について詳細に説明する。説明を整合させるため、これらのプロセスフロー状況は、上記の分散UIシステムの要素および機能を参照することもある。とりわけ、分散UIシステムの実際のインプリメンテーションもしくは実現は、いくつかの等価な方法で以下の手続きを具体化することが可能であり、本明細書で説明される特定のプロセスタスク(およびこのようなタスクの実行順序)は、特定の配置構成の要求に適合するように改変、除去、または補足してもよい。
【0094】
全般的なクライアント−サーバ動作
図9は、本明細書に記載される分散UIシステムによって実行できる分散UIプロセス900のフローチャートである。プロセス900が開始されると、クライアントデバイスがUIサーバとの接続を確立する(タスク902)。クライアントおよびサーバのそれぞれの通信インタフェース要素はこの接続を確立するように機能できる(好ましい実施形態では、接続はインターネットのようなネットワークを通じて確立される)。接続の形成後、プロセス900は、このセッションが特定クライアントデバイスとUIサーバ間の最初の接続に相当するかどうかを判定する(問合せタスク904)。UIサーバが、例えば受信したクライアントデバイス識別子を既知の、または先に接続されたクライアントデバイスのテーブルと比較することによって、この判定をしてもよい。現在のセッションがクライアントデバイスとUIサーバの間の初期的接続を表している場合、初期化プロセス906(以下でさらに詳細に説明する)が促される。他方、現在のセッションがオフライン期間に後続する再接続である場合、同期化プロセス908(以下でさらに詳細に説明する)が促される。
【0095】
クライアントデバイスおよびUIサーバの初期化または同期化の後、ユーザは、UIサーバによって維持されている利用可能なアプリケーションのリストからサーバベースアプリケーションを選択することができる(タスク910)。ユーザの選択に応答して、UIサーバは、選択されたアプリケーションを実行する(タスク912)。これは、クライアントデバイスにおける提示のためにソースデータ項目を操作するように構成されてもよい。その一方で、クライアントデバイスは、選択されたアプリケーションでの使用に適したUIフォーム(これは任意の数のUIコントロールを含み得る)を生成し表示する(タスク914)。この点で、UIは、選択されたアプリケーションの動作と整合するようにエンドユーザに受信ソースデータ項目を提示する。
【0096】
表示されたUIをたどりながら、ユーザは、クライアントデバイスにおいて、UIフォームもしくはUIコントロールを操作するか、またはその他の方法でアクションを実行することが可能である(タスク916)。例えば、電子メールアプリケーションとの関連では、ユーザは、「新規メッセージ作成(Compose New Message)」要求を開始したり、あるリストビューエントリをダブルクリックしてメッセージを読み出したり、スクロールバーを操作して付加的エントリまたは付加的テキストを閲覧したり、メッセージまたはエントリを削除したり、別のアプリケーションに切り替えたり、メッセージに応答できる。ユーザアクションに応答して、クライアントデバイスは、適当な方法で応動できる(タスク918)。例えば、クライアントデバイスは、そのアクションに関連する1つもしくは複数のコマンドスクリプトを実行し、または対応するアクション要求もしくはコマンドを発生し送信してもよい。スクリプトおよびアクション要求は、UIサーバへの情報の送信および/またはUIサーバからの情報もしくはソースデータ項目の要求に関連していてもよい。
【0097】
UIサーバは、クライアントのアクション要求およびコマンドを、どのように応答するのが最良であるかを決定するために適当な方法で受信し処理することができる。例えば、クライアントのコマンドおよび/または要求に応答して、あるいはUIサーバにおける新たなデータの存在に応答して、UIサーバは、任意の数のコマンドおよび/またはソースデータ項目をクライアントデバイスに返送してもよい(タスク920)。UIサーバからその新しい情報を受信した後、クライアントデバイスは、UIフォームまたはいくつかのUIコントロールを更新する(タスク922)。特定の更新特性は、UIサーバから受信される情報に左右されるものである。
【0098】
分散UIプロセス900は、エンドユーザまたはUIサーバがアプリケーションを切り替える(問合せタスク924)か、またはUIサーバから切断する(問合せタスク926)ことに決めるまで、ループし続けてもよい。アプリケーションの切り替えに応答して、タスク910が、新しい選択を処理するために再び開始される。さらに、同期化手続き908(またはその一部)を、任意の新たに選択されたアプリケーションに対して反復できる。すなわち(このプロセスフローの例示的順序から明らかではないが)、初期同期化手続きは、コネクションのときのすべてのサーバベースアプリケーション、選択されたアプリケーションのみ、または1つ以上のデフォルトアプリケーションを同期化すように構成されてもよい。こうして、コネクションされている間、ユーザは、選択されたサーバベースアプリケーションと継続的に双方向の情報のやり取りをすることができる。
【0099】
クライアント/サーバの初期化
図10は、分散UIプロセス900に関連して実行できる例示的な初期化プロセス906のフローチャートである。特定クライアントデバイスとUIサーバの間の最初のコネクションに応答して、クライアントは、識別または登録情報をUIサーバへ送信できる(タスク1002)。このような情報は、クライアントデバイスを一意的に識別して、UIサーバがそのサーバベースアプリケーションを各クライアントデバイスごとに持続的ステートに維持できるようにするために役立つ。識別情報としては、限定ではないが、次の項目のいずれを含んでもよい:ユーザ名およびパスワード;デバイスID;デバイスシリアル番号;またはデバイスタイプ。さらに、クライアントデバイスは、任意の適当なフォーマットを用いて自己のデバイス能力をUIサーバへ送信し(タスク1004)、UIサーバは将来の参照のためにそのデバイス能力をセーブする。
【0100】
クライアントデバイスまたはエンドユーザは結局、UIサーバからアプリケーションリストを要求してもよい(タスク1006)。アプリケーションリスト要求は、初期化中に自動的に生成されてもよく、またはエンドユーザのインタラクションを要求してもよい。アプリケーションリストは、クライアントデバイスがアクセス可能なサーバベースアプリケーションを指定する。要求に応答して、UIサーバは、適当なアプリケーションリストをクライアントデバイスへ送信することにより応答する(タスク1008)。もちろん、UIサーバは、「利用可能なアプリケーションなし(No Applications Available)」メッセージで応答することにより、エンドユーザによる次のアクションを促してもよい。1つまたは複数のアプリケーションが利用可能であると仮定すると、クライアントデバイスは、アプリケーションリストをエンドユーザに対して表示することができる(タスク1010)。例えば、実際のクライアントデバイスのインプリメンテーションは、エンドユーザが便利な方法で、任意のアプリケーションからのリストを表示し、利用可能なアプリケーションのいずれかを起動することができるように、クライアントUI上に「開始(Start)」または「移動(Go)」ボタンを提供してもよい。
【0101】
クライアント/サーバの同期化
図11は、分散UIプロセス900に関連して実行できる例示的なクライアント/サーバ同期化プロセス908のフローチャートである。上記のように、クライアントデバイスは、オフラインの間に、すなわちUIサーバから切断されている間または接続不良の期間中に、アクションおよびオペレーションを実行することができる。このようなオフラインアクションは、クライアントデバイスにおいて1つまたは複数のソースデータ項目を修正変更または削除することができる。さらに、UIサーバは、クライアントデバイスが切断されている間に既存のソースデータ項目に修正変更、削除、または付加をすることができる。同期化プロセス900、または適当な等価プロセスは、クライアントデバイスおよびUIサーバがそれぞれいかなるオフライン時の変化をも反映するために確実に更新されるように実行できる。
【0102】
同期化プロセス900は、クライアントデバイスがUIサーバとのセッションを再確立した後に実行されるのが望ましい。UIサーバと再接続された後、クライアントデバイスは検証のための適当な識別子をUIサーバに送信する(タスク1102)。UIサーバは、クライアントデバイスを検証した場合、そのクライアントデバイスについてセーブされているアプリケーションステートを検索できる(タスク1104)。実際には、UIサーバは、クライアントデバイスが切断されている時はいつでもアプリケーションの現在ステートをセーブしている。この点で、UIサーバは、いかなる個々のサーバベースアプリケーションのステートセーブしてもよく、またはそのクライアントデバイスのすべてのアプリケーションを表すグローバルステートを検索してもよい。
【0103】
クライアントデバイスは、オフラインの間に(空き記憶スペースを得るために)クライアントキャッシュから削除された項目のリストを送信できる(タスク1106)。それらの項目はクライアントキャッシュから削除されることが可能であり、適当な通知が生成されてクライアント「送信」キューに入れられてもよい。削除された項目のリストは、個々の通知の組合せ、またはすべての削除された項目を識別する単一の通知のいずれでもよい。オフライン期間に後続するこの「バッチ」送信手続きとは異なり、UIサーバに接続されている間は、クライアントキャッシュから削除されたデータ項目は一致適合化のため規則的にUIサーバへ送信される。
【0104】
その後、UIサーバは、オフライン時のキャッシュ変化があればそれをクライアントデバイスへ送信できる(タスク1108)。このようなオフラインキャッシュ変化は、キャッシュされているリストに関連するデータの到来(例えばクライアントデバイスがキャッシュされているメッセージリストを有する場合の新たな電子メールの到着)を表すものである。好ましい実施形態では、UIサーバによって維持されるシャドウキャッシュ(図7参照)が更新されて、クライアントによって削除されたデータ項目があればそれを除去し、ソースデータ項目のクライアントによる修正変更があればそれを反映し、および/またはいずれかのオフラインコマンドの実行に関してUIサーバによりなされた付加、削除、もしくは修正変更があればそれを反映する(タスク1110)。さらに、クライアントキャッシュは、現在同期化されているステータスを反映するのに必要な範囲で更新される。
【0105】
また、クライアントデバイスは、オフラインの間にクライアントデバイスによって生成された1つまたは複数のオフラインのアクションおよび/またはデータを示すいくつかのコマンドを送信してもよい(タスク1112)。例えば、オフラインの間にエンドユーザは、オフラインでなければUIサーバによって直ちに実行されるアクション要求を生成するかもしれない。このようなアクション要求は、クライアントデバイスがUIサーバに再接続されるまで「保留(hold)」状態に置かれる。もう1つの例として、エンドユーザは、クライアントデバイスが切断モードにある間に、新規メッセージの作成または既存のデータの修正変更をするかもしれない。新規データ項目、修正変更されたデータ項目、および関連するコマンドはタスク1112の間に送信される。
【0106】
結局、クライアントデバイスは利用可能なアプリケーションを選択し、UIサーバは選択されたアプリケーションをロードすることになる(タスク1114)。この時に、UIサーバは、現在ロードされているアプリケーションへ、そのアプリケーションによって実行されるための適当なオフラインコマンドおよび要求をディスパッチし得る(タスク1116)。オフラインコマンドは、それがクライアントデバイスによって送信された順序で実行されるのが望ましい。タスク1116が完了すると、クライアントデバイスの現在のステートは、UIサーバと同期化されるべきである。
【0107】
アプリケーションおよびフォームの選択
図12は、分散UIアーキテクチャによって実行できるアプリケーションおよびフォーム選択プロセス1200のフローチャートである。プロセス1200は、特定のサーバベースアプリケーションの選択に応答してクライアントデバイスでの表示のために適当なUIフォームを選択する。よって、プロセス1200が開始されるのは、クライアントデバイスが、利用可能なサーバベースアプリケーションを選択した時である(タスク1202)。その選択に応答して、クライアントデバイスは、特定のアプリケーションを識別する選択情報をUIサーバへ送信する(タスク1204)。その選択に応答して、UIサーバは、そのアプリケーションをロードし実行する(タスク1206)。その後、そのアプリケーションは、クライアントデバイスに対して、特定のUIフォームを生成するように命令する(タスク1208)。具体的実施形態では、UIサーバが、UIフォーム定義または対応する識別子をクライアントデバイスに送信してもよい。UIフォーム定義はクライアントデバイスプラットフォームおよび/または選択されたアプリケーションに特に適合したものでよい(上記のように、UIフォーム定義はクライアントデバイスの複数のデバイス能力に基づくのが望ましい)。この点で、クライアントデバイスが実際にはUIをレンダリングするが、UIサーバがどのUIフォームを表示すべきかを規定する。特定のUIフォームは、選択されたアプリケーションに関連するデフォルトビューであってもよく、またはエンドユーザアクションに基づいてもよい。例えば、電子メールアプリケーションは、電子メールメッセージのリストを有する「Inbox」UIフォームを自動的に要求してもよい。
【0108】
UIフォームコマンドに応答して、クライアントデバイスは、要求されたUIフォーム定義が利用可能であるかどうかを決定するために、自己のキャッシュに問い合わせてもよい(タスク1210)。利用可能でない場合、クライアントデバイスはUIサーバからUIフォーム定義を要求する(タスク1212)。この要求に応答して、UIサーバはUIフォーム定義を検索(または生成)し、それを適当なフォーマットでクライアントデバイスに返送する(タスク1214)。クライアントデバイスは、UIフォーム定義を受信した後、その定義を自己のキャッシュにセーブする(タスク1216)。好ましい実施形態では、クライアントデバイスは、フォーム定義がクライアントキャッシュから最後に削除されるべきデータタイプとなるように、最低キャッシュレベルにすべてのフォーム定義をセーブする(図8およびクライアントキャッシュについての対応する説明を参照のこと)。UIフォームがクライアントキャッシュにローカルに記憶された後、クライアントデバイスは、UIサーバと連絡を取ることを必要とせずにUIフォーム定義を検索することができる。
【0109】
所与のUIフォーム定義がクライアントキャッシュに入った後、クライアントデバイスは、その定義に基づいて対応するUIフォームを生成できる(タスク1218)。好ましい具体的な実施形態では、クライアントデバイスは、クライアントプラットフォームOSに関連するネイティブUIコントロールを用いてUIフォームを生成する。その後、クライアントデバイスは、UIフォームをレンダリングし、そのUIをそれぞれのソースデータ項目で埋めることができる(タスク1220)。
【0110】
UIフォーム定義がUIサーバによって修正変更された場合、プロセス1200の一部は、クライアントデバイスが常に各UIフォームの最新バージョンを確実に利用するように実行するとよい。この点で、フォーム定義は、クライアントにキャッシュされているフォーム定義のバージョンが最新であるかどうかをUIサーバが判定することを可能にする日付および/またはバージョンスタンプを含むとよい。
【0111】
クライアントキャッシュのメンテナンス
図13は、クライアントデバイスがUIサーバからデータを受信した時に実行できるクライアントキャッシュメンテナンスプロセス1300のフローチャートである。この例の目的上、クライアントキャッシュはフルであり、新しいデータをセーブすることができるようにするにはより古いデータが削除または除去しなければならないと仮定する。そうではなく、クライアントキャッシュが十分な容量を有する場合には、データ項目は、キャッシュされている項目の削除を必要とせずに、通常通りセーブされるべきものである。本明細書では、プロセス1300は、図8に示した例示的なクライアントキャッシュ構造体と整合するように説明される。
【0112】
クライアントキャッシュ維持プロセス1300が開始されるのは、クライアントデバイスがUIサーバから新しいもしくは付加のデータ項目を取得し、またはクライアントデバイス自身がクライアントキャッシュに入れるための新しいもしくは付加のデータ項目を生成した時である(タスク1302)。クライアントデバイスは、それが受信した順序で、または任意の優先方式に従って、到来するデータ項目を処理するように構成でき、この例の目的上、データ項目は一度に1個ずつ処理される。もちろん、プロセス1300は、所要の量の記憶スペースが利用可能になってから、新しいデータ項目をチャンク単位でセーブしてもよい。
【0113】
スペースを解放するため、プロセス1300はまず、初期的に最高キャッシュレベルから、キャッシュされているデータ項目を削除する。削除は、図8に関連して説明したように、最も過去に使用されたデータから開始して(タスク1304)、そのレベルに関連する最も近時に使用されたデータへと進む。キャッシュされているデータ項目がロックされている場合、クライアントデバイスはそれをキャッシュから除去しようとはしない。データ項目は、表示されているUIフォームにそれが含まれている場合、またはクライアントデバイスによってそれが現在修正変更されている最中である場合に、クライアントデバイスによってロックできる。一旦必要量のスペースが利用可能になると、新しいデータ項目が空きキャッシュスペースにセーブされる(タスク1306)。(新しいデータ項目が、最近に削除されたキャッシュ項目より多くのメモリを要求する場合には、以下で説明するように付加のキャッシュ項目が反復的に削除されることが必要となり得る。)こうして、到来するデータ項目を収容するために既存のデータソース項目が削除される。
【0114】
まだ他の新しいデータ項目が残っている場合(問合せタスク1308)、プロセス1300は続行される。そうでない場合、プロセス1300はタスク1316(後述)に進んでよい。クライアントキャッシュが現在のキャッシュレベルにまだ他の項目を含んでいる場合(問合せタスク1310)、そのレベルにおける次の項目が削除される(タスク1312)。上記のように、いかなる所与のレベルに関連するキャッシュ項目も、最も過去に使用されたものから最も近時に使用されたものへという順序で削除されるのが望ましい。図13に示すように、新しい項目のすべてがセーブされるまで、または現在のキャッシュレベルに関連する項目のすべてが削除されるまで、キャッシュ項目が削除されて新しいデータ項目で置き換えられる。
【0115】
現在のキャッシュレベルから古い項目のすべてが削除された場合(問合せタスク1310)、クライアントデバイスは、次のキャッシュレベルの最も過去に使用された項目を削除する(タスク1314)。このプロセスフローは、新しいデータ項目のすべてがクライアントキャッシュにセーブされるまで繰り返される。この点で、既存のキャッシュ項目は、階層的優先方式に従って選択的に削除される。本明細書で説明される実施形態によって利用される優先方式は、UIフォームデータを最も優先し、最低優先度を古いソースデータに割り当てる。この優先方式は、例えばソースデータ、アイコンデータ、フォームデータ等のデータタイプに従って、キャッシュされている項目を選択的に削除する。
【0116】
キャッシュの更新に応答して、クライアントデバイスは、クライアント「送信」キューに適当なエントリを生成するのが望ましい(タスク1316)。このエントリすなわちコマンドは、除去されたキャッシュ項目のリストを提供することによってUIサーバに通知する。その後、UIサーバは、同じ項目を削除することによって、自己のシャドウキャッシュを更新することができる(タスク1318)。このようにして、シャドウキャッシュはクライアントキャッシュと整合的な一貫性のある状態に保たれ、UIサーバはクライアントデータ項目の正確な目録を維持する。
【0117】
UIサーバの処理
図14は、UIサーバによって実行できるサーバ起動プロセス1400のフローチャートである。プロセス1400は、一般的に、UIサーバが起動され、呼び出され、またはその他の方法で応答することが期待されるいくつかの状況を考慮している。この点で、プロセス1400が開始されるのは、UIサーバが適当な起動要求を受信した時である(タスク1402)。この起動要求は、UIサーバによって内部的に生成されてもよく、クライアントデバイスから受信されてもよく、またはシステム管理者もしくは他の「サードパーティ」エンティティから受信されてもよい。
【0118】
起動要求が、新しいサーバベースアプリケーションをUIサーバに登録することの要求を表している場合(問合せタスク1404)、UIサーバは、そのアプリケーションの名前および実行可能部分(例えば、適当なアプリケーションDLL)を適当なメモリ位置に記憶できる(タスク1406)。その後、UIサーバは、この新しいアプリケーションを、1つ以上のクライアントデバイスにとって利用可能にすることができる。
【0119】
起動要求が新しいUIフォームをUIサーバに登録することの要求を表している場合(問合せタスク1408)、UIサーバは、フォーム定義、およびおそらくはフォームの名前または識別子を適当なメモリ位置に記憶できる(タスク1410)。新しいフォームは、新しいアプリケーションをサポートするため、または先にサポートされていたアプリケーションのより新しいバージョンをサポートするために定義できる。
【0120】
起動要求がクライアントデバイスからの接続要求を表している場合(問合せタスク1412)、UIサーバは、クライアントデバイスの識別性を検証しようと試みることになる(タスク1414)。クライアントデバイスが認証されたと仮定すると、UIサーバは、同じエンドユーザによって操作されている別のクライアントデバイスに現在接続されているかどうかを判定する(問合せタスク1416)。この状況は、単一のエンドユーザが複数のクライアントデバイスを操作し、それらの相異なるデバイスを用いてUIサーバに接続する時に起こる。実際のシステムは、同期化の問題を避けるために同時コネクション数を制限してもよい。こうして、UIサーバは、別の関連するクライアントデバイスにすでに接続されている場合、その別のデバイスを切断する前に、その別のデバイスの現在の動作ステートをセーブする(タスク1418)。その後、要求するクライアントデバイスは、UIサーバに接続され、それと同期化することが可能となる(タスク1420)。
【0121】
起動要求がサーバベースアプリケーションからメッセージを送信することの要求を表している場合(問合せタスク1422)、UIサーバは、適当な要求またはコマンドをフォーマットし、それをサーバ「送信」キューに入れることが可能である(タスク1424)。UIサーバからのデータの送信については、図15に関連して以下でさらに詳細に説明する。
【0122】
起動要求がクライアントデバイスから受信されたメッセージ、コマンド、データ項目、または要求を表している場合(問合せタスク1426)、UIサーバは、適当なサーバ受信手続き1428を実行できる。適当な手続き1428については、図16に関して以下でさらに詳細に説明する。
【0123】
もちろん、UIサーバは、任意の数の起動要求タイプを取得することが可能であり、上記のものは本発明の範囲を限定するべきものでない。この点で、サーバ起動プロセス1400は、適当な方法で任意の起動要求を処理するように構成できる(タスク1430)。
【0124】
図15は、データをクライアントデバイスへ送信する時にUIサーバによって実行できるサーバ送信プロセス1500のフローチャートである。実際には、プロセス1500は、サーバ送信要素およびサーバ通信インタフェース要素のようなサーバ処理アーキテクチャの種々の要素によって実行できる。データをクライアントデバイスへ送信する準備ができている場合、UIサーバは、処理のためにサーバ「送信」キュー内の次のエントリを検索する(タスク1502)。現在のエントリが再送要求を表している場合(問合せタスク1504)、UIサーバは、対応するデータをクライアントデバイスへ直ちに送信することができる(タスク1506)。その後、再送要求はサーバ「送信済み」キューに移動できる(タスク1507)。UIサーバは、サーバシャドウキャッシュがすでにそのデータ項目を含んでいる(そしてそのデータはすでに正しくフォーマットされている)ので、データを素早く再送することができる。
【0125】
現在のエントリが再送要求を表していない場合、対応するデータ(またはそれの何らかのレコードまたはそれへのポインタ)がサーバシャドウキャッシュにセーブされる(タスク1508)。サーバシャドウキャッシュは、クライアントキャッシュのコピーとして機能する。こうして、UIサーバは規則的にシャドウキャッシュを維持し、シャドウキャッシュはクライアントデバイスにローカルにセーブされているソースデータ項目のリストおよび/またはUIサーバからクライアントデバイスへ送信されたデータ項目のリストを含み得る。結局、UIサーバは、クライアントデバイスへの送信のためにデータを処理することになる(タスク1510)。実際のUIサーバは、データについて適当なコマンドを構築してもよい。このことは、コマンド長、識別子、および送信クッキーまたはトークンを含むことができる(しかしこれらに限定されない)メタ情報データを付加すること;ならびに、報告されたクライアントの能力に応じてデータ暗号化、圧縮、および文字列タイプまたはバイト順序の調整を含む(しかしこれらに限定されない)いくつかの共通のデータ変換を実行することによって行われる。
【0126】
データを含むコマンドは、サーバ通信インタフェース要素および通信ネットワークを経由してクライアントへ送信される(タスク1512)。送信後、UIサーバはそのコマンド、またはそのコマンドの適当な識別子をサーバ「送信済み」キューに移動する(タスク1514)。コマンドは、その受信がクライアントデバイスによって受信の肯定応答されるまでサーバ「送信済み」キューにとどまるのがのぞましい。よって、サーバ送信プロセス1500は、指定された期間内に受信の肯定応答が受信されたかどうかを鑑定するためにタイマをモニタしてもよい(問合せタスク1516)。受信された場合、コマンドはサーバ「送信済み」キューから除去または削除してよい(タスク1518)。UIサーバは、割り当てられた制限時間内に受信の肯定応答を受信しない場合、近いうちにクライアントデバイスへ再送できるようにそのコマンドをサーバ「送信」キューに戻してもよい(タスク1520)。
【0127】
図16は、到来するメッセージを処理するためにUIサーバによって実行できるサーバ受信プロセス1428のフローチャートである。プロセス1428は、サーバ起動プロセス1400(図14参照)に関連して実行できる。よって、プロセス1428は、UIサーバがメッセージ、コマンド、または要求をクライアントデバイスから受信した時に開始できる(タスク1602)。メッセージがアプリケーションリスト要求を表している場合、UIサーバは、クライアントデバイスに利用可能なサーバベースアプリケーションの現在のリストを検索し、そのリストに対する適当なコマンドを生成し、そのコマンドをクライアントデバイスへ送信するためにサーバ「送信」キューに入れることになる(タスク1606)。
【0128】
受信されたメッセージは、エンドユーザがある1つのサーバベースアプリケーションから別のサーバベースアプリケーションへの切り替えを決めた時にクライアントデバイスによって生成されるアプリケーション切り替え通知をあらわすことがある。受信メッセージがアプリケーション切り替え通知を表している場合(問合せタスク1608)、UIサーバは現在のアプリケーションに、それが切り替えられることになると通知してもよい(タスク1610)。この通知により、現在のアプリケーションは、自己のステートを保存し、そして、その他の方法で切り替えの準備をすることができる。UIサーバは結局、新しいアプリケーションを実行のためにロードすることになる(タスク1612)。具体的実施形態では、タスク1612によりUIサーバは適当なアプリケーションDLLをロードする。その後、UIサーバは、新たにロードされたアプリケーションに、現在のアプリケーションとしてのその現在の動作ステータスを通知できる(タスク1614)。さらに、前のアプリケーションはアンロードされるか、またはその他の方法でアイドルステートに置かれる(タスク1616)。
【0129】
受信メッセージがアプリケーションリスト要求でもなければアプリケーション切り替え通知でもない場合、UIサーバは、適当な方法でクライアントメッセージを処理できる(タスク1617)。この点で、UIサーバは、任意の数のクライアントメッセージを取得してもよく、上記のものは本発明の範囲を限定すべきものでない。例えば、クライアントメッセージは、コントロールに添付されたスクリプトに従ってクライアントデバイスによって生成されたコマンド、ボタンコントロールが起動されたことの通知、ユーザがリストビューを下方にスクロールすることを可能にするためのさらに多くのデータの要求、または「セーブ(save)」ボタンの起動に関連するデータであることが可能である。その後、UIサーバは、現在のアプリケーションのディスパッチエントリポイントへそのメッセージをディスパッチし得る(タスク1618)。このようにして、現在のアプリケーションはメッセージを適切な方法で処理することができる。
【0130】
図17は、データ修正変更を処理するためのプロセスのフローチャートである。この修正変更は、データソースに起因する。データ修正変更プロセス1700は、外部ソースが1つ以上のアプリケーションに関連するデータの付加、修正変更、または削除をした場合に開始してよい(タスク1702)。便宜上、「修正変更されたデータ」とは、新規データ、修正変更されたデータ、または削除されたデータを指す。すなわち、「変更されたデータ」は、任意の所与のアプリケーションのソースデータ項目のステータスにおける任意の変化も表すものである。修正変更されたデータが「プッシュ」データである場合、すなわち、新しい電子メールのように、他から加えられた変化にユーザの注意を向けるのに十分なほど重要であるデータである場合には、たとえユーザがそのタイプのデータを現在調べていなくても(問合せタスク1704)、UIサーバはクライアントデバイスへ送信するためにプッシュ通知命令を生成できる(タスク1706)。修正変更されたデータが「プッシュ」データでない場合、UIサーバは、修正変更されたデータがクライアントにすでにキャッシュされているデータ項目に関連するかどうかをテストできる(問合せタスク1708)。例えば、修正変更されたデータは、キャッシュされたデータ項目の更新されたバージョンであるかもしれない。この点で、UIサーバは、クライアントキャッシュの現在のステータスを判定するために自己のシャドウキャッシュを調べてもよい。修正変更されたデータ項目がクライアントにキャッシュされていない場合、データ修正変更プロセス1700は終了する(この修正変更されたデータは、クライアントデバイスがそれぞれのアプリケーションを呼び出すまで、またはそのデータ項目が再び修正変更されるまで、UIサーバによって維持されることになる)。
【0131】
修正変更されたデータ項目がキャッシュされているデータ項目に関連する場合、または修正変更されたデータ項目が「プッシュ」データタイプである場合、UIサーバは自己のシャドウキャッシュを更新してその修正変更を反映させる(タスク1710)。新しいデータが関与する場合、それはシャドウキャッシュに付加される。改変されたデータが関与する場合、前のバージョンが新しいバージョンで置き換えられる。その後、修正変更されたデータ項目(および、該当する場合にはプッシュ通知命令)はフォーマットされ、サーバ「送信」キューに入れられる(タスク1712)。結局、UIサーバはそれをクライアントデバイスへ送信することになる(タスク1714)。とりわけ、修正変更されたデータがクライアントデバイスに送信されるまでには変動する時間遅延が生じるおそれがある。実際、クライアントデバイスはこの時間中にUIサーバから切断されるかもしれない。
【0132】
修正変更されたデータ項目がUIサーバから受信された後、クライアント受信要素はそのデータ項目をクライアントキャッシュに入れる(タスク1716)。好ましい実施形態は、データをクライアントキャッシュにセーブする時に、図13に関連して上記で説明したプロセスのようなキャッシュ管理アルゴリズムを使用する。クライアント受信要素は、クライアントデバイスが修正変更されたデータを適当な方法で処理することができるようにクライアントUIモジュールに警告または注意を与えるようにしてもよい(タスク1718)。該当する場合、クライアントUIモジュールは、オプショナルなプッシュ通知命令を実行する(タスク1720)。このことは、ユーザに「プッシュ」データが到着したことを通知するため使用できる。例えば、UIモジュールはクライアントデバイスにおいて、ポップアップウィンドウを生成して表示し、またはオーディオ音を再生してもよい。
【0133】
受信されたデータ項目(またはデータ項目が属する関連リスト)がクライアントデバイスに現在表示されている場合(問合せタスク1722)、クライアントデバイスは、修正変更されたデータ項目に収容するために、UIフォームおよびディスプレイの更新を始める(タスク1724)。そうでない場合、修正変更されたデータ項目は、それが要求され、削除され、またはさらに修正変更されるまで、クライアントキャッシュに保存できる(タスク1726)。
【0134】
クライアントデバイスの処理
図18は、受信データを処理する時にクライアントデバイスによって実行できるクライアント受信プロセス1800のフローチャートである。プロセス1800は、クライアントデバイスがメッセージ、要求、またはコマンドをUIサーバから受信した時に開始できる。好ましい具体的な実施形態では、クライアントデバイスは、完全なコマンドが受信されるまで到来データを一時バッファに入れる(タスク1802)。その後、クライアントデバイスは、バッファ内容に対して、任意の必要なデータ復号化または圧縮解除を実行できる(タスク1804)。相異なるコマンドタイプは、クライアントデバイスによって別様に処理できる。その結果として、クライアントデバイスはまずコマンドを解析し、コマンドタイプを判定してもよい(タスク1806)。
【0135】
コマンドがクライアントアクションコマンドを表している場合(問合せタスク1808)、コマンドをさらなる処理のためにクライアントUIモジュールに送信できる(タスク1810)。これに関連して、クライアントアクションコマンドは、現在のサーバベースアプリケーションに関係したものであってよい。UIサーバは、クライアントデバイスに特定のアクション(例えば、所与のUIフォームの表示、UIコントロールの偏差の修正変更、または移動又はコントロールの内容の消去)を実行させることが必要な時、クライアントアクションコマンドを生成することができる。クライアントデバイスは(例えばUIモジュール経由で)クライアントアクションコマンドを実行し、必要であればUIを更新して、クライアントアクションコマンドの実行の結果として生じる変化があればそれを反映させる。
【0136】
コマンドがデータキャッシュコマンド(例えば、ソースデータ項目またはその他のデータオブジェクトを含むコマンド)を表している場合(問合せタスク1812)、そのデータは、コマンドによって指定されるようにクライアントキャッシュに記憶される(タスク1814)。例えば、コマンドは、データ内容を参照する識別子を指定すること、データタイプを提供すること、およびデータが記憶されるべきキャッシュレベルを指定することが可能である。クライアントキャッシュ内へセーブされると、UIモジュールが適切な方法でそのデータを処理することができるように、そのデータの到着がUIモジュールに通知される(タスク1816)。
【0137】
コマンドが、もともとクライアントデバイスから送信されたデータの受信の肯定応答を表している場合(問合せタスク1818)、クライアントデバイスはそれに応答してクライアント「送信済み」キューから対応するエントリを除去する(タスク1820)。こうして、クライアントデバイスは、もとのデータ項目の再送の心配をする必要がない。
【0138】
コマンドがクライアントアクション、データ項目、または受信の肯定応答以外のものを表している場合、クライアントデバイスは、そのコマンドタイプを認識した場合にはそのコマンドを処理することができる(タスク1822)。すなわち、分散UIシステムは、上記の特定のコマンドの処理に限定される必要はない。もちろん、クライアントデバイスが、受信されたコマンド、メッセージ、または要求を認識しない場合には、エラーメッセージを生成するか、または単にそれを無視してもよい。
【0139】
図19は、クライアントデバイスのUIモジュールによって実行できるUI要素プロセス1900のフローチャートである。図18に関連して上記で説明したように、クライアントデバイスは、コマンド、データ、要求、またはメッセージを現在のUIに関連づけて処理するためにUIモジュールに送ることが可能である。UIモジュールは、受信要素によって警告された時はいつも、またはユーザがある特定のアクションをUIに対して実行した時に、アクティブになる。例えば、UIモジュールがデータ項目を受信した場合(問合せタスク1902)、UIモジュールはまず、受信されたデータ項目(またはそれの異なるバージョン)がすでに現在のUIフォームに表示されているかどうかをチェックできる(問合せタスク1904)。表示されていない場合、受信データ項目はクライアントキャッシュにセーブされ(タスク1906)、クライアントデバイスによって呼び出されるか、削除されるか、または修正変更されるまでそこに常駐することになる。
【0140】
問合せタスク1904で、受信データ項目(またはそれの異なるバージョン)が現在のUIフォームに表示されていると判定された場合、UIモジュールは、新しいデータ項目に対するロックをインクリメントまたは起動して、それが使用されている間に削除されることを防止する(タスク1908)。受信データ項目が、古い項目を置き換えるべきものである場合、古い項目に対するロックをデクリメントして、その古い項目をキャッシュから除去できるようにする。新たにキャッシュされるデータ項目は、そのそれぞれのキャッシュレベルの終端に移動されて(または適切にマークされて)(図8および対応する説明を参照のこと)、削除を受けにくくされる(タスク1910)。結局、受信データ項目は、現在のUIフォーム上のそれぞれのUIコントロールに表示される(タスク1912)。
【0141】
UIモジュールがコマンド、例えばクライアントアクションコマンド、サーバコマンド等を受信した場合(問合せタスク1914)、UIモジュールはそのコマンドを実行する(タスク1916)。これらのUIコマンドは、UIフォームを切り替える要求、UIコントロールを移動する要求、およびその他のUI表示機能またはUIオペレーションに関係する要求を表せる。
【0142】
UIモジュールが、現在のUIフォームでのエンドユーザ操作またはインタラクションに応答したコマンド、要求、またはメッセージを受信した場合(問合せタスク1918)、UIモジュールは、このようなユーザアクションを、図21〜図23に関連して以下でさらに詳細に説明するように処理できる(タスク1920)。もちろん、UI要素プロセス1900は、UIモジュールが他の機能、コマンド、要求、またはメッセージを処理することができるように適切に修正変更できる(タスク1922)。
【0143】
図20は、情報をUIサーバへ送信する時にクライアントデバイスによって実行できるクライアント送信プロセス2000のフローチャートである。クライアント送信要素、クライアント通信インタフェース、およびその他のクライアントデバイス要素は、プロセス2000を実行するように協働できる。データをUIサーバへ送信する準備ができると、クライアントデバイスは、処理のためにクライアント「送信」キュー内の次のエントリを検索する(タスク2002)。現在のエントリが再送要求を表している場合(問合せタスク2004)、クライアントデバイスは、どのような付加的なキャッシュ維持手続きを実行することも必要ではなく、対応するデータをUIサーバへ直ちに送信することができる(タスク2006)。
【0144】
現在のエントリが再送要求を表していない場合、対応するデータがクライアントキャッシュから一時バッファに転送される(タスク2008)。これによりクライアントデバイスは、送信されるデータをキャッシュ外に移動し、一箇所でそれをフォーマットすることができる。(代替的に、送信データはキャッシュ内でロックされ、UIサーバから受信の肯定応答を受信するまでクライアントデバイスがそれを破棄しないようにすることができる。)さらに、キャッシュ項目ロックは、その項目がクライアントデバイスによって削除されることを可能にするためにデクリメントまたは解除(deactivate)される(タスク2010)。結局、クライアントデバイスは、UIサーバへの送信のためにデータを処理する(タスク2012)。サーバ送信プロセス1500に関連して上記で説明したように、タスク2012中に実行される処理は、データに対する適当なコマンドの構築(そのコマンドは、コマンド長、識別子、および送信クッキーまたはトークンを含み得る)、データ暗号化の実行、ならびにデータ圧縮の実行に関係してもよい。
【0145】
データを含むコマンドは、クライアント通信インタフェース要素および通信ネットワークを経由してUIサーバへ送信される(タスク2014)。送信後、クライアントデバイスはそのコマンド、またはそのコマンドの適当な識別子をクライアント「送信済み」キューに移動する(タスク2016)。コマンドは、その受信がクライアントデバイスによって受信の肯定応答されるまでサーバ「送信済み」キューにとどまるのが望ましい。例えば、クライアントデバイスが、指定された期間内にUIサーバから受信の肯定応答を受信した場合(問合せタスク2018)、コマンドはクライアント「送信済み」キューから除去または削除されてよい(タスク2020)。クライアントは、割り当てられた制限時間内に受信の肯定応答を受信しない場合、間もなくUIサーバへ再送できるようにそのコマンドをクライアント「送信」キューに戻してもよい(タスク2022)。
【0146】
図21および図22は、UIにおけるデータ表示コントロールの操作を処理するためのクライアントプロセス2100のフローチャートを示している。このような操作は、エンドユーザがUIとやり取りする時に起こり得る。こうして、表示コントロール操作は、スクロールバーの移動、ディスプレイ上のアイコンの配置、特定メッセージのダブルクリック、およびエンドユーザが現在のサーバベースアプリケーションに関連するソースデータ項目を間接的に要求する時のような、UI表示フィーチャの変化または修正変更を表す。こうして、プロセス2100は、クライアントデバイスによって生成されるUI表示コントロールのエンドユーザ操作に応答して、UI表示の1つまたは複数のフィーチャ(例えば、UIフォーム、いくつかのUIコントロール、アイコン外観等)を更新することによって開始できる(タスク2102)。
【0147】
通常、UI表示コントロールの操作の結果、付加的なデータ項目が表示される。すなわち、現在のUIフォームは、多分より多くのデータ項目で埋められることが必要とされる。よって、クライアントデバイスは、適当な要求を行うことによって、現在のUIフォームにおける表示のためのデータ項目の検索を開始する(タスク2104)。クライアントデバイスは、クライアントデバイスが実際にデータを必要とする前にUIサーバから付加データを要求する「ルックアヘッド」技法を使用してもよい。例えば、プロセス2100は、データ要求しきい値を超えたかどうかをテストしてもよい(問合せタスク2106)。このしきい値を超えていない場合、クライアントデバイスは、要求されたデータ項目がクライアントキャッシュにローカルにセーブされているかどうかを判定するために自己のキャッシュに問い合わせてもよい(問合せタスク2108)。要求されたデータ項目がクライアントキャッシュに存在する場合、UIモジュールは、キャッシュからローカルにデータ項目を検索し、それをUIフォームに表示することができる(タスク2110)。しかし、必要なデータ項目がキャッシュされていない場合、クライアントデバイスはそれをUIサーバから要求することになる。
【0148】
ルックアヘッドしきい値に達している場合(または要求されたデータがクライアントキャッシュに入っていない場合)、クライアントデバイスは、付加データが要求されたことを示すようにUI表示を更新してもよい(タスク2112)。この通知はエンドユーザに対する通知であり、データがUIサーバからダウンロードされている間のプレースホルダとして働く。例えば、クライアントデバイスは、適当なUIコントロールフィールドに「データ要求済み(Data Requested)」のようなテキストを表示してもよい。
【0149】
付加データが必要となったことに応答して、クライアントデバイスは、クライアント「送信」キューにダウンロード要求を入れる(タスク2114)。この点で、クライアントデバイスは、表示コントロールに対するユーザの操作がデータ要求コマンドをトリガしたか、またはさもなければデータダウンロードしきい値を超えた場合に、UIサーバから複数の付加的のソースデータ項目を要求することができる。その後、変動する期間が経過する可能性があり、その間にクライアントデバイスはUIサーバから切断されるかもしれない。結局、クライアント「送信」キューに入れられた直後であるか、クライアントがUIサーバとの接続を再確立した後であるかにかかわらず、ダウンロード要求(または適当に構成されたコマンドもしくはメッセージ)はUIサーバに送信される(タスク2116)。送信が成功したと仮定すると、UIサーバはダウンロード要求を受信し、それを適当なサーバベースアプリケーションに転送することになる(タスク2118)。このアプリケーションは、データ要求を処理し、要求されたデータ項目(または適当に構成されたコマンドもしくは要求)を、クライアントデバイスへ返送するためにサーバ「送信」キューに入れる(タスク2120)。
【0150】
要求されたデータ項目は、サーバ「送信」キューで不定期間待機するかもしれない。この期間は、そのデータ項目がクライアントデバイスに送信される前の切断されている期間を含み得る(タスク2122;フローチャートは図22に続いている)。ダウンロードが成功したと仮定すると、クライアント受信要素は、データ項目を受信し、データタイプに従って、およびキャッシュ優先度または優先方式(前述)に従って、そのデータ項目をクライアントキャッシュに入れる(タスク2124)。さらに、クライアント受信モジュールは、新たにダウンロードされたデータ項目が利用可能であることをクライアントUIモジュールに通知してもよい(タスク2126)。UIモジュールがデータ項目を待機しているか、または表示している場合(問合せタスク2128)、UIモジュールは、対応するUIコントロールまたはフォームに表示するためにそのデータを検索する(タスク2130)。この状況は、例えば、現在のUIフォームが新しいソースデータ項目で埋められることを待機している場合に起こり得る。これに対して、UIモジュールが新しいデータ項目を直ちには必要としていない場合、それらのデータ項目は、クライアントデバイスによって要求され、削除され、または後で修正変更されるまで、クライアントキャッシュに維持できる(タスク2132)。もちろん、上記のように、クライアントキャッシュは、必要であればクライアントキャッシュ内の既存のソースデータ項目が新しいデータ項目で置き換えることができるように管理されるのが望ましい。
【0151】
図23は、クライアントデバイスにおけるアクションコントロールの操作を処理するプロセス2300のフローチャートである。この場合、アクションコントロールとは、ユーザによって操作されるUIコントロールであって、その結果としてアプリケーションが、コントロールに表示されるデータを更新することとは異なって、あるアクションを実行することになるようなUIコントロールである。典型的なアクションコントロールとしてはメニューおよびボタンがあるが、リストビュー内のエントリのダブルクリックのような、何らかの仕事を実行するように「起動」されたデータ表示コントロールも含まれる。アクションコントロールは、データ項目の削除、データ項目の送信、アプリケーションの切り替え、またはUIフォームのクローズのようなアクションを引き起こす。実際の配置構成仕様では、アクションコントロールを、例えば「削除(Delete)」ボタン、「メッセージ送信(Send Message)」ボタン等の特定のUI機能ボタンと関連付けることができる。
【0152】
プロセス2300は、起動されたアクションコントロールに対応する起動スクリプトの識別から開始できる(タスク2302)。上記のように、クライアントデバイスは、任意の数のコマンドスクリプトを利用して、UIサーバがあまり関与せずに効率的なクライアント側処理を容易にすることが可能である。適当なコマンドスクリプトは、識別された後、スクリプト内の各エントリを検索し処理することによって実行できる。よって、プロセス2300は、UIモジュールがコマンドを処理することができるように、コマンドスクリプト内の次のエントリを取得する(タスク2304)。
【0153】
現在のエントリが「データ送信」コマンドを表している場合(問合せタスク2306)、列挙されたUIコントロールからのユーザ入力データが転送のためにフォーマットされ、クライアント「送信」キューに入れられる(タスク2308)。その後、プロセスフローは、次のコマンドエントリが処理できるように、問合せタスク2328に進んでよい。やがて、以下でさらに詳細に説明するように、ユーザ入力データはクライアント送信要素によってUIサーバへ送信される。
【0154】
現在のエントリが「フォーム切り替え」コマンドを表している場合(問合せタスク2310)、クライアントデバイスは、現在のUIフォームを終了して新しいUIフォームを表示し始める。クライアントデバイスは、単一のアプリケーションによって利用される任意の数のUIフォーム間を切り替えることができる。さらに、UIフォームの切り替えは、現在のサーバベースアプリケーションにおける変化に対応してもよい。フォームを切り替える時、具体的な実施形態はまず、現在のUIフォームに関連するキャッシュされているデータ項目に対するロックをデクリメントまたは解除してもよい(タスク2312)。上記のように、UIフォームがアクティブであるか、または表示されている時、それぞれのデータ項目は、削除されないようにするためにキャッシュ内でロックされる。結局、クライアントデバイスは古いUIフォームから新しいUIフォームに切り替わる(タスク2314)。フォームの切り替えに関して、クライアントデバイスはいくつかの付加ステップ(例えば、ユーザが別のフォームへどのように切り替えるかにかかわらずステートおよび/またはデータがセーブされることを可能にする「フォーム終了」スクリプト)を実行してもよい。その後、クライアントUIモジュールは、エンドユーザに対する表示のために、新しいUIフォームを必要なデータ項目で埋めることができる。その後、プロセスフローは問合せタスク2328に進む。
【0155】
現在のエントリが「コントロール修正変更」コマンドを表している場合(問合せタスク2316)、クライアントデバイスは、指定されたプロパティを指定されたUIコントロールに適用することができる(タスク2318)。このようなコマンドは、コントロールが移動、サイズ修正変更、隠蔽、表示、無効化、消去等をされる時に生成できる。この点で、クライアントUIモジュールは、指定されたUIコントロールに関連するUIコントロール定義を検索し、指定されたプロパティを適用して、指定されたUIコントロールをディスプレイ上にレンダリングできる。典型的なUIコントロールプロパティとしては、サイズ、位置、可視性、およびラベリングがある。タスク2318の後、プロセスフローは問合せタスク2328に進む。
【0156】
現在のコマンドが「項目削除」コマンドを表している場合(問合せタスク2320)、クライアントデバイスはUIを適当な方法で更新する。エンドユーザは、UIフォーム内の相異なる点で(例えばリストビューコントロールから、メッセージビューから、またはフォルダツリービューから)、「項目削除」コマンドを発することができる。すでにより詳細に説明したように、削除された項目がもともとキャッシュにセーブされていた場合にはクライアントキャッシュを修正変更できる。「項目削除」コマンドに応答して、クライアントデバイスは、識別された、または選択された項目をそれぞれのコントロール(例えばリストコントロール)から除去できる(タスク2322)。さらに、削除された項目および/またはその項目の適当な識別子が転送のためにフォーマットされ、クライアント「送信」キューに入れられる(タスク2324)。やがて、削除された項目(および/またはその識別子)がUIサーバに送信される。UIサーバはそのシャドウキャッシュを更新して、クライアントキャッシュの現在のステータスを正確に反映させるのが望ましい。タスク2324の後、プロセスフローは問合せタスク2328に進む。
【0157】
クライアントデバイスは、他のコマンドを(必要があれば)適当な方法で処理するように適切に構成できる(タスク2326)。すなわち、クライアントデバイスは、本明細書で特定的に説明されたコマンドタイプの処理に限定される必要はない。現在のコマンドエントリが処理された後、クライアントデバイスは、まだ他にコマンドエントリが残っているかどうかを判定する(問合せタスク2328)。残っていない場合、プロセス2300は終了する。残っている場合、プロセス2300は、タスク2304でスクリプト内の次のコマンドエントリを取得することから、再び開始できる。このようにして、クライアントデバイスが現在のアクションコントロールを表すスクリプト全体を処理するまで、各コマンドエントリが処理される。
【0158】
システム機能の要約
図24は、分散UIシステム2400の概略図である。図24は、システム2400の動作特徴のいくつかを示している。図24に示す特徴および要素は、図7に関連して上記で説明したいくつかの特徴および要素と同等でもよい。実際、図7および図24は両方とも同じシステムを表し得る。図24は、上記で詳細に説明した技法の簡潔な要約の目的で提示されている。
【0159】
クライアントデバイス2402は、インターネットのような適当なネットワーク2406経由でUIサーバ2404と通信する。クライアントデバイス2402は、表示要素2408およびユーザ入力要素2410(例えば、マウスまたはトラックボールのようなポインティングデバイス、キーボード、キーパッド、タッチスクリーン等)を含む。動作時に、クライアントデバイス2402は、表示要素2408上のユーザインタフェース2412をレンダリングする。ユーザインタフェース2412は、ユーザ入力要素2410経由でエンドユーザによって操作できる。例えば、エンドユーザは、UIサーバ2404とのコネクションを確立すること、ログインデータを入力すること、サーバベースアプリケーションを起動および終了すること、サーバベースアプリケーション間を切り替えること、ユーザインタフェース2412上にレンダリングされたアクションコントロールを操作すること、ユーザインタフェース2412上にレンダリングされた表示コントロールを操作すること、ユーザインタフェース2412に関連付けられたデータ項目を入力および編集すること、ならびにユーザインタフェース2412経由でその他のオペレーションを実行することができる。
【0160】
UIサーバ2404は、クライアントデバイス2402自体から、サードパーティのエンティティもしくはプロセスから、またはあらかじめロードされたデータベースの形態で内部的に、クライアントデバイス2402のデバイス能力2414を取得するのが望ましい。デバイス能力2414は、ユーザインタフェース2412のフォーマットまたは構成に影響を及ぼし、それを制約し、またはその他の方法でそれに関係を持つことができるクライアントデバイス2402の特性またはパラメータを表す。UIサーバ2404は、クライアントデバイス2402が使用するためのさまざまなUIフォーム定義2418をフォーマットし構成するためにUIフォーマット2416を実行する。特定のフォーム定義2418は、クライアントデバイス能力2414と、クライアントデバイス2402にとってアクセス可能な任意の数のサーバベースアプリケーション2420とに基づくか、またはさもなければそれらによって決定される(サーバベースアプリケーション2420は、ユーザインタフェース2412経由でエンドユーザに提示するためにソースデータ項目2422を処理し操作するように構成される)。UIサーバ2404は、ユーザインタフェース2412経由でユーザにアプリケーションリスト2421を提供してもよい。それによりユーザは、素早くサーバベースアプリケーションを選択し、またはアプリケーション間を切り替えることが可能となる。
【0161】
クライアントデバイス2402は、特定のユーザインタフェースをレンダリングするために必要な時、UIサーバ2404からUIフォーム定義2418を取得する。任意の数のUIフォーム定義2418が、クライアントデバイス2402にとってローカルに利用可能なように適切に構成されたクライアントキャッシュ要素2426に記憶できる。(UIサーバではなく)クライアントデバイス2402が、種々のUIレンダリングタスク2424を実行して、表示要素2408上にユーザインタフェース2412を生成しレンダリングする。この点で、UIレンダリングタスク2424は、適当なUIフォーム定義2418をキャッシュ要素2426から検索し、そのフォーム定義に関連する種々のUI要素のフォーマットおよび配置を行い、ならびに任意の数のネイティブUIコントロール、ラベル、またはアイコン2428を組み込む(このようなネイティブUIフィーチャはクライアントデバイスOSに関連する)。また、UIレンダリングタスク2424は、特に、適当なネイティブUIフィーチャが利用可能でない時に、任意の数の「カスタム」UI要素またはフィーチャを現在のユーザインタフェース2412に組み込むことができる。
【0162】
クライアントデバイス2402がUIレンダリングタスク2424を実行するが、ソースデータ項目2422はUIサーバ2404から取得される。この点で、UIサーバ2404は、サーバベースアプリケーション2420のためのソースデータ項目2422の処理および取扱に関連する種々のデータ管理タスク2430を実行する。例えば、データ管理タスク2430は、データ送受信プロセス、データ検索プロセス、UIコントロール内のデータ配置等に関連するものであってよい。
【0163】
データに対するクライアントからの要求に応答して、データ管理タスク2430は、クライアントデバイス2402へダウンロードするためにいくつかのソースデータ項目2422を検索できる。クライアントデバイスは、ダウンロードされたデータ項目を適当なキャッシュ要素2432にセーブし、ユーザインタフェース2412内の種々のUIコントロールを1つまたは複数のデータ項目で埋める。実際の記憶スペース制限により、クライアントデバイス2402は、UIフォームキャッシュ要素2426および/またはデータキャッシュ要素2432に関連する種々のキャッシュ管理タスク2434を実行する可能性がある。好ましい実施形態では、キャッシュ管理タスク2434は、上記のように、必要な時に付加的なソースデータ項目を要求し、空きスペースが必要な時にキャッシュ項目を選択的に除去し、キャッシュがサーバベースアプリケーションの現在のステートと同期化し続けるようにキャッシュを更新し、およびその他のプロセスを実行する。
【0164】
サーバ側では、データ管理タスク2430(および/またはアプリケーション2420)は、UIサーバ2404によって維持されるシャドウキャッシュ2436を更新することに責務を持つことができる。シャドウキャッシュ2436は、クライアントデバイス2402によってキャッシュされているデータ(例えば、ソースデータ項目、フォーム定義等)のコピーまたはそのデータへの参照を含むのが望ましい。シャドウキャッシュ2436により、UIサーバ2404は、クライアントデバイス2402の現在のステータスをモニタし、効率的で効果的な方法でデータの転送を管理することができる。
【0165】
分散UIシステムは、これらの好ましい機能および動作を使用して、伝送帯域幅を節約するような方法で任意の数のサーバベースアプリケーションのためのグラフィカルユーザインタフェースを提供する。さらに、分散UIシステムは、大量の処理パワーおよび/または大きいデータ記憶容量を有するクライアントデバイスとともに使用するように制約される必要がない。その結果として、比較的小さい携帯無線クライアントデバイスが、サーバベースアプリケーションにアクセスしながら、本発明の技法を利用することができる。
【0166】
以上、本発明について、好ましい実施形態を参照して説明した。しかし、本明細書を読んだ当業者には認識されるように、本発明の範囲から逸脱することなく、好ましい実施形態に改変および修正変更をなし得る。これらおよび他の改変または修正変更は、添付の特許請求の範囲に記載されているような本発明の範囲内に含まれると解釈される。
【図面の簡単な説明】
【0167】
【図1】分散ユーザインタフェース(UI)システムのネットワーク配置構成の概略図である。
【図2】分散UIシステムの典型的インプリメンテーションの高レベル概略図である。
【図3】分散UIシステムによりサポートされる電子メールアプリケーションに関連するユーザインタフェースの説明図である。
【図4】図3に示すUIに関連するリストビューコントロールの説明図である。
【図5】図3に示すUIに関連するテキスト編集コントロールの説明図である。
【図6】電子メールアプリケーションに関連する不完全なUIの説明図である。
【図7】分散UIシステムのサーバおよびクライアントコンポーネントの概略図である。
【図8】クライアントキャッシュ構造体の概略図である。
【図9】分散UIプロセスのフローチャート図である。
【図10】分散UIアーキテクチャにより実行できる初期化プロセスのフローチャート図である。
【図11】分散UIアーキテクチャにより実行できるクライアント−サーバ同期化プロセスのフローチャート図である。
【図12】分散UIアーキテクチャにより実行できるアプリケーションおよびフォーム選択プロセスのフローチャート図である。
【図13】クライアントキャッシュメンテナンスプロセスのフローチャート図である。
【図14】サーバ起動プロセスのフローチャート図である。
【図15】データを送信するサーバプロセスのフローチャート図である。
【図16】受信メッセージを処理するサーバプロセスのフローチャート図である。
【図17】データ修正変更を処理するプロセスのフローチャート図である。
【図18】受信データを処理するクライアントプロセスのフローチャート図である。
【図19】UI要素プロセスのフローチャート図である。
【図20】データを送信するクライアントプロセスのフローチャート図である。
【図21】データ表示コントロール操作を処理するクライアントプロセスのフローチャート図である。
【図22】図21に示すフローチャートの続きの図である。
【図23】アクションコントロール操作を処理するクライアントプロセスのフローチャート図である。
【図24】分散UIシステムの概略図である。
Claims (64)
- サーバベースアプリケーションのためのユーザインタフェース(UI)をクライアントデバイスで、UIサーバによって定められたUIフォーマットに従って生成するステップと、
前記サーバベースアプリケーションに関係する複数のソースデータ項目を前記UIサーバから前記クライアントデバイスへ送信するステップと、
前記UIによって使用される少なくとも1つのネイティブUIコントロールを前記複数のソースデータ項目で埋めるステップとを含むことを特徴とする、データ処理方法。 - 前記クライアントデバイスの複数のデバイス能力に基づいて前記UIの特性をフォーマットするステップをさらに含むことを特徴とする、請求項1に記載の方法。
- 前記少なくとも1つのネイティブUIコントロールは前記クライアントデバイスに対するオペレーティングシステムに関連することを特徴とする、請求項1に記載の方法。
- 前記クライアントデバイスにおける提示のためソースデータ項目を操作するために前記サーバベースアプリケーションを前記UIサーバで実行するステップをさらに含むことを特徴とする、請求項1に記載の方法。
- 前記クライアントデバイスのユーザによる前記UIの操作に応答してアクション要求を生成するステップと、
前記アクション要求に応答して前記UIを更新するステップとをさらに含むことを特徴とする、請求項1に記載の方法。 - 前記クライアントデバイスが前記UIサーバから切断されている間に前記クライアントデバイスによりオフラインアクションを実行するステップと、
ひきつづいて、前記クライアントデバイスと前記UIサーバ間にセッションを確立するステップと、
その後、前記クライアントデバイスから前記UIサーバへ前記オフラインアクションを指示するコマンドを送信するステップとをさらに含むことを特徴とする、請求項1に記載の方法。 - 前記サーバベースアプリケーションにより前記コマンドを実行するステップをさらに含むことを特徴とする、請求項6に記載の方法。
- 前記オフラインアクションは前記クライアントデバイスにおける前記ソースデータ項目の少なくとも1つを修正変更し、
前記方法は、前記ソースデータ項目の修正変更を反映するために前記UIサーバによって維持される対応する複数のソースデータ項目を更新するステップをさらに含むことを特徴とする、請求項6に記載の方法。 - 前記UIサーバにおいてシャドウキャッシュを維持するステップをさらに含み、該シャドウキャッシュは、前記UIサーバから前記クライアントデバイスへ送信されるソースデータ項目のリストを含むことを特徴とする、請求項1に記載の方法。
- 前記複数のソースデータ項目を前記クライアントデバイスに常駐するクライアントキャッシュにセーブするステップをさらに含むことを特徴とする、請求項1に記載の方法。
- 前記複数のソースデータ項目を収容するためにクライアントキャッシュ項目を除去するステップをさらに含むことを特徴とする、請求項10に記載の方法。
- 前記除去するステップは、階層的優先方式に従って前記クライアントキャッシュ項目を選択的に除去することを特徴とする、請求項11に記載の方法。
- 前記サーバベースアプリケーションに関係するクライアントアクションコマンドを前記UIサーバから前記クライアントデバイスへ送信するステップと、
前記クライアントデバイスにより前記クライアントアクションコマンドを実行するステップとをさらに含むことを特徴とする、請求項1に記載の方法。 - 前記複数のソースデータ項目は、前記UIサーバにおいて利用可能な比較的大きい量の関連データの一部を表すことを特徴とする、請求項1に記載の方法。
- 前記比較的大きい量の関連データは項目リストを含み、
前記複数のソースデータ項目は前記項目リストのサブセットを表すことを特徴とする、請求項14に記載の方法。 - 前記比較的大きい量の関連データは文書を含み、
前記複数のソースデータ項目は前記文書の一部を表すことを特徴とする、請求項14に記載の方法。 - 前記比較的大きい量の関連データは画像を含み、
前記複数のソースデータ項目は前記画像の一部を表すことを特徴とする、請求項14に記載の方法。 - 前記比較的大きい量の関連データはテキスト本文を含み、
前記複数のソースデータ項目は前記テキスト本文の一部を表すことを特徴とする、請求項14に記載の方法。 - クライアントデバイスの複数のデバイス能力に応答してユーザインタフェース(UI)フォームを定義するステップと、
前記クライアントデバイスにローカルに前記UIフォームを記憶するステップと、
UIサーバによって実行されるサーバベースアプリケーションに関係する複数のソースデータ項目を前記クライアントデバイスにローカルにセーブするステップと、
前記UIフォームを前記複数のソースデータ項目で埋めるステップとを含むことを特徴とする、データ処理方法。 - 前記複数のソースデータ項目を前記UIサーバから前記クライアントデバイスへ送信するステップをさらに含むことを特徴とする、請求項19に記載の方法。
- 前記定義するステップは、前記クライアントデバイスから取得されるデバイス識別子に応答して前記UIサーバによって実行されることを特徴とする、請求項19に記載の方法。
- 前記クライアントデバイスにおける提示のためのソースデータ項目を操作するために前記サーバベースアプリケーションを前記UIサーバで実行するステップをさらに含むことを特徴とする、請求項19に記載の方法。
- 前記クライアントデバイスのユーザによる前記UIフォームの操作に応答してアクション要求を生成するステップと、
前記アクション要求に応答して前記UIフォームを更新するステップとをさらに含むことを特徴とする、請求項19に記載の方法。 - 前記クライアントデバイスが前記UIサーバから切断されている間に前記クライアントデバイスによりオフラインアクションを実行するステップと、
ひきつづいて、前記クライアントデバイスと前記UIサーバ間にセッションを確立するステップと、
その後、前記クライアントデバイスから前記UIサーバへ前記オフラインアクションを指示するコマンドを送信するステップとをさらに含むことを特徴とする、請求項19に記載の方法。 - 前記サーバベースアプリケーションにより前記コマンドを実行するステップをさらに含むことを特徴とする、請求項24に記載の方法。
- 前記オフラインアクションは前記クライアントデバイスにおける前記ソースデータ項目の少なくとも1つを修正変更し、
前記方法は、前記ソースデータ項目の修正変更を反映するために前記UIサーバによって維持される対応する複数のソースデータ項目を更新するステップをさらに含むことを特徴とする、請求項24に記載の方法。 - 前記セーブステップは、前記複数のソースデータ項目を前記クライアントデバイスに常駐するクライアントキャッシュにセーブすることを特徴とする、請求項19に記載の方法。
- 前記複数のソースデータ項目を収容するためにクライアントキャッシュ項目を除去するステップをさらに含むことを特徴とする、請求項27に記載の方法。
- 前記除去するステップは、階層的優先方式に従って前記既存のクライアントキャッシュ項目を選択的に除去することを特徴とする、請求項28に記載の方法。
- 前記クライアントデバイスによってレンダリングされた表示コントロールの操作に応答して前記UIフォームを更新するステップと、
前記表示コントロールの前記操作によりデータ要求コマンドをトリガした場合に複数の付加的ソースデータ項目を前記UIサーバから要求するステップと、
前記クライアントキャッシュにセーブされているソースデータ項目を前記複数の付加的ソースデータ項目で置き換えるステップとをさらに含むことを特徴とする、請求項27に記載の方法。 - 前記クライアントデバイスによってレンダリングされた表示コントロールの操作に応答して前記UIフォームを更新するステップと、
前記表示コントロールの前記操作に応答して付加的ソースデータ項目を前記クライアントキャッシュから検索するステップと、
前記付加的ソースデータ項目を前記UIフォームに表示するステップとをさらに含むことを特徴とする、請求項27に記載の方法。 - 前記サーバベースアプリケーションに関係するクライアントアクションコマンドを前記UIサーバから前記クライアントデバイスへ送信するステップと、
前記クライアントデバイスにより前記クライアントアクションコマンドを実行するステップとをさらに含むことを特徴とする、請求項19に記載の方法。 - 前記定義するステップは、前記サーバベースアプリケーションに基づいて前記UIフォームを定義することを特徴とする、請求項19に記載の方法。
- 前記定義するステップは、前記クライアントデバイスにローカルに記憶されている少なくとも1つのネイティブUIコントロールで前記UIフォームを定義することを特徴とする、請求項19に記載の方法。
- 前記UIサーバは、前記UIフォームに関連する総数のソースデータ項目にアクセスするものであり、
前記セーブするステップ中にセーブされる前記複数のソースデータ項目は前記総数のソースデータ項目の一部を表すようにしたことを特徴とする、請求項19に記載の方法。 - 前記UIサーバが付加的ソースデータ項目に対する要求を受信するステップと、
前記UIサーバが前記要求に応答して前記総数のソースデータ項目のうちの後続部分を前記クライアントデバイスへ送信するステップとをさらに含むことを特徴とする、請求項35に記載の方法。 - 前記UIサーバは、前記UIフォームの操作に応答して前記クライアントデバイスから前記要求を受信することを特徴とする、請求項36に記載の方法。
- クライアントデバイスにおける提示のためのソースデータ項目を操作するように構成されたサーバベースアプリケーションをユーザインタフェース(UI)サーバで実行するステップと、
前記クライアントデバイスのユーザにデータ項目を提示することが可能なUIフォームを前記クライアントデバイスに表示するステップと、
前記クライアントデバイスのユーザによる前記UIフォームの操作に応答してアクション要求を生成するステップと、
前記アクション要求に応答して前記UIフォームを更新するステップとを含むことを特徴とする、データ処理方法。 - 前記アクション要求を前記クライアントデバイスから前記UIサーバへ送信するステップと、
前記UIサーバにより前記アクション要求を処理するステップとをさらに含むことを特徴とする、請求項38に記載の方法。 - 前記サーバベースアプリケーションに関係する複数のソースデータ項目を前記UIサーバから前記クライアントデバイスへ送信するステップをさらに含み、該送信するステップは前記アクション要求に応答して実行されることを特徴とする、請求項38に記載の方法。
- 前記複数のソースデータ項目は、前記UIサーバにおいて利用可能な比較的大きい量の関連データの一部を表すことを特徴とする、請求項40に記載の方法。
- 前記UIフォームの初期操作に応答して、前記UIサーバから前記複数のソースデータ項目を要求するステップと、
ひきつづいて、前記UIフォームの後続操作に応答して、前記UIサーバから複数の付加的ソースデータ項目を要求するステップとをさらに含み、
前記複数の付加的ソースデータ項目は、前記の比較的大きい量の関連データのうちの第2部分を表すことを特徴とする、請求項41に記載の方法。 - 前記UIサーバが、新しい、削除された、または修正変更されたデータ項目を表す情報を受信するステップと、
前記UIサーバが、前記新しい、削除された、または修正変更されたソースデータ項目を表すプッシュデータを前記クライアントデバイスへ送信するステップとをさらに含むことを特徴とする、請求項38に記載の方法。 - 前記UIサーバが、前記プッシュデータに対応するプッシュ通知を前記クライアントデバイスへ送信するステップをさらに含むことを特徴とする、請求項43に記載の方法。
- クライアントデバイスの複数のデバイス能力に基づいてサーバベースアプリケーションに対するユーザインタフェース(UI)フォーム定義を生成するステップと、
前記UIフォーム定義に対応するUIフォームをレンダリングするように前記クライアントデバイスに命令するステップと、
前記クライアントデバイスのオペレーティングシステムに関連する少なくとも1つのネイティブUIコントロールで前記UIフォームをレンダリングするステップと、
前記サーバベースアプリケーションに関係する複数のデータ項目をUIサーバから前記クライアントデバイスへ送信するステップと、
前記複数のデータ項目を前記少なくとも1つのネイティブUIコントロールにおいて表示するステップとを含むことを特徴とする、データ処理方法。 - 前記UIフォームに含まれるUIコントロールの操作に対応するコマンドスクリプトを指定するステップをさらに含み、該コマンドスクリプトは前記クライアントデバイスによる実行のために構成されたことを特徴とする、請求項45に記載の方法。
- 前記クライアントデバイスにより、前記クライアントデバイスにおける前記UIコントロールの操作に応答して前記コマンドスクリプトを実行するステップをさらに含むことを特徴とする、請求項46に記載の方法。
- 前記複数のデータ項目を前記クライアントデバイスに常駐するクライアントキャッシュにセーブするステップをさらに含むことを特徴とする、請求項45に記載の方法。
- 前記表示するステップの前に、前記複数のデータ項目を前記クライアントキャッシュから検索するステップをさらに含むことを特徴とする、請求項48に記載の方法。
- 前記少なくとも1つのネイティブUIコントロールの操作に応答して、前記UIサーバから前記複数のデータ項目を要求するステップをさらに含むことを特徴とする、請求項45に記載の方法。
- 前記複数のデータ項目は、前記UIサーバにおいて利用可能な比較的大きい量の関連データの一部を表すことを特徴とする、請求項45に記載の方法。
- 前記少なくとも1つのネイティブUIコントロールの初期操作に応答して、前記UIサーバから前記複数のデータ項目を要求するステップと、
ひきつづいて、前記少なくとも1つのネイティブUIコントロールの更なる操作に応答して、前記UIサーバから複数の付加的データ項目を要求するステップとをさらに含み、
前記複数の付加的データ項目は、前記比較的大きい量の関連データのうちの第2部分を表すことを特徴とする、請求項51に記載の方法。 - ユーザインタフェース(UI)フォーム定義に従ってサーバベースアプリケーションのためのUIを生成し、該UIによって使用される少なくとも1つのネイティブUIコントロールをソースデータ項目で埋めるように構成されたUIモジュールを含むクライアントデバイスアーキテクチャと、
前記サーバベースアプリケーションに関係する複数のソースデータ項目を前記クライアントデバイスアーキテクチャへ送信するように構成されたサーバ送信モジュールを含むUIサーバアーキテクチャとを含み、
前記UIモジュールは、前記UIコントロールを前記複数のソースデータ項目で埋めるように構成されていることを特徴とする、分散ユーザインタフェース(UI)アーキテクチャ。 - 前記UIサーバアーキテクチャは、前記クライアントデバイスアーキテクチャを含むクライアントデバイスの複数のデバイス能力に基づいて前記UIフォーム定義を生成するUIフォーマットモジュールをさらに含むことを特徴とする、請求項53に記載の分散UIアーキテクチャ。
- 前記クライアントデバイスアーキテクチャは、前記複数のソースデータ項目を記憶するように構成されたクライアントキャッシュをさらに含むことを特徴とする、請求項53に記載の分散UIアーキテクチャ。
- 前記UIサーバアーキテクチャは、前記クライアントキャッシュの内容を表すデータを記憶するように構成されたシャドウキャッシュをさらに含むことを特徴とする、請求項55に記載の分散UIアーキテクチャ。
- 前記クライアントキャッシュは、前記UIフォーム定義を記憶するようにさらに構成されたことを特徴とする、請求項55に記載の分散UIアーキテクチャ。
- 前記複数のソースデータ項目は、前記UIサーバアーキテクチャに利用可能な比較的大きい量の関連データの一部を表すことを特徴とする、請求項53に記載の分散UIアーキテクチャ。
- クライアント処理アーキテクチャ、および互換性のある通信要素と通信するように構成されたクライアント通信要素を有するクライアントデバイスと、
サーバ処理アーキテクチャ、および前記クライアント通信要素と通信するように構成されたサーバ通信要素を有するUIサーバとを含み、
前記クライアント処理アーキテクチャは、
デバイス識別子を前記UIサーバへ送信し、
UIフォーム定義に従ってUIフォームを生成し、そして、
サーバベースアプリケーションに関連する複数のソースデータ項目で少なくとも1つのネイティブUIコントロールを埋めるように構成され、
前記サーバ処理アーキテクチャは、
前記デバイス識別子を前記クライアントデバイスから受信し、
前記デバイス識別子に応答して前記UIフォーム定義を識別するように構成され、そして、
前記UIフォームでレンダリングするために前記複数のソースデータ項目を前記クライアントデバイスへ送信するように構成されたことを特徴とする、分散ユーザインタフェース(UI)システム。 - 前記クライアントデバイスは、UI特性に関係する複数のデバイス能力を含み、
前記サーバ処理アーキテクチャは、前記複数のデバイス能力に基づいて前記UIフォーム定義を生成するようにさらに構成されたことを特徴とする、請求項59に記載のシステム。 - 前記クライアントデバイスは、前記複数のソースデータ項目を記憶するように構成されたクライアントキャッシュをさらに含むことを特徴とする、請求項59に記載のシステム。
- 前記クライアントデバイスは、前記UIフォーム定義を記憶するように構成されたクライアントキャッシュをさらに含むことを特徴とする、請求項59に記載のシステム。
- 前記複数のソースデータ項目は、前記UIサーバにおいて利用可能な比較的大きい量の関連データの一部を表すことを特徴とする、請求項59に記載のシステム。
- 前記クライアント処理アーキテクチャは、前記UIフォームの初期操作に応答して、前記UIサーバから前記複数のソースデータ項目を要求するようにさらに構成され、
前記クライアント処理アーキテクチャは、ひきつづいて、前記UIフォームのさらなる操作に応答して、前記UIサーバから複数の付加的ソースデータ項目を要求するようにさらに構成され、
前記複数の付加的ソースデータ項目は、前記の比較的大きい量の関連データのうちの第2部分を表すことを特徴とする、請求項63に記載のシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2002/000067 WO2002065280A2 (en) | 2001-02-14 | 2002-01-08 | Platform-independant distributed user interface system architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005506595A true JP2005506595A (ja) | 2005-03-03 |
Family
ID=34374675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002564734A Pending JP2005506595A (ja) | 2002-01-08 | 2002-01-08 | プラットフォーム独立の分散ユーザインタフェースのシステムアーキテクチャ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005506595A (ja) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007157050A (ja) * | 2005-12-08 | 2007-06-21 | Softbank Mobile Corp | 遠隔操作方法、通信システム、移動通信端末装置及び遠隔サーバ |
JP2009505300A (ja) * | 2005-08-19 | 2009-02-05 | グーグル インク. | プラグインモジュールからの情報コンテンツをユーザーインターフェース内で表示するためのソフトウエアアーキテクチャ |
JP2009512921A (ja) * | 2005-10-15 | 2009-03-26 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 仮想クライアント・コンピューティング環境内でのコマンドのハードウェア処理 |
JP2013229028A (ja) * | 2012-04-25 | 2013-11-07 | Vmware Inc | リモートデバイスのためのユーザインターフェイス仮想化 |
JP2015517165A (ja) * | 2012-04-30 | 2015-06-18 | マイクロソフト コーポレーション | ユーザーインターフェイスウェブサービス |
US9542080B2 (en) | 2012-04-25 | 2017-01-10 | Vmware, Inc. | User interface virtualization of context menus |
US9772986B2 (en) | 2013-10-24 | 2017-09-26 | Vmware, Inc. | Transforming HTML forms into mobile native forms |
US10254929B2 (en) | 2011-08-25 | 2019-04-09 | Vmware, Inc. | User interface virtualization techniques |
US10621276B2 (en) | 2013-10-24 | 2020-04-14 | Wmware, Inc. | User interface virtualization for web applications |
-
2002
- 2002-01-08 JP JP2002564734A patent/JP2005506595A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009505300A (ja) * | 2005-08-19 | 2009-02-05 | グーグル インク. | プラグインモジュールからの情報コンテンツをユーザーインターフェース内で表示するためのソフトウエアアーキテクチャ |
JP2009512921A (ja) * | 2005-10-15 | 2009-03-26 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 仮想クライアント・コンピューティング環境内でのコマンドのハードウェア処理 |
US8266232B2 (en) | 2005-10-15 | 2012-09-11 | International Business Machines Corporation | Hardware processing of commands within virtual client computing environment |
JP2007157050A (ja) * | 2005-12-08 | 2007-06-21 | Softbank Mobile Corp | 遠隔操作方法、通信システム、移動通信端末装置及び遠隔サーバ |
US10254929B2 (en) | 2011-08-25 | 2019-04-09 | Vmware, Inc. | User interface virtualization techniques |
JP2013229028A (ja) * | 2012-04-25 | 2013-11-07 | Vmware Inc | リモートデバイスのためのユーザインターフェイス仮想化 |
US9542080B2 (en) | 2012-04-25 | 2017-01-10 | Vmware, Inc. | User interface virtualization of context menus |
JP2015517165A (ja) * | 2012-04-30 | 2015-06-18 | マイクロソフト コーポレーション | ユーザーインターフェイスウェブサービス |
US9772986B2 (en) | 2013-10-24 | 2017-09-26 | Vmware, Inc. | Transforming HTML forms into mobile native forms |
US10621276B2 (en) | 2013-10-24 | 2020-04-14 | Wmware, Inc. | User interface virtualization for web applications |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7155681B2 (en) | Platform-independent distributed user interface server architecture | |
US20080082603A1 (en) | Platform-independent distributed user interface system architecture | |
US20080082604A1 (en) | Platform-independent distributed user interface client architecture | |
US20230006959A1 (en) | Title provisioning for event notification on a mobile device | |
EP2487871A1 (en) | Method and system for transmission of application status between different devices | |
JP2008515082A (ja) | 遠隔装置における視聴のためのクリップを供給するための方法 | |
JPH11134277A (ja) | クライアント側非同期フォーム管理方法および装置 | |
US20030065715A1 (en) | System and method of a wireless thin-client, server-centric framework | |
CN111064771B (zh) | 一种网络请求处理方法及系统 | |
WO2004084023A2 (en) | System and method for implementing virtual mobile messaging services | |
WO2004084011A2 (en) | System and method for implementing communication middleware for mobile 'java' computing | |
JP2005506595A (ja) | プラットフォーム独立の分散ユーザインタフェースのシステムアーキテクチャ | |
Book et al. | An Instant Message-Driven User Interface Framework for Thin Client Applications | |
TW200404449A (en) | System and method for implementing virtual mobile messaging services | |
TW200404220A (en) | System and method for implementing communication middleware for mobile "java" computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050105 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070726 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071105 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080131 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080207 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080508 |