(57)【特許請求の範囲】
【請求項１】
コンピュータ化システムがデータネットワーク経由で提示されるＩＴ向けサーバベースのウェブアプリケーションを使用することを可能にするための方法であって、
前記データネットワーク経由でサーバと端末のクライアント階層の間のデータ通信を確立すること；
アプリケーションを前記サーバにインストールすること；
アプリケーションとクライアント端末との間を仲介するために、汎用フレームワークスクリプトを前記クライアント階層に１回ダウンロードすること、
クライアント階層で、汎用フレームワークスクリプトを用いて、
事象と、異なるウェブ向けアプリケーションのアプリケーションオブジェクトを表わす対応するＩＤタグを関連付け、
タイムスタンプを各事象に割り当て、
事象を待ち行列に入れ、重大事象が発生したときにだけ、事象の待ち行列の形で前記アプリケーションにそれらを送信すること；
サーバで、
前記対応するＩＤタグを用いて、前記事象と前記アプリケーションオブジェクトとの間の関連付けによって、事象をアプリケーションアクションに変換し、
各受信事象のタイムスタンプと前記アプリケーションオブジェクトの最後の更新タイムスタンプとを比較することによって前記クライアントのアプリケーションオブジェクトがサーバで更新されるか検査し、
前記クライアントのアプリケーションオブジェクトが更新される場合に、アプリケーション更新を反映して関連スクリーン・レイアウト・オブジェクトをクライアント階層に更新させるための更新コマンドのみを含むデータパケットを用意し、
前記データパケットを前記クライアント階層に更新として送信すること；および
クライアント階層のスクリーン・レイアウト・オブジェクトを、前記汎用フレームワークスクリプトによる前記データパケットの内容に従って、プレゼンテーション層によって更新すること
を含む方法。
【請求項２】
クライアント階層は、任意のオペレーティングシステムの下で動作する任意のウェブブラウザである、請求項１に記載の方法。
【請求項３】
プレゼンテーション層は、汎用フレームワークスクリプトのコードから独立しており、
−  ＤＨＴＭＬ；
−  ＷｉｎＦｏｒｍｓ（登録商標）；
−  マイクロソフト（登録商標）Ｓｉｌｖｅｒｌｉｇｈｔ（商標）；または
−  ＸＭＬコードを送受信することのできる任意の他のプレゼンテーション層によってサポートされることができるもの
の群から選択される、請求項１に記載の方法。
【請求項４】
汎用フレームワークスクリプトは、プレゼンテーション層のレイアウト技術を作動させるコードである、請求項１に記載の方法。
【請求項５】
サーバとクライアント端末との間のデータ交換は、ＸＭＬのみを用いて実行される、請求項１に記載の方法。
【請求項６】
汎用フレームワークスクリプトは、クライアント端末通信プロトコルを管理する、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はウェブアプリケーションに関する。さらに詳しくは、本発明は、インターネットなどのデータネットワーク経由で提示される、ＩＴ（情報技術）向けサーバベースのウェブアプリケーションを作成するための方法およびシステムに関する。
【０００２】
定義、頭字語、および略語
本明細書全体にわたって、以下の定義を採用する。
【０００３】
事象：アプリケーション上でユーザが実行するアクションである。
【０００４】
重大事象：（遅延時間で送信することのできる事象とは対照的に）クライアントおよびサーバの状態を同期させるためにサーバに即時に送信すべき事象である。
【０００５】
一意の事象：最終的にサーバに送信される事象である。
【０００６】
蓄積事象：次の重大事象が発生するまでクライアント事象待ち行列に格納されるクライアント側の事象である。次いで重大事象が発生すると、クライアントは前回の重大事象と今回との間に発生した事象の待ち行列全体を送信する。
【０００７】
クライアント：またはクライアント階層は、サーバに接続されたユーザ端末（例えばウェブページ）である。
【０００８】
コントロール：表示可能なアプリケーション構成要素（例えばボタン、フィールドなど）である。各コントロールは定義された操作を実行することができる（例えばキーボード入力を得る、押す、など）。
【０００９】
コンテナ：コントロールを含むウィンドウである。
【００１０】
スプリッタ：２つのドック／アンカコントロール間に配置され、それをドラッグすることによって相互に相手のためにこれらのコントロールのサイズ（幅または高さ）の比率を変化させることのできる、（水平方向または垂直方向いずれかの）サイドパネル状コントロールである。
【００１１】
専用カーネル：本発明の文脈において、専用カーネルとは、クライアントがサーバ側のアプリケーションに初めてアプローチしたときに、クライアントによって１回だけダウンロードされる小さい静的コード片である。この専用カーネルはクライアント側のブラウザとアプリケーションとの間を仲介し、次のことに責任を負う。
−  サーバとの間であらゆる種類のデータを送受信すること。
−  ＸＳＬ（ＸＭＬ文書をフォーマットするための言語：例えばＸＭＬ文書に記載されたデータをウェブページにどのように提示すべきかを示す）変換（ＸＭＬ文書を、その後ＸＳＬスタイルシートに従って提示することのできる別のデータ構造に、どのように再編成すべきかを示す）またはいずれかの他のプレゼンテーション層のレイアウト技術を作動させること。
−  ユーザ事象（例えばキーボード押下げおよびマウス事象）を集約し、非重大事象待ち行列を蓄積し、いつでも必要なときにサーバにこれらの事象待ち行列を送信すること。
−  クライアント言語コードによって達成されるクライアント側のコントロール挙動を反映させること。
【００１２】
アプリケーション・オブジェクト・インデックス：アプリケーション・オブジェクト・インスタンスのコンポーネントＩＤ（識別）を保持するアプリケーションオブジェクトの集合である。このインデックスは、トリガされた事象オブジェクト所有者をそのＩＤで検索し、かつマッピングされたオブジェクトインスタンスに事象処理責任を受け渡すことによって、クライアントから送信された事象待ち行列を処理するために使用される。これは、インスタンスＩＤを用いて標準ＸＭＬ構文で表現することのできる、クライアントおよびサーバ・オブジェクト・インスタンス間の弱い依存性を可能にする。
【００１３】
アプリケーション・オブジェクト・ツリー：アプリケーションＧＵＩ（グラフィカル・ユーザ・インタフェース）構造を表わす階層ツリー構造のアプリケーションオブジェクトを含むオブジェクトツリーである。
【００１４】
アプリケーションルート：それがアプリケーション・オブジェクト・ツリーのエントリポイントとして働くように、それを直接作動させることによってアクセス可能な設定ページ名に結合されたアプリケーションオブジェクトである。アプリケーションルートは、（例えば本発明をウェブプラットフォームで使用する場合に）ブラウザにＵＲＬを打ち込むことによって、直接ブラウズ可能である。
【００１５】
メイン・フォーム・ウィンドウ：ユーザがこの技術によって処理されたＵＲＬにアクセスしたときに見る最初のウィンドウである。デスクトップアプリケーションを始動したときに開く最初のメインウィンドウに相当する。
【００１６】
クライアント・タイム・スタンプ：最後の更新時間を表わすクライアント側のオブジェクトのタイムスタンプである。
【００１７】
要求タイムスタンプ：ブラウザがサーバから更新コマンドを最後に受け取った時である、現在のブラウザ状態を示すタイムスタンプである。
【００１８】
タイムスタンプ：所与のアプリケーションオブジェクトの最後の更新時間を表わす数値である。
【００１９】
一意の蓄積事象：古い事象が失効したので、同一ＩＤを有する事象に取って代わる新しい事象である。
【００２０】
更新コマンド：アプリケーション・オブジェクト・ツリーとサーバコントロール状態を同期させるためにブラウザが実行する、１組のＸＭＬ（拡張マークアップ言語）要素である。
【００２１】
ウィンドウ構造：アプリケーションの現在のウィンドウ構造を表わす１組のＸＭＬ要素である。ウィンドウ構造は、サーバ階層の状態（サーバにおける現在のＵＩ状態）に従ってクライアント階層の状態（現在描かれているＵＩ）を更新するために使用される。
【００２２】
ＸＳＬＴテンプレート：クライアント階層（例えばウェブブラウザ）に反映されるコントロールを描くためにデータに対して行わなければならない変換を記載する、１組のＸＳＬＴ（拡張スタイルシート言語変換）である。
【００２３】
背後のＸＭＬデータ：クライアントがアプリケーションインタフェースの状態を格納するために使用するＸＭＬ（拡張マークアップ言語）である。アプリケーションインタフェース状態は全てのＵＩコントロールのプロパティを保持し、クライアントがそのコントロール状態をサーバの状態に従って同期させるために必要な全ての情報、例えばコントロールの色または大きさ、それが示すテキストなどを含む。これは、ＸＭＬの背後にあるデータに対してＸＳＬＴ（テンプレート変換）を用いてＵＩの任意の部分を再描画する能力をクライアント階層に提供する。
【背景技術】
【００２４】
今日、ＨＴＭＬ（ハイパーテキストマークアップ言語）は著作権フリーであり、全ての開発者が利用することができ、かつさらに全てのプログラミング環境によってサポートされる世界標準言語である。ナビゲーション用のリンクを提供する能力およびそのマルチメディアサポート能力（音声、画像、動画など）は、世界がＨＴＭＬを業界の主流として採用する起因となった。また、近年、ＤＨＴＭＬ（ダイナミックＨＴＭＬ）言語が提示された。ＤＨＴＭＬは、静的マークアップ言語（例えばＨＴＭＬ）、クライアント側スクリプト言語（例えばＪａｖａＳｃｒｉｐｔ（商標））、プレゼンテーション定義言語（カスケーディングスタイルシート、ＣＳＳ）、およびドキュメントオブジェクトモデル（プログラミングインタフェース）の組合せを使用することによって対話型の動画ウェブサイトを作成するために一緒に使用される技術の集合である。したがってＤＨＴＭＬ言語は、インターネットユーザとの対話性の向上を可能にした。あらゆる情報駆動階層へのインターネットの浸透、およびユーザ間のインターネットの急速な広がりは、ビジネスおよび商業部門による彼らのユーザとの通信手段としての需要の拡大と共に、より動的かつより強力なリモートサーバ／クライアント向けインターネットアプリケーションの必要性をもたらした。これは、ＡＳＰ（アプリケーション・サービス・プロバイダ）、ＰＨＰ（ハイパーテキストプリプロセッサ）、および以前は静的であったページを動的に作成するような新しいユーティリティを提示する他のウェブアプリケーション言語／環境の導入につながった。これらの新しい環境は、従来のＨＴＭＬページからデータを暴露しかつ受信する可能性をもたらした。
【００２５】
ＩＴ（情報技術）ウェブ向けアプリケーションのサーバ−クライアント性能向上への要求は現在、より精巧なＩＴアプリケーションに対して高まる要求に応えることができていない。ＩＴの使用における主要な仲介者になってきたインターネットの著しい進化にもかかわらず、これらの使用をサポートする基本原理は２０年前と変わっていない。今日、ＡＳＰ．ＮＥＴ（アクティブ・サーバ・ページ）およびＪＳＰ（Ｊａｖａ（登録商標）サーバページ）は、より良好な「サーバ側」開発環境を提供している。クライアント側では、サーバ側ページを呼び出すスクリプトを含むＨＴＭＬページ、すなわちページは、サーバ側の各アクション後に完全に再構築され、その結果、実行が遅くかつ限定される。さらに、スクリプトに大きく依存するウェブアプリケーションを使用することは、ウェブ開発者の主要な慣例になっている。ウェブアプリケーションのニーズは、コンピュータデスクトップのニーズにますます似てきている。デスクトップアプリケーションによってのみサポートされてきたより多くの特徴が、ウェブアプリケーションにとって不可欠になってきた。この要求は、帯域幅すなわちウェブトランスポーテーション資源の点で高い代償を伴ってきた。クライアント側スクリプトはますます複雑になり始め、ウェブアプリケーションを設計および保守することが難しくなった。加えて、そのようなアプリケーションの性能上の問題は非常に一般的である。スクリプトはコードアクセス制限が無く、オブジェクト指向プログラミング概念が仮にあったとしても乏しいので、すぐに混乱してしまう。
【００２６】
また、スクリプトはクライアントブラウザ（例えばマイクロソフト（登録商標）インターネットエクスプローラ）上で動作するので、セキュリティの問題は現在のウェブ向け技術の大きな問題の１つとして残っている。ウェブアプリケーション用のデータプロバイダであるページは保護することが難しいので、ユーザのブラウザに埋め込まれたスクリプト言語の使用は、ウェブアプリケーションを悪意ある改ざんに曝すことになった。データの大部分はユーザ側で（サーバ側ではなく）ブラウザによって処理され、したがって必要以上のデータが暴露される。
【００２７】
さらに、ＡＳＰ．ＮＥＴおよびＪＳＰは、現在のＩＴのニーズに十分に対処することができないので時代遅れになった。それらは、新しいインフラストラクチャ・プログラミング・ユーティリティ、新しいモデリングおよび再使用能力（再使用能力とはいったんコンポーネントを作成し、それらを後で複数回使用する能力である）などの強力なプログラミング能力を導入したが、それでも基本的概念は変わらず、上述した同じ問題（すなわち性能およびユーザ経験、セキュリティ、開発および保守の複雑さ）を反映する。これらの環境のページベースの手法は、（ビジネス論理を少数の言語および場所に分散して、多数のウィンドウ管理コードをクライアントスクリプト言語で書かなければならないため）ウィンドウを開きあるいはフレーム間で対話するためのサーバ側サポートが無いので、ウェブアプリケーションを開発するには不十分な環境をもたらしている。ユーザインタフェースの部分的更新のための開発サポートは限定されており、開発者には部分的更新を明示的に管理する必要性が残され、開発プロセスの生産性は低下する。加えて、現在のＩＴシステムの帯域幅は制約されており、より大きい処理資源を必要とする複雑化したニーズをサポートすることができない。これは貴重なユーザの時間の浪費につながる。各アクションが異なるページを呼び出し、それがサーバによって完全に再現され、かつブラウザによって完全にレンダリングされるといった、複雑化するアクションはブラウザのスクリプト実行を遅速化する。現在、クライアント側とサーバ側との間で転送されるデータの内容をどうするかを決定するのは開発者だけである。この事実はデータを非常に一貫性が無く変則的なものにする。すなわち、データはプレゼンテーションデータ、ビジネスデータ、ならびにあらゆる種類のセキュリティトークンおよび種々の他のタイプのデータを含むことができる。さらに、データは任意のフォーマット、例えばプレーンテキスト、ＸＭＬ、または任意の他のフォーマットにすることができる。それぞれの開発者およびさらにそれぞれのプロジェクトが、サーバに送受信されかつサーバから返されるデータおよびフォーマットにそれぞれの非常に異なるプロトコルを使用することがあり得る。開発者は多くのインターネット言語を学習しなければならず、それはかなりの訓練を必要とし、したがって適格者を見つけることは難しい。
【００２８】
デスクトップアプリケーション開発環境では、コントロールの配置はドッキングとアンカリングに分割される。ドッキングとは、コントロールのリストを取り込み、それらの各々に５つのドッキング挙動（左、上、右、下、およびフィル）の１つを与え、これらの定義を用いてスクリーンレイアウトを作成する能力である。各コントロールは独立しているが、他のコントロールに対して重なり合うことなく配置される。そうすることで、１つを更新するときに全てのコントロールの配置を更新せずにすむ。アンカリングは、コントロールのエッジ（その１つ、幾つか、または全部）からそのコンテナに結合される仮想ストリングを定義する能力である。コントロールのコンテナのサイズ変更、移動、または両方が行われるときに、アンカリングされるコンテナのサイドパネルとアンカリングしたコントロールのサイドパネルとの間の距離は、コントロールがアンカリングしたサイドパネル上で一定に維持される。この結果、対向するサイドパネル（例えば左＋右および／または上＋下）にアンカリングしたときに、コントロールのサイズ変更を生じることができる。
【００２９】
従来のウェブアプリケーション開発環境は、ページコンテンツを作成するためのＨＴＭＬ要素を表わすオブジェクトモジュール（ターゲットコンピュータのマシンコードによるアセンブラまたはコンパイラの出力。最終的実行可能なプログラムを作成するために、オブジェクトモジュールは他のモジュールとリンクしなければならない）をプログラマに提供する。
【００３０】
ページレイアウトは次の３つのツールを用いて行われる。
１．ＨＴＭＬテーブル（これはウェブのテキストを含むことができ、ＨＴＭＬ要素をレイアウトするために使用することもできる）。
２．ＣＳＳ（カスケーディングスタイルシート）レイアウト定義などのフローコントロールスタイル。
３．他の表示要素に関係なく、要素の正確な位置を指定することによって任意のブラウザ表示要素（すなわちボタン、リストなど）の配置を可能にする絶対位置決め。アプリケーションとして働くべきウェブサイトを開発するときに、この方法論を使用することは非常に難しい。
【００３１】
上記は全て、ウェブアプリケーション設計の複雑な作業環境を説明している。それはまた、これらのアプリケーションの使用の欠点および限界をも提示している。
【００３２】
最も最近の先行技術（公開第２００３／０２００２５４号Ａ１）では、アプリケーションタスクはサーバとクライアントとの間で分割される。このアプリケーションを使用するクライアントは、サービスプログラム（ＪＡＶＡ（登録商標）アプレット）をインストールしなければならない。それは、一部の処理タスクがクライアント側で行われることを意味する。それはユーザをインストール認可コンピュータのみ、ならびに特定のオペレーティングシステムおよびウェブブラウザに限定する。それはまた、オペレーティングシステムおよびウェブブラウザの更新に対する適応性を低下させる。アプリケーション処理タスクの一部を有するクライアント側の別の不利点は、通信方法にある。おそらく重要な情報を含むデータパッケージは、クライアント側からサーバへ、かつその逆にサーバからクライアント側へ送信されなければならない。そのような通信は、データサイズ（帯域幅）および時間の点では理想から程遠い。それはまた、重要な情報がグローバルネットワークに接続されたクライアント側で入手可能であるため、セキュリティ上のリスクをも保有する。
【００３３】
マイクロソフトの「リモートデスクトップコネクション」は、データネットワークを介してサーバ／コンピュータ上のアプリケーションを使用することを可能にするアプリケーションである。アプリケーションは実際にはサーバ／コンピュータ上で動作し、ユーザは、ネットワークに接続された他のコンピュータ／端末を使用して、アプリケーションを操作することができる。ここで使用される方法は、スクリーンをアプリケーションのビットマップとしてユーザ／クライアントに送信する。クライアントはキーボードおよびマウス事象を返送する。サーバから送信されるデータは、サーバ上のアプリケーションのスクリーンキャプチャ（ビットマップ）であり、サーバで生成される正確なスクリーンディスプレイを反映する。ユーザ側で滑らかな画像を得るために、ビットマップはサーバから頻繁に送信される。データパッケージは大きく、かつ伝送速度は高い。これはネットワークにおける大量の活動および多くのネットワーク資源（帯域幅）の消費を引き起こす。このアプリケーションは、サーバおよびクライアントの両方が同じオペレーティングシステムを使用することを要求する。クライアント側は、アプリケーションをサポートするためにアプレットをインストールすることも要求される。
【００３４】
本発明の主な目的は、こうしたあらゆる制約にもかかわらず、ウェブアプリケーションの設計および使用両方のこれらの全ての欠点を克服することである。換言すると、設計の複雑さおよびウェブトランスポーテーション資源の同じ状況を使用して、本発明は、ＩＴ向けサーバベースのウェブアプリケーションの比較的単純な設計の方法およびシステム、ならびにより効率的かつセキュアな使用を可能にする。
【００３５】
本発明の目的は、ＩＴ向けサーバベースのウェブアプリケーションを提供するためのシステムおよび方法を開示することである。
【００３６】
本発明のさらに別の目的は、デスクトップアプリケーションのプログラミングと同様にサーバベースのウェブアプリケーションをプログラムすることを可能にする方法およびシステムを提供することである。
【００３７】
本発明のさらに別の目的は、統合オブジェクトモデルが、ウェブアプリケーションを複数のウィンドウで取り扱い、サーバとブラウザとの間の通信を管理し、アプリケーション事象（事象待ち行列）を送信し、必要なときにＵＩ（ユーザインタフェース）を更新するコマンドを返すなど、全てのアプリケーションのニーズに対処する、方法およびシステムを提供することである。
【００３８】
本発明のさらに別の目的は、クライアントスクリプト言語または任意の他のウェブ言語、例えばＪａｖａＳｃｒｉｐｔを使用しない方法およびシステムを提供することである。
【００３９】
本発明のさらに別の目的は、フルオブジェクト指向プログラミングおよびコンパイル能力をサポートするＣ＃、ＶＢ．ＮＥＴ、またはいずれかの他の言語など単一の組織化されたオブジェクト指向言語を開発者が使用し、開発者の一般的ウェブ設計言語の知識の必要性を無くした、方法およびシステムを提供することである。
【００４０】
本発明のさらなる目的は、全ての処理がサーバ側で実行され、ユーザのブラウザは入力コマンドを受信し、かつそれに応じて出力を表示するためにだけ使用される、方法およびシステムを提供することである。
【００４１】
本発明のさらなる目的は、データ伝送能力が先行技術と比較して十分に縮小された、方法およびシステムを提供することである。
【００４２】
本発明のさらなる目的は、先行技術と比較して著しく高いセキュリティレベルが達成される、方法およびシステムを提供することである。
【００４３】
本発明のさらなる目的は、ウェブページ（ユーザのコンピュータスクリーン／ディスプレイに提示される）の設計が１回だけロードされ、前記ウェブページに提示されたデータを更新するために再度それをリロードする必要の無い、方法およびシステムを提供することである。
【００４４】
本発明のさらに別の目的は、クライアント側で比較的低い帯域幅および処理資源が使用される、方法およびシステムを提供することである。
【００４５】
本発明の目的は、ＩＴ向けサーバベースのウェブアプリケーションの開発者に対し、マイクロソフト（登録商標）開発環境に適合する新しい開発環境を提供するための方法およびシステムを提供することである。
【００４６】
本発明の他の目的および利点は、説明が進むにつれて明らかになるであろう。
【発明の概要】
【００４７】
本発明は、コンピュータ化システムがデータネットワーク経由で提示されるＩＴ向けサーバベースのウェブアプリケーションを使用することを可能にするための方法に関する。したがってアプリケーションは、データネットワークでクライアント側端末とデータ通信するサーバ側にインストールされる。専用カーネルは、アプリケーションとクライアント側との間を仲介する（例えばクライアント側通信プロトコルを管理する）ために、クライアント側に１回ダウンロードされる。クライアント側で、事象はアプリケーションオブジェクトを表わす対応するＩＤタグに関連付けられ、タイムスタンプは各事象に割り当てられる。事象は待ち行列に入れられ、重大事象が発生したときにだけ、事象の待ち行列の形でアプリケーションに送信される。サーバ側で、事象はＩＤタグを用いてそれらとアプリケーションオブジェクトとの間の関連付けによってアプリケーションアクションに変換される。クライアントのアプリケーションオブジェクトが各受信事象のタイムスタンプとアプリケーションオブジェクトの最後の更新タイムスタンプとを比較することによってより多く更新される場合、アプリケーション更新を反映して関連レイアウトオブジェクトをクライアント側に更新させるための更新コマンドのみを含むデータパケットが用意され、クライアント側に更新として返送される。最後に、クライアント側のスクリーン・レイアウト・オブジェクトは、データパケットの内容に従って、プレゼンテーション層によって更新される。
【００４８】
クライアント側は、任意のオペレーティングシステムの下で動作する任意のウェブブラウザとすることができる。プレゼンテーション層は専用カーネルのコードから独立しており、ＤＨＴＭＬ、ＷｉｎＦｏｒｍｓ（登録商標）（共通言語ランタイムを利用するＷｉｎｄｏｗｓ（登録商標）クライアントアプリケーションを構築するためのフレームワーク。ＷｉｎＦｏｒｍｓ（登録商標）アプリケーションは共通言語ランタイムがサポートする任意の言語で書くことができる）、マイクロソフト（登録商標）Ｓｉｌｖｅｒｌｉｇｈｔ（商標）（ウェブアプリケーションの開発を可能にするブラウザプラグインである）、またはＸＭＬコードを送受信することのできる任意の他のプレゼンテーション層によってサポートすることのできるものとすることができる。
【００４９】
専用カーネルは、サポートされる異なるプレゼンテーション層の間で変化するコードとすることができる。サーバとクライアント側との間のデータ交換は、ＸＭＬのみを用いて実行される。
【００５０】
本発明はまた、任意のオブジェクト指向プログラミング言語を用いてデスクトップアプリケーションプログラミングと同様にウェブアプリケーションのプログラミングを可能にし、そして、オブジェクトおよびそれらの関連論理をウェブ設計言語に適応することにより、前記プログラムされたアプリケーションをウェブアプリケーションに変換することによって、データネットワークを経由してクライアント側に提示されるＩＴ向けサーバベースのウェブアプリケーションをプログラムするための方法に関する。プログラムされたアプリケーションは、異なる設計ツールを用いて開発された別のウェブアプリケーションに基づいてもよい。
【００５１】
本発明の上記および他の特徴および利点は、添付の図面を参照して、以下の例示的かつ非限定的な好適な実施形態の詳細な説明によって良く理解されるであろう。
【図面の簡単な説明】
【００５２】
【図１】図１は、本発明によって提案されるシステムのクライアント側初期化の略図である。
【図２】図２は、サーバとクライアント側との間の定常的な対話を示す。
【図３】図３は、本発明の好適な実施形態に係る、ＩＴ向けサーバベースのウェブアプリケーションを提供するためのシステムの略図である。
【発明を実施するための形態】
【００５３】
本発明のシステムは、クライアント−サーバＩＴアプリケーションの分野を、これらのアプリケーションの設計およびシステムの使用の両方の点で前進させる。設計の革新は、オブジェクト指向（ＯＯ）設計ソフトウェア（高水準プログラミング言語）を用いてウェブアプリケーションを設計することによってもたらされる。それは、共通ウェブ／インターネット・プログラミング・ツール（例えばＨＴＭＬ、ＸＭＬ、ＣＳＳなど）の設計者の必要性を完全に排除する。このシステムの特徴は、ウェブ／インターネット設計言語を専門とするプログラマだけでなく、どのプログラマでもウェブアプリケーション設計にアクセス可能にすることである。本発明のシステムの別の明確な利点は、幾つかではなく単一のプログラミング言語を使用することによる。本発明の設計で使用中のレイアウト設計は、先行技術の一般的な方法よりずっと単純である。ウィンドウおよびコントロールの形およびプロパティを文字／数字で記述する必要がなく、単に、「Ｖｉｓｕａｌ  Ｓｔｕｄｉｏ」などの一部のデスクトップアプリケーション設計ツールで行われるのと同じ「ドラッグアンドドロップ」法を使用するだけである。レイアウト設計および修正をずっと単純かつ使い易くした、レイアウト設計方法すなわちドッキングおよびアンカリング（発明の背景に記載）の実現もある。
【００５４】
本発明のシステムを使用する革新および利点は、クライアント（ユーザ）側でサーバ−クライアント通信方法にも投影される。
【００５５】
クライアントは、自分にとって都合の良い任意のオペレーティングシステムおよびウェブブラウザを全く自由に選択するという利益を得る。ローカルインストールが不要なので、クライアントは特別な認可によって制約されることもない。したがって、クライアントは、任意のオペレーティングシステムおよび任意のブラウザの下で、グローバルネットワーク（またはサーバのローカルネットワーク）に接続されたどのコンピュータでも使用することができる。それは、アプリケーションタスク全体をサーバ側に保持することによって達成される。クライアント側は所望のスクリーンを投影するだけである。それは、クライアントが自分の側に重要な情報を保持せず、単位投影されたデータを保持するだけであることを意味する。投影されたデータは、いかなる手段（例えば「クッキー」−ローカルハードドライブ上のウェブサイトメモリ）によってもクライアント側に格納されない。クライアントは専用カーネルを使用してサーバから受信したデータを復号し、かつそれをスクリーンディスプレイに変換する。専用カーネルは、サーバに送信されるデータを符号化するためにも使用される。本発明のシステムのこれらの特徴は、先行技術と比較してシステムのセキュリティをもずっと高め、かつクライアントからサーバへ、かつその逆にサーバからクライアントへ送信されるデータパッケージサイズに関して通信をずっと効率的にもする。
【００５６】
本発明のシステムの通信方法のさらなる態様については後述する。サーバとブラウザとの間の通信は、主アプリケーションウィンドウを利用して、単一のＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ−ウェブサイトのアドレス）を使用して実行される。アプリケーションは多くのウィンドウから構成することができるが、依然としてサーバとの通信は単一のアドレスを用いて行われる。
【００５７】
クライアント−サーバの通信は次のように行われる。クライアントが初めてサーバを利用したときに、ページ全体がクライアントに転送される。これは１回だけ行われる。これ以後、ページはクライアントの要求に従って部分的に更新される。クライアント側で、事象は待ち行列に集められ、重大事象が生じたときに、待ち行列全体がサーバに送信される。クライアントの各事象にはＩＤタグおよびタイムスタンプが付けられ、それはサーバを使用して、必要なデータだけをクライアントに更新返送される。サーバはこれらのタグおよびタイムスタンプを使用してクライアントおよび彼らの要求を区別することができるので、これはまたサーバが多くのクライアントにサービスを提供することを可能にする。クライアントからサーバに送信されるデータは、クライアントの活動（例えば特定フィールド／コントロール上でのマウスクリック、キーボードを用いた書込みなど）を反映する。このデータは最小データパケットに符号化され、サーバに送信される。サーバはデータに対しアプリケーションを実行し、結果を最小データパケットでクライアントに折り返し送信する。クライアントは前述の通りデータを復号し、それをスクリーンディスプレイに変換する。サーバとクライアントとの間のこの対話の方法は、先行技術のシステムと比較して著しく低減された通信動作およびデータパケットサイズを生じる。
【００５８】
本発明のシステムを用いて設計されたＩＴアプリケーションは、プログラマコンピュータでプログラムし、次いでネットワーク上で公開する（サーバにインストールする）ことができ、あるいはネットワークを介して直接サーバ上でプログラムすること、すなわちリモートプログラミングができる。後者のプログラミング方法は、本発明のシステムのアプリケーション利用時に使用するクライアント−サーバと同じ通信方法を使用する。その場合、プログラマはクライアント側のユーザであり、サーバ側のアプリケーションは、ＩＴアプリケーションを作成するための設計ツールである。以下の解説は、本発明のシステムを使用するリモートＩＴアプリケーション設計者、およびＩＴアプリケーション自体のユーザの両方の場合について言及する。以下の説明では、アプリケーションとはＩＴアプリケーションまたは設計ツールのどちらかを意味し、ユーザとはＩＴアプリケーションユーザまたはリモートプログラマを意味する。
【００５９】
図１は、本発明によって提案されるシステムのクライアント側初期化の略図である。ユーザがアプリケーションを使用したいと思うたびに、次のプロセスが行われる。ユーザは、ネットワーク５００を介してサーバ２００に接続されたコンピュータ／端末でウェブブラウザを使用してクライアント側３００を操作し、所定のウェブサイトを介してサーバ２００に要求する。サーバは、クライアント側３００で使用される専用カーネル、およびクライアント側３００のスクリーン上でアプリケーションディスプレイを作成するためのデータを折り返し送信する。このアクションは前述の通り、クライアントシステムの初期化時に１回だけ行われる。それは事実上、ユーザのシステムへのログインである。
【００６０】
図２は、サーバ２００とクライアント側３００との間の定常的な対話を示す。ログイン後、ユーザとアプリケーションとの間の全ての対話は、次のように行われる：クライアント側３００で、スクリーン上のユーザアクション（例えばマウスクリック、キーボード打込み、または任意の他のユーザ入力）は事象に変換される。全ての事象は一意のＩＤおよびタイムスタンプを得る。事象はクライアント側３００で待ち行列に入れられる。重大事象が生じたときに、待ち行列全体がサーバ２００に送信される。サーバ２００はデータを得ると、事象をアプリケーション上のアクションに変換し、クライアント側３００に返送されるデータパケットを作成する。データパケットは、クライアント側３００がそのスクリーンのディスプレイを更新し、かつアプリケーションのアクションの結果を投影するために必要とする必要情報だけを含む。これらの対話は、ユーザがアプリケーションにログインしている間に行われる。
【００６１】
ユーザがどのような活動（例えばマウスクリック、キーボード押下げなど）も実行しないが、それでも事象がサーバに発行される場合がある。これは、（クライアントおよびサーバを遊休時間に同期させる設定された一定時間毎に発行される事象である「接続維持」など）インフラストラクチャによって周期的に実行されるタイマ動作のため、または開発者の非同期操作（すなわち、クライアントマシンによって自動的に始動するプログレスバーまたは周期リフレッシュなどの非同期事象を引き起こすために開発者によって操作された非同期タイマ）の要求のため、発生することがあり得る。
【００６２】
図３は、本発明の好適な実施形態に係る、ＩＴ向けサーバベースのウェブアプリケーションを提供するためのシステム１００の略図である。システム１００は３つの階層、すなわちアプリケーション階層１０５、サーバ階層１１５、およびクライアント階層３００を備える。クライアント階層３００はサーバ階層１１５と対話し、サーバ階層は次にアプリケーション階層１０５と対話する。クライアント階層３００とサーバ階層１１５との間の対話は、待ち行列に入れられかつブラウザ１３５からアプリケーションサーバ１１６にＸＭＬ（拡張マークアップ言語）形式で送信される事象によって実行される。他方、サーバ階層１１５とクライアント階層３００との間の対話は、アプリケーションサーバ１１６からブラウザ１３５にＸＭＬ形式で送信される更新コマンドによって行われる。
【００６３】
アプリケーション階層１０５はさらに、アプリケーション状態を維持するために（プログラムコードで作成された）アプリケーションインスタンスを表わすツリー構造のオブジェクトモデルとすることのできるアプリケーション・オブジェクト・ツリー１０６と、コンポーネントリファレンスに対するコンポーネント識別間の関係を保持するためのハッシュテーブルとすることができ、かつアプリケーションオブジェクト識別からアプリケーション・オブジェクト・リファレンスを得るために使用されるアプリケーション・オブジェクト・インデックス１０７と、アプリケーションパラメータおよび定義を保持するためのＸＭＬ文書とすることのできるアプリケーション構成１０８とを備える。
【００６４】
アプリケーションサーバ１１６をさらに備えるサーバ階層１１５は、次のことに責任を負う。
−  アプリケーションにアイコン／画像、データ、アセンブリ、コンテンツなどのその資源を提供し、かつデータをクライアント階層に返送しなければならないオブジェクトであるサーバ階層上の資源要求ハンドラに、種々のタイプのものとすることのできるクライアント階層からの資源要求を送ること。
−  ファイルを要求した（アプリケーション・オブジェクト・ツリー１０６内の）アプリケーションオブジェクトに要求を送ることは、アプリケーションオブジェクトＩＤを保持する提出されたフォームに特定のフィールドを追加することによって、かつアプリケーション・オブジェクト・インデックスからそのリファレンスを得ることによって、実行することができる。アプリケーション・オブジェクト・インデックスは、ＩＤによってアプリケーションオブジェクトを保持する辞書であり、ＩＤを提供することによってアプリケーションオブジェクトへの直接アクセスを可能にする。このようにして、要求がサーバ階層に到着したときに、それは適切なアプリケーションオブジェクトに送られる。
−  事象待ち行列を受信し、待ち行列項目のループ内の事象を１つずつ処理する。各事象はクライアント階層３００でそれが発生した順に処理される。
−  （クライアント階層３００内に提供された）最後のサーバ応答でサーバ階層から（サーバ階層１１５内に提供された）アプリケーションサーバ１１６に送信されたタイムスタンプを用いることによって、ブラウザ１３５からアプリケーションサーバ１１６に更新されたコマンドを返すこと。
−  アプリケーション・オブジェクト・ツリー１０６内に提供されたアプリケーションオブジェクトのシステムへのエントリポイント（例えば形式コンテナオブジェクト）のコンテナコントロールを表わすクラスを入手し（前記クラスは指定されたＵＲＬにマッピングされる）、前記クラスからオブジェクトを初期化し、かつ完全更新コマンドを返すことによって、第１のＵＲＬナビゲーションを処理すること。完全更新コマンドとは、特定のプロパティを更新し、したがってコントロールの部分的レンダリングを可能にする部分更新コマンドと対照的に、クライアントがコントロールを完全にレンダリングすることを可能にする完全な１組のプロパティである。
【００６５】
クライアント階層３００はさらに、次のソフトウェアコンポーネントを備える。
−  インターネットのようなデータネットワークをサーフィンするためのブラウザ１３５（例えば、Ｍｏｚｉｌｌａ  Ｆｉｒｅｆｏｘ（登録商標）またはマイクロソフト（登録商標）ＩＥ（インターネットエクスプローラ）ブラウザ）。
−  第１のナビゲーションと共にダウロードされるスクリプトであり、「汎用フレームワーク」として使用されるブラウザ・コントローラ・スクリプト１２７。「汎用フレームワーク」とは、各アプリケーション／コントロール／コントロール状態が特定のスクリプトをダウンロードしなければならない他のフレームワークと対照的に、クライアント階層スクリプトが１回ダウンロードされ、全ての目的に使用されることを意味する。この「汎用フレームワーク」スクリプトは、アプリケーションサーバ１１６と通信するため、かつ前記アプリケーションサーバ１１６から受信した更新コマンドを用いてクライアント階層３００を更新するために使用される。「汎用フレームワーク」スクリプトは、クライアント階層が前に示した通り、クライアント階層で変更またはレンダリングする必要のある部分的／完全な指示を含む更新コマンドを完遂することを可能にする。「汎用フレームワーク」スクリプトはまた、クライアント階層で何が発生したか（クライアント事象）、すなわちユーザ１３０のクリック／ダブルクリック、テキスト変更、マウス移動などの入力に関し、クライアント階層がサーバとさらなる通信を実行することを可能にする。
−  アプリケーションサーバ１１６で生成され、アプリケーションサーバ１１６からブラウザ１３５に送信された更新コマンドを、既存のＨＴＭＬコードに取って代わるＨＴＭＬ（ハイパーテキストマークアップ言語）コードに変えるために使用される、ＸＳＬ文書１２６。これは、その背後で新たに更新されたプロパティを描画されたコントロールに変換するのに役立つ、更新されたＸＭＬデータのＸＳＬ変換によって行われる。
−  インタフェース状態を保持し、かつ増分更新をレンダリングすると共にインタフェース状態を保存するために使用される、ＸＭＬインタフェース状態文書１２８。クライアント階層のプロパティデータのこのＸＭＬを保持することにより、ＸＭＬインタフェース状態文書１２８を更新することによって、サーバ階層は各段階で要求されたデータだけを送信し、かつレンダリングすべき部分だけを再レンダリングすることができるので、増分更新を行うことができる。
−  サーバ階層で生成され、かつレンダリングされる（データ＋ＸＳＬＴ変換される）全てのＨＴＭＬ要素のための一般スタイリング（例えば背景色、境界線寸法、境界線色、レイアウトスタイルなど）として使用される、ＣＳＳ文書１３６。
【００６６】
クライアント事象（例えばクリック、ダブルクリック、マウス移動など）は、ブラウザ・コントローラ・スクリプト１２７で待ち行列に入れられる。これらのクライアント事象は次の３つの主要なカテゴリに分類される。
・蓄積事象：これらの事象は、ブラウザ・コントローラ・スクリプト１２７によってクライアント事象待ち行列１２９に入れられる。
・蓄積された一意の事象：これらの事象もまた、ブラウザ・コントローラ・スクリプト１２７によってクライアント事象待ち行列１２９に入れられるが、一意の事象として維持される。これは、このタイプの事象が生じ、同一ソースおよび名前の以前の事象がすでに存在する場合には、前の事象が削除され、新しい事象が待ち行列に入れられることを意味する。
・重大事象：このタイプの事象が生じた場合、それは最後の事象として待ち行列に入れられ、最後の重大事象と現在の重大事象との間にクライアント階層で発生した全ての非重大事象の年代順リストを含む事象待ち行列をトリガする。事象をトリガするとは、それが遅滞無く同期してアプリケーションサーバ１１６に送信されることを意味する。
【００６７】
アプリケーションサーバ１１６によって管理されるＵＲＬ（アプリケーションの１つのエントリポイントにブラウズするために、ウェブブラウザに打ち込まれたＵＲＬである）を初めて要求すると、前記アプリケーションサーバ１１６は、アプリケーション構成１０８内で（与えられたＵＲＬの）アプリケーション・オブジェクト・クラスのマッピングを探索する。前記アプリケーション構成１０８ソフトウェアコンポーネントからマッピングされたアプリケーション・オブジェクト・クラスを検索した後、このクラスはアプリケーション・オブジェクト・ツリー１０６のルートオブジェクトを表わすように初期化される（これは、アプリケーションのエントリポイントを作成し、かつクライアント階層にそれを示すために、ルートオブジェクトが初期化されることを意味する）。次いで、完全更新コマンドがアプリケーションサーバ１１６からクライアント階層３００に返され、前記クライアント階層３００はクライアントインタフェースを初期化することが可能になる。初期化とは、現在粛然と示されている全てのコントロールの新しいオブジェクトを作成し、プロパティの所望の初期状態をそれらに割り当てるプロセスである。この時点から、クライアント階層３００からアプリケーションサーバ１１５への通信は、サーバ階層１１に再び完全更新コマンドを送信させるリフレッシュアクションが発行される場合（ブラウザのリフレッシュボタンを押すことによって、またはアプリケーションの言語のようなアプリケーションの何らかの重要なプロパティを変更することによって発行することができる）を除き、事象および更新コマンドを用いて行われる。
【００６８】
重大事象が事象待ち行列送信をトリガすると、ブラウザ・コントローラ・スクリプト１２７は、（クライアント事象待ち行列１２９内に提供された）アクションの待ち行列を、クライアントの一意のスタンプ、例えばクライアント階層１３５の最後の更新時間を表わす数値であるタイムスタンプと共に、アプリケーションサーバ１１６に送信する。次いで、サーバ階層１１５内のアプリケーションサーバ１１６は、事象待ち行列およびクライアント・タイム・スタンプを受信する。その後、サーバは、事象が発生した順序である最後尾から先頭に向かって事象待ち行列を処理する。事象待ち行列内の全ての事象は、この事象が関係するアプリケーションオブジェクトのＩＤ（識別）であるソース値を有する。現在の事象から受け取るそのようなアプリケーションオブジェクトＩＤは、この事象が関係するアプリケーションオブジェクトへのオブジェクトリファレンスを得るために、アプリケーション・オブジェクト・インデックス１０７を探索するときに使用される。現在の事象オブジェクトは、オブジェクト事象を通常事象発生に変換するアプリケーションオブジェクトの方法（この種の事象のオブジェクトの事象ハンドラである方法）に送られる（通常事象発生とは、本発明に基づいてクライアント階層からアプリケーションサーバ階層に送信される事象である非通常事象と対照的に、オブジェクト間で事象を送信するサーバのモデルである）。次いで、タイプ（コントロールのタイプすなわちボタン、フォーム、リストボックスなど）およびそれが使用する挙動（その特定のアプリケーションオブジェクトの各事象に対する反応の方法）に応じて、アプリケーションオブジェクトは、プログラムコード開発者が使用することのできる通常コード事象を送信する。通常コード事象は、本発明が提示する非通常事象とは対照的に、同一技術（すなわちＣ＃、Ｊａｖａ（登録商標）など）で書かれたオブジェクト間でメッセージを送信する受け入れられた周知の機構、例えば彼のデータに発生した何らかの変化に関してそのコンテナオブジェクトに通知するメッセージを送信するオブジェクトである。非通常事象は、本発明の機構を使用してクライアント階層とアプリケーションサーバとの間で受け渡される。例えばクライアントのＨＴＭＬレンダリング要素は、それがクリックされたという事象を送信する。次いで、事象が実際にそれをサーバ階層で処理しなければならないオブジェクトに生じたときに、それは本発明の機構によって通常コード事象に変換される。
【００６９】
全ての事象がクライアント階層からアプリケーションサーバ１１５に送信された後、前記アプリケーションサーバ１１５は、アプリケーション・オブジェクト・ツリー１０６のルートであるアプリケーション・ルート・オブジェクトを呼び出して、アプリケーション・オブジェクト・ツリー１０６と同期するためにクライアント階層３００で実行しなければならない更新コマンドをレンダリングする。更新コマンドを作成するために、クライアント・タイム・スタンプは、アプリケーション・オブジェクト・ツリー１０６内のアプリケーション・ルート・オブジェクトに送信され、それは次に、前記アプリケーション・オブジェクト・ツリー１０６内の各アプリケーションオブジェクトを呼び出して、それ自体のタイムスタンプを検査し、それが１つ以上の更新コマンドを生成する必要があるかを確認する、再帰的レンダリングアクションを開始する。アプリケーションオブジェクトは１つ以上のタイムスタンプを保持することができるので、必要な場合にコンポーネントを更新するために異なる更新コマンドを生成することができる。アプリケーションオブジェクト毎のこのマルチタイムスタンプは現在、部分更新コマンドに使用される（例えば背景色、含まれるデータなどのアプリケーションオブジェクト属性のみを更新する）。部分コマンドは、再描画しなければならない要素の個数およびそれらの複雑さの点から更新プロセスをできるだけ効率的にするために使用される。
【００７０】
アプリケーション・オブジェクト・ツリー１０６によって作成される更新コマンドは、サーバ階層１１５内のアプリケーションサーバ１１６に送信され、それは次に前記更新コマンドをＸＭＬ文書としてクライアント階層３００に送信する。ブラウザ・コントローラ・スクリプト１２７は更新コマンドを受信し、ＸＭＬインタフェース状態文書１２８を更新する。次いで、更新された要素は、ＸＳＬ文書１２６を用いることによって、ディスプレイ１３１に表現されるそれらのＨＴＭＬコード表現に１つずつ変換される。ＨＴＭＬ表現は、（コントロールを表わす要素のための）適切なＸＳＬテンプレートによるＸＭＬインタフェース状態文書１２８のＸＳＬ変換によって作成される。
【００７１】
開いたアプリケーションウィンドウの管理は、他の全てのアプリケーションオブジェクトの場合と同様の方法で実行されるが、サーバ階層１１５からウィンドウを開くために返される更新コマンド、またはウィンドウを開いた状態に維持する更新コマンドはさらに、現在のウィンドウ構造（例えば主ウィンドウ、モーダルダイアログまたは非モーダルダイアログ、寸法、位置など）を表わすウィンドウＸＭＬ構造（ＸＭＬ要素構造は、要素が含まれるようにウィンドウに含まれるアプリケーションオブジェクトのそれか、またはルートＸＭＬノードとしてのウィンドウそれ自体の構造のいずれかとすることができる）の指標を含む。ブラウザ・コントローラ・スクリプト１２７が開いたウィンドウのＸＭＬ構造を受信すると、それは前記開いたウィンドウをスキャンして（現在開いているウィンドウ全体をループして）、それらの１つを閉じるべきかを調べ、かつウィンドウ構造をスキャンして、新しいウィンドウを開くべきかを調べる。ウィンドウコンテンツの管理は、ウィンドウをまたいで一意に見つけることができるようにアプリケーションオブジェクトＩＤを管理して更新することによって、主ウィンドウのコンテンツを管理するのと同じ方法で実行される（主ウィンドウは、始動時に初期ＵＲＬをブラウズしたブラウズウィンドウであり、他のウィンドウはアプリケーション実行中に主ウィンドウの上に開かれる）。すなわち、たとえアプリケーションオブジェクトが完全に異なるコンテナに含まれていても、アプリケーションオブジェクトＩＤを他のウィンドウで繰り返すことはできない。このようにしてオブジェクトは、それを含むウィンドウとは関係なく、ＸＭＬ内に一意に見出すことができる。
【００７２】
本発明の実施形態では、レイアウト項目のドッキングおよびアンカリング属性を定義する、従来のデスクトップアプリケーションのレイアウト定義が使用される。ドッキングレイアウトは、従来のウェブアプリケーションが使用するＨＴＭＬテーブルまたは絶対位置決めより、保守が容易である。最終的に、出力はＨＴＭＬのままであるが、プログラマはアプリケーションオブジェクトのドッキングまたはアンカリングに関係する属性だけを定義する。ドッキングをサポートするアプリケーションオブジェクトは、「左」、「上」、「右」、「下」、および「フィル」のエニュメレータであるドックプロパティを表示させる。これらのエニュメレータはアプリケーションオブジェクトのレイアウト挙動を定義する。
・「上」ドッキングを定義すると、アプリケーションオブジェクトは高さの定義に従って最高可能な位置に表示され、アプリケーションオブジェクト幅は最大可能な幅になる。
・「下」ドッキングを定義すると、アプリケーションオブジェクトはその高さの定義に従って最低可能な位置に表示され、アプリケーションオブジェクト幅は最大可能な幅になる。
・「左」ドッキングを定義すると、アプリケーションオブジェクトはその幅の定義に従って最左位置に表示され、その高さは最大可能な高さになる。
・「右」ドッキングを定義すると、アプリケーションオブジェクトはその幅の定義に従って最右位置に表示され、その高さは最大可能な高さになる。
・「フィル」ドッキングを定義すると、アプリケーションオブジェクトは残りのクライアント領域を満たす。フィルアプリケーションオブジェクト後に定義されるアプリケーションオブジェクトは、「フィル」ドッキングしたアプリケーションオブジェクトがすでに残りの空間を全部占めているので、全く表示されなくなる。
【００７３】
本発明の好適な実施形態では、ＨＴＭＬの要素を絶対位置決めする能力、および時々再計算しなければならない（再計算とは、コントロールの位置および寸法を設定するアクションである）スタイル属性（テキストのようなデータ属性とは対照的に、色、寸法、フォントなどのコントロールのスタイルを記載する属性）に関する表現を追加する能力を取り込む。
【００７４】
ユーザがアプリケーションサーバ１１６によって管理され、アプリケーション・ルート・オブジェクト・クラスにマッピングされるＵＲＬをサーフィンするときに（マッピングは、アプリケーションがエントリポイントを持つように、すなわち指定されたアプリケーションオブジェクトが表示された第１スクリーンを表わすように行われる）、このクラスは初期化され、アプリケーション・オブジェクト・ツリー１０６上の他の全てのアプリケーションオブジェクトのためのルートオブジェクトとして働く。アプリケーションのプログラミングは、（ボタンクリック事象が発生したとき、リストから項目が選択されたときなどに生じるコードをプログラミングするなど）現在のアプリケーション・オブジェクト・ツリー状態および（コントロールの表示の出没、コントロールの寸法／スタイル／状態、ウィンドウを開くことなどを引き起こすコードをプログラミングするなど）構造を変化させるために、アプリケーション事象を介して行われ、サーバは、現在のインタフェース状態をアプリケーション・オブジェクト・ツリー状態と同期させるために使用される更新コマンドを通して、これらの変化をクライアントのブラウザに反映させる。ウェブアプリケーションウィンドウの管理もまた、アプリケーション・オブジェクト・ツリーを介して行われる。ウィンドウを開くには、ウィンドウクラスから継承されるオブジェクトの新しいインスタンスをプログラマが作成する必要がある。このオブジェクトの「ウィンドウ表示」機能（これはサーバにウィンドウのインスタンスを表示するように命令する機能である）を呼び出すと、このウィンドウオブジェクトが可視とマークされ、それは次の更新コマンド内で応答のウィンドウ構造部にこのウィンドウを追加し、サーバでウィンドウが作成されたことをブラウザに通知し、ブラウザは新しいウィンドウを開き、かつそのコンテンツをレンダリングするはずである。既存のウィンドウを表示せず、発行されたウィンドウ構造を含まない新しい更新コマンドをクライアントに返送するようにサーバに命令するコマンドである「ウィンドウ非表示」機能を呼び出すと、このウィンドウは閉じるはずである。ブラウザは常にその現在開いているウィンドウと更新コマンド内のウィンドウリスト構造とを比較する。その場合、３つの場合が考えられる。
１．更新コマンドおよびＸＭＬインタフェース状態文書１２８の両方にウィンドウが存在し、その場合、ウィンドウはサーバ階層およびクライアント階層状態の両方で可視であるので、ウィンドウは開いた状態を維持するはずである。
２．更新コマンドにウィンドウが存在し、かつＸＭＬインタフェース状態文書１２８には存在せず、その場合、それはサーバ階層状態では可視であるが、クライアント階層状態では非可視であるので、新しいウィンドウ構造内に指定されたコンテンツを持つ新しいウィンドウが開くはずである。
３．ウィンドウは更新コマンドには存在しないが、ＸＭＬインタフェース状態文書１２８には存在し、その場合、サーバ階層状態では非可視であるが、クライアント階層状態では可視であるので、発行されたウィンドウは閉じるはずである。
【００７５】
先行技術のウェブアプリケーション環境はページをベースにしており、それはＵＲＬがセッションデータおよび新しいページをクライアントに完全にレンダリングするために使用されるデータベースレコードのような他のシステム資源と組み合わされたデータと共に呼び出されることを意味する。クライアントインタフェースを更新するには、ページをサーバによって完全にレンダリングし、ブラウザに送信し、ブラウザによってレンダリングしてそのインタフェースを更新する必要がある。これらの環境でこの挙動を受け渡すには、ブラウザで動作しているスクリプトがサーバのページにＨＴＴＰ要求を出し、ブラウザのインタフェースを更新する必要がある。
【００７６】
このウェブアプリケーション開発環境はクライアントスクリプトを使用してそのタスクを達成するが、クライアントインタフェースを更新しかつクライアントから事象を返送するために使用される１組の基本的スクリプトを介してそれを行ない、全ての処理は、クライアントインタフェースを更新するために使用される更新コマンドを生成して、サーバ側で行われる。したがって、アプリケーションプログラマがクライアントスクリプトを用いて自分のウェブアプリケーションを符号化する必要性は排除される。アプリケーションプログラマはアプリケーション・オブジェクト・ツリー事象を処理し、これらの事象ハンドラを通してアプリケーション・オブジェクト・ツリー構造および状態を変更することによって、プログラマはユーザインタフェースと間接的に対話する。
【００７７】
先行技術によると、ウェブページはサーバおよびクライアント側で完全にレンダリングされる。このウェブアプリケーション開発環境は、ＸＭＬ  ＨＴＴＰをその同期および非同期両方の仲介者として使用し、送信される内容は、ブラウザで起きた関連する変化およびアクションから成る事象待ち行列である。事象待ち行列と共に、クライアント・タイム・スタンプもサーバに送信され、それは、事象待ち行列が処理されかつ事象ハンドラコードが実行された後で、更新コマンドをレンダリングするために使用される。事象ハンドラによってアプリケーション・オブジェクト・ツリー要素に対して変更が行なわれると、変更された各要素は最後に更新された異なるタイムスタンプを持ち、アプリケーション・オブジェクト・ツリーを再帰的に横断し、クライアント・タイム・スタンプを各アプリケーション・オブジェクト・ツリー要素のそれと比較することによって、更新コマンドのリストを抽出し、クライアントインタフェースをアプリケーション・オブジェクト・ツリーと同期するように更新するために使用することができる。この機構は、サーバに送信されかつサーバから返送されるデータのサイズを最小限まで最適化する。ウェブアプリケーション開発環境によって使用される事象待ち行列機構は、サーバで処理する必要の無い事象が送信されず、処理しなければならない事象が発生したときにだけ送信されるように、サーバ呼出しを最適化する。事象待ち行列は、一意の事象を再定義するときにさらにいっそう最適化される。それは、一部の事象が相互に相殺されることを意味する。例えばユーザがスクリーンのスプリッタ位置を変更し、次いでそれを再び変更した場合、最初の事象値は関係が無く、待ち行列から削除される。
【００７８】
本発明の好適な実施形態に従って、レガシーアプリケーション（例えばユーティリティ、クライアント／サーバアプリケーションなど）を既存のデスクトップ環境からウェブにインポートすることが可能である。加えて、ブラウザは（アプリケーション妥当性検査、パスワード、隠匿フィールド、トークンなどのような）ビジネス論理スクリプトを保持せず、かつ任意の時間に提示される現在の画面の作成を可能にするプレゼンテーションデータを除くデータを実質的にほとんど保持しないので、高いセキュリティレベルが達成される。
【００７９】
本発明の一部の実施形態が例示のために説明されてきたが、本発明の精神から逸脱することなく、または特許請求の範囲を超えることなく、本発明が、多くの変更、別法、および適合で実現され、当業者の範囲内の多数の等価物または代替的解決手段で実現されることができることは明白であろう。
【図１】
0005439190.tif 000002
【図２】
0005439190.tif 000003
【図３】
0005439190.tif 000004