(57)【要約】処理状態を把握する分散処理を実行するコンピュータ・システムを提供し、該システムはクライアント・ランタイム環境（ＣＲＥ）を備えるクライアント・マシンを備える。ＣＲＥは、第１マークアップ・ドキュメントを検索する段階と、前記第１マークアップ・ドキュメント内に含まれる情報の第１オブジェクト指向表現を作り出すとともに格納する段階により、アプリケーションの状態を維持する。第１オブジェクト指向表現は、アプリケーションの第１状態を定義するものである。次に、第２マークアップ・ドキュメントを検索する段階と、前記第２マークアップ・ドキュメント内に含まれる情報の第２オブジェクト指向表現を作り出すとともに格納する段階を行う。そして、前記第１及び第２オブジェクト指向表現をマージし、これにより前記第１或いは第２マークアップ・ドキュメント内に蓄えられる情報の新たなオブジェクト指向表現を形成する段階を実行する。この新たなオブジェクト指向表現は、前記アプリケーションの新たな状態を定義するものである。  前記ＣＲＥは、更に、１若しくはそれ以上の追加のマークアップ・ドキュメントを検索する段階と、前記１若しくはそれ以上の追加のマークアップ・ドキュメント内に含まれる情報の１若しくはそれ以上の追加のオブジェクト指向表現をそれぞれ作り出し、格納する段階と、前記１若しくはそれ以上の追加のオブジェクト指向表現を前記新たなオブジェクト指向表現とマージし、これにより前記アプリケーションの更新された状態を形成する段階を実行することにより、前記アプリケーションの前記新たな状態を更新する。
2006506748.tif 000002
【特許請求の範囲】
【請求項１】
処理状態を把握する分散処理を実行するコンピュータ・システムであって、
クライアント・ランタイム環境（ＣＲＥ）を備えるクライアント・マシンを備え、
前記ＣＲＥは、前記クライアント・マシンの状態を維持するために用いられ、前記ＣＲＥが、
第１マークアップ・ドキュメントを検索する段階と、
前記第１マークアップ・ドキュメント内に含まれる情報の第１オブジェクト指向表現を作り出すとともに格納する段階であって、前記第１オブジェクト指向表現が前記アプリケーションの第１状態を定義する段階と、
第２マークアップ・ドキュメントを検索する段階と、
前記第２マークアップ・ドキュメント内に含まれる情報の第２オブジェクト指向表現を作り出すとともに格納する段階と、
前記第１及び第２オブジェクト指向表現をマージし、これにより前記第１或いは第２マークアップ・ドキュメント内に蓄えられる情報の新たなオブジェクト指向表現を形成する段階を実行し、
前記新たなオブジェクト指向表現が前記アプリケーションの新たな状態を定義することを特徴とするシステム。
【請求項２】
前記ＣＲＥが更に、
１若しくはそれ以上の追加のマークアップ・ドキュメントを検索する段階と、
前記１若しくはそれ以上の追加のマークアップ・ドキュメント内に含まれる情報の１若しくはそれ以上の追加のオブジェクト指向表現をそれぞれ作り出し、格納する段階と、
前記１若しくはそれ以上の追加のオブジェクト指向表現を前記新たなオブジェクト指向表現とマージし、これにより前記アプリケーションの更新された状態を形成する段階を実行することにより、
前記アプリケーションの前記新たな状態を更新することを特徴とする請求項１記載のシステム。
【請求項３】
前記オブジェクト指向表現のいずれかが、ユーザ・インターフェース、データ構造及びビジネス・ロジックからなる群から選択される構造を備えることを特徴とする請求項１記載のシステム。
【請求項４】
前記ＣＲＥが更に、１若しくはそれ以上の手続コードを検索し、
該手続コードが前記マークアップ・ドキュメントのいずれかに関連し、
更に前記ＣＲＥが、前記１若しくはそれ以上の手続コードを実行することを特徴とする請求項１記載のシステム。
【請求項５】
前記ＣＲＥが更に、アプリケーション・プログラム・インターフェース（ＡＰＩ）を備え、
前記１若しくはそれ以上の手続コードが前記ＡＰＩを利用し、プログラム的に前記アプリケーションの状態を維持することを特徴とする請求項４記載のシステム。
【請求項６】
前記アプリケーションの状態が、ドキュメント・オブジェクト・モデル（ＤＯＭ）内で維持されることを特徴とする請求項１記載のシステム。
【請求項７】
前記マークアップ・ドキュメントのいずれかが、エクステンシブル・マークアップ・ランゲージ（ＸＭＬ）フォーマットを備えることを特徴とする請求項１記載のシステム。
【請求項８】
前記マークアップ・ドキュメントのいずれかが、ハイパ・テキスト・マークアップ・ランケージ（ＨＴＭＬ）フォーマットを備えることを特徴とする請求項１記載のシステム。
【請求項９】
前記１若しくはそれ以上の手続コードが、プログラム言語で書かれ、
該プログラム言語が、Ｃ、Ｃ＋＋、Ｃ＃、Java、Javascript、VBScript、ActionScript、Visual Basic、プロプラエタリ・プログラミング言語から選択されることを特徴とする請求項４記載のシステム。
【請求項１０】
前記１若しくはそれ以上の手続コードがバイナリ・フォーマットを備え、
該バイナリ・フォーマットが、.NETCLR、Java.class format及びMacromedia Flash binary formatから選択されることを特徴とする請求項４記載のシステム。
【請求項１１】
前記１若しくはそれ以上の手続コードがテキスト・フォーマットを備え、
該テキスト・フォーマットが、ＨＴＭＬ、ＸＭＬ、平文及び圧縮テキストから選択されることを特徴とする請求項４記載のシステム。
【請求項１２】
前記マージする段階が、追加、除去、挿入、変更、置換、更新、結合及びこれらの組み合わせから選択される１若しくはそれ以上の動作を備えることを特徴とする請求項１記載のシステム。
【請求項１３】
前記オブジェクト指向表現のいずれかが、オブジェクト、オブジェクト属性、オブジェクト属性値、オブジェクト階層関係及びこれらの組み合わせを備え、これにより、前記１若しくはそれ以上の動作が、前記オブジェクト、オブジェクト属性、オブジェクト属性値、オブジェクト階層関係及びこれらの組み合わせに適用されることを特徴とする請求項１２記載のシステム。
【請求項１４】
前記１若しくはそれ以上の手続コードのいずれかと前記マークアップ・ドキュメントのいずれかがコンパイルされ、一組の手続コードに結合され、
該手続コードの組が、前記ＣＲＥによって検索並びに実行されることを特徴とする請求項１記載のシステム。
【請求項１５】
前記マークアップ・ドキュメントのうち１若しくはそれ以上が手続コードにコンパイルされ、
該手続コードが前記ＣＲＥによって、検索並びに実行されることを特徴とする請求項１記載のシステム。
【請求項１６】
リアルタイム双方向性メッセージング・システムを備え、
該システムが、前記クライアント・マシンとネットワーク上のサーバとの間でメッセージを送信及び受信することを特徴とする請求項１記載のシステム。
【請求項１７】
前記ネットワークが、ワールド・ワイド・ウェブ（ｗｅｂ）を備えることを特徴とする請求項１６記載のシステム。
【請求項１８】
前記ネットワークが、無線ネットワークを備えることを特徴とする請求項１６記載のシステム。
【請求項１９】
ウェブ・ブラウザを更に備え、
前記ＣＲＥが前記ウェブ・ブラウザの内部を走行することを特徴とする請求項１記載のシステム。
【請求項２０】
ウェブ・ブラウザを更に備え、
前記ＣＲＥが前記ウェブ・ブラウザの外部を走行することを特徴とする請求項１記載のシステム。
【請求項２１】
前記クライアント・マシンが、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・デバイス及びスマートフォンから選択されることを特徴とする請求項１記載のシステム。
【請求項２２】
１若しくはそれ以上のサーバを更に備え、
前記クライアント・マシンが、前記マークアップ・ドキュメントを前記１若しくはそれ以上のサーバのうちいずれかから検索することを特徴とする請求項１記載のシステム。
【請求項２３】
クライアント・マシン中のアプリケーションの状態を維持するためのコンピュータ処理方法であって、
前記アプリケーションの第１マークアップ・ドキュメントを検索する段階と、
前記第１マークアップ・ドキュメント内に含まれる情報の第１オブジェクト指向表現を作り出し、該第１オブジェクト指向表現を格納する段階であって、前記第１オブジェクト指向表現が前記アプリケーションの第１状態を定義する段階と、
前記アプリケーションの第２マークアップ・ドキュメントを検索する段階と、
該第２マークアップ・ドキュメント内に含まれる情報の第２オブジェクト指向表現を作り出し、該第２オブジェクト指向表現を格納する段階と、
前記第１及び第２オブジェクト指向表現をマージし、これにより前記第１或いは第２マークアップ・ドキュメント内に含まれる新たなオブジェクト指向表現を形成する段階からなり、
前記新たなオブジェクト指向表現が前記アプリケーションの新たな状態を定義することを特徴とする方法。
【請求項２４】
前記アプリケーションの前記新たな状態を更新する段階を更に備え、
該更新する段階が、
１若しくはそれ以上の追加のマークアップ・ドキュメントを検索する段階と、
前記１若しくはそれ以上の追加のマークアップ・ドキュメント内に含まれる情報の１若しくはそれ以上の追加のオブジェクト指向表現を作り出すとともに格納する段階と、
前記１若しくはそれ以上のオブジェクト指向表現と前記新たなオブジェクト指向表現をマージし、
前記アプリケーションの更新された状態を作り出す段階を備えることを特徴とする請求項２３記載の方法。
【請求項２５】
前記オブジェクト指向表現のうちいずれかが、ユーザ・インターフェース、データ構造及びビジネス・ロジックからなる群から選択される構造を備えることを特徴とする請求項２３記載の方法。
【請求項２６】
１若しくはそれ以上の手続コードを検索する段階を更に備え、
該手続コードが前記マークアップ・ドキュメントのいずれかに関連し、
更に、前記１若しくはそれ以上の手続コードを実行する段階を備えることを特徴とする請求項２３記載の方法。
【請求項２７】
前記１若しくはそれ以上の手続コードが、アプリケーション・プログラム・インターフェース（ＡＰＩ）を利用し、プログラム的に前記アプリケーションの状態を維持することを特徴とする請求項２６記載の方法。
【請求項２８】
前記アプリケーションの状態が、ドキュメント・オブジェクト・モデル（ＤＯＭ）内で維持されることを特徴とする請求項２３記載の方法。
【請求項２９】
前記マークアップ・ドキュメントのいずれかが、エクステンシブル・マークアップ・ランゲージ（ＸＭＬ）フォーマットを備えることを特徴とする請求項２３記載の方法。
【請求項３０】
前記マークアップ・ドキュメントのいずれかが、ハイパ・テキスト・マークアップ・ランケージ（ＨＴＭＬ）フォーマットを備えることを特徴とする請求項２３記載の方法。
【請求項３１】
前記１若しくはそれ以上の手続コードが、プログラム言語で書かれ、
該プログラム言語が、Ｃ、Ｃ＋＋、Ｃ＃、Java、Javascript、VBScript、ActionScript、Visual Basic、プロプラエタリ・プログラミング言語から選択されることを特徴とする請求項２６記載の方法。
【請求項３２】
前記１若しくはそれ以上の手続コードがバイナリ・フォーマットを備え、
該バイナリ・フォーマットが、.NETCLR、Java.class format及びMacromedia Flash binary formatから選択されることを特徴とする請求項２６記載の方法。
【請求項３３】
前記１若しくはそれ以上の手続コードがテキスト・フォーマットを備え、
該テキスト・フォーマットが、ＨＴＭＬ、ＸＭＬ、平文及び圧縮テキストから選択されることを特徴とする請求項２６記載の方法。
【請求項３４】
前記マージする段階が、追加、除去、挿入、変更、置換、更新、結合及びこれらの組み合わせから選択される１若しくはそれ以上の動作を備えることを特徴とする請求項２３記載の方法。
【請求項３５】
前記オブジェクト指向表現のいずれかが、オブジェクト、オブジェクト属性、オブジェクト属性値、オブジェクト階層関係及びこれらの組み合わせを備え、これにより、前記１若しくはそれ以上の動作が、前記オブジェクト、オブジェクト属性、オブジェクト属性値、オブジェクト階層関係及びこれらの組み合わせに適用されることを特徴とする請求項３４記載の方法。
【請求項３６】
前記１若しくはそれ以上の手続コードのいずれかと前記マークアップ・ドキュメントのいずれかがコンパイルされ、一組の手続コードに結合され、
該手続コードの組が、前記クライアント・マシンによって検索並びに実行されることを特徴とする請求項２６記載の方法。
【請求項３７】
前記マークアップ・ドキュメントのうち１若しくはそれ以上が手続コードにコンパイルされ、
該手続コードが前記クライアント・マシンによって、検索並びに実行されることを特徴とする請求項２３記載の方法。
【請求項３８】
前記クライアント・マシンとネットワーク上のサーバとの間で、リアルタイム双方向性メッセージング・システムを介して、メッセージの送信及び受信を行う段階を更に備えることを特徴とする請求項２３記載の方法。
【請求項３９】
前記クライアント・マシンが、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・デバイス及びスマートフォンから選択されることを特徴とする請求項２３記載の方法。
【請求項４０】
１若しくはそれ以上のサーバを更に備え、
前記クライアント・マシンが、前記マークアップ・ドキュメントを前記１若しくはそれ以上のサーバのうちいずれかから検索することを特徴とする請求項２３記載の方法。
【請求項４１】
クライアント・マシン内で実行されるアプリケーションを開発する方法であって、
前記クライアント・マシンが、クライアント・ランタイム環境（ＣＲＥ）を利用し、前記アプリケーションの状態を維持し、
前記方法は、
前記アプリケーションのユーザ・インターフェース・スクリーンをマークアップ・ドキュメントとしてそれぞれ定義する段階と、
前記ＣＲＥによって第１マークアップ・ドキュメントを検索する段階と、
前記第１マークアップ・ドキュメントに含まれる情報の第１オブジェクト指向表現を作り出す段階であって、該第１オブジェクト指向表現が前記アプリケーションの第１状態を定義する段階と、
前記ＣＲＥによって第２マークアップ・ドキュメントを検索する段階と、
前記第２マークアップ・ドキュメントに含まれる情報の第２オブジェクト指向表現を作り出す段階と、
前記ＣＲＥによって、前記第１及び第２オブジェクト指向表現をマージし、これにより、前記第１或いは第２マークアップ・ドキュメント内に含まれる情報の新たなオブジェクト指向表現を作り出す段階からなり、
該新たなオブジェクト指向表現が前記アプリケーションの新たな状態を定義することを特徴とする方法。
【請求項４２】
前記アプリケーションの前記新たな状態を更新する段階を更に備え、
該更新する段階が、
１若しくはそれ以上の追加のマークアップ・ドキュメントを検索する段階と、
前記１若しくはそれ以上の追加のマークアップ・ドキュメント内に含まれる情報の１若しくはそれ以上の追加のオブジェクト指向表現を作り出すとともに格納する段階と、
前記１若しくはそれ以上のオブジェクト指向表現と前記新たなオブジェクト指向表現をマージし、
前記アプリケーションの更新された状態を作り出す段階を備えることを特徴とする請求項４１記載の方法。
【請求項４３】
前記ユーザ・インターフェース・スクリーンのいずれかに関連するビジネス・ロジックを１若しくはそれ以上の手続コードにする段階と、
前記ＣＲＥが前記１若しくはそれ以上の手続コードを実行することを特徴とする請求項４１記載の方法。
【請求項４４】
前記ＣＲＥが、アプリケーション・プログラム・インターフェース（ＡＰＩ）を備え、
前記方法が更に、前記ＡＰＩを介して、前記マークアップ・ドキュメントと前記アプリケーション状態のいずれかを操作する段階を備えることを特徴とする請求項４２記載の方法。
【請求項４５】
クライアント・マシン内で実行されるアプリケーションを配備する方法であって、
クライアント・ランタイム環境（ＣＲＥ）を前記クライアント・マシン内に配備する段階と、
前記アプリケーションを中央サーバに配備する段階を備え、
前記クライアント・マシンがネットワークを介して前記中央サーバに接続し、前記中央サーバが前記ＣＲＥからの要求に応じる能力を備え、
更に、前記ＣＲＥから前記中央サーバへ第１要求を送信し、前記中央サーバから前記ＣＲＥに前記アプリケーションの第１マークアップ・ドキュメントをダウンロードする段階と、
前記第１マークアップ・ドキュメントの第１オブジェクト指向表現を作り出し、格納する段階であって、該第１オブジェクト指向表現が前記アプリケーションの第１状態を定義する段階と、
前記ＣＲＥから前記中央サーバに第２要求を送信し、前記中央サーバから前記ＣＲＥに前記アプリケーションの第２マークアップ・ドキュメントをダウンロードする段階と、
前記第２マークアップ・ドキュメントの第２オブジェクト指向表現を作り出すとともに格納する段階と、
前記第１オブジェクト指向表現と前記第２オブジェクト指向表現とをマージし、これにより新たなオブジェクト指向表現を作り出す段階であって、該新たなオブジェクト指向表現が前記アプリケーションの新たな状態を定義する段階からなることを特徴とする方法。
【請求項４６】
前記アプリケーションの前記新たな状態を更新する段階を更に備え、
該更新する段階が、
１若しくはそれ以上の追加のマークアップ・ドキュメントを検索する段階と、
前記１若しくはそれ以上の追加のマークアップ・ドキュメント内に含まれる情報の１若しくはそれ以上の追加のオブジェクト指向表現を作り出すとともに格納する段階と、
前記１若しくはそれ以上の追加のオブジェクト指向表現と前記新たなオブジェクト指向表現をマージし、これにより、前記アプリケーションの更新された状態を作り出す段階を備えることを特徴とする請求項４５記載の方法。
【請求項４７】
前記中央サーバから前記ＣＲＥへ前記マークアップ・ドキュメントのいずれかに関連する１若しくはそれ以上の手続コードをダウンロードする段階と、
前記１若しくはそれ以上の手続コードを、前記ＣＲＥによって実行する段階を備えることを特徴とする請求項４５記載の方法。
【請求項４８】
前記１若しくはそれ以上の手続コードのいずれかと前記マークアップ・ドキュメントのいずれかをコンパイルし、一組の手続コードに結合する段階と、
該手続コードの組が、前記クライアント・マシンによって検索並びに実行されることを特徴とする請求項４５記載の方法。
【請求項４９】
前記１若しくはそれ以上の手続コードがバイナリ・フォーマットを備え、
該バイナリ・フォーマットが、.NETCLR、Java.class format及びMacromedia Flash binary formatから選択されることを特徴とする請求項４７記載の方法。
【請求項５０】
前記１若しくはそれ以上の手続コードがテキスト・フォーマットを備え、
該テキスト・フォーマットが、ＨＴＭＬ、ＸＭＬ、平文及び圧縮テキストから選択されることを特徴とする請求項４７記載の方法。
【請求項５１】
前記クライアント・マシン内でクライアント・サイド・アプリケーション・コードをキャッシュする段階を更に備え、
前記クライアント・サイド・アプリケーション・コードは前記ダウンロードされた第１及び第２マークアップ・ドキュメント、前記新たなオブジェクト指向表現、１若しくはそれ以上の手続コード及び前記中央サーバから前記クライアント・マシンにダウンロードされたデータを備えることを特徴とする請求項４５記載の方法。
【請求項５２】
クライアント・マシン内で実行されるアプリケーションを配備する方法であって、
クライアント・ランタイム環境（ＣＲＥ）を前記クライアント・マシン内に配備する段階と、
前記アプリケーションを中央サーバ上に配備する段階を備え、
前記クライアント・マシンはネットワークを介して前記中央サーバに接続し、
前記中央サーバは前記ＣＲＥからの要求に応える能力を備え、
更に、１若しくはそれ以上のマークアップ・ドキュメントと１若しくはそれ以上の手続コードをエンティティにコンパイル及び結合する段階と、
前記ＣＲＥから前記中央サーバへ要求を送信し、前記エンティティを前記中央サーバから前記ＣＲＥにダウンロードする段階と、
前記エンティティから第１マークアップ・ドキュメントの第１情報を検索する段階と、
前記第１情報の第１オブジェクト指向表現を作り出すとともに格納する段階であって、該第１オブジェクト指向表現が前記アプリケーションの第１状態を定義する段階と、
前記エンティティから第２マークアップ・ドキュメントの第２情報を検索する段階と、
前記第２情報の第２オブジェクト指向表現を作り出すとともに格納する段階と、
前記第１オブジェクト指向表現と前記第２オブジェクト指向表現をマージし、これにより新たなオブジェクト指向表現を作り出す段階からなり、
該新たなオブジェクト指向表現が前記アプリケーションの新たな状態を定義することを特徴とする方法。
【請求項５３】
前記アプリケーションの前記新たな状態を更新する段階を更に備え、
該更新する段階が、
１若しくはそれ以上の追加のマークアップ・ドキュメントの１若しくはそれ以上の追加の情報を前記エンティティからそれぞれ検索する段階と、
前記１若しくはそれ以上の追加の情報の１若しくはそれ以上の追加のオブジェクト指向表現をそれぞれ作り出すとともに格納する段階と、
前記１若しくはそれ以上の追加のオブジェクト指向表現と前記新たなオブジェクト指向表現とをマージし、これにより前記アプリケーションの更新された状態を作り出すことを特徴とする請求項５２記載の方法。
【請求項５４】
前記エンティティから前記マークアップ・ドキュメントのいずれかに関連する１若しくはそれ以上の手続コードを検索する段階と、
前記ＣＲＥにより前記１若しくはそれ以上の手続コードを実行する段階を備えることを特徴とする請求項５２記載の方法。
【請求項５５】
ネットワーク上でアプリケーションを動作させるための分散処理システムであって、
前記アプリケーションがクライアント・サイド・コンポーネントとサーバ・サイド・コンポーネントとを備え、
前記システムは、
クライアント・ランタイム環境（ＣＲＥ）を備え、該ＣＲＥは、前記アプリケーションの前記クライアント・サイド・コンポーネントを動作させるとともに、クライアント・サイドのドキュメント・オブジェクト・モデル（ＤＯＭ）内で前記クライアント・サイド・アプリケーションの状態を維持し、
更にサーバ・ランタイム環境（ＳＲＥ）を備え、該ＳＲＥは、アプリケーションのサーバ・サイド・コンポーネントを動作させるとともに、サーバ・サイドのＤＯＭ内で前記サーバ・サイド・アプリケーションの状態を維持し、
前記クライアント・サイドのＤＯＭが自動的に前記サーバ・サイドのＤＯＭと同調することを特徴とするシステム。
【請求項５６】
リアルタイム双方向メッセージング・システムを更に備え、該メッセージング・システムが前記ＣＲＥと前記ＳＲＥとの間でメッセージを送信並びに受信することを特徴とする請求項５５記載のシステム。
【請求項５７】
前記クライアント・サイドのＤＯＭと前記サーバ・サイドのＤＯＭとの間の前記自動同調が、前記リアルタイム双方向メッセージング・システムを介して行われることを特徴とする請求項５６記載のシステム。
【請求項５８】
前記ＣＲＥがウェブ・ブラウザ内部で動作することを特徴とする請求項５５記載のシステム。
【請求項５９】
前記ＳＲＥがアプリケーション・サーバの外側で動作することを特徴とする請求項５５記載のシステム。
【請求項６０】
前記ＳＲＥがアプリケーション・サーバの内側で動作することを特徴とする請求項５５記載のシステム。
【請求項６１】
前記クライアント・サイドのＤＯＭと前記サーバ・サイドのＤＯＭがエクステンシブル・マークアップ・ランゲージ（ＸＭＬ）フォーマットを備えることを特徴とする請求項５５記載のシステム。
【請求項６２】
前記ＣＲＥがウェブ・ブラウザの外側で動作することを特徴とする請求項５５記載のシステム。
【請求項６３】
前記リアルタイム双方向メッセージング・システムがＨＴＴＰメッセージを備えることを特徴とする請求項５６記載のシステム。
【請求項６４】
前記リアルタイム双方向メッセージング・システムが前記ＣＲＥと前記ＳＲＥとの間の永続的接続を作り出すことを特徴とする請求項５６記載のシステム。
【請求項６５】
前記ＣＲＥと前記ＳＲＥとの間の前記ネットワーク上での接続が、切断されると、前記ＣＲＥと前記ＳＲＥが前記クライアント・サイドのＤＯＭと前記サーバ・サイドのＤＯＭそれぞれの中の変化のトラックを維持し、
前記ネットワークの接続が、再構築されたときに、前記クライアント・サイドのＤＯＭと前記サーバ・サイドのＤＯＭが同調することを特徴とする請求項５５記載のシステム。
【請求項６６】
クライアント・サイドのデータを格納するクライアント・サイドのＤＯＭと、
サーバ・サイドのデータを格納するサーバ・サイドのＤＯＭと、
ネットワーク上で、それぞれ前記クライアント・サイドのＤＯＭと前記サーバ・サイドのＤＯＭとを同調並びに逆転させるクライアント・サイドのエンジンとサーバ・サイドのエンジンからなることを特徴とする分散データ格納システム。
【請求項６７】
サーバからクライアント・マシンへの複数のメッセージのサーバ−プッシュを実行する方法であって、
ＨＴＴＰ接続を前記サーバに対して開くことにより、前記クライアント・マシンから前記サーバへ通常のＨＴＴＰ要求を送信する段階と、
前記サーバによって、前記ＨＴＴＰ接続を受け入れる段階と、
前記サーバにより前記クライアント・マシンに応答を返信する段階を備え、
前記応答がＨＴＴＰヘッダを備え、
該ＨＴＴＰヘッダは、所定条件に遭遇するまで、前記クライアント・マシンに前記ＨＴＴＰ接続を閉じないように指示し、これにより前記ＨＴＴＰ接続が開いたままの状態となり、
更に前記開いたＨＴＴＰ接続を介して前記サーバによって、前記クライアント・マシンへ向けて複数のメッセージのうち１若しくはそれ以上が送信されることを特徴とする方法。
【請求項６８】
前記ＨＴＴＰヘッダが、「コンテント・タイプ」ヘッダ・フィールドを備え、
該ヘッダ・フィールドが前記サーバの応答が「マルチパート」のＭＩＭＥタイプ応答であることを示し、
前記所定条件が、前記「マルチパート」のＭＩＭＥタイプ応答の終わりを備えることを特徴とする請求項６７記載の方法。
【請求項６９】
前記ＨＴＴＰヘッダが「トランスファ・エンコーディング」ヘッダ・フィールドを備え、該ヘッダ・フィールドが、前記サーバの応答が「チャンキング」であることを示し、
前記所定の条件が該チャンキングの応答の終わりを備えることを特徴とする請求項６７記載の方法。
【請求項７０】
前記ＨＴＴＰヘッダが「コンテント・レングス」ヘッダ・フィールドを備え、該ヘッダ・フィールドが、前記サーバの応答が前記複数のメッセージの全てのコンテント・レングスの総和より長い数であることを示し、
前記所定条件が、前記数に等しい或いは前記数を超える数をもたらす総バイト数を備えることを特徴とする請求項６７記載の方法。
【請求項７１】
アプリケーション・サーバ内部で動作するウェブ・アプリケーションからサーバ−プッシュを実行する通信システムであって、
前記アプリケーション内部で動作するとともに、要求を受信し、ネットワーク接続を介して前記要求に対する応答を送信するサーバ・モジュールと、
前記要求を前記サーバ・モジュールへ送信するとともに前記ネットワーク接続を介して前記要求に対する前記応答を受信するクライアント・マシンからなり、
前記サーバ・モジュールは、前記クライアント・マシンからのＨＴＴＰ要求の受領とＨＴＴＰネットワーク接続の受け入れに応じて前記クライアント・マシンへの複数のメッセージのサーバ−プッシュを実行し、
前記ＨＴＴＰネットワーク接続が、前記クライアント・マシンにより開かれ、
該ネットワークの接続を開くことが、前記クライアント・マシンへ応答を返信することにより行われ、
該応答がＨＴＴＰヘッダを備え、
該ＨＴＴＰヘッダは所定条件に遭遇するまで前記ネットワーク接続を閉じないように前記クライアント・マシンに指示し、
これにより前記ＨＴＴＰ接続は開いた状態を維持し、
前記開いたＨＴＴＰ接続を介して前記クライアント・マシンへ前記複数のメッセージのうち１若しくはそれ以上が送信可能となることを特徴とするシステム。
【請求項７２】
前記ＨＴＴＰヘッダが、「コンテント・タイプ」ヘッダ・フィールドを備え、
該ヘッダ・フィールドが前記サーバの応答が「マルチパート」のＭＩＭＥタイプ応答であることを示し、
前記所定条件が、前記「マルチパート」のＭＩＭＥタイプ応答の終わりを備えることを特徴とする請求項７１記載のシステム。
【請求項７３】
前記ＨＴＴＰヘッダが「トランスファ・エンコーディング」ヘッダ・フィールドを備え、該ヘッダ・フィールドが、前記サーバの応答が「チャンキング」であることを示し、
前記所定の条件が該チャンキングの応答の終わりを備えることを特徴とする請求項７１記載のシステム。
【請求項７４】
前記ＨＴＴＰヘッダが「コンテント・レングス」ヘッダ・フィールドを備え、該ヘッダ・フィールドが、前記サーバの応答が前記複数のメッセージの全てのコンテント・レングスの総和より長い数であることを示し、
前記所定条件が、前記数に等しい或いは前記数を超える数をもたらす総バイト数を備えることを特徴とする請求項７１記載のシステム。
【請求項７５】
前記アプリケーション・サーバがＪ２ＥＥアプリケーション・サーバであり、前記ウェブ・アプリケーションがＪａｖａウェブ・アプリケーションであることを特徴とする請求項７１記載のシステム。
【請求項７６】
前記アプリケーション・サーバが.NETアプリケーション・サーバであり、前記ウェブ・アプリケーションが.NETウェブ・アプリケーションであることを特徴とする請求項７１記載のシステム。
【請求項７７】
前記サーバ・モジュールが前記アプリケーション・サーバの後ろ側で動作することを特徴とする請求項７１記載のシステム。
【請求項７８】
前記サーバ・モジュールがアプリケーション・プログラム・インターフェース（ＡＰＩ）を備え、該ＡＰＩはメッセージを１若しくはそれ以上のクライアント・マシンに送信し、
前記ウェブ・アプリケーションが前記ＡＰＩを利用し、前記１若しくはそれ以上のクライアント・マシンにサーバ−プッシュを実行することを特徴とする請求項７１記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理状態を把握するウェブ・ベースのコンピュータ・システムと方法に関する。主に分散処理に関連し、以下の事柄を提供している。信頼性のあるリアルタイム双方向性メッセ−ジング、状態維持及びウェブ・ベース若しくは無線環境における分散アプリケーションの同期化に関する。
尚、この出願は、２００２年１１月１９日出願の米国特許仮出願第６０／４２７，５３１号（名称：処理状態を把握するウェブ・ベースのコンピュータ・システムと方法）の優先権を主張する。この出願は、同一出願人により、本明細書おいて、該出願の内容は明確に盛り込まれている。
【背景技術】
【０００２】
ワールド・ワイド・ウェブ（wwwもしくはweb）は、企業がドキュメントを公開及び公布するのに費用対効果の高い方法である。該ドキュメントは、ハイパ・テキスト・マークアップ・ランゲージ（ＨＴＭＬ）で構成されている。企業は、中央化されたウェブ・サーバにＨＴＭＬのドキュメントを公開することで世界中の人々と交信することができる。該交信は、至る所に散在するパブリック・インターネットや世界中で利用可能なウェブ・ブラウザを介して行われる。
【０００３】
企業は、ウェブが普及するにつれて、ウェブの利用を超えて、ＨＴＭＬドキュメントを配信するに至っている。
企業やソフトベンダーは、ウェブ上でビジネス・アプリケーションを送信し分散処理を実施しようとしている。分散処理は、あるコンピューティングのタイプを示している。このコンピューティングでは、アプリケーションを備える様々な構成要素やオブジェクトがネットワークに接続した様々なコンピュータに配置されている。例えば、ワード・プロセッシング・アプリケーションは、第１コンピュータ上の編集要素、第２コンピュータ上のスペルチェッカー・オブジェクト、第三コンピュータ上の類義語辞典から構成されている。ある分散処理システムでは、３つの各々のコンピュータが、様々なオペレータ・システムを作動させることさえできる。
【０００４】
ウェブ・アーキテクチャは、ウェブ・ドキュメントに提供したのと同じ利点をビジネス・アプリケーションに提供している。これらの利点は、以下に示される。
a）集中管理：アプリケーションとドキュメントは、サーバ側で集中的に管理されて良く、企業のセキュリティ、ビジネス・ロジック及びデータを厳重に管理している。
b）集中配備：企業は、何千ものクライアント・コンピュータに接続し、アプリケーションやドキュメントをアップデートする必要はない。すなわち、サーバ側の変化は、全てのユーザにすぐに伝えられるということである。
c）全世界的発信：アプリケーションとドキュメントは、セントラル・サーバにあっても良いし、どのクライアント・コンピュータに発信されても良い。該クライアント・コンピュータは、ウェブ・ブラウザ及びインターネット接続を備え、両者は世界中で利用可能である。
【０００５】
しかしながら、元来、ウェブは、ビジネス・アプリケーションを送信するためではなく、接続したドキュメントをブラウジングするために設定されたものである。
ここで、図１を参照する。
ウェブ・インフラストラクチャー（１００）は次のものを含んでいる。アプリケーション・コード（１０６）を起動するアプリケーション・サーバ（１０５）、アプリケーション・コード（１０６）により作成されたＨＴＭＬドキュメントを送信するウェブ・サーバ（１１０）、クライアント・マシン（１２０）に備わっていて“クリック  アンド  リフレッシュ”の方法でＨＴＭＬドキュメントを表示するウェブ・ブラウザ（１３０）である。
アプリケーション・コード（１０６）は、通常プログラム言語で書かれている。プログラム言語は、特にＣ、Ｃ＋＋、Ｃ＃、Ｊａｖａ、Ｊａｖａｓｃｒｉｐｔ、ＶＢＳｃｒｉｐｔ、ＡｃｔｉｏｎＳｃｒｉｐｔ、ＶｉｓｕａｌＢａｓｉｃ、あるいはいくつかのプロプラエタリ言語を含んでいる。
【０００６】
ウェブ・ブラウザ（１３０）は、要求／応答交信モデル（１４０）を介してウェブサーバ（１１０）と交信している。この要求／応答交信モデル（１４０）において、ユーザはウェブ・ブラウザ（１３０）を通して特定のウェブ・ページに要求を出す。ウェブ・ブラウザ（１３０）は、ハイパ・テキスト・トランスファ・プロトコル（ＨＴＴＰ）（１４２）を使用してウェブ・サーバ（１１０）に要望を送信する。ウェブ・サーバ（１１０）は要求を受信し、アプリケーション・サーバ（１０５）に要求を送信する。
【０００７】
アプリケーション・サーバ（１０５）では、アプリケーション・コード（１０６）が、要求を処理しＨＴＭＬドキュメントから成る応答を作成する。次に、ウェブ・サーバ（１１０）は、作成されたＨＴＭＬドキュメントをウェブ・ブラウザ（１３０）に送信する（１４４）ことで要求に応える。このウェブ・インフラストラクチャー（１００）は「処理状態を把握しない」ものである。すなわちウェブ・サーバ（１１０）及びウェブ・ブラウザ（１３０）の両方が、アプリケーション状態を維持しないということである。アプリケーション状態とは、全てのプログラム・オブジェクト、各特定の時期の変数及びリソース、変化値、様々なプログラム・オブジェクト間の関係及び様々なリソース状態の概略である。アプリケーション状態は、変化しアプリケーション・ランとして発展する。たとえば、ユーザがＡｍａｚｏｎ．ｃｏｍのウェブサイトで買い物をしているとき、買い物アプリケーション状態が、特に現在のユーザネーム、ショッピングカートのアイテムナンバー及び各アイテムの価格などの情報を含んでいる。
【０００８】
以上で言及したように、図１のウェブ・インフラストラクチャー（１００）では、クライアント・マシン（１２０）或いはウェブ・サーバ（１１０）によってアプリケーション状態は維持されない。クライアント・マシン（１２０）はただＨＴＭＬドキュメントを表示しているだけである。つまり現在のドキュメントの状態情報を維持しているのみということである。新しいドキュメントが読み込まれると、以前のドキュメントの状態情報は捨てられ、新しいドキュメントの状態情報に置き換えられる。そして以前のドキュメントの状態情報は失われる。
【０００９】
図１Ａを参照する。例えば、第１マークアップ・ドキュメント（１４２）すなわちｐａｇｅ１．ｘｍｌは、あるコードを含んでいる。そのコードは、クライアント・マシン（１２０）でボタン（１５０）を表示する。ボタン（１５０）は、「Ｔｈｉｓ  ｉｓ  ａ  ｌｉｎｅ  ｏｆ  Ｔｅｘｔ」というテキストを備える。第２マークアップ・ドキュメント（１４６）すなわちＰａｇｅ２．ｘｍｌは、ボタン（１５０）の背景を灰色に変えるコードを備えている。ボタン（１５０）の背景が灰色に変わるとボタン（１５２）と表示される。
【００１０】
第１、第２マークアップ・ドキュメント（１４２）（１４６）の対応オブジェクト指向表現（１４４）（１４８）もそれぞれ図１Ａに示されている。クライアント・マシン（１２０）が、第１マークアップ・ドキュメント（１４２）を読み込むとテキスト「Ｔｈｉｓ  ｉｓ  ａ  ｌｉｎｅ  ｏｆ  Ｔｅｘｔ」（１５０）はクライアント・マシン（１２０）に表示される。このとき（１５４）と示されたアプリケーション状態は、第１マークアップ・ドキュメント（１４２）の全ての情報を含んでいる。
【００１１】
第１マークアップ・ドキュメント（１４２）の表示に続き、クライアント・マシン（１２０）は第２マークアップ・ドキュメント（１４６）を読み込む。それによって、このとき（１５６）と示されたアプリケーション状態は、第１マークアップ・ドキュメント（１４２）の状態を捨て、第２マークアップ・ドキュメントの状態のみを含む。結果として、クライアント・マシンは何も書かれていない灰色のボタン（１５２）を表示する。ボタン（１５２）はボタン（１５０）と同じであるが、ボタン（１５２）には、テキスト「Ｔｈｉｓ  ｉｓ  ａ  ｌｉｎｅ  ｏｆ  Ｔｅｘｔ」の表示が消えている。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
今日のウェブ・インフラストラクチャー（１００）のこの「処理状態を把握しない」性質は、ビジネス・アプリケーションを送信するのにウェブを適用することを制限している。ビジネス・アプリケーションは、本質的に「処理状態を把握する」ものである。
例えば、一般的にユーザのクリックへの返答は、ユーザがクリックしたものだけではなく、アプリケーション状態にも依存している。該アプリケーション状態とは、ユーザの相互関係の履歴、フォームの価値、またネットワークの接続性をも含んでいる。
【００１３】
今日のソフトウェア開発者は、一般的にアプリケーション・サーバ内のサーバ側の状態情報を維持するために大量のコードを書かなければならない。アプリケーション・コードは、クライアントの要求への返答を作成する方法だけでなく、アプリケーション状態を維持し管理する方法も取り扱う必要がある。
図１のウェブ・インフラストラクチャー（１００）では、アプリケーション状態は、アプリケーション・サーバ（１０５）内で作動しているアプリケーション・コードによって維持されている。サーバ側でアプリケーション状態を維持するには大量な作業が必要である。これは、開発費とアプリケーション維持費を増加させる。
【００１４】
さらに、たとえ新しいマークアップ・ドキュメントが以前のマークアップ・ドキュメントとほんのわずかにしか変化していなくても、新しいマークアップ・ドキュメントの全てが、それぞれの要求／応答に関してクライアント・マシンに送信されなければならない。
一般的なマークアップ・ドキュメントは、１０キロバイトから数百キロバイトの大きさである。その様なドキュメントを発信するにはたくさんのネットワーク処理能力が必要となり、アプリケーションの対応を遅らせる。
【００１５】
現在の「処理状態を把握しない」ウェブ・インフラストラクチャー上でのビジネス・アプリケーションの送信に関する他の問題は、ネットワーク接続が常に利用可能ではないという事である。もし、ネットワーク接続が利用可能でないならば、現在のインフラストラクチャーを基盤としているウェブ・アプリケーションは利用不可能である。それは、状態がクライアント側で維持されていないからである。
この「動作不能時間」の可能性は、ビジネス・アプリケーションには容認できないものである。結果として、開発者はクライアントあるいはサーバ・アプリケーションを書いてオフライン業務能力をサポートしなければならない。
【００１６】
「処理状態を把握しない」ハイパ・テキスト・トランスファ・プロトコル（ＨＴＴＰ）の要求／応答モデル（１４０）は、リアルタイム双方向性の交信を不可能にする。このＨＴＴＰ交信モデル（１４０）は、「クライアント・プル」交信のみをサポートする。「クライアント・プル」交信では、ユーザは、新しいデータを得るためにサーバに要求を送信しなければならない。
【００１７】
多くのビジネス・アプリケーションは、持続性のある「処理状態を把握する」接続を必要としている。その接続を介して、ウェブ・サーバは、リアルタイムデータの最新情報を異なるクライアント・マシン即ち「サーバ・プッシュ」モデルに送信することができる。
例えば、株式のポートフォリオ管理アプリケーションは、リアルタイム・ストックデータを必要とする。株価が変動すると、ユーザは常に新しい価格をすぐに知る必要がある。結果として、開発者は「サーバ・プッシュ」を可能とするたくさんのコードを書かなければならない。サーバ・プッシュでは、ファイヤーウォールや他のセキュリティ関係の深刻な問題があり、取り扱うには費用がかかる。つまり、インターネットに関する双方向性の交信の使用を困難にする理由は次の３つの事項である。
a）  ネットワーク・インフラストラクチャーのインターネットは、どの種類のメッセージでも発信することが可能である。しかしながら、セキュリティ問題のため、多くの企業環境がＨＴＴＰアクセスのみ受信可能としている。そのため、もしメッセージがＨＴＴＰプロトコルを介して送信されなければ、該メッセージは様々なファイヤーウォール・ポリシーのために送信先へ送信されることができないかもしれない。
b）  ＨＴＴＰは、ウェブ・ブラウザからウェブ・サーバへの一方通行の要求／応答モデル機能を持つように設定されている。ウェブ・ブラウザは、HTTPに対する接続を開き、その接続を通して要求を送信する。ＨＴＴＰウェブ・サーバはこの要求に答え、ウェブ・ブラウザへ返答する。そして、接続を終わらせる。ＨＴＴＰ１．１は、ある期間、接続をオープンにすることができる「Ｋｅｅｐ−Ａｌｉｖｅ」のような特徴を追加した。その期間というのは、多くの要求／返答が同じ接続を介して発信されうる期間のことである。しかし、この特徴は世界中の全てのウェブ・ブラウザあるいはウェブ・サーバに対応しない。この「Ｋｅｅｐ−Ａｌｉｖｅ」接続は、たとえウェブ・ブラウザやＨＴＴＰウェブ・サーバに対応してもクライアントの要求に返信するＨＴＴＰウェブ・サーバ内でのみ利用可能である。アプリケーション・サーバ内で作動しているアプリケーション・コードが、「サーバ・プッシュ」をするのにこの接続を使用することは不可能である。
c）  ＨＴＴＰにおいて双方向性の交信を可能にするために、様々なＨＴＴＰのトンネル技術が利用可能である。該トンネル技術は、固定接続を維持するため特にビルト・クライアントあるいはサーバ・ソフトを一般的に必要とする。メッセージは接続を通して、送信目的のＨＴＴＰプロトコル内に包括されている。該技術は、追加料金と潜在的なセキュリティ問題を引き起こす。例えば、該技術は、一般的に追加サーバ・ソフトを必要とし、該追加サーバは、ポートとりわけ標準ＨＴＴＰサーバ・ポート（ポート８０）を介して固定接続し管理する。これは、サーバ側のファイヤーウォールを遮断し、深刻なセキュリティの危険性をもたらす。
【００１８】
クライアント側あるいはサーバ側の形態を変えることなく、スタンダード・アプリケーション・サーバ内で作動するアプリケーション・コードに信頼性のある「サーバ・プッシュ」機能を提供できる方法は、現在存在しない。
【００１９】
さらに、ＨＴＴＰ交信モデルは、信頼性が低い。なぜなら、メッセージが様々なネットワーク問題のために失われる可能性があるからである。ＨＴＴＰは、メッセージの送付を保証する方法を持たない。メッセージを失うことはウェブ・ブラウジングするのには容認できるかもしれないが、ビジネス・アプリケーションを作動するのには容認できない。結果として、企業は、重要なアプリケーションのためこの問題を解決するのにたくさんの資金を費やさなければならない。
【００２０】
要約すると、ウェブ・アーキテクチャは、潜在的に集中管理、全世界的発信及び全世界的配備というビジネス・アプリケーションに大きな利益をもたらす可能性がある。しかしながら、ウェブ・アーキテクチャの「処理状態を把握しない」性質は、ビジネスの重大なアプリケーションのためにウェブを使用することを制限してきた。この制限を克服するために、開発者は、多くの複雑なコードを書かなければならない。そのコードは、アプリケーション管理や維持費と同様に開発費を深刻に増加させる。この費用のかかる開発努力にもかかわらず、ウェブ・ベースのアプリケーションは、煩雑でたくさんのネットワーク処理能力が必要となる。このことは、しばしばエンドユーザを落胆させる。そのため、「処理状態を把握する」ビジネス・アプリケーションのウェブ・ベースの発信が必要となり、該発信は、以上に述べた制限を克服する。
【課題を解決するための手段】
【００２１】
本発明は総じて、処理状態を把握する分散処理を実行するコンピュータ・システムを提供し、該システムはクライアント・ランタイム環境（ＣＲＥ）を備えるクライアント・マシンを備える。ＣＲＥは、第１マークアップ・ドキュメントを検索する段階と、前記第１マークアップ・ドキュメント内に含まれる情報の第１オブジェクト指向表現を作り出すとともに格納する段階により、アプリケーションの状態を維持する。第１オブジェクト指向表現は、アプリケーションの第１状態を定義するものである。次に、第２マークアップ・ドキュメントを検索する段階と、前記第２マークアップ・ドキュメント内に含まれる情報の第２オブジェクト指向表現を作り出すとともに格納する段階を行う。そして、前記第１及び第２オブジェクト指向表現をマージし、これにより前記第１或いは第２マークアップ・ドキュメント内に蓄えられる情報の新たなオブジェクト指向表現を形成する段階を実行する。この新たなオブジェクト指向表現は、前記アプリケーションの新たな状態を定義するものである。
【００２２】
本発明は、以下に示す１若しくはそれ以上の特徴を備える。前記ＣＲＥは、更に、１若しくはそれ以上の追加のマークアップ・ドキュメントを検索する段階と、前記１若しくはそれ以上の追加のマークアップ・ドキュメント内に含まれる情報の１若しくはそれ以上の追加のオブジェクト指向表現をそれぞれ作り出し、格納する段階と、前記１若しくはそれ以上の追加のオブジェクト指向表現を前記新たなオブジェクト指向表現とマージし、これにより前記アプリケーションの更新された状態を形成する段階を実行することにより、前記アプリケーションの前記新たな状態を更新するものであってもよい。
前記オブジェクト指向表現のいずれかが、ユーザ・インターフェース、データ構造及びビジネス・ロジック・オブジェクトからなる群から選択される構造を備えるものであってもよい。
前記ＣＲＥが更に、１若しくはそれ以上の手続コードを検索し、該手続コードが前記マークアップ・ドキュメントのいずれかに関連し、
更に前記ＣＲＥが、前記１若しくはそれ以上の手続コードを実行するものであってもよい。
前記ＣＲＥが更に、アプリケーション・プログラム・インターフェース（ＡＰＩ）を備え、前記１若しくはそれ以上の手続コードが前記ＡＰＩを利用し、プログラム的に前記アプリケーションの状態を維持するものであってもよい。
【００２３】
前記アプリケーションの状態が、ドキュメント・オブジェクト・モデル（ＤＯＭ）内で維持されるものであってもよい。
前記マークアップ・ドキュメントが、エクステンシブル・マークアップ・ランゲージ（ＸＭＬ）フォーマット或いはハイパ・テキスト・マークアップ・ランケージ（ＨＴＭＬ）フォーマットを備えるものであってもよい。
前記１若しくはそれ以上の手続コードが、プログラム言語で書かれ、該プログラム言語が、Ｃ、Ｃ＋＋、Ｃ＃、Java、Javascript、VBScript、ActionScript、Visual Basic、プロプラエタリ・プログラミング言語から選択されるものであってもよい。
前記１若しくはそれ以上の手続コードがバイナリ・フォーマットを備え、該バイナリ・フォーマットが、.NETCLR、Java.class format及びMacromedia Flash binary formatから選択されるものであってもよい。
【００２４】
前記１若しくはそれ以上の手続コードがテキスト・フォーマットを備え、該テキスト・フォーマットが、ＨＴＭＬ、ＸＭＬ、平文及び圧縮テキストから選択されるものであってもよい。
前記マージする段階が、追加、除去、挿入、変更、置換、更新、結合及びこれらの組み合わせから選択される１若しくはそれ以上の動作を備えるものであってもよい。
前記オブジェクト指向表現が、オブジェクト、オブジェクト属性、オブジェクト属性値、オブジェクト階層関係コード及びこれらの組み合わせを備え、これにより、前記１若しくはそれ以上の動作が、前記オブジェクト、オブジェクト属性、オブジェクト属性値、オブジェクト階層関係コード及びこれらの組み合わせに適用されるものであってもよい。
前記１若しくはそれ以上の手続コードのいずれかと前記マークアップ・ドキュメントのいずれかがコンパイルされ、一組の手続コードに結合され、該手続コードの組が、前記ＣＲＥによって検索並びに実行されるものであってもよい。
前記マークアップ・ドキュメントのうち１若しくはそれ以上が手続コードにコンパイルされ、該手続コードが前記ＣＲＥによって、検索並びに実行されるものであってもよい。
【００２５】
前記システムが、リアルタイム双方向性メッセージング・システムを備え、該システムが、前記クライアント・マシンとネットワーク上のサーバとの間でメッセージを送信及び受信するものであってもよい。
前記ネットワークが、ワールド・ワイド・ウェブ（ｗｅｂ）或いは無線ネットワークを備えるものであってもよい。
前記システムが、ウェブ・ブラウザを更に備え、前記ＣＲＥが前記ウェブ・ブラウザの内部或いは外部を走行するものであってもよい。
【００２６】
前記クライアント・マシンが、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・デバイス及びスマートフォンから選択されるものであってもよい。
前記システムが、１若しくはそれ以上のサーバを更に備え、前記クライアント・マシンが、前記マークアップ・ドキュメントを前記１若しくはそれ以上のサーバのうちいずれかから検索するものであってもよい。
【００２７】
本発明は総じて、クライアント・マシン中のアプリケーションの状態を維持するためのコンピュータ処理方法を提供し、前記アプリケーションの第１マークアップ・ドキュメントを検索する第１の検索段階と、前記第１マークアップ・ドキュメント内に含まれる情報の第１オブジェクト指向表現を作り出し、該第１オブジェクト指向表現を格納する段階を備える。前記第１オブジェクト指向表現が前記アプリケーションの第１状態を定義する。次に、前記方法は、前記アプリケーションの第２マークアップ・ドキュメントを検索する段階と、該第２マークアップ・ドキュメント内に含まれる情報の第２オブジェクト指向表現を作り出し、該第２オブジェクト指向表現を格納する段階を実行する。前記第１及び第２オブジェクト指向表現をマージし、これにより前記第１或いは第２マークアップ・ドキュメント内に含まれる新たなオブジェクト指向表現を形成する段階を実行する。この新たなオブジェクト指向表現が前記アプリケーションの新たな状態を定義する。
【００２８】
本発明は総じて、クライアント・マシン内で実行されるアプリケーションを開発する方法を提供し、前記クライアント・マシンが、クライアント・ランタイム環境（ＣＲＥ）を利用し、前記アプリケーションの状態を維持するものである。前記方法は、前記アプリケーションのユーザ・インターフェース・スクリーンをマークアップ・ドキュメントとしてそれぞれ定義する段階を備える。次に、前記ＣＲＥによって第１マークアップ・ドキュメントを検索する段階と、前記第１マークアップ・ドキュメントに含まれる情報の第１オブジェクト指向表現を作り出す段階を実行する。該第１オブジェクト指向表現が前記アプリケーションの第１状態を定義する。次に、前記ＣＲＥによって第２マークアップ・ドキュメントを検索する段階と、前記第２マークアップ・ドキュメントに含まれる情報の第２オブジェクト指向表現を作り出す段階を実行する。最後に、前記ＣＲＥによって、前記第１及び第２オブジェクト指向表現をマージし、これにより、前記第１或いは第２マークアップ・ドキュメント内に含まれる情報の新たなオブジェクト指向表現を作り出す段階を実行する。該新たなオブジェクト指向表現が前記情報の新たな状態を定義する。
【００２９】
上記方法は、以下に示す１若しくはそれ以上の特徴を備えるものであってもよい。
前記方法が、前記マークアップ・ドキュメントに関連するビジネス・ロジックを１若しくはそれ以上の手続コードにする段階と、前記ＣＲＥが前記１若しくはそれ以上の手続コードを実行するものであってもよい。
前記ＣＲＥが、アプリケーション・プログラム・インターフェース（ＡＰＩ）を備え、前記方法が更に、前記ＡＰＩを介して、前記マークアップ・ドキュメントと前記アプリケーション状態のいずれかを操作する段階を備えるものであってもよい。
【００３０】
本発明は総じて、クライアント・マシン内で実行されるアプリケーションを配備する方法を提供し、該方法は、クライアント・ランタイム環境（ＣＲＥ）を前記クライアント・マシン内に配備する段階と、前記アプリケーションを中央サーバに配備する段階を備える。前記クライアント・マシンは、ネットワークを介して前記中央サーバに接続し、前記中央サーバは、前記ＣＲＥからの要求に応じる能力を備える。次に、前記ＣＲＥから前記中央サーバへ第１要求を送信し、前記中央サーバから前記ＣＲＥに前記アプリケーションの第１マークアップ・ドキュメントをダウンロードする段階と、前記第１マークアップ・ドキュメントの第１オブジェクト指向表現を作り出し、格納する段階を実行する。該第１オブジェクト指向表現が前記アプリケーションの第１状態を定義する。次に、前記ＣＲＥから前記中央サーバに第２要求を送信し、前記中央サーバから前記ＣＲＥに前記アプリケーションの第２マークアップ・ドキュメントをダウンロードする段階と、前記第２マークアップ・ドキュメントの第２オブジェクト指向表現を作り出すとともに格納する段階を実行する。最後に、前記第１オブジェクト指向表現と前記第２オブジェクト指向表現とをマージし、これにより新たなオブジェクト指向表現を作り出す段階を実行し、該新たなオブジェクト指向表現が前記アプリケーションの新たな状態を定義する。
【００３１】
上記方法は、以下に示す１若しくはそれ以上の特徴を備えるものであってもよい。
前記ＣＲＥが前記アプリケーションの前記新たな状態を更新するものであり、該更新が、１若しくはそれ以上の追加のマークアップ・ドキュメントを検索する段階と、前記１若しくはそれ以上の追加のマークアップ・ドキュメント内に含まれる情報の１若しくはそれ以上の追加のオブジェクト指向表現をそれぞれ作り出すとともに格納する段階と、前記１若しくはそれ以上の追加のオブジェクト指向表現と前記新たなオブジェクト指向表現をマージし、これにより、前記アプリケーションの更新された状態を作り出す段階により行われる。
前記オブジェクト指向表現のいずれかが、ユーザ・インターフェース、データ構造及びビジネス・ロジック・オブジェクトの中のものであってもよい。
前記ＣＲＥが更に、１若しくはそれ以上の手続コードを検索し、該手続コードが前記マークアップ・ドキュメントのいずれかに関連し、更に前記ＣＲＥが、前記１若しくはそれ以上の手続コードを実行するものであってもよい。
前記手続コードが、プログラム言語で書かれ、該プログラム言語が、Ｃ、Ｃ＋＋、Ｃ＃、Java、Javascript、VBScript、ActionScript、Visual Basic、プロプラエタリ・プログラミング言語から選択されるものであってもよい。
前記手続コードがバイナリ・フォーマットを備え、該バイナリ・フォーマットが、.NETCLR、Java.class format及びMacromedia Flash binary formatから選択されるものであってもよい。
前記手続コードがテキスト・フォーマットを備え、該テキスト・フォーマットが、ＨＴＭＬ、ＸＭＬ、平文及び圧縮テキストから選択されるものであってもよい。
前記手続コードと前記マークアップ・ドキュメントのいずれかがコンパイルされ、一組の手続コードに結合され、該手続コードの組が、前記ＣＲＥによって検索並びに実行されるものであってもよい。
前記方法が、前記クライアント・マシン内でクライアント・サイド・アプリケーション・コードをキャッシュする段階を更に備えるものであってもよく、該クライアント・サイド・アプリケーション・コードは前記第１及び第２マークアップ・ドキュメント、前記新たなオブジェクト指向表現、１若しくはそれ以上の手続コード及び前記中央サーバから前記クライアント・マシンにダウンロードされたデータを備えるものであってもよい。
【００３２】
本発明は総じて、クライアント・マシン内で実行されるアプリケーションを配備する方法を提供し、該方法は、クライアント・ランタイム環境（ＣＲＥ）を前記クライアント・マシン内に配備する段階と、前記アプリケーションを中央サーバ上に配備する段階を備える。前記クライアント・マシンはネットワークを介して前記中央サーバに接続し、前記中央サーバは前記ＣＲＥからの要求に応える能力を備える。次に、１若しくはそれ以上のマークアップ・ドキュメントと１若しくはそれ以上の手続コードをエンティティにコンパイル及び結合する段階と、前記ＣＲＥから前記中央サーバへ要求を送信し、前記エンティティを前記中央サーバから前記ＣＲＥにダウンロードする段階を実行する。次に、前記エンティティから第１マークアップ・ドキュメントの第１情報を検索する段階と、前記第１マークアップ・ドキュメントの第１オブジェクト指向表現を作り出すとともに格納する段階を実行する。該第１オブジェクト指向表現が前記アプリケーションの第１状態を定義する。次に、前記エンティティから第２マークアップ・ドキュメントの第２情報を検索する段階と、前記第２マークアップ・ドキュメントの第２オブジェクト指向表現を作り出すとともに格納する段階を実行する。最後に、前記第１オブジェクト指向表現と前記第２オブジェクト指向表現をマージし、これにより新たなオブジェクト指向表現を作り出す段階を実行する。該新たなオブジェクト指向表現は、前記アプリケーションの新たな状態を定義する。
【００３３】
本発明は総じて、分散データ格納システムを提供し、該システムは、クライアント・サイドのデータを格納するクライアント・サイドのＤＯＭと、サーバ・サイドのデータを格納するサーバ・サイドのＤＯＭと、ネットワーク上で、それぞれ前記クライアント・サイドのＤＯＭと前記サーバ・サイドのＤＯＭとを同調並びに逆転させるクライアント・サイドのエンジンとサーバ・サイドのエンジンからなる。
【００３４】
上記方法は、以下に示す１若しくはそれ以上の特徴を備えるものであってもよい。
前記クライアント・サイド・エンジンとサーバ・サイド・エンジンとの間のネットワーク接続が切断されると、前記クライアント・サイド・エンジンとサーバ・サイド・エンジンが前記クライアント・サイドのＤＯＭと前記サーバ・サイドのＤＯＭそれぞれの中の変化のトラックを維持し、前記ネットワークの接続が、再構築されたときに、前記クライアント・サイドのＤＯＭと前記サーバ・サイドのＤＯＭが同調するものであってもよい。
前記ネットワークがウェブ或いは無線ネットワークであってもよい。
【００３５】
本発明は総じて、分散データ格納システムを提供し、該システムは、クライアント・サイドのデータを格納するクライアント・サイドのＤＯＭと、サーバ・サイドのデータを格納するサーバ・サイドのＤＯＭと、ネットワーク上で、それぞれ前記クライアント・サイドのＤＯＭと前記サーバ・サイドのＤＯＭとを同調並びに逆転させるクライアント・サイドのエンジンとサーバ・サイドのエンジンからなる。
【００３６】
上記方法は、以下に示す１若しくはそれ以上の特徴を備えるものであってもよい。
前記ＨＴＴＰヘッダが、「コンテント・タイプ」ヘッダ・フィールドを備え、該ヘッダ・フィールドが前記サーバの応答が「マルチパート」のＭＩＭＥタイプ応答であることを示し、前記所定条件が、前記「マルチパート」のＭＩＭＥタイプ応答の終わりを備えるものであってもよい。
前記ＨＴＴＰヘッダが「トランスファ・エンコーディング」ヘッダ・フィールドを備え、該ヘッダ・フィールドが、前記サーバの応答が「チャンキング」であることを示し、前記所定の条件が該チャンキングの応答の終わりを備えるものであってもよい。
前記ＨＴＴＰヘッダが「コンテント・レングス」ヘッダ・フィールドを備え、該ヘッダ・フィールドが、前記サーバの応答が前記複数のメッセージの全てのコンテント・レングスの総和より長い数であることを示し、前記所定条件が、前記数に等しい或いは前記数を超える数をもたらす総バイト数を備えるものであってもよい。
【００３７】
本発明は総じて、アプリケーション・サーバ内部で動作するウェブ・アプリケーションからサーバ−プッシュを実行する通信システムを提供する。該システムは、前記アプリケーション内部で動作するとともに、要求を受信し、ネットワーク接続を介して前記要求に対する応答を送信するサーバ・モジュールと、前記要求を前記サーバ・モジュールへ送信するとともに前記ネットワーク接続を介して前記要求に対する前記応答を受信するクライアント・マシンからなる。前記サーバ・モジュールは、前記クライアント・マシンからのＨＴＴＰ要求の受領とＨＴＴＰネットワーク接続の受け入れに応じて前記クライアント・マシンへの複数のメッセージのサーバ−プッシュを実行する。前記ＨＴＴＰネットワーク接続が、前記クライアント・マシンにより開かれ、該ネットワークの接続を開くことが、前記クライアント・マシンへ応答を返信することにより行われる。該応答がＨＴＴＰヘッダを備え、該ＨＴＴＰヘッダは所定条件に遭遇するまで前記ネットワーク接続を閉じないように前記クライアント・マシンに指示し、これにより前記ＨＴＴＰ接続は開いた状態を維持し、前記開いたＨＴＴＰ接続を介して前記クライアント・マシンへ前記複数のメッセージのうち１若しくはそれ以上が送信可能となる。
【００３８】
本発明は総じて、サーバからクライアント・マシンへの複数のメッセージのサーバ−プッシュを実行する方法を提供し、該方法は、ＨＴＴＰ接続を前記サーバに対して開くことにより、前記クライアント・マシンから前記サーバへ通常のＨＴＴＰ要求を送信する段階と前記サーバによって、前記ＨＴＴＰ接続を受け入れる段階を備える。次に前記サーバにより前記クライアント・マシンに応答を返信する段階を実行し、前記応答は、ＨＴＴＰヘッダを備え、該ＨＴＴＰヘッダは、所定条件に遭遇するまで、前記クライアント・マシンに前記ＨＴＴＰ接続を閉じないように指示し、これにより前記ＨＴＴＰ接続が開いたままの状態となる。最後に、前記開いたＨＴＴＰ接続を介して前記サーバによって、前記クライアント・マシンへ向けて複数のメッセージのうち１若しくはそれ以上が送信される。
【発明の効果】
【００３９】
本発明における利点のうち１若しくはそれ以上のことが以下に示される。
本発明の分散処理システムを用いることにより、ソフトウェア開発者がウェブ−ベースのアプリケーションに書き込み、該アプリケーションが複雑なタスクを実行可能となる。該タスクは、処理状態を把握しないウェブ−インラストラクチャでは困難なものも含まれる。なぜなら、アプリケーションの状態はクライアント・サイドにより維持され、アプリケーションはとても応答性が高く、複雑なビジネス・ロジックの実行を、サーバへの行き来なしで行うことが可能となるためである。更には、アプリケーションの状態がサーバ・サイド上でも利用可能となるため、サーバ・サイドのビジネス・ロジックが、クライアント・サイドへの行き来なしにクライアントの状態を問い合わせ可能となるため、これにより、アプリケーションの性能の大幅な改善を行うことが可能となる。クライアントＤＯＭとサーバＤＯＭは自動的に同調するため、開発者はタスクを実行するコードを書き込む必要がない。それゆえ、低い開発コストとメンテナンスの労力の削減を行うことが可能となる。このような自動的な同調は最適化された帯域幅の利用を可能とする。なぜなら、ＣＲＥとＳＲＥとの間の増分的変化のみ送ることを可能とし、これにより、フルページのリフレッシュを妨げる帯域幅を避けることが出来、帯域幅の消費を低減可能となる。
【００４０】
更に、アプリケーションの状態情報が、ＣＲＥとＳＲＥの両方で利用可能となる。したがって、ネットワークが利用可能でない場合であっても、アプリケーションは動作可能である。ＤＯＭ内の変化は維持され、ネットワークが一度再接続されるならば自動的に同調可能である。このことは、現行のウェブ−アーキテクチャ上を走るオフライン・オペレーションを要求するアプリケーションの完全な分類を可能とする。
【００４１】
更に、ＣＲＥ及びＳＲＥがネットワーク通信を完全に管理可能であるので、十分な開発とメンテナンスの削減が達成可能となる。なぜなら、開発者がネットワーク通信を変更する必要がないためである。ＣＲＥとＳＲＥは、通信レイヤを最適化可能である。したがって、信頼性が高く、有効性の高い帯域幅となる。一つの例においては、本発明は、ＨＴＭＬベースの処理と比較して、９０％の帯域幅を節約することができる。
【００４２】
重要なことは、上記システムが様々なデバイスに対する書き込み用アプリケーションをより簡単に作ることを可能とするということである。ウェブ・ブラウザ内部を走るのに加えて、ＣＲＥは、多くの異なるデバイス、例えば、ポケットＰＣやハンドヘルド・デバイスでも動作可能である。一つの例において、クライアント・プログラムは携帯電話上で動作可能であり、該プログラムは、ヴォイス・ベース及びフォーム・ベースのユーザ・インタラクション用のＸＭＬを用いて書き込まれる。ユーザは、音声或いはオンスクリーン・キーボードを用いて携帯電話と対話可能である。このクライアント・プログラムは非常に軽量で、読み取りやすく、ヴォイス・ベースのユーザ・インタラクションを完全な機能をもって管理可能となる。
【００４３】
クロス・プラットフォームの能力は、他のもう１つの利点である。ＸＭＬを用いて書き込まれたアプリケーションは、デバイスがＣＲＥのようなものをサポートする限り、任意のデバイス上で動作可能である。例えば、リッチ・グラフィカル・ユーザ・インターフェース（ＧＵＩ）アプリケーションは、パーム・デバイスで動作可能である。またWidows CEデバイス上でも、再コード化の必要性なしに動作可能である。このようなクロス・プラットフォームの能力は、Ｊａｖａプログラムの能力である「一度書き込んだら、どこでも動作できる」というものとは異なるものである。Ｊａｖａプログラムは、オブジェクト指向Ｊａｖａ  ＡＰＩを用いて書き込まれる。このＪａｖａ  ＡＰＩは、開発者が多数の低レベルプログラムを作成することを要求する。例えば、ネットワーク通信管理プログラムや低レベルのグラフィック・ドローイングである。このような低レベルのプログラムは装置依存性であり、通常携帯可能なものではない。クロス・プラットフォームのクライアント・サイドのＪａｖａアプリケーションを書き込むことは、今尚困難なことである。本発明の方法は、より高いレベルのアブストラクションを提供可能であり、該アブストラクションは携帯可能であり、アプリケーションは直接ＸＭＬを用いて通常書き込まれる。低レベルの動作は、アプリケーション開発者の下ではなく、完全にサポート・インフラストラクチャによって取扱われるものとなる。
【００４４】
更に、本発明のシステムは、ユーザが様々なコンピューティング・デバイス上で様々なアプリケーションにアクセスし動作させることを可能とする。このことは、予めこれらのアプリケーションをダウンロードすることを要せず、したがって、これらデバイスの計算能力及び格納の限界を克服せしめる。企業は、全てのＸＭＬアプリケーションを中央サーバに格納し、ユーザはユーザ自身のコンピューティング・デバイスにこれらアプリケーション用のＸＭＬドキュメントをダウンロード可能であり、この作業に手間を要さない。このようなＸＭＬドキュメントはネットワーク上に素早く伝達され、たとえ動作の遅いネットワーク接続であっても、ユーザの感覚からさほど遅れない時間で、伝達可能となる。またそれ以上のインストレーションは必要とされない。利用可能なアプリケーションの数は、デバイス上で利用できる計算能力によって制限されるものではなく、むしろサーバ上で利用できる計算能力により制限されるものとなる。
【００４５】
本発明の１若しくはそれ以上の詳細は、添付の図面及び下記説明によりなされる。他の特徴、即ち、本発明の目的及び利点は下記の好適な実施形態並びに図面及び請求の範囲から明確なものとなる。
【発明を実施するための最良の形態】
【００４６】
以下、図面を参照しつつ、本発明の説明を行う。同様の要素には同様の符号を付して説明する。
図２を参照する。分配処理システム（７００）はクライアント・マシン（２１９）、ウェブ・サーバ（１１２）、及びアプリケーション・サーバ（１０５）を備える。アプリケーション・サーバ（１０５）はウェブ・サーバ（１１２）の後ろ側で動作するとともに、サーバ・サイド・アプリケーション（１０６）を作動させる。ウェブ・サーバ（１１２）はＨＴＭＬ或いはＸＭＬドキュメントをクライアント・ウェブ・ブラウザ（２２０）に伝達する。該ＨＴＭＬ或いはＸＭＬドキュメントは、サーバ・サイド・アプリケーション（１０６）によって生成される。クライアント・ウェブ・ブラウザ（２２０）はクライアント・マシン（２１９）内に常駐する。高信頼度リアルタイム双方向性メッセージング・システム（２４０）がメッセージをクライアント・ウェブ・ブラウザ（２２０）とウェブ・サーバ（１１２）の間でＨＴＴＰウェブ・コネクションを通して送信する。クライアント・マシン（２１９）はクライアント・ランタイム環境（client runtime environment, ＣＲＥ）（２２４）を備える。該ＣＲＥはクライアント・ウェブ・ブラウザ（２２０）及びクライアント・サイド・アプリケーション・コード（２２２）内部で作動する。他の実施形態では、ＣＲＥはクライアント・ウェブ・ブラウザ（２２０）外部で作動する。クライアント・サイド・アプリケーション・コード（２２２）はエクステンシブル・マークアップ・ドキュメント（Extensible Markup Language, ＸＭＬ）ドキュメント及びスクリプトからなる。ＣＲＥ（２２４）はクライアント・サイド・ファイアウォール（２４４）により保護され、ウェブ・サーバ（２１４）はサーバ・サイド・ファイアウォール（２４２）により保護される。ＣＲＥ（２２４）はドキュメント・オブジェクト・モデル（Document Object Model, ＤＯＭ）（２２６）、通信モジュール（２２５）、状態同期及び継続化モジュール（２２８）、及びその他の機能的モジュール（２２７）を備える。該機能的モジュールとしては、例えば、ＸＭＬ構文解析プログラム、ユーザ・インターフェース、記憶装置、セキュリティ、実行エンジンが挙げられる。ＸＭＬ構文解析プログラムはＸＭＬドキュメントを構文解析する。該ＸＭＬドキュメントは、アプリケーション・サーバ（１０５）から提供される。構文解析の結果を該アプリケーションのクライアント・サイドの状態の一部としてクライアント・サイドＤＯＭ（２２６）に記録させてもよい。該ユーザ・インターフェース・モジュールは、ユーザ・インターフェースを表示し、該アプリケーションのＸＭＬ記述に従ってユーザと交信する。該実行エンジンモジュールは、クライアント・サイド・アプリケーション・コード（２２２）を実行可能である。ＤＯＭ（２２６）は該アプリケーションのクライアント・サイドの状態を維持するとともに、該ＣＲＥにより自動的に更新される。同期及び継続化モジュール（２２８）はＤＯＭ（２２６）をアプリケーション・サーバ（１０５）と同期化するとともに、継続的記憶装置からＤＯＭ（２２６）を保存及び／又は検索する。
【００４７】
図１Ａ及び図２Ａを参照する。図２のコンピュータ・システム（７００）は該アプリケーションの状態を、クライアント・サイドＤＯＭ（２２６）内に、維持する。これは以下の工程によって行われる。初めに、ＣＲＥ（２２４）がアプリケーション・サーバ（１０５）からpage1.xmlの第１マークアップ・ドキュメント（１４２）を検索する。その後該ＣＲＥは取得したマークアップ・ドキュメントを処理して第１オブジェクト指向表現（１４４）にする。第１マークアップ・ドキュメント（１４２）はクライアント・マシン（１２０）内に「Ｔｈｉｓ  ｉｓ  ａ  ｌｉｎｅ  ｏｆ  Ｔｅｘｔ」というテキストを表示するコードを備える。次に、ＣＲＥ（２２４）はアプリケーション・サーバ（１０５）からpage2.xmlの第２マークアップ・ドキュメント（１４６）を検索する。その後該ＣＲＥは取得したマークアップ・ドキュメントを処理して第２オブジェクト指向表現（１４８）にする。第２マークアップ・ドキュメント（１４６）は、クライアント・マシン（１２０）内に灰色のボタン（１５２）を表示するコードを備える。次にＣＲＥ（２２４）は第１及び第２オブジェクト指向表現（１４４）及び（１４６）に含まれる情報を合わせて、新たなオブジェクト指向表現（１７４）を作成する。新たなオブジェクト指向表現（１７４）は「Ｔｈｉｓ  ｉｓ  ａ  ｌｉｎｅ  ｏｆ  Ｔｅｘｔ」というテキストを灰色のボタンの背景（１７６）内に表示する。これによって、第１及び第２マークアップ・ドキュメント（１４２）、（１４６）の状態を維持する。オブジェクト指向表現（１４２）、（１４４）及び（１７４）はクライアント・サイドＤＯＭ（２２６）に記憶される。
【００４８】
図４を参照する。分配処理システム（２００）はクライアント・ランタイム環境（ＣＲＥ）（２２４）（クライアント・ウェブ・ブラウザ（２２０）内で作動する）、アプリケーション・サーバ・ランタイム環境（server runtime environment, ＳＲＥ）（２１４）（ＨＴＴＰウェブ・サーバ（２１９）の後ろ側で作動する）、高信頼度リアルタイム双方向性メッセージング・システム（２４０）（ＨＴＴＰウェブ・コネクションを通してＣＲＥ（２２４）とＳＲＥ（２１４）の間でメッセージを送信並びに受信する）を備える。ＣＲＥ（２２４）はクライアント・サイド・ファイアウォール（２４４）によって保護され、ＳＲＥ（２１４）はサーバ・サイド・ファイアウォール（２４２）により保護される。メッセージは、ノーマル・ファイアウォール・ポート（８０）（図示せず）を通過する。ノーマル・ファイアウォール・ポート（８０）は対応するクライアント・サイド・ファイアウォール及びサーバ・サイド・ファイアウォール内にある。アプリケーションはクライアント・サイド・コード（２２２）及びサーバ・サイド・コード（２１２）を備える。一つの例としては、該クライアント・サイド・アプリケーション・コード（２２２）及び該サーバ・サイド・アプリケーション・コード（２１２）はＸＭＬドキュメント及びスクリプトを備える。ＣＲＥ（２２４）は、ＸＭＬクライアント・サイド文書オブジェクトモデル（Document Object Model, ＤＯＭ）（２２６）内にクライアント・サイド・アプリケーションの状態を維持する。ＤＯＭ（２２６）はオブジェクト指向ドキュメント表現法を提供し、どのような属性が各オブジェクトと関連付けられるか、またどのように該オブジェクトと属性が操作されるかを定義する。ＳＲＥ（２１４）はまた、サーバ・サイド・アプリケーションの状態をサーバ・サイドＤＯＭ（２１６）内に維持する。クライアント・サイドＤＯＭ（２２６）とサーバ・サイドＤＯＭ（２１６）は、リアルタイム双方向性メッセージング・システム（２４０）を介して、自動的に相互に同期する。その際改めてクライアント・サイド・ファイアウォール（２４４）或いはサーバ・サイド・ファイアウォール（２４２）に変更を加える必要は全くない。
【００４９】
ＣＲＥ（２２４）はＤＯＭ（２２６）に加えて通信モジュール（２２５）、状態同期及び継続化モジュール（２２８）及びその他の機能的モジュール（２２７）を備える。該機能的モジュールとしては、例えば、エクステンシブル・マークアップ・ドキュメント（ＸＭＬ）構文解析プログラム、ユーザ・インターフェース、記憶装置、セキュリティ、実行エンジンが挙げられる。該ＸＭＬ構文解析プログラムは、アプリケーション・サーバ（２１０）からのＸＭＬドキュメントを構文解析する。構文解析の結果を、アプリケーションのクライアントの状態の一部として、クライアント・サイドＤＯＭ（２２６）内に記憶させてもよい。該ユーザ・インターフェース・モジュールは、該ユーザ・インターフェースを表示するとともに、該アプリケーションのＸＭＬ記述に従って該ユーザと交信する。該実行エンジンモジュールは、アプリケーション・サーバ（２１０）上のＸＭＬドキュメントからのクライアント・サイド・アプリケーション・コード（２２２）を実行可能である。上記のごとく、ＤＯＭ（２２６）は、該アプリケーションのクライアント・サイドの状態を表現するとともに、該ＣＲＥにより自動的に更新される。同期及び継続化モジュール（２２８）はＤＯＭ（２２６）をアプリケーション・サーバ（２１０）と同期させるとともに、継続的記憶装置からのＤＯＭ（２２６）を記憶及び／又は検索する。
【００５０】
ＳＲＥ（２１４）はアプリケーション・サーバ（２１０）内において、ＨＴＴＰウェブ・サーバ（２１９）の後ろ側で動作する。ＳＲＥ（２１４）はＣＲＥ（２２４）と同等の構造を有する。該ＳＲＥは更に、サーバ・サイドＤＯＭ（２１６）、通信モジュール（２１５）、同期及び継続化モジュール（２１８）及びその他の機能的モジュール（２１７）を備える。これらモジュールの大部分は、クライアント・サイドの対応するモジュールと同じ役割を果たす。サーバ・サイドＤＯＭ（２１６）は、ＳＲＥ（２１４）に送られたＸＭＬドキュメントを構文解析することにより構築される。結果として、サーバ・サイドＤＯＭ（２１６）は該アプリケーションのクライアント・サイドの状態を反映するとともに、サーバ・サイド・アプリケーション・コード（２１２）にクライアント・サイドの状態を提供する。更に、サーバ・サイド・アプリケーション・コード（２１２）がサーバ・サイドＤＯＭ（２１６）を変更すると、ＳＲＥ（２１４）は該アプリケーションのクライアント・サイドにメッセージを送信する。これにより、クライアント・サイドＤＯＭ（２２６）もまた更新された状態になる。クライアント・サイド・アプリケーション・コード（２２２）或いはユーザがクライアント・サイドＤＯＭ（２２６）を変更すると、ＣＲＥ（２２４）はＳＲＥ（２１４）にメッセージを送信する。これによりサーバ・サイドＤＯＭ（２１６）は同期される。追加的モジュールとしてはアプリケーション・サーバ・インターフェース・モジュール及びクラスタリング・モジュールなどが挙げられる。該アプリケーション・サーバ・インターフェース・モジュールは、ＳＲＥ（２１４）がアプリケーション・サーバ（２１０）内部での作動を可能にするとともに、アプリケーション・サーバ（２１０）内部のアプリケーションが該ＳＲＥの機能性へのアクセスを可能にする。該クラスタリング・モジュールは該ＳＲＥのクラスタリングを補助する。
【００５１】
本発明による処理状態を把握するコンピューティングはまた、分散処理システムにも適用される。該分散処理システムは、クライアント・マシンを備え、該クライアント・マシンは複数のサーバとネットワーク接続される。図３を参照する。分散処理システム（５００）はクライアント・マシン（５５０）及びサーバ１からＮ（Ｎは０より大きい整数）（５１０、５２０、．．．５３０）を備える。クライアント・マシン（５５０）は、ネットワーク（５４０）を介してサーバ１からＮとネットワーク接続される。ネットワーク（５４０）はワイヤレスでも有線でもよい。該通信はＨＴＴＰ或いはＴＣＰとしてよい。クライアント・マシン（５５０）はＣＲＥ（５５４）及びクライアント・サイド・アプリケーション・コード（５５２）を備える。該クライアント・サイド・アプリケーション・コードは、ＸＭＬ及びスクリプト・ページを備える。ＣＲＥ（５５４）はＤＯＭ（５５６）、通信モジュール（５５５）、状態同期及び継続化モジュール（５５８）及びその他の機能的モジュール（５５７）を備える。該機能的モジュールとしては、例えばエクステンシブル・マークアップ・ドキュメント（ＸＭＬ）構文解析プログラム、ユーザ・インターフェース、記憶装置、セキュリティ、実行エンジンが挙げられる。尚、該ＤＯＭは該アプリケーションのクライアント・サイドの状態を維持する。該ＸＭＬ構文解析プログラムはサーバ１からＮからのＸＭＬドキュメントを構文解析する。構文解析の結果を、アプリケーションのクライアント・サイドの状態の一部としてクライアント・サイドＤＯＭ（５５６）に記憶させてもよい。ユーザ・インターフェース・モジュールは該ユーザ・インターフェースを表示するとともに、該アプリケーションのＸＭＬ記述に従って該ユーザと交信する。該実行エンジンモジュールは、クライアント・サイド・アプリケーション・コード（５５２）を実行可能である。同期及び継続化モジュール（５５８）はＤＯＭ（５５６）をサーバ１からＮと同期させるとともに、継続的記憶装置からのＤＯＭ（５５６）を記憶及び／又は検索する。一例としては、サーバ１からＮでウェブ・サービスを実行し、クライアント・マシン（５５０）をウェブ・サービス・コンシューマとする。
【００５２】
アプリケーション・コードは、図２乃至図４の分散処理プラットフォーム上で動作する。該アプリケーション・コードは、今日のＨＴＭＬウェブ・アプリケーション・コードと同等のものである。すなわち該データベース・ティア及びサーバ・サイド・ビジネス・ロジック・ティアは、該アプリケーション・サーバにより取り扱われる。一つの例として、プレゼンテーション・ティアがJavaサーバ・ページ（Java Server Pages）及びServletsを用いて構築される。本発明の特徴は、該アプリケーションの該ユーザ・インターフェースが、ＨＴＭＬではなくＸＭＬを用いて記述される点にある。一つの例として、図６に示す初期スクリーン・フォームを表示する初期ＸＭＬマークアップ・ドキュメントのためのアプリケーション・コードは、以下の通りである。
【００５３】
初期ＸＭＬマークアップ・ドキュメント：
＜xml＞
＜remove id=”mypopup”/＞
＜popupmenu id=”mypopup” location=”10,10”bgcolor=”white” borderclolor=”red”
borderstyle=”solid” borderwidth=”1” visible=”false”＞
＜menuitem text=”Status: Incomplete” font=”Tahoma,bold,12” fgcolor=”red”/＞
＜separator /＞
＜panel＞
＜panel＞
＜panel＞
＜label font=”Tahoma,bold,12” fgcolor=”red” text=”Credit Card”/＞
＜label id=”popup_cc_name” text=”Empty card holder” visible=”false”/＞
＜label id=”popup_cc_no” text=”Empty or invalid card number” visible=”false”/＞
＜label id=”popup_cc_type” text=”Empty card type” visible=”false”/＞
＜label id=”popup_cc_mm” text=”Empty card month” visible=”false”/＞
＜label id=”popup_cc_ok” text=”OK” font=”Tahoma,bold,12” fgcolor=”green” visible=”false”/＞
＜layoutmanager layout=”boxlayout” orientation=”vertical” align=”start”/＞
＜/panel＞
＜label img=”./images/verticalline.gif”/＞
＜panel＞
＜label font=”Tahoma,bold,12” fgcolor=”red” text=”Billing Address”/＞
＜label id=”popup_b_fname” text=”Empty first name” visible=”false”/＞
＜label id=”popup_b_lname” text=”Empty last name” visible=”false”/＞
＜label id=”popup_b_addr1” text=”Empty address line#1” visible=”false”/＞
＜label id=”popup_b_city” text=”Empty city field” visible=”false”/＞
＜label id=”popup_b_state” text=”Empty state field” visible=”false”/＞
＜label id=”popup_b_zip” text=”Empty zip field” visible=”false”/＞
＜label id=”popup_b_country” text=”Empty country field” visible=”false”/＞
＜label id=”popup_b_ok” text=”OK” font=”Tahoma,bold,12” fgcolor=”green” visible=”false”/＞
＜layoutmanager layout=”boxlayout” orientation=”vertical” align=”start”/＞
＜/panel＞
＜label img=”./images/verticalline.gif”/＞
＜panel＞
＜label font=”Tahoma,bold,12” fgcolor=”red” text=”Shipping Address”/＞
＜label id=”popup_s_fname” text=”Empty first name” visible=”false”/＞
＜label id=”popup_s_lname” text=”Empty last name” visible=”false”/＞
＜label id=”popup_s_addr1” text=”Empty address line#1” visible=”false”/＞
＜label id=”popup_s_city” text=”Empty city field” visible=”false”/＞
＜label id=”popup_s_state” text=”Empty state field” visible=”false”/＞
＜label id=”popup_s_zip” text=”Empty zip field” visible=”false”/＞
＜label id=”popup_s_coutry” text=”Empty country field” visible=”false”/＞
＜label id=”popup_s_ok” text=”OK” font=”Tahome,bold,12” fgcolor=”green” visible=”false”/＞
＜layoutmanager layout=”boxlayout” orientation=”vertical” align=”start”/＞
＜/panel＞
＜layoutmanager layout=”boxlayout” orientation=”horizontal”
align=”stretch”/＞
＜/panel＞
＜layoutmanager layout=”boxlayout” orientation=”vertical”/＞
＜/panel＞
＜/popupmenu＞
＜mco id=”formhandler” src=”com.nexaweb.samples.orderdemo.FormHandler”/＞
＜remove id=”newOrderForm”/＞
＜remove id=”newodercustomerbox”/＞
＜window id=”newOrderForm” title=”Enter New Order” size=”850,520” location=”20,20” focused=”true”
onclose=”processOrder.do?command=closeNewOrder” model=”true”＞
＜panel bordertitle=”Customer Information” borderwidth=”2” titlejustification=”left” borderstyle=”groove” margin=”3,3,3,3”＞
＜panel＞
＜panel id=”newordercustomerlookup”＞
＜label text=”Customer Look up”/＞
＜combobox id=”combo_newordercustomerbox” size=”100,20” oncommand=”processOrder.do?command=populateaddress”＞
＜listbox id=”newordercustomerbox”＞
＜listitem id=”newordercustomer-0” text=”New Customer”/＞
＜listitem id=”newordercustomer-1” text=”Mike Adam”/＞
＜listitem id=”newordercustomer-2” text=”Jyothi Smith”/＞
＜listitem id=”newordercustomer-3” text=”Nancy Doss”/＞
＜listitem id=”newordercustomer-4” text =”Steve Job”/＞
＜listitem id=”newordercustomer-5” text=”Bill Gates”/＞
＜listitem id=”newordercustomer-6” text=”Kevin Sab”/＞
＜listitem id=”newordercustomer-7” text=”Bill Clinton”/＞
＜listitem id=”newordercustomer-8” text=”Catherine Zeta-Jones”/＞
＜/listbox＞
＜/combobox＞
＜layoutmanager layout=”flowlayout” justifyh=”left”/＞
＜/panel＞
＜layoutmanager layout=”flowlayout” justifyh=”left”/＞
＜/panel＞
＜panel id=”neworderbillingshippingpanel” src=”neworderbillingshipping.xml”/＞
＜layoutmanager layout=”boxlayout” orientation=”vertical” align=”stretch”/＞
＜/panel＞
＜panel bordertitle=”Order Entry Form” borderwidth=”2” titlejustification=”left” borderstyle=”groove” margin=”3,3,3,3”＞
＜!-- add line item --＞
＜panel layoutpos=”north”＞
＜label text=”Product” layoutpos=”1,1,1,1,1.0,0,west,horizontal,0,0,0,0,0,0”/＞
＜label text=”Item” layoutpos=”2,1,1,1,1.0,0,west,horizontal,0,0,0,0,0,0”/＞
＜label text=”Unit Price” layoutpos=”3,1,1,1,1.0,0,west,horizontal,0,0,0,0,0,0”/＞
＜label text=”Quantity” size=”50,20” layoutpos=”4,1,1,1,1.0,0,west,horizontal,0,0,0,0,0,0”/＞
＜label text=”” layoutpos=”5,1,1,1,1.0,0,west,horizontal,0,0,0,0,0,0”/＞
＜label text=”” layoutpos=”6,1,1,1,1.0,0,west,horizontal,0,0,0,0,0,0”/＞
＜combobox id=”cbbProduct” size=”150,20”
layoutpos=  ,2,1,1,1.0,0,west,horizontal,0,0,0,0,0,0  
oncommand=”processOrder.do?command=getItems”＞
＜listbox id=lbProduct”＞
＜listitem id=”liProduct-1” text=”Digital Cammeras”/＞
＜listitem id=”liProduct-2” text=”Laptops”/＞
＜listitem id=”liProduct-3” text=”Game Console”/＞
＜/listbox＞
＜/combobox＞
＜combobox id=”cbbItem”enabled=”false”size=”200,20”
layoutpos=”2,2,1,1,1.0,0,west,horizontal,0,0,0,0,0,0”＞
＜listbox id=”lbItem”＞
＜listitem text=”dummy”/＞
＜/listbox＞
＜/combobox＞
＜textbox id=”neworder-unitprice” text=””enabled=”false” justifyh=”right” layoutpos=”3,2,1,1,1.0,0,west,horizontal,0,0,0,0,0,0”/＞
＜textbox id=”neworder-qty” text=”size=”50,20” enabled=”false”
justifyh=”right” layoutpos=”4,2,1,1,1.0,0,west,horizontal,0,0,0,0,0,0”/＞
＜button id=”btnadditem” text=”Add item” size=”100,20” oncommand=”processOrder.do?command=addItem” enabled=”false” layoutpos=”5,2,1,1,1.0,0,west,horizontal,0,0,0,0,0,0”/＞
＜label text=””size=”200,20” layoutpos=”6,2,1,1,1.0,0,west,horizontal,0,0,0,0,0,0”/＞
＜layoutmanager layout=”gridbaglayout”/＞
＜/panel＞
＜panel id=”newOrderCartPanel” layoutpos=”center” bordertitle=”Line
Items  borderwidth=    titlejustification=罵eft  borderstyle=波roove  
margin=”3,3,3,3” enabled=”false”＞
＜table id=”tblnewOrderItems” size=”600,60” altbgcolor=”177,182,243” layoutpos=”center” onedit=”mco:formhandler.onQtyEdit(2)”＞
＜col＞＜header size=”80,20” text=”Remove Item”/＞＜/col＞
＜col＞＜header size=”50,20” text=” ItemID”/＞＜/col＞
＜col＞＜header text=”Description” size=”300,20”/＞＜/col＞
＜col＞＜header size=”50,20” text=”Quantity”/＞＜/col＞
＜col＞＜header size=”100,20” text=”Unit Price”/＞＜/col＞
＜col＞＜header size=”100,20” text=”SubTotal”/＞＜/col＞
＜/table＞
＜layoutmanager layout=”borderlayout”/＞
＜/panel＞
＜layoutmanager layout=”borderlayout”/＞
＜/panel＞
＜panel id=”neworderccpanel” src=”newordercc.xml”/＞
＜panel id=”newOrderButtonPanel”＞
＜button id=”neworderbtnSubmit” popup=”mypopup” text=”Submit” onmouseover=”mco:formhandler.handleMouseOver( )”
onmouseout=”mco:formhandler.handleMouseOut( )” enabled=”false”/＞
＜button id=”neworderbtnReset” text=”Reset” enabled=”false”/＞
＜/panel＞
＜layoutmanager layout=”boxlayout” orientation=”vertical” align=”stretch”/＞
＜/window＞
＜/xml＞
【００５４】
全てのアプリケーション・コードは、初めはアプリケーション・サーバ（２１０）上に記録される。クライアント・ブラウザ（２２０）は、該初期ＸＭＬマークアップ・ドキュメントをアプリケーション・サーバ（２１０）から検索すると同時に、図６に示す初期スクリーン・フォーム（６００Ａ）を表示する。この例では、初期スクリーン・フォーム（６００Ａ）は新規注文フォームである。新規注文フォームは顧客情報（６０２）及び顧客検索タブ（６０４）を備える。顧客情報（６０２）は請求書発送住所情報（６０６）、輸送住所情報（６０８）、注文情報（６１０）、支払いカード情報（６１２）を含む。請求書発送住所情報（６０６）は顧客の氏名及び請求書発送住所を含む。輸送先住所（６０８）は製品を輸送する宛名の人物の氏名及び輸送先住所を含む。注文情報（６１０）は製品ＩＤ、製品詳細、量、単価、総価格を含む。クレジットカード情報（６１２）はクレジットカード所有者名、カードの種類、カード番号、有効期限を含む。ユーザは、適切なフィールドに情報を入力することにより、初期フォーム（６００Ａ）と交信する。ユーザは、アプリケーション・サーバ（２１０）に既に情報が記憶されている顧客の名前を探すことができる。例えば、ユーザは検索タブ（６０４）をクリックし、顧客名である「マイク・アダム」を選択し、フォーム（６００Ａ）下端のサブミット・ボタン（６１４）をクリックしてもよい。クライアント・ブラウザ（２２０）はユーザの入力をアプリケーション・サーバ（２１０）に送信する。するとアプリケーション・サーバ（２１０）は情報を検索し要求された情報を初期スクリーン（２１０）とマージし、それにより新たなスクリーン（６００Ｂ（図６Ｂ）を生成する。
【００５５】
第２ＸＭＬマークアップ・ドキュメントを要求するためのコードは以下の通りである：
＜xml＞
＜panel id=”neworderbillingpanel” enabled=”true”/＞
＜panel id=”newordershippingpanel” enabled=”true”/＞
＜panel id=”neworderccpanel” enabled=”true”/＞
＜panel id=”newOrderCartPanel” enabled=”true”/＞
＜textbox id=”b_fname” text=”Mike” bgcolor=”white”/＞
＜textbox id=”b_lname” text=”Adam” bgcolor=”white”/＞
＜textbox id=”b_addr1” text=”105 Main Street” bgcolor=”white”/＞
＜textbox id=”b_addr2” text=”” bgcolor=”white”/＞
＜textbox id=”b_city” text=”Cambridge” bgcolor=”white”/＞
＜combobox id=”combo_b_state” text=”MA” bgcolor=”white”/＞
＜textbox id=”b_zip” text=”02138” bgcolor=”white”/＞
＜combobox id=”combo_b_country” text=”USA” bgcolor=”white”/＞
＜textbox id=”cc_name” text=”Mike Adam” bgcolor=”white”/＞
＜textbox id=”s_fname” text=”Mike”/＞
＜textbox id=”s_lname” text=”Adam” /＞
＜textbox id=”s_addr1” text=”105 Main Street”/＞
＜textbox id=”s_addr2” text=””/＞
＜textbox id=”s_city” text=”Cambridge”/＞
＜combobox id=”combo_s_state” text=”MA” /＞
＜textbox id=”s_zip” text=”02138”/＞
＜combobox id=”combo_s_country” text=”USA” /＞
＜/xm1＞
【００５６】
第２ＸＭＬマークアップ・ドキュメントを第１ＸＭＬマークアップ・ドキュメントとマージさせる過程で生成されたスクリーン・ディスプレイ（６００Ｂ）は、既に記憶されている顧客請求書発送住所（６０６）、輸送情報（６０８）、及びクレジットカード情報（６１２）を含む。ここでユーザは注文情報を入力するとともにクライアント・サイド・ブラウザ（２２０）を介してアプリケーション・サーバ（２１０）に提出する。
【００５７】
図３及び図５を参照する。工程（３００）はクライアント・マシン（５５０）を通して該アプリケーションを実行するとともに該アプリケーションの状態を維持する工程であり、以下の段階を備える。ユーザがクライアント・マシン（５５０）を通してアプリケーションを実行したいときは、ＣＲＥ（５５４）は要求をアプリケーション・サーバ（５１０）に送信し、アプリケーションの初期スクリーンのＸＭＬ記述を検索する（３１０）。アプリケーション・サーバ（５１０）は、クライアント・マシン（５５０）に初期ＸＭＬスクリーンを返送することにより、この要求に対応する（３２０）。ＣＲＥ（５５４）はこのＸＭＬドキュメントを検索するとともに構文解析し、初期スクリーンに含まれる情報の第１オブジェクト指向表現を構築する。ＣＲＥ（５５４）はクライアント・サイドＤＯＭ（５５６）の情報の第１オブジェクト表現を記憶する。この記憶を用いてアプリケーションのクライアント・サイドの状態をトラッキングし、アプリケーションの初期スクリーンをユーザに提示する（３３０）。次にユーザはクライアント・マシン内で該アプリケーションを実行する（３４０）。アプリケーションのＸＭＬ記述に従って、ＣＲＥ（５５４）はクライアント・サイド・スクリプト或いはサーバ・サイド・イベント処理部を呼び出し、該ユーザ・イベントのいくつかを処理する。ユーザ・イベントを受信すると、ＣＲＥ（５５４）は第２要求をアプリケーション・サーバ（５１０）に送信し、アプリケーションの第２ＸＭＬスクリーンを検索する（３６０）。ＣＲＥ（５５４）は第２ＸＭＬスクリーンを受信するとともに構文解析する。続いてＣＲＥ（５５４）は、第２スクリーンに含まれる情報の第２オブジェクト指向表現を構築するとともにクライアント・サイドＤＯＭ（５５６）に記憶する（３７０）。次に、ＣＲＥ（５５４）は第１及び第２オブジェクト指向表現をマージして第１及び第２スクリーンに含まれる情報の新しいオブジェクト指向表現を創出するとともに、組み合わされた結果をクライアント・マシン（５５０）に表示する（３８０）。この工程は繰り返され、該スクリプト或いは該サーバ・サイド・イベント処理部から受信された、更なる対応が全て更にＣＲＥ（５５４）により処理されるようにする。ＣＲＥはその後クライアント・サイドＤＯＭ（５５６）を更新し、該結果を適宜ユーザに表示する。継続的な接続がこのアプリケーションに必要な場合は、そのような接続がクライアント・マシン（５５０）及びサーバ（５１０）間に構築される。クライアント・サイド・ビジネス・ロジック（５５２）が定義済みである場合は、このようなビジネス・ロジックがＣＲＥ（５５４）内にロードされるとともにキャッシュされ、適宜実行される。
【００５８】
図４及び図５Ｂを参照する。アプリケーションがＣＲＥ（２２４）内で動作するとき、該アプリケーションの状態はクライアント・マシンのＸＭＬによるＤＯＭ（２２６）内に維持される。ユーザが該アプリケーションと交信すると、ＣＲＥ（２２４）はクライアント・サイドＤＯＭ（２２６）を適宜更新し、ユーザのインプットに反映させる。図４の実施形態では、該アプリケーションの状態はまた、アプリケーション・サーバのＤＯＭ（２１６）上に維持される。該アプリケーションのサーバ・サイド・ビジネス・ロジック（２１２）が、該アプリケーションの状態の変更、例えばウィンドウを不可視にするなど、を決定すると、ＳＲＥ（２１４）は自動的にサーバ・サイドＤＯＭ（２１６）を更新する（３９０）。ＤＯＭ（２２６）或いは（２１６）が更新されると必ず、ＣＲＥ（２２４）或いはＳＲＥ（２１４）はもう一方の相手にメッセージを送信する。これによりそれぞれのＤＯＭ（２２６）及び（２１６）を同期する（３９５）。ネットワークが接続を切られても、該アプリケーションのクライアント・サイド及び該アプリケーションのサーバ・サイドの両方が機能を続ける。アプリケーションの状態の変化は、対応するＤＯＭ（２２６）及び（２１６）内に維持される。ネットワーク接続が再び利用可能となったとき、ＣＲＥ（２２４）及びＳＲＥ（２１４）は自動的にそれぞれＤＯＭ（２２６）及び（２１６）を同期する。
【００５９】
ＤＯＭ同期及びアプリケーション・ロジック起動のメッセージなどのクライアント・サーバ間の通信は全てＨＴＴＰ（２４０）を介しての高信頼度リアルタイム双方向性通信を通して配信される。ＨＴＴＰ通信モデル自体は要求／応答モデルであり、双方向性通信を可能にするわけではない。従来技術のＨＴＴＰ通信モデルでは、ユーザが要求をクライアント・マシンからウェブ・サーバに送ると、該クライアント・マシンはウェブ・サーバに対して片方向性通信スレッドを開いて、ユーザの要求を配信する。次の段階で、該ウェブ・サーバは、ユーザの要求を処理し、該クライアント・マシンに応答する。該クライアント・マシンに応答する際には、該ウェブ・サーバは、既に開いている通信スレッドを逆方向に用いる。該応答が配信後は、該通信スレッドは閉じられる。このような先行技術の通信モデルでは、サーバは、まず要求を受信しなければクライアント・マシンに対する通信スレッドを開始できない。よって、「サーバ・プッシュ」情報配信は不可能である。様々なＨＴＴＰトンネル技術が利用可能であるが、それら技術は特別なクライアント・ソフトウェア又はサーバソフトウェアを必要とするとともに、潜在的にセキュリティの問題をはらんでいる。本発明においては、クライアント・マシンとアプリケーション・サーバの間の通信モデルはＨＴＴＰに基づいて構築されるが、ＨＴＴＰが通常有する低信頼性で、クライアント・プルのみであるという制限を克服している。また本発明の通信モデルは既存のウェブ・インフラストラクチャと完全に適合し、クライアント・サイド及びサーバ・サイドのファイアウォールの変更を全く必要としない。本発明はクライアントの要求への応答を永続的な接続とすることにより、サーバ・プッシュを可能とする。図７を参照する。本発明は、以下の手順（８００）に従って永続的な接続及びサーバ・プッシュを可能とする。アプリケーションが開始される（８０５）と、クライアント・マシンは、通常のＨＴＴＰ要求を介してのサーバに対する通信スレッドを開く（８１０）。要求のユニフォーム・リソース・アイデンティファー（Uniform Resource Identifier，URI）は特定のアプリケーション・サーバを示す。特別な所定の要求パラメータはこの要求が永続的な接続を開設するためのものであることを示す。サーバはＨＴＴＰ接続を受け入れて、ＨＴＴＰ要求を受信する（８２０）。次にサーバはクライアント・マシンに応答を返信する。該応答はＨＴＴＰヘッダを備え、該ＨＴＴＰヘッダは特定の条件が満たされるまでクライアント・マシンにＨＴＴＰ接続を閉じないように指示する（８３０）。ＨＴＴＰ接続は特定の条件が満たされる限り、開いたままとなる（８４０）。サーバはＨＴＴＰ接続が開いているのを利用して「サーバ・プッシュ」を行う。すなわちクライアント・マシンが要求を送らなくても、クライアント・マシンに１つ以上のメッセージを送る（８５０）。クライアント・マシンに特定の条件が満たされるまでＨＴＴＰ接続を開いたままに保つように指示するＨＴＴＰヘッダの例としては以下のようなものがある。一つの例では、「コンテント・タイプ(content-type)」ＨＴＴＰヘッダが「マルチパート(multipart」として設定され、該特定の条件は「マルチパート」応答の終了とする。
【００６０】
「マルチパート」応答のためのコードの例：
HTTP/1.1 200 OK
content-type: multipart/mixed;boundary=a
【００６１】
別の例では、「コンテント・レングス(content-length」ＨＴＴＰヘッダが非常に大きな数、すなわち５，０００，０００バイトとして設定される。また或いは該ＨＴＴＰヘッダは、サーバがクライアント・マシンにプッシュしたい全てのメッセージのコンテント・レングスの合計よりも大きい数として設定される。
【００６２】
非常に大きなコンテント・レングス応答のためのコードの例：
HTTP/1.1 200 OK
content-length: 5000000 bytes
【００６３】
別の例では、「トランスファ・エンコーディング(transfer-encoding)」ＨＴＴＰヘッダが「チャンキング(chunked)」として設定され、該特定の条件は「チャンキング」応答の終了を定義する。
【００６４】
チャンキング応答のためのコードの例：
HTTP/1.1 200 OK
content-type: text/html
Transfer-Encoding: chunked
【００６５】
この永続的通信スレッドが一度サーバとクライアント・マシンの間で構築されると、サーバがクライアント・マシンに如何なるメッセージも送ることが可能になる。すなわち「サーバ・プッシュ」を行うことが可能になる。クライアント・マシンが該永続的接続に問題を検知すると常に、該クライアント・マシンは単に新しい接続を開き、以前の接続を閉じる（８６０）。
【００６６】
メッセージングの信頼性はメッセージ待ち行列を用いるとともに、各メッセージに固有の識別子（identification, ID）を付与することにより得られる。図２に示すごとく、ＣＲＥ（２２４）及びＳＲＥ（２１４）の両方がそれぞれのメッセージ待ち行列（２２１）及び（２１１）を維持する。メッセージが配信されるときはいつも、固有のＩＤがメッセージに付与される。メッセージは、この特定のメッセージＩＤの受信を知らせるもう一方の相手からの信号が受信されるまでは、メッセージ待ち行列から除去されない。ある期間を経過しても信号が受信されない場合は、メッセージは再度配信される。受信側は、メッセージを受信すると直ちに、このメッセージＩＤの受領の知らせを送信側に送る。受信されたメッセージＩＤは一定期間メモリに保存される。同一のＩＤを有するメッセージがこの期間内に再度受信されると、新しいメッセージが廃棄される。これにより、同一のメッセージが複数回処理されるのを防ぐ。
【００６７】
以下の請求項の範囲内でこの他の実施形態も考えられる。例えば、ＳＲＥ（２１４）はアプリケーション・サーバ（２１０）の外で作動してもよい。上述の分散ウェブ・ベース・システム（２００）を介して配信可能なビジネス・アプリケーションの例としては、これには限らないが、ワード・プロセシングアプリケーションのためのMicrosoft Word、表計算アプリケーションのためのMicrosoft Excel、金融機関の資産管理担当者が用いる金融取引ソフトウェア、保険業界で用いられるクレーム処理アプリケーションが挙げられる。  
【００６８】
本発明のいくつかの実施形態を説明してきた。しかしながら、本発明の本質及び範囲を離れることなく様々な改変が可能であることが理解できるであろう。従って、この他の実施形態も以下の請求項の範囲内に含まれる。
【図面の簡単な説明】
【００６９】
【図１】従来の状態を把握しないウェブ・ベースのコンピューティング・システムのブロック線図である。
【図１Ａ】第１及び第２マークアップ・ドキュメント、第１及び第２マークアップ・ドキュメントの対応するオブジェクト指向表現並びに従来のウェブ・ベースのコンピューティング・システム内のクライアント・マシン内の対応する表示の例である。
【図２】本発明の状態を把握可能なウェブ・ベースのコンピューティング・システムの第１の実施形態に係るブロック線図である。
【図２Ａ】図２の状態を把握可能なウェブ・ベースのコンピューティング・システムにおける図１の例の第１及び第２のディスプレイを示す図である。
【図３】本発明の状態把握可能なコンピューティング・システムの他のもう１つの実施形態のブロック線図である。
【図４】本発明の状態把握可能なコンピューティング・システムの更なる他のもう１つの実施形態のブロック線図である。
【図５Ａ】図２のコンピューティング・システム内のアプリケーションの動作方法のブロック線図である。
【図５Ｂ】図４のコンピューティング・システム内のアプリケーションの動作方法のブロック線図である。
【図６Ａ】クライアント・マシン内で示される初期のＸＭＬスクリーンのスクリーン・ショットである。
【図６Ｂ】クライアント・マシン内で示される更新されたＸＭＬスクリーンのスクリーン・ショットである。
【図７】本発明のサーバ・プッシュ方法のブロック線図である。
【図１】
2006506748.tif 000003
【図１Ａ】
2006506748.tif 000004
【図２】
2006506748.tif 000005
【図２Ａ】
2006506748.tif 000006
【図３】
2006506748.tif 000007
【図４】
2006506748.tif 000008
【図５Ａ】
2006506748.tif 000009
【図５Ｂ】
2006506748.tif 000010
【図６Ａ】
2006506748.tif 000011
【図６Ｂ】
2006506748.tif 000012
【図７】
2006506748.tif 000013
【国際調査報告】
2006506748.tif 000014
2006506748.tif 000015