JP2006506748A - 処理状態を把握するウェブ・ベースのコンピュータ・システムと方法 - Google Patents

処理状態を把握するウェブ・ベースのコンピュータ・システムと方法 Download PDF

Info

Publication number
JP2006506748A
JP2006506748A JP2004554012A JP2004554012A JP2006506748A JP 2006506748 A JP2006506748 A JP 2006506748A JP 2004554012 A JP2004554012 A JP 2004554012A JP 2004554012 A JP2004554012 A JP 2004554012A JP 2006506748 A JP2006506748 A JP 2006506748A
Authority
JP
Japan
Prior art keywords
application
server
cre
client
markup
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
Application number
JP2004554012A
Other languages
English (en)
Other versions
JP2006506748A5 (ja
Inventor
ウェイ コーチ
Original Assignee
ネクサウェブ テクノロジーズ インコーポレイテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ネクサウェブ テクノロジーズ インコーポレイテッド filed Critical ネクサウェブ テクノロジーズ インコーポレイテッド
Publication of JP2006506748A publication Critical patent/JP2006506748A/ja
Publication of JP2006506748A5 publication Critical patent/JP2006506748A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/154Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

処理状態を把握する分散処理を実行するコンピュータ・システムを提供し、該システムはクライアント・ランタイム環境(CRE)を備えるクライアント・マシンを備える。CREは、第1マークアップ・ドキュメントを検索する段階と、前記第1マークアップ・ドキュメント内に含まれる情報の第1オブジェクト指向表現を作り出すとともに格納する段階により、アプリケーションの状態を維持する。第1オブジェクト指向表現は、アプリケーションの第1状態を定義するものである。次に、第2マークアップ・ドキュメントを検索する段階と、前記第2マークアップ・ドキュメント内に含まれる情報の第2オブジェクト指向表現を作り出すとともに格納する段階を行う。そして、前記第1及び第2オブジェクト指向表現をマージし、これにより前記第1或いは第2マークアップ・ドキュメント内に蓄えられる情報の新たなオブジェクト指向表現を形成する段階を実行する。この新たなオブジェクト指向表現は、前記アプリケーションの新たな状態を定義するものである。
前記CREは、更に、1若しくはそれ以上の追加のマークアップ・ドキュメントを検索する段階と、前記1若しくはそれ以上の追加のマークアップ・ドキュメント内に含まれる情報の1若しくはそれ以上の追加のオブジェクト指向表現をそれぞれ作り出し、格納する段階と、前記1若しくはそれ以上の追加のオブジェクト指向表現を前記新たなオブジェクト指向表現とマージし、これにより前記アプリケーションの更新された状態を形成する段階を実行することにより、前記アプリケーションの前記新たな状態を更新する。

Description

本発明は、処理状態を把握するウェブ・ベースのコンピュータ・システムと方法に関する。主に分散処理に関連し、以下の事柄を提供している。信頼性のあるリアルタイム双方向性メッセ−ジング、状態維持及びウェブ・ベース若しくは無線環境における分散アプリケーションの同期化に関する。
尚、この出願は、2002年11月19日出願の米国特許仮出願第60/427,531号(名称:処理状態を把握するウェブ・ベースのコンピュータ・システムと方法)の優先権を主張する。この出願は、同一出願人により、本明細書おいて、該出願の内容は明確に盛り込まれている。
ワールド・ワイド・ウェブ(wwwもしくはweb)は、企業がドキュメントを公開及び公布するのに費用対効果の高い方法である。該ドキュメントは、ハイパ・テキスト・マークアップ・ランゲージ(HTML)で構成されている。企業は、中央化されたウェブ・サーバにHTMLのドキュメントを公開することで世界中の人々と交信することができる。該交信は、至る所に散在するパブリック・インターネットや世界中で利用可能なウェブ・ブラウザを介して行われる。
企業は、ウェブが普及するにつれて、ウェブの利用を超えて、HTMLドキュメントを配信するに至っている。
企業やソフトベンダーは、ウェブ上でビジネス・アプリケーションを送信し分散処理を実施しようとしている。分散処理は、あるコンピューティングのタイプを示している。このコンピューティングでは、アプリケーションを備える様々な構成要素やオブジェクトがネットワークに接続した様々なコンピュータに配置されている。例えば、ワード・プロセッシング・アプリケーションは、第1コンピュータ上の編集要素、第2コンピュータ上のスペルチェッカー・オブジェクト、第三コンピュータ上の類義語辞典から構成されている。ある分散処理システムでは、3つの各々のコンピュータが、様々なオペレータ・システムを作動させることさえできる。
ウェブ・アーキテクチャは、ウェブ・ドキュメントに提供したのと同じ利点をビジネス・アプリケーションに提供している。これらの利点は、以下に示される。
a)集中管理:アプリケーションとドキュメントは、サーバ側で集中的に管理されて良く、企業のセキュリティ、ビジネス・ロジック及びデータを厳重に管理している。
b)集中配備:企業は、何千ものクライアント・コンピュータに接続し、アプリケーションやドキュメントをアップデートする必要はない。すなわち、サーバ側の変化は、全てのユーザにすぐに伝えられるということである。
c)全世界的発信:アプリケーションとドキュメントは、セントラル・サーバにあっても良いし、どのクライアント・コンピュータに発信されても良い。該クライアント・コンピュータは、ウェブ・ブラウザ及びインターネット接続を備え、両者は世界中で利用可能である。
しかしながら、元来、ウェブは、ビジネス・アプリケーションを送信するためではなく、接続したドキュメントをブラウジングするために設定されたものである。
ここで、図1を参照する。
ウェブ・インフラストラクチャー(100)は次のものを含んでいる。アプリケーション・コード(106)を起動するアプリケーション・サーバ(105)、アプリケーション・コード(106)により作成されたHTMLドキュメントを送信するウェブ・サーバ(110)、クライアント・マシン(120)に備わっていて“クリック アンド リフレッシュ”の方法でHTMLドキュメントを表示するウェブ・ブラウザ(130)である。
アプリケーション・コード(106)は、通常プログラム言語で書かれている。プログラム言語は、特にC、C++、C#、Java、Javascript、VBScript、ActionScript、VisualBasic、あるいはいくつかのプロプラエタリ言語を含んでいる。
ウェブ・ブラウザ(130)は、要求/応答交信モデル(140)を介してウェブサーバ(110)と交信している。この要求/応答交信モデル(140)において、ユーザはウェブ・ブラウザ(130)を通して特定のウェブ・ページに要求を出す。ウェブ・ブラウザ(130)は、ハイパ・テキスト・トランスファ・プロトコル(HTTP)(142)を使用してウェブ・サーバ(110)に要望を送信する。ウェブ・サーバ(110)は要求を受信し、アプリケーション・サーバ(105)に要求を送信する。
アプリケーション・サーバ(105)では、アプリケーション・コード(106)が、要求を処理しHTMLドキュメントから成る応答を作成する。次に、ウェブ・サーバ(110)は、作成されたHTMLドキュメントをウェブ・ブラウザ(130)に送信する(144)ことで要求に応える。このウェブ・インフラストラクチャー(100)は「処理状態を把握しない」ものである。すなわちウェブ・サーバ(110)及びウェブ・ブラウザ(130)の両方が、アプリケーション状態を維持しないということである。アプリケーション状態とは、全てのプログラム・オブジェクト、各特定の時期の変数及びリソース、変化値、様々なプログラム・オブジェクト間の関係及び様々なリソース状態の概略である。アプリケーション状態は、変化しアプリケーション・ランとして発展する。たとえば、ユーザがAmazon.comのウェブサイトで買い物をしているとき、買い物アプリケーション状態が、特に現在のユーザネーム、ショッピングカートのアイテムナンバー及び各アイテムの価格などの情報を含んでいる。
以上で言及したように、図1のウェブ・インフラストラクチャー(100)では、クライアント・マシン(120)或いはウェブ・サーバ(110)によってアプリケーション状態は維持されない。クライアント・マシン(120)はただHTMLドキュメントを表示しているだけである。つまり現在のドキュメントの状態情報を維持しているのみということである。新しいドキュメントが読み込まれると、以前のドキュメントの状態情報は捨てられ、新しいドキュメントの状態情報に置き換えられる。そして以前のドキュメントの状態情報は失われる。
図1Aを参照する。例えば、第1マークアップ・ドキュメント(142)すなわちpage1.xmlは、あるコードを含んでいる。そのコードは、クライアント・マシン(120)でボタン(150)を表示する。ボタン(150)は、「This is a line of Text」というテキストを備える。第2マークアップ・ドキュメント(146)すなわちPage2.xmlは、ボタン(150)の背景を灰色に変えるコードを備えている。ボタン(150)の背景が灰色に変わるとボタン(152)と表示される。
第1、第2マークアップ・ドキュメント(142)(146)の対応オブジェクト指向表現(144)(148)もそれぞれ図1Aに示されている。クライアント・マシン(120)が、第1マークアップ・ドキュメント(142)を読み込むとテキスト「This is a line of Text」(150)はクライアント・マシン(120)に表示される。このとき(154)と示されたアプリケーション状態は、第1マークアップ・ドキュメント(142)の全ての情報を含んでいる。
第1マークアップ・ドキュメント(142)の表示に続き、クライアント・マシン(120)は第2マークアップ・ドキュメント(146)を読み込む。それによって、このとき(156)と示されたアプリケーション状態は、第1マークアップ・ドキュメント(142)の状態を捨て、第2マークアップ・ドキュメントの状態のみを含む。結果として、クライアント・マシンは何も書かれていない灰色のボタン(152)を表示する。ボタン(152)はボタン(150)と同じであるが、ボタン(152)には、テキスト「This is a line of Text」の表示が消えている。
今日のウェブ・インフラストラクチャー(100)のこの「処理状態を把握しない」性質は、ビジネス・アプリケーションを送信するのにウェブを適用することを制限している。ビジネス・アプリケーションは、本質的に「処理状態を把握する」ものである。
例えば、一般的にユーザのクリックへの返答は、ユーザがクリックしたものだけではなく、アプリケーション状態にも依存している。該アプリケーション状態とは、ユーザの相互関係の履歴、フォームの価値、またネットワークの接続性をも含んでいる。
今日のソフトウェア開発者は、一般的にアプリケーション・サーバ内のサーバ側の状態情報を維持するために大量のコードを書かなければならない。アプリケーション・コードは、クライアントの要求への返答を作成する方法だけでなく、アプリケーション状態を維持し管理する方法も取り扱う必要がある。
図1のウェブ・インフラストラクチャー(100)では、アプリケーション状態は、アプリケーション・サーバ(105)内で作動しているアプリケーション・コードによって維持されている。サーバ側でアプリケーション状態を維持するには大量な作業が必要である。これは、開発費とアプリケーション維持費を増加させる。
さらに、たとえ新しいマークアップ・ドキュメントが以前のマークアップ・ドキュメントとほんのわずかにしか変化していなくても、新しいマークアップ・ドキュメントの全てが、それぞれの要求/応答に関してクライアント・マシンに送信されなければならない。
一般的なマークアップ・ドキュメントは、10キロバイトから数百キロバイトの大きさである。その様なドキュメントを発信するにはたくさんのネットワーク処理能力が必要となり、アプリケーションの対応を遅らせる。
現在の「処理状態を把握しない」ウェブ・インフラストラクチャー上でのビジネス・アプリケーションの送信に関する他の問題は、ネットワーク接続が常に利用可能ではないという事である。もし、ネットワーク接続が利用可能でないならば、現在のインフラストラクチャーを基盤としているウェブ・アプリケーションは利用不可能である。それは、状態がクライアント側で維持されていないからである。
この「動作不能時間」の可能性は、ビジネス・アプリケーションには容認できないものである。結果として、開発者はクライアントあるいはサーバ・アプリケーションを書いてオフライン業務能力をサポートしなければならない。
「処理状態を把握しない」ハイパ・テキスト・トランスファ・プロトコル(HTTP)の要求/応答モデル(140)は、リアルタイム双方向性の交信を不可能にする。このHTTP交信モデル(140)は、「クライアント・プル」交信のみをサポートする。「クライアント・プル」交信では、ユーザは、新しいデータを得るためにサーバに要求を送信しなければならない。
多くのビジネス・アプリケーションは、持続性のある「処理状態を把握する」接続を必要としている。その接続を介して、ウェブ・サーバは、リアルタイムデータの最新情報を異なるクライアント・マシン即ち「サーバ・プッシュ」モデルに送信することができる。
例えば、株式のポートフォリオ管理アプリケーションは、リアルタイム・ストックデータを必要とする。株価が変動すると、ユーザは常に新しい価格をすぐに知る必要がある。結果として、開発者は「サーバ・プッシュ」を可能とするたくさんのコードを書かなければならない。サーバ・プッシュでは、ファイヤーウォールや他のセキュリティ関係の深刻な問題があり、取り扱うには費用がかかる。つまり、インターネットに関する双方向性の交信の使用を困難にする理由は次の3つの事項である。
a) ネットワーク・インフラストラクチャーのインターネットは、どの種類のメッセージでも発信することが可能である。しかしながら、セキュリティ問題のため、多くの企業環境がHTTPアクセスのみ受信可能としている。そのため、もしメッセージがHTTPプロトコルを介して送信されなければ、該メッセージは様々なファイヤーウォール・ポリシーのために送信先へ送信されることができないかもしれない。
b) HTTPは、ウェブ・ブラウザからウェブ・サーバへの一方通行の要求/応答モデル機能を持つように設定されている。ウェブ・ブラウザは、HTTPに対する接続を開き、その接続を通して要求を送信する。HTTPウェブ・サーバはこの要求に答え、ウェブ・ブラウザへ返答する。そして、接続を終わらせる。HTTP1.1は、ある期間、接続をオープンにすることができる「Keep−Alive」のような特徴を追加した。その期間というのは、多くの要求/返答が同じ接続を介して発信されうる期間のことである。しかし、この特徴は世界中の全てのウェブ・ブラウザあるいはウェブ・サーバに対応しない。この「Keep−Alive」接続は、たとえウェブ・ブラウザやHTTPウェブ・サーバに対応してもクライアントの要求に返信するHTTPウェブ・サーバ内でのみ利用可能である。アプリケーション・サーバ内で作動しているアプリケーション・コードが、「サーバ・プッシュ」をするのにこの接続を使用することは不可能である。
c) HTTPにおいて双方向性の交信を可能にするために、様々なHTTPのトンネル技術が利用可能である。該トンネル技術は、固定接続を維持するため特にビルト・クライアントあるいはサーバ・ソフトを一般的に必要とする。メッセージは接続を通して、送信目的のHTTPプロトコル内に包括されている。該技術は、追加料金と潜在的なセキュリティ問題を引き起こす。例えば、該技術は、一般的に追加サーバ・ソフトを必要とし、該追加サーバは、ポートとりわけ標準HTTPサーバ・ポート(ポート80)を介して固定接続し管理する。これは、サーバ側のファイヤーウォールを遮断し、深刻なセキュリティの危険性をもたらす。
クライアント側あるいはサーバ側の形態を変えることなく、スタンダード・アプリケーション・サーバ内で作動するアプリケーション・コードに信頼性のある「サーバ・プッシュ」機能を提供できる方法は、現在存在しない。
さらに、HTTP交信モデルは、信頼性が低い。なぜなら、メッセージが様々なネットワーク問題のために失われる可能性があるからである。HTTPは、メッセージの送付を保証する方法を持たない。メッセージを失うことはウェブ・ブラウジングするのには容認できるかもしれないが、ビジネス・アプリケーションを作動するのには容認できない。結果として、企業は、重要なアプリケーションのためこの問題を解決するのにたくさんの資金を費やさなければならない。
要約すると、ウェブ・アーキテクチャは、潜在的に集中管理、全世界的発信及び全世界的配備というビジネス・アプリケーションに大きな利益をもたらす可能性がある。しかしながら、ウェブ・アーキテクチャの「処理状態を把握しない」性質は、ビジネスの重大なアプリケーションのためにウェブを使用することを制限してきた。この制限を克服するために、開発者は、多くの複雑なコードを書かなければならない。そのコードは、アプリケーション管理や維持費と同様に開発費を深刻に増加させる。この費用のかかる開発努力にもかかわらず、ウェブ・ベースのアプリケーションは、煩雑でたくさんのネットワーク処理能力が必要となる。このことは、しばしばエンドユーザを落胆させる。そのため、「処理状態を把握する」ビジネス・アプリケーションのウェブ・ベースの発信が必要となり、該発信は、以上に述べた制限を克服する。
本発明は総じて、処理状態を把握する分散処理を実行するコンピュータ・システムを提供し、該システムはクライアント・ランタイム環境(CRE)を備えるクライアント・マシンを備える。CREは、第1マークアップ・ドキュメントを検索する段階と、前記第1マークアップ・ドキュメント内に含まれる情報の第1オブジェクト指向表現を作り出すとともに格納する段階により、アプリケーションの状態を維持する。第1オブジェクト指向表現は、アプリケーションの第1状態を定義するものである。次に、第2マークアップ・ドキュメントを検索する段階と、前記第2マークアップ・ドキュメント内に含まれる情報の第2オブジェクト指向表現を作り出すとともに格納する段階を行う。そして、前記第1及び第2オブジェクト指向表現をマージし、これにより前記第1或いは第2マークアップ・ドキュメント内に蓄えられる情報の新たなオブジェクト指向表現を形成する段階を実行する。この新たなオブジェクト指向表現は、前記アプリケーションの新たな状態を定義するものである。
本発明は、以下に示す1若しくはそれ以上の特徴を備える。前記CREは、更に、1若しくはそれ以上の追加のマークアップ・ドキュメントを検索する段階と、前記1若しくはそれ以上の追加のマークアップ・ドキュメント内に含まれる情報の1若しくはそれ以上の追加のオブジェクト指向表現をそれぞれ作り出し、格納する段階と、前記1若しくはそれ以上の追加のオブジェクト指向表現を前記新たなオブジェクト指向表現とマージし、これにより前記アプリケーションの更新された状態を形成する段階を実行することにより、前記アプリケーションの前記新たな状態を更新するものであってもよい。
前記オブジェクト指向表現のいずれかが、ユーザ・インターフェース、データ構造及びビジネス・ロジック・オブジェクトからなる群から選択される構造を備えるものであってもよい。
前記CREが更に、1若しくはそれ以上の手続コードを検索し、該手続コードが前記マークアップ・ドキュメントのいずれかに関連し、
更に前記CREが、前記1若しくはそれ以上の手続コードを実行するものであってもよい。
前記CREが更に、アプリケーション・プログラム・インターフェース(API)を備え、前記1若しくはそれ以上の手続コードが前記APIを利用し、プログラム的に前記アプリケーションの状態を維持するものであってもよい。
前記アプリケーションの状態が、ドキュメント・オブジェクト・モデル(DOM)内で維持されるものであってもよい。
前記マークアップ・ドキュメントが、エクステンシブル・マークアップ・ランゲージ(XML)フォーマット或いはハイパ・テキスト・マークアップ・ランケージ(HTML)フォーマットを備えるものであってもよい。
前記1若しくはそれ以上の手続コードが、プログラム言語で書かれ、該プログラム言語が、C、C++、C#、Java、Javascript、VBScript、ActionScript、Visual Basic、プロプラエタリ・プログラミング言語から選択されるものであってもよい。
前記1若しくはそれ以上の手続コードがバイナリ・フォーマットを備え、該バイナリ・フォーマットが、.NETCLR、Java.class format及びMacromedia Flash binary formatから選択されるものであってもよい。
前記1若しくはそれ以上の手続コードがテキスト・フォーマットを備え、該テキスト・フォーマットが、HTML、XML、平文及び圧縮テキストから選択されるものであってもよい。
前記マージする段階が、追加、除去、挿入、変更、置換、更新、結合及びこれらの組み合わせから選択される1若しくはそれ以上の動作を備えるものであってもよい。
前記オブジェクト指向表現が、オブジェクト、オブジェクト属性、オブジェクト属性値、オブジェクト階層関係コード及びこれらの組み合わせを備え、これにより、前記1若しくはそれ以上の動作が、前記オブジェクト、オブジェクト属性、オブジェクト属性値、オブジェクト階層関係コード及びこれらの組み合わせに適用されるものであってもよい。
前記1若しくはそれ以上の手続コードのいずれかと前記マークアップ・ドキュメントのいずれかがコンパイルされ、一組の手続コードに結合され、該手続コードの組が、前記CREによって検索並びに実行されるものであってもよい。
前記マークアップ・ドキュメントのうち1若しくはそれ以上が手続コードにコンパイルされ、該手続コードが前記CREによって、検索並びに実行されるものであってもよい。
前記システムが、リアルタイム双方向性メッセージング・システムを備え、該システムが、前記クライアント・マシンとネットワーク上のサーバとの間でメッセージを送信及び受信するものであってもよい。
前記ネットワークが、ワールド・ワイド・ウェブ(web)或いは無線ネットワークを備えるものであってもよい。
前記システムが、ウェブ・ブラウザを更に備え、前記CREが前記ウェブ・ブラウザの内部或いは外部を走行するものであってもよい。
前記クライアント・マシンが、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・デバイス及びスマートフォンから選択されるものであってもよい。
前記システムが、1若しくはそれ以上のサーバを更に備え、前記クライアント・マシンが、前記マークアップ・ドキュメントを前記1若しくはそれ以上のサーバのうちいずれかから検索するものであってもよい。
本発明は総じて、クライアント・マシン中のアプリケーションの状態を維持するためのコンピュータ処理方法を提供し、前記アプリケーションの第1マークアップ・ドキュメントを検索する第1の検索段階と、前記第1マークアップ・ドキュメント内に含まれる情報の第1オブジェクト指向表現を作り出し、該第1オブジェクト指向表現を格納する段階を備える。前記第1オブジェクト指向表現が前記アプリケーションの第1状態を定義する。次に、前記方法は、前記アプリケーションの第2マークアップ・ドキュメントを検索する段階と、該第2マークアップ・ドキュメント内に含まれる情報の第2オブジェクト指向表現を作り出し、該第2オブジェクト指向表現を格納する段階を実行する。前記第1及び第2オブジェクト指向表現をマージし、これにより前記第1或いは第2マークアップ・ドキュメント内に含まれる新たなオブジェクト指向表現を形成する段階を実行する。この新たなオブジェクト指向表現が前記アプリケーションの新たな状態を定義する。
本発明は総じて、クライアント・マシン内で実行されるアプリケーションを開発する方法を提供し、前記クライアント・マシンが、クライアント・ランタイム環境(CRE)を利用し、前記アプリケーションの状態を維持するものである。前記方法は、前記アプリケーションのユーザ・インターフェース・スクリーンをマークアップ・ドキュメントとしてそれぞれ定義する段階を備える。次に、前記CREによって第1マークアップ・ドキュメントを検索する段階と、前記第1マークアップ・ドキュメントに含まれる情報の第1オブジェクト指向表現を作り出す段階を実行する。該第1オブジェクト指向表現が前記アプリケーションの第1状態を定義する。次に、前記CREによって第2マークアップ・ドキュメントを検索する段階と、前記第2マークアップ・ドキュメントに含まれる情報の第2オブジェクト指向表現を作り出す段階を実行する。最後に、前記CREによって、前記第1及び第2オブジェクト指向表現をマージし、これにより、前記第1或いは第2マークアップ・ドキュメント内に含まれる情報の新たなオブジェクト指向表現を作り出す段階を実行する。該新たなオブジェクト指向表現が前記情報の新たな状態を定義する。
上記方法は、以下に示す1若しくはそれ以上の特徴を備えるものであってもよい。
前記方法が、前記マークアップ・ドキュメントに関連するビジネス・ロジックを1若しくはそれ以上の手続コードにする段階と、前記CREが前記1若しくはそれ以上の手続コードを実行するものであってもよい。
前記CREが、アプリケーション・プログラム・インターフェース(API)を備え、前記方法が更に、前記APIを介して、前記マークアップ・ドキュメントと前記アプリケーション状態のいずれかを操作する段階を備えるものであってもよい。
本発明は総じて、クライアント・マシン内で実行されるアプリケーションを配備する方法を提供し、該方法は、クライアント・ランタイム環境(CRE)を前記クライアント・マシン内に配備する段階と、前記アプリケーションを中央サーバに配備する段階を備える。前記クライアント・マシンは、ネットワークを介して前記中央サーバに接続し、前記中央サーバは、前記CREからの要求に応じる能力を備える。次に、前記CREから前記中央サーバへ第1要求を送信し、前記中央サーバから前記CREに前記アプリケーションの第1マークアップ・ドキュメントをダウンロードする段階と、前記第1マークアップ・ドキュメントの第1オブジェクト指向表現を作り出し、格納する段階を実行する。該第1オブジェクト指向表現が前記アプリケーションの第1状態を定義する。次に、前記CREから前記中央サーバに第2要求を送信し、前記中央サーバから前記CREに前記アプリケーションの第2マークアップ・ドキュメントをダウンロードする段階と、前記第2マークアップ・ドキュメントの第2オブジェクト指向表現を作り出すとともに格納する段階を実行する。最後に、前記第1オブジェクト指向表現と前記第2オブジェクト指向表現とをマージし、これにより新たなオブジェクト指向表現を作り出す段階を実行し、該新たなオブジェクト指向表現が前記アプリケーションの新たな状態を定義する。
上記方法は、以下に示す1若しくはそれ以上の特徴を備えるものであってもよい。
前記CREが前記アプリケーションの前記新たな状態を更新するものであり、該更新が、1若しくはそれ以上の追加のマークアップ・ドキュメントを検索する段階と、前記1若しくはそれ以上の追加のマークアップ・ドキュメント内に含まれる情報の1若しくはそれ以上の追加のオブジェクト指向表現をそれぞれ作り出すとともに格納する段階と、前記1若しくはそれ以上の追加のオブジェクト指向表現と前記新たなオブジェクト指向表現をマージし、これにより、前記アプリケーションの更新された状態を作り出す段階により行われる。
前記オブジェクト指向表現のいずれかが、ユーザ・インターフェース、データ構造及びビジネス・ロジック・オブジェクトの中のものであってもよい。
前記CREが更に、1若しくはそれ以上の手続コードを検索し、該手続コードが前記マークアップ・ドキュメントのいずれかに関連し、更に前記CREが、前記1若しくはそれ以上の手続コードを実行するものであってもよい。
前記手続コードが、プログラム言語で書かれ、該プログラム言語が、C、C++、C#、Java、Javascript、VBScript、ActionScript、Visual Basic、プロプラエタリ・プログラミング言語から選択されるものであってもよい。
前記手続コードがバイナリ・フォーマットを備え、該バイナリ・フォーマットが、.NETCLR、Java.class format及びMacromedia Flash binary formatから選択されるものであってもよい。
前記手続コードがテキスト・フォーマットを備え、該テキスト・フォーマットが、HTML、XML、平文及び圧縮テキストから選択されるものであってもよい。
前記手続コードと前記マークアップ・ドキュメントのいずれかがコンパイルされ、一組の手続コードに結合され、該手続コードの組が、前記CREによって検索並びに実行されるものであってもよい。
前記方法が、前記クライアント・マシン内でクライアント・サイド・アプリケーション・コードをキャッシュする段階を更に備えるものであってもよく、該クライアント・サイド・アプリケーション・コードは前記第1及び第2マークアップ・ドキュメント、前記新たなオブジェクト指向表現、1若しくはそれ以上の手続コード及び前記中央サーバから前記クライアント・マシンにダウンロードされたデータを備えるものであってもよい。
本発明は総じて、クライアント・マシン内で実行されるアプリケーションを配備する方法を提供し、該方法は、クライアント・ランタイム環境(CRE)を前記クライアント・マシン内に配備する段階と、前記アプリケーションを中央サーバ上に配備する段階を備える。前記クライアント・マシンはネットワークを介して前記中央サーバに接続し、前記中央サーバは前記CREからの要求に応える能力を備える。次に、1若しくはそれ以上のマークアップ・ドキュメントと1若しくはそれ以上の手続コードをエンティティにコンパイル及び結合する段階と、前記CREから前記中央サーバへ要求を送信し、前記エンティティを前記中央サーバから前記CREにダウンロードする段階を実行する。次に、前記エンティティから第1マークアップ・ドキュメントの第1情報を検索する段階と、前記第1マークアップ・ドキュメントの第1オブジェクト指向表現を作り出すとともに格納する段階を実行する。該第1オブジェクト指向表現が前記アプリケーションの第1状態を定義する。次に、前記エンティティから第2マークアップ・ドキュメントの第2情報を検索する段階と、前記第2マークアップ・ドキュメントの第2オブジェクト指向表現を作り出すとともに格納する段階を実行する。最後に、前記第1オブジェクト指向表現と前記第2オブジェクト指向表現をマージし、これにより新たなオブジェクト指向表現を作り出す段階を実行する。該新たなオブジェクト指向表現は、前記アプリケーションの新たな状態を定義する。
本発明は総じて、分散データ格納システムを提供し、該システムは、クライアント・サイドのデータを格納するクライアント・サイドのDOMと、サーバ・サイドのデータを格納するサーバ・サイドのDOMと、ネットワーク上で、それぞれ前記クライアント・サイドのDOMと前記サーバ・サイドのDOMとを同調並びに逆転させるクライアント・サイドのエンジンとサーバ・サイドのエンジンからなる。
上記方法は、以下に示す1若しくはそれ以上の特徴を備えるものであってもよい。
前記クライアント・サイド・エンジンとサーバ・サイド・エンジンとの間のネットワーク接続が切断されると、前記クライアント・サイド・エンジンとサーバ・サイド・エンジンが前記クライアント・サイドのDOMと前記サーバ・サイドのDOMそれぞれの中の変化のトラックを維持し、前記ネットワークの接続が、再構築されたときに、前記クライアント・サイドのDOMと前記サーバ・サイドのDOMが同調するものであってもよい。
前記ネットワークがウェブ或いは無線ネットワークであってもよい。
本発明は総じて、分散データ格納システムを提供し、該システムは、クライアント・サイドのデータを格納するクライアント・サイドのDOMと、サーバ・サイドのデータを格納するサーバ・サイドのDOMと、ネットワーク上で、それぞれ前記クライアント・サイドのDOMと前記サーバ・サイドのDOMとを同調並びに逆転させるクライアント・サイドのエンジンとサーバ・サイドのエンジンからなる。
上記方法は、以下に示す1若しくはそれ以上の特徴を備えるものであってもよい。
前記HTTPヘッダが、「コンテント・タイプ」ヘッダ・フィールドを備え、該ヘッダ・フィールドが前記サーバの応答が「マルチパート」のMIMEタイプ応答であることを示し、前記所定条件が、前記「マルチパート」のMIMEタイプ応答の終わりを備えるものであってもよい。
前記HTTPヘッダが「トランスファ・エンコーディング」ヘッダ・フィールドを備え、該ヘッダ・フィールドが、前記サーバの応答が「チャンキング」であることを示し、前記所定の条件が該チャンキングの応答の終わりを備えるものであってもよい。
前記HTTPヘッダが「コンテント・レングス」ヘッダ・フィールドを備え、該ヘッダ・フィールドが、前記サーバの応答が前記複数のメッセージの全てのコンテント・レングスの総和より長い数であることを示し、前記所定条件が、前記数に等しい或いは前記数を超える数をもたらす総バイト数を備えるものであってもよい。
本発明は総じて、アプリケーション・サーバ内部で動作するウェブ・アプリケーションからサーバ−プッシュを実行する通信システムを提供する。該システムは、前記アプリケーション内部で動作するとともに、要求を受信し、ネットワーク接続を介して前記要求に対する応答を送信するサーバ・モジュールと、前記要求を前記サーバ・モジュールへ送信するとともに前記ネットワーク接続を介して前記要求に対する前記応答を受信するクライアント・マシンからなる。前記サーバ・モジュールは、前記クライアント・マシンからのHTTP要求の受領とHTTPネットワーク接続の受け入れに応じて前記クライアント・マシンへの複数のメッセージのサーバ−プッシュを実行する。前記HTTPネットワーク接続が、前記クライアント・マシンにより開かれ、該ネットワークの接続を開くことが、前記クライアント・マシンへ応答を返信することにより行われる。該応答がHTTPヘッダを備え、該HTTPヘッダは所定条件に遭遇するまで前記ネットワーク接続を閉じないように前記クライアント・マシンに指示し、これにより前記HTTP接続は開いた状態を維持し、前記開いたHTTP接続を介して前記クライアント・マシンへ前記複数のメッセージのうち1若しくはそれ以上が送信可能となる。
本発明は総じて、サーバからクライアント・マシンへの複数のメッセージのサーバ−プッシュを実行する方法を提供し、該方法は、HTTP接続を前記サーバに対して開くことにより、前記クライアント・マシンから前記サーバへ通常のHTTP要求を送信する段階と前記サーバによって、前記HTTP接続を受け入れる段階を備える。次に前記サーバにより前記クライアント・マシンに応答を返信する段階を実行し、前記応答は、HTTPヘッダを備え、該HTTPヘッダは、所定条件に遭遇するまで、前記クライアント・マシンに前記HTTP接続を閉じないように指示し、これにより前記HTTP接続が開いたままの状態となる。最後に、前記開いたHTTP接続を介して前記サーバによって、前記クライアント・マシンへ向けて複数のメッセージのうち1若しくはそれ以上が送信される。
本発明における利点のうち1若しくはそれ以上のことが以下に示される。
本発明の分散処理システムを用いることにより、ソフトウェア開発者がウェブ−ベースのアプリケーションに書き込み、該アプリケーションが複雑なタスクを実行可能となる。該タスクは、処理状態を把握しないウェブ−インラストラクチャでは困難なものも含まれる。なぜなら、アプリケーションの状態はクライアント・サイドにより維持され、アプリケーションはとても応答性が高く、複雑なビジネス・ロジックの実行を、サーバへの行き来なしで行うことが可能となるためである。更には、アプリケーションの状態がサーバ・サイド上でも利用可能となるため、サーバ・サイドのビジネス・ロジックが、クライアント・サイドへの行き来なしにクライアントの状態を問い合わせ可能となるため、これにより、アプリケーションの性能の大幅な改善を行うことが可能となる。クライアントDOMとサーバDOMは自動的に同調するため、開発者はタスクを実行するコードを書き込む必要がない。それゆえ、低い開発コストとメンテナンスの労力の削減を行うことが可能となる。このような自動的な同調は最適化された帯域幅の利用を可能とする。なぜなら、CREとSREとの間の増分的変化のみ送ることを可能とし、これにより、フルページのリフレッシュを妨げる帯域幅を避けることが出来、帯域幅の消費を低減可能となる。
更に、アプリケーションの状態情報が、CREとSREの両方で利用可能となる。したがって、ネットワークが利用可能でない場合であっても、アプリケーションは動作可能である。DOM内の変化は維持され、ネットワークが一度再接続されるならば自動的に同調可能である。このことは、現行のウェブ−アーキテクチャ上を走るオフライン・オペレーションを要求するアプリケーションの完全な分類を可能とする。
更に、CRE及びSREがネットワーク通信を完全に管理可能であるので、十分な開発とメンテナンスの削減が達成可能となる。なぜなら、開発者がネットワーク通信を変更する必要がないためである。CREとSREは、通信レイヤを最適化可能である。したがって、信頼性が高く、有効性の高い帯域幅となる。一つの例においては、本発明は、HTMLベースの処理と比較して、90%の帯域幅を節約することができる。
重要なことは、上記システムが様々なデバイスに対する書き込み用アプリケーションをより簡単に作ることを可能とするということである。ウェブ・ブラウザ内部を走るのに加えて、CREは、多くの異なるデバイス、例えば、ポケットPCやハンドヘルド・デバイスでも動作可能である。一つの例において、クライアント・プログラムは携帯電話上で動作可能であり、該プログラムは、ヴォイス・ベース及びフォーム・ベースのユーザ・インタラクション用のXMLを用いて書き込まれる。ユーザは、音声或いはオンスクリーン・キーボードを用いて携帯電話と対話可能である。このクライアント・プログラムは非常に軽量で、読み取りやすく、ヴォイス・ベースのユーザ・インタラクションを完全な機能をもって管理可能となる。
クロス・プラットフォームの能力は、他のもう1つの利点である。XMLを用いて書き込まれたアプリケーションは、デバイスがCREのようなものをサポートする限り、任意のデバイス上で動作可能である。例えば、リッチ・グラフィカル・ユーザ・インターフェース(GUI)アプリケーションは、パーム・デバイスで動作可能である。またWidows CEデバイス上でも、再コード化の必要性なしに動作可能である。このようなクロス・プラットフォームの能力は、Javaプログラムの能力である「一度書き込んだら、どこでも動作できる」というものとは異なるものである。Javaプログラムは、オブジェクト指向Java APIを用いて書き込まれる。このJava APIは、開発者が多数の低レベルプログラムを作成することを要求する。例えば、ネットワーク通信管理プログラムや低レベルのグラフィック・ドローイングである。このような低レベルのプログラムは装置依存性であり、通常携帯可能なものではない。クロス・プラットフォームのクライアント・サイドのJavaアプリケーションを書き込むことは、今尚困難なことである。本発明の方法は、より高いレベルのアブストラクションを提供可能であり、該アブストラクションは携帯可能であり、アプリケーションは直接XMLを用いて通常書き込まれる。低レベルの動作は、アプリケーション開発者の下ではなく、完全にサポート・インフラストラクチャによって取扱われるものとなる。
更に、本発明のシステムは、ユーザが様々なコンピューティング・デバイス上で様々なアプリケーションにアクセスし動作させることを可能とする。このことは、予めこれらのアプリケーションをダウンロードすることを要せず、したがって、これらデバイスの計算能力及び格納の限界を克服せしめる。企業は、全てのXMLアプリケーションを中央サーバに格納し、ユーザはユーザ自身のコンピューティング・デバイスにこれらアプリケーション用のXMLドキュメントをダウンロード可能であり、この作業に手間を要さない。このようなXMLドキュメントはネットワーク上に素早く伝達され、たとえ動作の遅いネットワーク接続であっても、ユーザの感覚からさほど遅れない時間で、伝達可能となる。またそれ以上のインストレーションは必要とされない。利用可能なアプリケーションの数は、デバイス上で利用できる計算能力によって制限されるものではなく、むしろサーバ上で利用できる計算能力により制限されるものとなる。
本発明の1若しくはそれ以上の詳細は、添付の図面及び下記説明によりなされる。他の特徴、即ち、本発明の目的及び利点は下記の好適な実施形態並びに図面及び請求の範囲から明確なものとなる。
以下、図面を参照しつつ、本発明の説明を行う。同様の要素には同様の符号を付して説明する。
図2を参照する。分配処理システム(700)はクライアント・マシン(219)、ウェブ・サーバ(112)、及びアプリケーション・サーバ(105)を備える。アプリケーション・サーバ(105)はウェブ・サーバ(112)の後ろ側で動作するとともに、サーバ・サイド・アプリケーション(106)を作動させる。ウェブ・サーバ(112)はHTML或いはXMLドキュメントをクライアント・ウェブ・ブラウザ(220)に伝達する。該HTML或いはXMLドキュメントは、サーバ・サイド・アプリケーション(106)によって生成される。クライアント・ウェブ・ブラウザ(220)はクライアント・マシン(219)内に常駐する。高信頼度リアルタイム双方向性メッセージング・システム(240)がメッセージをクライアント・ウェブ・ブラウザ(220)とウェブ・サーバ(112)の間でHTTPウェブ・コネクションを通して送信する。クライアント・マシン(219)はクライアント・ランタイム環境(client runtime environment, CRE)(224)を備える。該CREはクライアント・ウェブ・ブラウザ(220)及びクライアント・サイド・アプリケーション・コード(222)内部で作動する。他の実施形態では、CREはクライアント・ウェブ・ブラウザ(220)外部で作動する。クライアント・サイド・アプリケーション・コード(222)はエクステンシブル・マークアップ・ドキュメント(Extensible Markup Language, XML)ドキュメント及びスクリプトからなる。CRE(224)はクライアント・サイド・ファイアウォール(244)により保護され、ウェブ・サーバ(214)はサーバ・サイド・ファイアウォール(242)により保護される。CRE(224)はドキュメント・オブジェクト・モデル(Document Object Model, DOM)(226)、通信モジュール(225)、状態同期及び継続化モジュール(228)、及びその他の機能的モジュール(227)を備える。該機能的モジュールとしては、例えば、XML構文解析プログラム、ユーザ・インターフェース、記憶装置、セキュリティ、実行エンジンが挙げられる。XML構文解析プログラムはXMLドキュメントを構文解析する。該XMLドキュメントは、アプリケーション・サーバ(105)から提供される。構文解析の結果を該アプリケーションのクライアント・サイドの状態の一部としてクライアント・サイドDOM(226)に記録させてもよい。該ユーザ・インターフェース・モジュールは、ユーザ・インターフェースを表示し、該アプリケーションのXML記述に従ってユーザと交信する。該実行エンジンモジュールは、クライアント・サイド・アプリケーション・コード(222)を実行可能である。DOM(226)は該アプリケーションのクライアント・サイドの状態を維持するとともに、該CREにより自動的に更新される。同期及び継続化モジュール(228)はDOM(226)をアプリケーション・サーバ(105)と同期化するとともに、継続的記憶装置からDOM(226)を保存及び/又は検索する。
図1A及び図2Aを参照する。図2のコンピュータ・システム(700)は該アプリケーションの状態を、クライアント・サイドDOM(226)内に、維持する。これは以下の工程によって行われる。初めに、CRE(224)がアプリケーション・サーバ(105)からpage1.xmlの第1マークアップ・ドキュメント(142)を検索する。その後該CREは取得したマークアップ・ドキュメントを処理して第1オブジェクト指向表現(144)にする。第1マークアップ・ドキュメント(142)はクライアント・マシン(120)内に「This is a line of Text」というテキストを表示するコードを備える。次に、CRE(224)はアプリケーション・サーバ(105)からpage2.xmlの第2マークアップ・ドキュメント(146)を検索する。その後該CREは取得したマークアップ・ドキュメントを処理して第2オブジェクト指向表現(148)にする。第2マークアップ・ドキュメント(146)は、クライアント・マシン(120)内に灰色のボタン(152)を表示するコードを備える。次にCRE(224)は第1及び第2オブジェクト指向表現(144)及び(146)に含まれる情報を合わせて、新たなオブジェクト指向表現(174)を作成する。新たなオブジェクト指向表現(174)は「This is a line of Text」というテキストを灰色のボタンの背景(176)内に表示する。これによって、第1及び第2マークアップ・ドキュメント(142)、(146)の状態を維持する。オブジェクト指向表現(142)、(144)及び(174)はクライアント・サイドDOM(226)に記憶される。
図4を参照する。分配処理システム(200)はクライアント・ランタイム環境(CRE)(224)(クライアント・ウェブ・ブラウザ(220)内で作動する)、アプリケーション・サーバ・ランタイム環境(server runtime environment, SRE)(214)(HTTPウェブ・サーバ(219)の後ろ側で作動する)、高信頼度リアルタイム双方向性メッセージング・システム(240)(HTTPウェブ・コネクションを通してCRE(224)とSRE(214)の間でメッセージを送信並びに受信する)を備える。CRE(224)はクライアント・サイド・ファイアウォール(244)によって保護され、SRE(214)はサーバ・サイド・ファイアウォール(242)により保護される。メッセージは、ノーマル・ファイアウォール・ポート(80)(図示せず)を通過する。ノーマル・ファイアウォール・ポート(80)は対応するクライアント・サイド・ファイアウォール及びサーバ・サイド・ファイアウォール内にある。アプリケーションはクライアント・サイド・コード(222)及びサーバ・サイド・コード(212)を備える。一つの例としては、該クライアント・サイド・アプリケーション・コード(222)及び該サーバ・サイド・アプリケーション・コード(212)はXMLドキュメント及びスクリプトを備える。CRE(224)は、XMLクライアント・サイド文書オブジェクトモデル(Document Object Model, DOM)(226)内にクライアント・サイド・アプリケーションの状態を維持する。DOM(226)はオブジェクト指向ドキュメント表現法を提供し、どのような属性が各オブジェクトと関連付けられるか、またどのように該オブジェクトと属性が操作されるかを定義する。SRE(214)はまた、サーバ・サイド・アプリケーションの状態をサーバ・サイドDOM(216)内に維持する。クライアント・サイドDOM(226)とサーバ・サイドDOM(216)は、リアルタイム双方向性メッセージング・システム(240)を介して、自動的に相互に同期する。その際改めてクライアント・サイド・ファイアウォール(244)或いはサーバ・サイド・ファイアウォール(242)に変更を加える必要は全くない。
CRE(224)はDOM(226)に加えて通信モジュール(225)、状態同期及び継続化モジュール(228)及びその他の機能的モジュール(227)を備える。該機能的モジュールとしては、例えば、エクステンシブル・マークアップ・ドキュメント(XML)構文解析プログラム、ユーザ・インターフェース、記憶装置、セキュリティ、実行エンジンが挙げられる。該XML構文解析プログラムは、アプリケーション・サーバ(210)からのXMLドキュメントを構文解析する。構文解析の結果を、アプリケーションのクライアントの状態の一部として、クライアント・サイドDOM(226)内に記憶させてもよい。該ユーザ・インターフェース・モジュールは、該ユーザ・インターフェースを表示するとともに、該アプリケーションのXML記述に従って該ユーザと交信する。該実行エンジンモジュールは、アプリケーション・サーバ(210)上のXMLドキュメントからのクライアント・サイド・アプリケーション・コード(222)を実行可能である。上記のごとく、DOM(226)は、該アプリケーションのクライアント・サイドの状態を表現するとともに、該CREにより自動的に更新される。同期及び継続化モジュール(228)はDOM(226)をアプリケーション・サーバ(210)と同期させるとともに、継続的記憶装置からのDOM(226)を記憶及び/又は検索する。
SRE(214)はアプリケーション・サーバ(210)内において、HTTPウェブ・サーバ(219)の後ろ側で動作する。SRE(214)はCRE(224)と同等の構造を有する。該SREは更に、サーバ・サイドDOM(216)、通信モジュール(215)、同期及び継続化モジュール(218)及びその他の機能的モジュール(217)を備える。これらモジュールの大部分は、クライアント・サイドの対応するモジュールと同じ役割を果たす。サーバ・サイドDOM(216)は、SRE(214)に送られたXMLドキュメントを構文解析することにより構築される。結果として、サーバ・サイドDOM(216)は該アプリケーションのクライアント・サイドの状態を反映するとともに、サーバ・サイド・アプリケーション・コード(212)にクライアント・サイドの状態を提供する。更に、サーバ・サイド・アプリケーション・コード(212)がサーバ・サイドDOM(216)を変更すると、SRE(214)は該アプリケーションのクライアント・サイドにメッセージを送信する。これにより、クライアント・サイドDOM(226)もまた更新された状態になる。クライアント・サイド・アプリケーション・コード(222)或いはユーザがクライアント・サイドDOM(226)を変更すると、CRE(224)はSRE(214)にメッセージを送信する。これによりサーバ・サイドDOM(216)は同期される。追加的モジュールとしてはアプリケーション・サーバ・インターフェース・モジュール及びクラスタリング・モジュールなどが挙げられる。該アプリケーション・サーバ・インターフェース・モジュールは、SRE(214)がアプリケーション・サーバ(210)内部での作動を可能にするとともに、アプリケーション・サーバ(210)内部のアプリケーションが該SREの機能性へのアクセスを可能にする。該クラスタリング・モジュールは該SREのクラスタリングを補助する。
本発明による処理状態を把握するコンピューティングはまた、分散処理システムにも適用される。該分散処理システムは、クライアント・マシンを備え、該クライアント・マシンは複数のサーバとネットワーク接続される。図3を参照する。分散処理システム(500)はクライアント・マシン(550)及びサーバ1からN(Nは0より大きい整数)(510、520、...530)を備える。クライアント・マシン(550)は、ネットワーク(540)を介してサーバ1からNとネットワーク接続される。ネットワーク(540)はワイヤレスでも有線でもよい。該通信はHTTP或いはTCPとしてよい。クライアント・マシン(550)はCRE(554)及びクライアント・サイド・アプリケーション・コード(552)を備える。該クライアント・サイド・アプリケーション・コードは、XML及びスクリプト・ページを備える。CRE(554)はDOM(556)、通信モジュール(555)、状態同期及び継続化モジュール(558)及びその他の機能的モジュール(557)を備える。該機能的モジュールとしては、例えばエクステンシブル・マークアップ・ドキュメント(XML)構文解析プログラム、ユーザ・インターフェース、記憶装置、セキュリティ、実行エンジンが挙げられる。尚、該DOMは該アプリケーションのクライアント・サイドの状態を維持する。該XML構文解析プログラムはサーバ1からNからのXMLドキュメントを構文解析する。構文解析の結果を、アプリケーションのクライアント・サイドの状態の一部としてクライアント・サイドDOM(556)に記憶させてもよい。ユーザ・インターフェース・モジュールは該ユーザ・インターフェースを表示するとともに、該アプリケーションのXML記述に従って該ユーザと交信する。該実行エンジンモジュールは、クライアント・サイド・アプリケーション・コード(552)を実行可能である。同期及び継続化モジュール(558)はDOM(556)をサーバ1からNと同期させるとともに、継続的記憶装置からのDOM(556)を記憶及び/又は検索する。一例としては、サーバ1からNでウェブ・サービスを実行し、クライアント・マシン(550)をウェブ・サービス・コンシューマとする。
アプリケーション・コードは、図2乃至図4の分散処理プラットフォーム上で動作する。該アプリケーション・コードは、今日のHTMLウェブ・アプリケーション・コードと同等のものである。すなわち該データベース・ティア及びサーバ・サイド・ビジネス・ロジック・ティアは、該アプリケーション・サーバにより取り扱われる。一つの例として、プレゼンテーション・ティアがJavaサーバ・ページ(Java Server Pages)及びServletsを用いて構築される。本発明の特徴は、該アプリケーションの該ユーザ・インターフェースが、HTMLではなくXMLを用いて記述される点にある。一つの例として、図6に示す初期スクリーン・フォームを表示する初期XMLマークアップ・ドキュメントのためのアプリケーション・コードは、以下の通りである。
初期XMLマークアップ・ドキュメント:
<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>
全てのアプリケーション・コードは、初めはアプリケーション・サーバ(210)上に記録される。クライアント・ブラウザ(220)は、該初期XMLマークアップ・ドキュメントをアプリケーション・サーバ(210)から検索すると同時に、図6に示す初期スクリーン・フォーム(600A)を表示する。この例では、初期スクリーン・フォーム(600A)は新規注文フォームである。新規注文フォームは顧客情報(602)及び顧客検索タブ(604)を備える。顧客情報(602)は請求書発送住所情報(606)、輸送住所情報(608)、注文情報(610)、支払いカード情報(612)を含む。請求書発送住所情報(606)は顧客の氏名及び請求書発送住所を含む。輸送先住所(608)は製品を輸送する宛名の人物の氏名及び輸送先住所を含む。注文情報(610)は製品ID、製品詳細、量、単価、総価格を含む。クレジットカード情報(612)はクレジットカード所有者名、カードの種類、カード番号、有効期限を含む。ユーザは、適切なフィールドに情報を入力することにより、初期フォーム(600A)と交信する。ユーザは、アプリケーション・サーバ(210)に既に情報が記憶されている顧客の名前を探すことができる。例えば、ユーザは検索タブ(604)をクリックし、顧客名である「マイク・アダム」を選択し、フォーム(600A)下端のサブミット・ボタン(614)をクリックしてもよい。クライアント・ブラウザ(220)はユーザの入力をアプリケーション・サーバ(210)に送信する。するとアプリケーション・サーバ(210)は情報を検索し要求された情報を初期スクリーン(210)とマージし、それにより新たなスクリーン(600B(図6B)を生成する。
第2XMLマークアップ・ドキュメントを要求するためのコードは以下の通りである:
<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>
第2XMLマークアップ・ドキュメントを第1XMLマークアップ・ドキュメントとマージさせる過程で生成されたスクリーン・ディスプレイ(600B)は、既に記憶されている顧客請求書発送住所(606)、輸送情報(608)、及びクレジットカード情報(612)を含む。ここでユーザは注文情報を入力するとともにクライアント・サイド・ブラウザ(220)を介してアプリケーション・サーバ(210)に提出する。
図3及び図5を参照する。工程(300)はクライアント・マシン(550)を通して該アプリケーションを実行するとともに該アプリケーションの状態を維持する工程であり、以下の段階を備える。ユーザがクライアント・マシン(550)を通してアプリケーションを実行したいときは、CRE(554)は要求をアプリケーション・サーバ(510)に送信し、アプリケーションの初期スクリーンのXML記述を検索する(310)。アプリケーション・サーバ(510)は、クライアント・マシン(550)に初期XMLスクリーンを返送することにより、この要求に対応する(320)。CRE(554)はこのXMLドキュメントを検索するとともに構文解析し、初期スクリーンに含まれる情報の第1オブジェクト指向表現を構築する。CRE(554)はクライアント・サイドDOM(556)の情報の第1オブジェクト表現を記憶する。この記憶を用いてアプリケーションのクライアント・サイドの状態をトラッキングし、アプリケーションの初期スクリーンをユーザに提示する(330)。次にユーザはクライアント・マシン内で該アプリケーションを実行する(340)。アプリケーションのXML記述に従って、CRE(554)はクライアント・サイド・スクリプト或いはサーバ・サイド・イベント処理部を呼び出し、該ユーザ・イベントのいくつかを処理する。ユーザ・イベントを受信すると、CRE(554)は第2要求をアプリケーション・サーバ(510)に送信し、アプリケーションの第2XMLスクリーンを検索する(360)。CRE(554)は第2XMLスクリーンを受信するとともに構文解析する。続いてCRE(554)は、第2スクリーンに含まれる情報の第2オブジェクト指向表現を構築するとともにクライアント・サイドDOM(556)に記憶する(370)。次に、CRE(554)は第1及び第2オブジェクト指向表現をマージして第1及び第2スクリーンに含まれる情報の新しいオブジェクト指向表現を創出するとともに、組み合わされた結果をクライアント・マシン(550)に表示する(380)。この工程は繰り返され、該スクリプト或いは該サーバ・サイド・イベント処理部から受信された、更なる対応が全て更にCRE(554)により処理されるようにする。CREはその後クライアント・サイドDOM(556)を更新し、該結果を適宜ユーザに表示する。継続的な接続がこのアプリケーションに必要な場合は、そのような接続がクライアント・マシン(550)及びサーバ(510)間に構築される。クライアント・サイド・ビジネス・ロジック(552)が定義済みである場合は、このようなビジネス・ロジックがCRE(554)内にロードされるとともにキャッシュされ、適宜実行される。
図4及び図5Bを参照する。アプリケーションがCRE(224)内で動作するとき、該アプリケーションの状態はクライアント・マシンのXMLによるDOM(226)内に維持される。ユーザが該アプリケーションと交信すると、CRE(224)はクライアント・サイドDOM(226)を適宜更新し、ユーザのインプットに反映させる。図4の実施形態では、該アプリケーションの状態はまた、アプリケーション・サーバのDOM(216)上に維持される。該アプリケーションのサーバ・サイド・ビジネス・ロジック(212)が、該アプリケーションの状態の変更、例えばウィンドウを不可視にするなど、を決定すると、SRE(214)は自動的にサーバ・サイドDOM(216)を更新する(390)。DOM(226)或いは(216)が更新されると必ず、CRE(224)或いはSRE(214)はもう一方の相手にメッセージを送信する。これによりそれぞれのDOM(226)及び(216)を同期する(395)。ネットワークが接続を切られても、該アプリケーションのクライアント・サイド及び該アプリケーションのサーバ・サイドの両方が機能を続ける。アプリケーションの状態の変化は、対応するDOM(226)及び(216)内に維持される。ネットワーク接続が再び利用可能となったとき、CRE(224)及びSRE(214)は自動的にそれぞれDOM(226)及び(216)を同期する。
DOM同期及びアプリケーション・ロジック起動のメッセージなどのクライアント・サーバ間の通信は全てHTTP(240)を介しての高信頼度リアルタイム双方向性通信を通して配信される。HTTP通信モデル自体は要求/応答モデルであり、双方向性通信を可能にするわけではない。従来技術のHTTP通信モデルでは、ユーザが要求をクライアント・マシンからウェブ・サーバに送ると、該クライアント・マシンはウェブ・サーバに対して片方向性通信スレッドを開いて、ユーザの要求を配信する。次の段階で、該ウェブ・サーバは、ユーザの要求を処理し、該クライアント・マシンに応答する。該クライアント・マシンに応答する際には、該ウェブ・サーバは、既に開いている通信スレッドを逆方向に用いる。該応答が配信後は、該通信スレッドは閉じられる。このような先行技術の通信モデルでは、サーバは、まず要求を受信しなければクライアント・マシンに対する通信スレッドを開始できない。よって、「サーバ・プッシュ」情報配信は不可能である。様々なHTTPトンネル技術が利用可能であるが、それら技術は特別なクライアント・ソフトウェア又はサーバソフトウェアを必要とするとともに、潜在的にセキュリティの問題をはらんでいる。本発明においては、クライアント・マシンとアプリケーション・サーバの間の通信モデルはHTTPに基づいて構築されるが、HTTPが通常有する低信頼性で、クライアント・プルのみであるという制限を克服している。また本発明の通信モデルは既存のウェブ・インフラストラクチャと完全に適合し、クライアント・サイド及びサーバ・サイドのファイアウォールの変更を全く必要としない。本発明はクライアントの要求への応答を永続的な接続とすることにより、サーバ・プッシュを可能とする。図7を参照する。本発明は、以下の手順(800)に従って永続的な接続及びサーバ・プッシュを可能とする。アプリケーションが開始される(805)と、クライアント・マシンは、通常のHTTP要求を介してのサーバに対する通信スレッドを開く(810)。要求のユニフォーム・リソース・アイデンティファー(Uniform Resource Identifier,URI)は特定のアプリケーション・サーバを示す。特別な所定の要求パラメータはこの要求が永続的な接続を開設するためのものであることを示す。サーバはHTTP接続を受け入れて、HTTP要求を受信する(820)。次にサーバはクライアント・マシンに応答を返信する。該応答はHTTPヘッダを備え、該HTTPヘッダは特定の条件が満たされるまでクライアント・マシンにHTTP接続を閉じないように指示する(830)。HTTP接続は特定の条件が満たされる限り、開いたままとなる(840)。サーバはHTTP接続が開いているのを利用して「サーバ・プッシュ」を行う。すなわちクライアント・マシンが要求を送らなくても、クライアント・マシンに1つ以上のメッセージを送る(850)。クライアント・マシンに特定の条件が満たされるまでHTTP接続を開いたままに保つように指示するHTTPヘッダの例としては以下のようなものがある。一つの例では、「コンテント・タイプ(content-type)」HTTPヘッダが「マルチパート(multipart」として設定され、該特定の条件は「マルチパート」応答の終了とする。
「マルチパート」応答のためのコードの例:
HTTP/1.1 200 OK
content-type: multipart/mixed;boundary=a
別の例では、「コンテント・レングス(content-length」HTTPヘッダが非常に大きな数、すなわち5,000,000バイトとして設定される。また或いは該HTTPヘッダは、サーバがクライアント・マシンにプッシュしたい全てのメッセージのコンテント・レングスの合計よりも大きい数として設定される。
非常に大きなコンテント・レングス応答のためのコードの例:
HTTP/1.1 200 OK
content-length: 5000000 bytes
別の例では、「トランスファ・エンコーディング(transfer-encoding)」HTTPヘッダが「チャンキング(chunked)」として設定され、該特定の条件は「チャンキング」応答の終了を定義する。
チャンキング応答のためのコードの例:
HTTP/1.1 200 OK
content-type: text/html
Transfer-Encoding: chunked
この永続的通信スレッドが一度サーバとクライアント・マシンの間で構築されると、サーバがクライアント・マシンに如何なるメッセージも送ることが可能になる。すなわち「サーバ・プッシュ」を行うことが可能になる。クライアント・マシンが該永続的接続に問題を検知すると常に、該クライアント・マシンは単に新しい接続を開き、以前の接続を閉じる(860)。
メッセージングの信頼性はメッセージ待ち行列を用いるとともに、各メッセージに固有の識別子(identification, ID)を付与することにより得られる。図2に示すごとく、CRE(224)及びSRE(214)の両方がそれぞれのメッセージ待ち行列(221)及び(211)を維持する。メッセージが配信されるときはいつも、固有のIDがメッセージに付与される。メッセージは、この特定のメッセージIDの受信を知らせるもう一方の相手からの信号が受信されるまでは、メッセージ待ち行列から除去されない。ある期間を経過しても信号が受信されない場合は、メッセージは再度配信される。受信側は、メッセージを受信すると直ちに、このメッセージIDの受領の知らせを送信側に送る。受信されたメッセージIDは一定期間メモリに保存される。同一のIDを有するメッセージがこの期間内に再度受信されると、新しいメッセージが廃棄される。これにより、同一のメッセージが複数回処理されるのを防ぐ。
以下の請求項の範囲内でこの他の実施形態も考えられる。例えば、SRE(214)はアプリケーション・サーバ(210)の外で作動してもよい。上述の分散ウェブ・ベース・システム(200)を介して配信可能なビジネス・アプリケーションの例としては、これには限らないが、ワード・プロセシングアプリケーションのためのMicrosoft Word、表計算アプリケーションのためのMicrosoft Excel、金融機関の資産管理担当者が用いる金融取引ソフトウェア、保険業界で用いられるクレーム処理アプリケーションが挙げられる。
本発明のいくつかの実施形態を説明してきた。しかしながら、本発明の本質及び範囲を離れることなく様々な改変が可能であることが理解できるであろう。従って、この他の実施形態も以下の請求項の範囲内に含まれる。
従来の状態を把握しないウェブ・ベースのコンピューティング・システムのブロック線図である。 第1及び第2マークアップ・ドキュメント、第1及び第2マークアップ・ドキュメントの対応するオブジェクト指向表現並びに従来のウェブ・ベースのコンピューティング・システム内のクライアント・マシン内の対応する表示の例である。 本発明の状態を把握可能なウェブ・ベースのコンピューティング・システムの第1の実施形態に係るブロック線図である。 図2の状態を把握可能なウェブ・ベースのコンピューティング・システムにおける図1の例の第1及び第2のディスプレイを示す図である。 本発明の状態把握可能なコンピューティング・システムの他のもう1つの実施形態のブロック線図である。 本発明の状態把握可能なコンピューティング・システムの更なる他のもう1つの実施形態のブロック線図である。 図2のコンピューティング・システム内のアプリケーションの動作方法のブロック線図である。 図4のコンピューティング・システム内のアプリケーションの動作方法のブロック線図である。 クライアント・マシン内で示される初期のXMLスクリーンのスクリーン・ショットである。 クライアント・マシン内で示される更新されたXMLスクリーンのスクリーン・ショットである。 本発明のサーバ・プッシュ方法のブロック線図である。

Claims (78)

  1. 処理状態を把握する分散処理を実行するコンピュータ・システムであって、
    クライアント・ランタイム環境(CRE)を備えるクライアント・マシンを備え、
    前記CREは、前記クライアント・マシンの状態を維持するために用いられ、前記CREが、
    第1マークアップ・ドキュメントを検索する段階と、
    前記第1マークアップ・ドキュメント内に含まれる情報の第1オブジェクト指向表現を作り出すとともに格納する段階であって、前記第1オブジェクト指向表現が前記アプリケーションの第1状態を定義する段階と、
    第2マークアップ・ドキュメントを検索する段階と、
    前記第2マークアップ・ドキュメント内に含まれる情報の第2オブジェクト指向表現を作り出すとともに格納する段階と、
    前記第1及び第2オブジェクト指向表現をマージし、これにより前記第1或いは第2マークアップ・ドキュメント内に蓄えられる情報の新たなオブジェクト指向表現を形成する段階を実行し、
    前記新たなオブジェクト指向表現が前記アプリケーションの新たな状態を定義することを特徴とするシステム。
  2. 前記CREが更に、
    1若しくはそれ以上の追加のマークアップ・ドキュメントを検索する段階と、
    前記1若しくはそれ以上の追加のマークアップ・ドキュメント内に含まれる情報の1若しくはそれ以上の追加のオブジェクト指向表現をそれぞれ作り出し、格納する段階と、
    前記1若しくはそれ以上の追加のオブジェクト指向表現を前記新たなオブジェクト指向表現とマージし、これにより前記アプリケーションの更新された状態を形成する段階を実行することにより、
    前記アプリケーションの前記新たな状態を更新することを特徴とする請求項1記載のシステム。
  3. 前記オブジェクト指向表現のいずれかが、ユーザ・インターフェース、データ構造及びビジネス・ロジックからなる群から選択される構造を備えることを特徴とする請求項1記載のシステム。
  4. 前記CREが更に、1若しくはそれ以上の手続コードを検索し、
    該手続コードが前記マークアップ・ドキュメントのいずれかに関連し、
    更に前記CREが、前記1若しくはそれ以上の手続コードを実行することを特徴とする請求項1記載のシステム。
  5. 前記CREが更に、アプリケーション・プログラム・インターフェース(API)を備え、
    前記1若しくはそれ以上の手続コードが前記APIを利用し、プログラム的に前記アプリケーションの状態を維持することを特徴とする請求項4記載のシステム。
  6. 前記アプリケーションの状態が、ドキュメント・オブジェクト・モデル(DOM)内で維持されることを特徴とする請求項1記載のシステム。
  7. 前記マークアップ・ドキュメントのいずれかが、エクステンシブル・マークアップ・ランゲージ(XML)フォーマットを備えることを特徴とする請求項1記載のシステム。
  8. 前記マークアップ・ドキュメントのいずれかが、ハイパ・テキスト・マークアップ・ランケージ(HTML)フォーマットを備えることを特徴とする請求項1記載のシステム。
  9. 前記1若しくはそれ以上の手続コードが、プログラム言語で書かれ、
    該プログラム言語が、C、C++、C#、Java、Javascript、VBScript、ActionScript、Visual Basic、プロプラエタリ・プログラミング言語から選択されることを特徴とする請求項4記載のシステム。
  10. 前記1若しくはそれ以上の手続コードがバイナリ・フォーマットを備え、
    該バイナリ・フォーマットが、.NETCLR、Java.class format及びMacromedia Flash binary formatから選択されることを特徴とする請求項4記載のシステム。
  11. 前記1若しくはそれ以上の手続コードがテキスト・フォーマットを備え、
    該テキスト・フォーマットが、HTML、XML、平文及び圧縮テキストから選択されることを特徴とする請求項4記載のシステム。
  12. 前記マージする段階が、追加、除去、挿入、変更、置換、更新、結合及びこれらの組み合わせから選択される1若しくはそれ以上の動作を備えることを特徴とする請求項1記載のシステム。
  13. 前記オブジェクト指向表現のいずれかが、オブジェクト、オブジェクト属性、オブジェクト属性値、オブジェクト階層関係及びこれらの組み合わせを備え、これにより、前記1若しくはそれ以上の動作が、前記オブジェクト、オブジェクト属性、オブジェクト属性値、オブジェクト階層関係及びこれらの組み合わせに適用されることを特徴とする請求項12記載のシステム。
  14. 前記1若しくはそれ以上の手続コードのいずれかと前記マークアップ・ドキュメントのいずれかがコンパイルされ、一組の手続コードに結合され、
    該手続コードの組が、前記CREによって検索並びに実行されることを特徴とする請求項1記載のシステム。
  15. 前記マークアップ・ドキュメントのうち1若しくはそれ以上が手続コードにコンパイルされ、
    該手続コードが前記CREによって、検索並びに実行されることを特徴とする請求項1記載のシステム。
  16. リアルタイム双方向性メッセージング・システムを備え、
    該システムが、前記クライアント・マシンとネットワーク上のサーバとの間でメッセージを送信及び受信することを特徴とする請求項1記載のシステム。
  17. 前記ネットワークが、ワールド・ワイド・ウェブ(web)を備えることを特徴とする請求項16記載のシステム。
  18. 前記ネットワークが、無線ネットワークを備えることを特徴とする請求項16記載のシステム。
  19. ウェブ・ブラウザを更に備え、
    前記CREが前記ウェブ・ブラウザの内部を走行することを特徴とする請求項1記載のシステム。
  20. ウェブ・ブラウザを更に備え、
    前記CREが前記ウェブ・ブラウザの外部を走行することを特徴とする請求項1記載のシステム。
  21. 前記クライアント・マシンが、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・デバイス及びスマートフォンから選択されることを特徴とする請求項1記載のシステム。
  22. 1若しくはそれ以上のサーバを更に備え、
    前記クライアント・マシンが、前記マークアップ・ドキュメントを前記1若しくはそれ以上のサーバのうちいずれかから検索することを特徴とする請求項1記載のシステム。
  23. クライアント・マシン中のアプリケーションの状態を維持するためのコンピュータ処理方法であって、
    前記アプリケーションの第1マークアップ・ドキュメントを検索する段階と、
    前記第1マークアップ・ドキュメント内に含まれる情報の第1オブジェクト指向表現を作り出し、該第1オブジェクト指向表現を格納する段階であって、前記第1オブジェクト指向表現が前記アプリケーションの第1状態を定義する段階と、
    前記アプリケーションの第2マークアップ・ドキュメントを検索する段階と、
    該第2マークアップ・ドキュメント内に含まれる情報の第2オブジェクト指向表現を作り出し、該第2オブジェクト指向表現を格納する段階と、
    前記第1及び第2オブジェクト指向表現をマージし、これにより前記第1或いは第2マークアップ・ドキュメント内に含まれる新たなオブジェクト指向表現を形成する段階からなり、
    前記新たなオブジェクト指向表現が前記アプリケーションの新たな状態を定義することを特徴とする方法。
  24. 前記アプリケーションの前記新たな状態を更新する段階を更に備え、
    該更新する段階が、
    1若しくはそれ以上の追加のマークアップ・ドキュメントを検索する段階と、
    前記1若しくはそれ以上の追加のマークアップ・ドキュメント内に含まれる情報の1若しくはそれ以上の追加のオブジェクト指向表現を作り出すとともに格納する段階と、
    前記1若しくはそれ以上のオブジェクト指向表現と前記新たなオブジェクト指向表現をマージし、
    前記アプリケーションの更新された状態を作り出す段階を備えることを特徴とする請求項23記載の方法。
  25. 前記オブジェクト指向表現のうちいずれかが、ユーザ・インターフェース、データ構造及びビジネス・ロジックからなる群から選択される構造を備えることを特徴とする請求項23記載の方法。
  26. 1若しくはそれ以上の手続コードを検索する段階を更に備え、
    該手続コードが前記マークアップ・ドキュメントのいずれかに関連し、
    更に、前記1若しくはそれ以上の手続コードを実行する段階を備えることを特徴とする請求項23記載の方法。
  27. 前記1若しくはそれ以上の手続コードが、アプリケーション・プログラム・インターフェース(API)を利用し、プログラム的に前記アプリケーションの状態を維持することを特徴とする請求項26記載の方法。
  28. 前記アプリケーションの状態が、ドキュメント・オブジェクト・モデル(DOM)内で維持されることを特徴とする請求項23記載の方法。
  29. 前記マークアップ・ドキュメントのいずれかが、エクステンシブル・マークアップ・ランゲージ(XML)フォーマットを備えることを特徴とする請求項23記載の方法。
  30. 前記マークアップ・ドキュメントのいずれかが、ハイパ・テキスト・マークアップ・ランケージ(HTML)フォーマットを備えることを特徴とする請求項23記載の方法。
  31. 前記1若しくはそれ以上の手続コードが、プログラム言語で書かれ、
    該プログラム言語が、C、C++、C#、Java、Javascript、VBScript、ActionScript、Visual Basic、プロプラエタリ・プログラミング言語から選択されることを特徴とする請求項26記載の方法。
  32. 前記1若しくはそれ以上の手続コードがバイナリ・フォーマットを備え、
    該バイナリ・フォーマットが、.NETCLR、Java.class format及びMacromedia Flash binary formatから選択されることを特徴とする請求項26記載の方法。
  33. 前記1若しくはそれ以上の手続コードがテキスト・フォーマットを備え、
    該テキスト・フォーマットが、HTML、XML、平文及び圧縮テキストから選択されることを特徴とする請求項26記載の方法。
  34. 前記マージする段階が、追加、除去、挿入、変更、置換、更新、結合及びこれらの組み合わせから選択される1若しくはそれ以上の動作を備えることを特徴とする請求項23記載の方法。
  35. 前記オブジェクト指向表現のいずれかが、オブジェクト、オブジェクト属性、オブジェクト属性値、オブジェクト階層関係及びこれらの組み合わせを備え、これにより、前記1若しくはそれ以上の動作が、前記オブジェクト、オブジェクト属性、オブジェクト属性値、オブジェクト階層関係及びこれらの組み合わせに適用されることを特徴とする請求項34記載の方法。
  36. 前記1若しくはそれ以上の手続コードのいずれかと前記マークアップ・ドキュメントのいずれかがコンパイルされ、一組の手続コードに結合され、
    該手続コードの組が、前記クライアント・マシンによって検索並びに実行されることを特徴とする請求項26記載の方法。
  37. 前記マークアップ・ドキュメントのうち1若しくはそれ以上が手続コードにコンパイルされ、
    該手続コードが前記クライアント・マシンによって、検索並びに実行されることを特徴とする請求項23記載の方法。
  38. 前記クライアント・マシンとネットワーク上のサーバとの間で、リアルタイム双方向性メッセージング・システムを介して、メッセージの送信及び受信を行う段階を更に備えることを特徴とする請求項23記載の方法。
  39. 前記クライアント・マシンが、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・デバイス及びスマートフォンから選択されることを特徴とする請求項23記載の方法。
  40. 1若しくはそれ以上のサーバを更に備え、
    前記クライアント・マシンが、前記マークアップ・ドキュメントを前記1若しくはそれ以上のサーバのうちいずれかから検索することを特徴とする請求項23記載の方法。
  41. クライアント・マシン内で実行されるアプリケーションを開発する方法であって、
    前記クライアント・マシンが、クライアント・ランタイム環境(CRE)を利用し、前記アプリケーションの状態を維持し、
    前記方法は、
    前記アプリケーションのユーザ・インターフェース・スクリーンをマークアップ・ドキュメントとしてそれぞれ定義する段階と、
    前記CREによって第1マークアップ・ドキュメントを検索する段階と、
    前記第1マークアップ・ドキュメントに含まれる情報の第1オブジェクト指向表現を作り出す段階であって、該第1オブジェクト指向表現が前記アプリケーションの第1状態を定義する段階と、
    前記CREによって第2マークアップ・ドキュメントを検索する段階と、
    前記第2マークアップ・ドキュメントに含まれる情報の第2オブジェクト指向表現を作り出す段階と、
    前記CREによって、前記第1及び第2オブジェクト指向表現をマージし、これにより、前記第1或いは第2マークアップ・ドキュメント内に含まれる情報の新たなオブジェクト指向表現を作り出す段階からなり、
    該新たなオブジェクト指向表現が前記アプリケーションの新たな状態を定義することを特徴とする方法。
  42. 前記アプリケーションの前記新たな状態を更新する段階を更に備え、
    該更新する段階が、
    1若しくはそれ以上の追加のマークアップ・ドキュメントを検索する段階と、
    前記1若しくはそれ以上の追加のマークアップ・ドキュメント内に含まれる情報の1若しくはそれ以上の追加のオブジェクト指向表現を作り出すとともに格納する段階と、
    前記1若しくはそれ以上のオブジェクト指向表現と前記新たなオブジェクト指向表現をマージし、
    前記アプリケーションの更新された状態を作り出す段階を備えることを特徴とする請求項41記載の方法。
  43. 前記ユーザ・インターフェース・スクリーンのいずれかに関連するビジネス・ロジックを1若しくはそれ以上の手続コードにする段階と、
    前記CREが前記1若しくはそれ以上の手続コードを実行することを特徴とする請求項41記載の方法。
  44. 前記CREが、アプリケーション・プログラム・インターフェース(API)を備え、
    前記方法が更に、前記APIを介して、前記マークアップ・ドキュメントと前記アプリケーション状態のいずれかを操作する段階を備えることを特徴とする請求項42記載の方法。
  45. クライアント・マシン内で実行されるアプリケーションを配備する方法であって、
    クライアント・ランタイム環境(CRE)を前記クライアント・マシン内に配備する段階と、
    前記アプリケーションを中央サーバに配備する段階を備え、
    前記クライアント・マシンがネットワークを介して前記中央サーバに接続し、前記中央サーバが前記CREからの要求に応じる能力を備え、
    更に、前記CREから前記中央サーバへ第1要求を送信し、前記中央サーバから前記CREに前記アプリケーションの第1マークアップ・ドキュメントをダウンロードする段階と、
    前記第1マークアップ・ドキュメントの第1オブジェクト指向表現を作り出し、格納する段階であって、該第1オブジェクト指向表現が前記アプリケーションの第1状態を定義する段階と、
    前記CREから前記中央サーバに第2要求を送信し、前記中央サーバから前記CREに前記アプリケーションの第2マークアップ・ドキュメントをダウンロードする段階と、
    前記第2マークアップ・ドキュメントの第2オブジェクト指向表現を作り出すとともに格納する段階と、
    前記第1オブジェクト指向表現と前記第2オブジェクト指向表現とをマージし、これにより新たなオブジェクト指向表現を作り出す段階であって、該新たなオブジェクト指向表現が前記アプリケーションの新たな状態を定義する段階からなることを特徴とする方法。
  46. 前記アプリケーションの前記新たな状態を更新する段階を更に備え、
    該更新する段階が、
    1若しくはそれ以上の追加のマークアップ・ドキュメントを検索する段階と、
    前記1若しくはそれ以上の追加のマークアップ・ドキュメント内に含まれる情報の1若しくはそれ以上の追加のオブジェクト指向表現を作り出すとともに格納する段階と、
    前記1若しくはそれ以上の追加のオブジェクト指向表現と前記新たなオブジェクト指向表現をマージし、これにより、前記アプリケーションの更新された状態を作り出す段階を備えることを特徴とする請求項45記載の方法。
  47. 前記中央サーバから前記CREへ前記マークアップ・ドキュメントのいずれかに関連する1若しくはそれ以上の手続コードをダウンロードする段階と、
    前記1若しくはそれ以上の手続コードを、前記CREによって実行する段階を備えることを特徴とする請求項45記載の方法。
  48. 前記1若しくはそれ以上の手続コードのいずれかと前記マークアップ・ドキュメントのいずれかをコンパイルし、一組の手続コードに結合する段階と、
    該手続コードの組が、前記クライアント・マシンによって検索並びに実行されることを特徴とする請求項45記載の方法。
  49. 前記1若しくはそれ以上の手続コードがバイナリ・フォーマットを備え、
    該バイナリ・フォーマットが、.NETCLR、Java.class format及びMacromedia Flash binary formatから選択されることを特徴とする請求項47記載の方法。
  50. 前記1若しくはそれ以上の手続コードがテキスト・フォーマットを備え、
    該テキスト・フォーマットが、HTML、XML、平文及び圧縮テキストから選択されることを特徴とする請求項47記載の方法。
  51. 前記クライアント・マシン内でクライアント・サイド・アプリケーション・コードをキャッシュする段階を更に備え、
    前記クライアント・サイド・アプリケーション・コードは前記ダウンロードされた第1及び第2マークアップ・ドキュメント、前記新たなオブジェクト指向表現、1若しくはそれ以上の手続コード及び前記中央サーバから前記クライアント・マシンにダウンロードされたデータを備えることを特徴とする請求項45記載の方法。
  52. クライアント・マシン内で実行されるアプリケーションを配備する方法であって、
    クライアント・ランタイム環境(CRE)を前記クライアント・マシン内に配備する段階と、
    前記アプリケーションを中央サーバ上に配備する段階を備え、
    前記クライアント・マシンはネットワークを介して前記中央サーバに接続し、
    前記中央サーバは前記CREからの要求に応える能力を備え、
    更に、1若しくはそれ以上のマークアップ・ドキュメントと1若しくはそれ以上の手続コードをエンティティにコンパイル及び結合する段階と、
    前記CREから前記中央サーバへ要求を送信し、前記エンティティを前記中央サーバから前記CREにダウンロードする段階と、
    前記エンティティから第1マークアップ・ドキュメントの第1情報を検索する段階と、
    前記第1情報の第1オブジェクト指向表現を作り出すとともに格納する段階であって、該第1オブジェクト指向表現が前記アプリケーションの第1状態を定義する段階と、
    前記エンティティから第2マークアップ・ドキュメントの第2情報を検索する段階と、
    前記第2情報の第2オブジェクト指向表現を作り出すとともに格納する段階と、
    前記第1オブジェクト指向表現と前記第2オブジェクト指向表現をマージし、これにより新たなオブジェクト指向表現を作り出す段階からなり、
    該新たなオブジェクト指向表現が前記アプリケーションの新たな状態を定義することを特徴とする方法。
  53. 前記アプリケーションの前記新たな状態を更新する段階を更に備え、
    該更新する段階が、
    1若しくはそれ以上の追加のマークアップ・ドキュメントの1若しくはそれ以上の追加の情報を前記エンティティからそれぞれ検索する段階と、
    前記1若しくはそれ以上の追加の情報の1若しくはそれ以上の追加のオブジェクト指向表現をそれぞれ作り出すとともに格納する段階と、
    前記1若しくはそれ以上の追加のオブジェクト指向表現と前記新たなオブジェクト指向表現とをマージし、これにより前記アプリケーションの更新された状態を作り出すことを特徴とする請求項52記載の方法。
  54. 前記エンティティから前記マークアップ・ドキュメントのいずれかに関連する1若しくはそれ以上の手続コードを検索する段階と、
    前記CREにより前記1若しくはそれ以上の手続コードを実行する段階を備えることを特徴とする請求項52記載の方法。
  55. ネットワーク上でアプリケーションを動作させるための分散処理システムであって、
    前記アプリケーションがクライアント・サイド・コンポーネントとサーバ・サイド・コンポーネントとを備え、
    前記システムは、
    クライアント・ランタイム環境(CRE)を備え、該CREは、前記アプリケーションの前記クライアント・サイド・コンポーネントを動作させるとともに、クライアント・サイドのドキュメント・オブジェクト・モデル(DOM)内で前記クライアント・サイド・アプリケーションの状態を維持し、
    更にサーバ・ランタイム環境(SRE)を備え、該SREは、アプリケーションのサーバ・サイド・コンポーネントを動作させるとともに、サーバ・サイドのDOM内で前記サーバ・サイド・アプリケーションの状態を維持し、
    前記クライアント・サイドのDOMが自動的に前記サーバ・サイドのDOMと同調することを特徴とするシステム。
  56. リアルタイム双方向メッセージング・システムを更に備え、該メッセージング・システムが前記CREと前記SREとの間でメッセージを送信並びに受信することを特徴とする請求項55記載のシステム。
  57. 前記クライアント・サイドのDOMと前記サーバ・サイドのDOMとの間の前記自動同調が、前記リアルタイム双方向メッセージング・システムを介して行われることを特徴とする請求項56記載のシステム。
  58. 前記CREがウェブ・ブラウザ内部で動作することを特徴とする請求項55記載のシステム。
  59. 前記SREがアプリケーション・サーバの外側で動作することを特徴とする請求項55記載のシステム。
  60. 前記SREがアプリケーション・サーバの内側で動作することを特徴とする請求項55記載のシステム。
  61. 前記クライアント・サイドのDOMと前記サーバ・サイドのDOMがエクステンシブル・マークアップ・ランゲージ(XML)フォーマットを備えることを特徴とする請求項55記載のシステム。
  62. 前記CREがウェブ・ブラウザの外側で動作することを特徴とする請求項55記載のシステム。
  63. 前記リアルタイム双方向メッセージング・システムがHTTPメッセージを備えることを特徴とする請求項56記載のシステム。
  64. 前記リアルタイム双方向メッセージング・システムが前記CREと前記SREとの間の永続的接続を作り出すことを特徴とする請求項56記載のシステム。
  65. 前記CREと前記SREとの間の前記ネットワーク上での接続が、切断されると、前記CREと前記SREが前記クライアント・サイドのDOMと前記サーバ・サイドのDOMそれぞれの中の変化のトラックを維持し、
    前記ネットワークの接続が、再構築されたときに、前記クライアント・サイドのDOMと前記サーバ・サイドのDOMが同調することを特徴とする請求項55記載のシステム。
  66. クライアント・サイドのデータを格納するクライアント・サイドのDOMと、
    サーバ・サイドのデータを格納するサーバ・サイドのDOMと、
    ネットワーク上で、それぞれ前記クライアント・サイドのDOMと前記サーバ・サイドのDOMとを同調並びに逆転させるクライアント・サイドのエンジンとサーバ・サイドのエンジンからなることを特徴とする分散データ格納システム。
  67. サーバからクライアント・マシンへの複数のメッセージのサーバ−プッシュを実行する方法であって、
    HTTP接続を前記サーバに対して開くことにより、前記クライアント・マシンから前記サーバへ通常のHTTP要求を送信する段階と、
    前記サーバによって、前記HTTP接続を受け入れる段階と、
    前記サーバにより前記クライアント・マシンに応答を返信する段階を備え、
    前記応答がHTTPヘッダを備え、
    該HTTPヘッダは、所定条件に遭遇するまで、前記クライアント・マシンに前記HTTP接続を閉じないように指示し、これにより前記HTTP接続が開いたままの状態となり、
    更に前記開いたHTTP接続を介して前記サーバによって、前記クライアント・マシンへ向けて複数のメッセージのうち1若しくはそれ以上が送信されることを特徴とする方法。
  68. 前記HTTPヘッダが、「コンテント・タイプ」ヘッダ・フィールドを備え、
    該ヘッダ・フィールドが前記サーバの応答が「マルチパート」のMIMEタイプ応答であることを示し、
    前記所定条件が、前記「マルチパート」のMIMEタイプ応答の終わりを備えることを特徴とする請求項67記載の方法。
  69. 前記HTTPヘッダが「トランスファ・エンコーディング」ヘッダ・フィールドを備え、該ヘッダ・フィールドが、前記サーバの応答が「チャンキング」であることを示し、
    前記所定の条件が該チャンキングの応答の終わりを備えることを特徴とする請求項67記載の方法。
  70. 前記HTTPヘッダが「コンテント・レングス」ヘッダ・フィールドを備え、該ヘッダ・フィールドが、前記サーバの応答が前記複数のメッセージの全てのコンテント・レングスの総和より長い数であることを示し、
    前記所定条件が、前記数に等しい或いは前記数を超える数をもたらす総バイト数を備えることを特徴とする請求項67記載の方法。
  71. アプリケーション・サーバ内部で動作するウェブ・アプリケーションからサーバ−プッシュを実行する通信システムであって、
    前記アプリケーション内部で動作するとともに、要求を受信し、ネットワーク接続を介して前記要求に対する応答を送信するサーバ・モジュールと、
    前記要求を前記サーバ・モジュールへ送信するとともに前記ネットワーク接続を介して前記要求に対する前記応答を受信するクライアント・マシンからなり、
    前記サーバ・モジュールは、前記クライアント・マシンからのHTTP要求の受領とHTTPネットワーク接続の受け入れに応じて前記クライアント・マシンへの複数のメッセージのサーバ−プッシュを実行し、
    前記HTTPネットワーク接続が、前記クライアント・マシンにより開かれ、
    該ネットワークの接続を開くことが、前記クライアント・マシンへ応答を返信することにより行われ、
    該応答がHTTPヘッダを備え、
    該HTTPヘッダは所定条件に遭遇するまで前記ネットワーク接続を閉じないように前記クライアント・マシンに指示し、
    これにより前記HTTP接続は開いた状態を維持し、
    前記開いたHTTP接続を介して前記クライアント・マシンへ前記複数のメッセージのうち1若しくはそれ以上が送信可能となることを特徴とするシステム。
  72. 前記HTTPヘッダが、「コンテント・タイプ」ヘッダ・フィールドを備え、
    該ヘッダ・フィールドが前記サーバの応答が「マルチパート」のMIMEタイプ応答であることを示し、
    前記所定条件が、前記「マルチパート」のMIMEタイプ応答の終わりを備えることを特徴とする請求項71記載のシステム。
  73. 前記HTTPヘッダが「トランスファ・エンコーディング」ヘッダ・フィールドを備え、該ヘッダ・フィールドが、前記サーバの応答が「チャンキング」であることを示し、
    前記所定の条件が該チャンキングの応答の終わりを備えることを特徴とする請求項71記載のシステム。
  74. 前記HTTPヘッダが「コンテント・レングス」ヘッダ・フィールドを備え、該ヘッダ・フィールドが、前記サーバの応答が前記複数のメッセージの全てのコンテント・レングスの総和より長い数であることを示し、
    前記所定条件が、前記数に等しい或いは前記数を超える数をもたらす総バイト数を備えることを特徴とする請求項71記載のシステム。
  75. 前記アプリケーション・サーバがJ2EEアプリケーション・サーバであり、前記ウェブ・アプリケーションがJavaウェブ・アプリケーションであることを特徴とする請求項71記載のシステム。
  76. 前記アプリケーション・サーバが.NETアプリケーション・サーバであり、前記ウェブ・アプリケーションが.NETウェブ・アプリケーションであることを特徴とする請求項71記載のシステム。
  77. 前記サーバ・モジュールが前記アプリケーション・サーバの後ろ側で動作することを特徴とする請求項71記載のシステム。
  78. 前記サーバ・モジュールがアプリケーション・プログラム・インターフェース(API)を備え、該APIはメッセージを1若しくはそれ以上のクライアント・マシンに送信し、
    前記ウェブ・アプリケーションが前記APIを利用し、前記1若しくはそれ以上のクライアント・マシンにサーバ−プッシュを実行することを特徴とする請求項71記載のシステム。
JP2004554012A 2002-11-19 2003-11-19 処理状態を把握するウェブ・ベースのコンピュータ・システムと方法 Pending JP2006506748A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US42753102P 2002-11-19 2002-11-19
US10/717,784 US6886169B2 (en) 2002-11-19 2003-11-19 System and method for stateful web-based computing
PCT/US2003/037280 WO2004046894A2 (en) 2002-11-19 2003-11-19 System and method for stateful web-based computing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009100392A Division JP2009199606A (ja) 2002-11-19 2009-04-16 処理状態を把握するウェブ・ベースのコンピュータ・システムと方法

Publications (2)

Publication Number Publication Date
JP2006506748A true JP2006506748A (ja) 2006-02-23
JP2006506748A5 JP2006506748A5 (ja) 2009-06-04

Family

ID=32329169

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2004554012A Pending JP2006506748A (ja) 2002-11-19 2003-11-19 処理状態を把握するウェブ・ベースのコンピュータ・システムと方法
JP2009100392A Pending JP2009199606A (ja) 2002-11-19 2009-04-16 処理状態を把握するウェブ・ベースのコンピュータ・システムと方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2009100392A Pending JP2009199606A (ja) 2002-11-19 2009-04-16 処理状態を把握するウェブ・ベースのコンピュータ・システムと方法

Country Status (5)

Country Link
US (1) US6886169B2 (ja)
EP (1) EP1570354A4 (ja)
JP (2) JP2006506748A (ja)
AU (1) AU2003295762A1 (ja)
WO (1) WO2004046894A2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012530999A (ja) * 2009-06-22 2012-12-06 マイクロソフト コーポレーション 双方向データストリーム用トランスポートとしてのハイパーテキスト転送プロトコルの使用
WO2013175672A1 (ja) * 2012-05-22 2013-11-28 Sakamoto Yoshitaka モジュール型コンピュータ・システム開発を行うためのアーキテクチャ
JP2016031636A (ja) * 2014-07-29 2016-03-07 日本電信電話株式会社 情報処理方法、通信端末およびコンピュータプログラム
US10817322B2 (en) 2015-07-03 2020-10-27 Fujitsu Limited Virtual machine management apparatus and virtual machine management method

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001063399A2 (de) * 2000-02-24 2001-08-30 Siemens Aktiengesellschaft Verfahren und anordnung zur synchronisation eines auf einem ersten rechner ablaufenden programms mit einem auf einem server ablaufenden programm, computerlesbares speichermedium und computerprogramm-element
US7502996B2 (en) * 2002-02-21 2009-03-10 Bea Systems, Inc. System and method for fast XSL transformation
US7962925B2 (en) * 2002-02-22 2011-06-14 Oracle International Corporation System and method for XML data binding
US7065561B2 (en) 2002-03-08 2006-06-20 Bea Systems, Inc. Selective parsing of an XML document
US20080313282A1 (en) 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
CA2549343C (en) * 2002-12-17 2008-08-19 Breathablebaby, Llc Crib shield system and other breathable apparatus
US7707563B2 (en) * 2003-01-10 2010-04-27 Nexaweb Technologies Inc System and method for network-based computing
US7653636B2 (en) * 2003-02-28 2010-01-26 Bea Systems, Inc. Systems and methods for streaming XPath query
WO2004114581A2 (en) * 2003-06-17 2004-12-29 Bytemobile, Inc. Method and system for dynamic interleaving
US7761878B2 (en) * 2003-11-19 2010-07-20 Nexaweb Technologies, Inc System and method for stateful web-based computing
SE526840C2 (sv) * 2003-12-02 2005-11-08 Comex Electronics Ab System och förfarande för att administrera elektroniska dokument
US20050144278A1 (en) * 2003-12-12 2005-06-30 Valeri Atamaniouk System and method for multipart response optimization
US7614052B2 (en) * 2004-01-09 2009-11-03 Nexaweb Technologies Inc. System and method for developing and deploying computer applications over a network
US7836428B2 (en) * 2004-03-15 2010-11-16 Bungee Labs, Inc. Declarative computer programming language method and system
US20050216881A1 (en) * 2004-03-15 2005-09-29 Ramco Systems Limited Software structure driven approach for implementing workflow
US7805523B2 (en) * 2004-03-15 2010-09-28 Mitchell David C Method and apparatus for partial updating of client interfaces
US20050229048A1 (en) * 2004-03-30 2005-10-13 International Business Machines Corporation Caching operational code in a voice markup interpreter
US8255502B2 (en) * 2004-05-18 2012-08-28 Oracle International Corporation Dynamic domain administration utility
US7954050B2 (en) * 2004-06-25 2011-05-31 Icesoft Technologies Canada Corp. Systems and methods for rendering and increasing portability of document-based user interface software objects
US7543032B2 (en) * 2004-10-22 2009-06-02 Canyonbridge, Inc. Method and apparatus for associating messages with data elements
US20060173997A1 (en) * 2005-01-10 2006-08-03 Axis Ab. Method and apparatus for remote management of a monitoring system over the internet
US20070006238A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Managing application states in an interactive media environment
US8539496B1 (en) * 2005-12-12 2013-09-17 At&T Intellectual Property Ii, L.P. Method and apparatus for configuring network systems implementing diverse platforms to perform business tasks
US7899820B2 (en) * 2005-12-14 2011-03-01 Business Objects Software Ltd. Apparatus and method for transporting business intelligence objects between business intelligence systems
US20070174454A1 (en) * 2006-01-23 2007-07-26 Mitchell David C Method and apparatus for accessing Web services and URL resources for both primary and shared users over a reverse tunnel mechanism
US7913234B2 (en) * 2006-02-13 2011-03-22 Research In Motion Limited Execution of textually-defined instructions at a wireless communication device
US7890636B2 (en) * 2006-06-28 2011-02-15 Cisco Technology, Inc. Application integrated gateway
US20080126511A1 (en) * 2006-07-26 2008-05-29 Appaji Anuradha K Method for Handing Off Applications for WebOS-Enabled User Devices
US7984375B1 (en) * 2006-10-10 2011-07-19 Adobe Systems Incorporated Automated detection and implementation of state and object modifications
US9813531B2 (en) * 2007-01-22 2017-11-07 Sisvel International S.A. System and method for screen orientation in a rich media environment
US20080228715A1 (en) * 2007-03-12 2008-09-18 Terabyte Media, Llc Apparatus and method for distributed information retrieval and processing
CN101271460A (zh) * 2007-03-19 2008-09-24 国际商业机器公司 用于混搭Web应用的方法和装置
US7721139B2 (en) * 2007-03-27 2010-05-18 International Business Machines Corporation Method, apparatus, and computer program product for managing data in a browser-based application
US8892738B2 (en) 2007-11-07 2014-11-18 Numecent Holdings, Inc. Deriving component statistics for a stream enabled application
US8719841B2 (en) 2007-11-16 2014-05-06 Microsoft Corporation Dispatch mechanism for coordinating application and communication medium state
US8505030B2 (en) * 2007-11-16 2013-08-06 Microsoft Corporation Coordinating resources using a volatile network intermediary
US9021503B2 (en) * 2007-11-16 2015-04-28 Microsoft Technology Licensing, Llc Coordinating application state and communication medium state
WO2009066233A2 (en) * 2007-11-23 2009-05-28 Koninklijke Philips Electronics N.V. Co-browsing (java) scripted html documents
EP2281387A4 (en) * 2008-05-20 2013-03-20 Raytheon Co SYSTEM AND METHOD FOR COLLABORATIVE MESSAGE TRANSMISSION AND DATA DISTRIBUTION
EP2304924A1 (en) * 2008-05-20 2011-04-06 Raytheon Company System and method for maintaining stateful information
ES2575006T3 (es) * 2008-05-20 2016-06-23 Raytheon Company Sistema y método para filtrar mensajes
WO2009143106A1 (en) * 2008-05-20 2009-11-26 Raytheon Company System and method for dynamic contact lists
US7970814B2 (en) 2008-05-20 2011-06-28 Raytheon Company Method and apparatus for providing a synchronous interface for an asynchronous service
US8301706B2 (en) 2009-06-15 2012-10-30 Microsoft Corporation Routing of pooled messages via an intermediary
US20110173589A1 (en) * 2010-01-13 2011-07-14 Microsoft Corporation Cross-Browser Interactivity Testing
JP5598024B2 (ja) * 2010-03-04 2014-10-01 株式会社リコー 部品管理システム、部品管理装置、部品管理プログラム及び部品管理方法
US8549538B2 (en) * 2010-03-18 2013-10-01 Microsoft Corporation Coordinating communication medium state for subtasks
US8250234B2 (en) 2010-04-26 2012-08-21 Microsoft Corporation Hierarchically disassembling messages
CN102622212B (zh) * 2011-01-30 2015-08-12 国际商业机器公司 业务混搭的方法及系统
EP2485457A1 (en) * 2011-02-04 2012-08-08 Siemens Aktiengesellschaft A method for keeping a web session alive in a web application
US8676938B2 (en) 2011-06-28 2014-03-18 Numecent Holdings, Inc. Local streaming proxy server
US9015021B2 (en) * 2011-10-25 2015-04-21 Cellco Partnership Multiple client simulator for push engine
US8732810B2 (en) * 2011-10-27 2014-05-20 Cellco Partnership IP push platform and connection protocol in a push notification framework
US9386057B2 (en) 2012-01-18 2016-07-05 Numecent Holdings, Inc. Application streaming and execution system for localized clients
US9847969B1 (en) * 2012-02-23 2017-12-19 Nintex Pty Limited Apparatus and method for collecting form data across open and closed domains
US9485304B2 (en) 2012-04-30 2016-11-01 Numecent Holdings, Inc. Asset streaming and delivery
US8990343B2 (en) * 2012-07-30 2015-03-24 Google Inc. Transferring a state of an application from a first computing device to a second computing device
US20140082586A1 (en) * 2012-08-09 2014-03-20 FatFractal, Inc. Application development system and method for object models and datagraphs in client-side and server-side applications
WO2014043277A2 (en) 2012-09-11 2014-03-20 Numecent Holdings Ltd. Application streaming using pixel streaming
US9661048B2 (en) 2013-01-18 2017-05-23 Numecent Holding, Inc. Asset streaming and delivery
CN103677759B (zh) * 2013-11-08 2017-01-11 国家电网公司 一种用于信息系统性能提升的对象化并行计算方法及系统
US20150169529A1 (en) * 2013-12-16 2015-06-18 Sap Ag Mobile device data rendering
US10545749B2 (en) * 2014-08-20 2020-01-28 Samsung Electronics Co., Ltd. System for cloud computing using web components
US10565293B2 (en) * 2014-08-26 2020-02-18 Adobe Inc. Synchronizing DOM element references
JP2016105271A (ja) * 2014-11-19 2016-06-09 株式会社ウェブサービス・ディベロップメント ウェブアプリケーション実行システム、スマートデバイス、ウェブアプリケーション実行方法、およびプログラム
US10419568B2 (en) * 2016-04-01 2019-09-17 Microsoft Technology Licensing, Llc Manipulation of browser DOM on server
US10715629B2 (en) * 2017-02-28 2020-07-14 Google Llc Seamless context switch
CN110572474B (zh) * 2019-09-26 2021-09-21 四川长虹电器股份有限公司 用于嵌入式终端长连接通讯的方法
US11265301B1 (en) * 2019-12-09 2022-03-01 Amazon Technologies, Inc. Distribution of security keys
US10922476B1 (en) * 2019-12-13 2021-02-16 Microsoft Technology Licensing, Llc Resource-efficient generation of visual layout information associated with network-accessible documents
US11048378B1 (en) 2019-12-16 2021-06-29 Digits Financial, Inc. System and method for tracking changes between a current state and a last state seen by a user
US11054962B1 (en) 2019-12-16 2021-07-06 Digits Financial, Inc. System and method for displaying changes to a number of entries in a set of data between page views

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240605A (ja) * 1997-02-26 1998-09-11 Mitsubishi Electric Corp 情報通信システム
US7054935B2 (en) * 1998-02-10 2006-05-30 Savvis Communications Corporation Internet content delivery network
JP2001125628A (ja) * 1999-10-27 2001-05-11 Nippon Sanso Corp システム監視装置及びその記録媒体
AU2582401A (en) * 1999-12-17 2001-06-25 Dorado Network Systems Corporation Purpose-based adaptive rendering
SG99886A1 (en) * 2000-02-24 2003-11-27 Ibm System and method for collaborative multi-device web browsing
DE60125913T2 (de) * 2000-03-01 2007-10-18 British Telecommunications P.L.C. Datenübertragungsverfahren und vorrichtung
ATE278220T1 (de) * 2000-03-31 2004-10-15 Ritzaus Medienet As Verfahren und system zum schieben von informationen
AU2001253043A1 (en) * 2000-03-31 2001-10-15 Coppercom, Inc. Telecommunications system and methods
US6961750B1 (en) * 2000-05-18 2005-11-01 Microsoft Corp. Server-side control objects for processing client-side user interface elements
US6766333B1 (en) * 2000-11-08 2004-07-20 Citrix Systems, Inc. Method and apparatus for synchronizing a user interface element displayed on a client and a software application component executing on a web server
US7028306B2 (en) * 2000-12-04 2006-04-11 International Business Machines Corporation Systems and methods for implementing modular DOM (Document Object Model)-based multi-modal browsers
SG114481A1 (en) * 2000-12-06 2005-09-28 Netrobust Pte Ltd Real-time financial charting system
EP1267276A1 (en) * 2001-06-12 2002-12-18 Telefonaktiebolaget L M Ericsson User selective reload of images
US20030033369A1 (en) * 2001-08-09 2003-02-13 Bernhard Benjamin Karb Donovan Web services container
JP4890740B2 (ja) * 2001-09-29 2012-03-07 シーベル・システムズ・インコーポレイテッド ウェブブラウザに対する非同期メッセージのプッシュ
US7181489B2 (en) * 2002-01-10 2007-02-20 International Business Machines Corporation Method, apparatus, and program for distributing a document object model in a web server cluster
JP2004078844A (ja) * 2002-08-22 2004-03-11 Mitsubishi Electric Corp ハイパーテキスト表示システム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012530999A (ja) * 2009-06-22 2012-12-06 マイクロソフト コーポレーション 双方向データストリーム用トランスポートとしてのハイパーテキスト転送プロトコルの使用
US9473460B2 (en) 2009-06-22 2016-10-18 Microsoft Technology Licensing, Llc Using hypertext transfer protocol as a transport for bi-directional data streams
WO2013175672A1 (ja) * 2012-05-22 2013-11-28 Sakamoto Yoshitaka モジュール型コンピュータ・システム開発を行うためのアーキテクチャ
JP2016031636A (ja) * 2014-07-29 2016-03-07 日本電信電話株式会社 情報処理方法、通信端末およびコンピュータプログラム
US10817322B2 (en) 2015-07-03 2020-10-27 Fujitsu Limited Virtual machine management apparatus and virtual machine management method

Also Published As

Publication number Publication date
EP1570354A2 (en) 2005-09-07
US20040103373A1 (en) 2004-05-27
WO2004046894A3 (en) 2004-11-11
AU2003295762A1 (en) 2004-06-15
AU2003295762A8 (en) 2004-06-15
EP1570354A4 (en) 2008-07-02
JP2009199606A (ja) 2009-09-03
US6886169B2 (en) 2005-04-26
WO2004046894A2 (en) 2004-06-03

Similar Documents

Publication Publication Date Title
JP2006506748A (ja) 処理状態を把握するウェブ・ベースのコンピュータ・システムと方法
US7761878B2 (en) System and method for stateful web-based computing
US7640491B2 (en) Outputting dynamic local content on mobile devices
US6609150B2 (en) Web client-server system and method for incompatible page markup and presentation languages
US7707563B2 (en) System and method for network-based computing
EP1641211B1 (en) Web server and method for dynamic content.
US20060294396A1 (en) Multiplatform synchronized data access from mobile devices of dynamically aggregated content
US20060195779A1 (en) Methods, systems and computer program products for maintaining a separation between markup and data at the client
EP1267278A1 (en) Streaming of real-time data to a browser
JP2000510626A (ja) コンピュータ・ネットワークに接続されたキオスクおよびサーバ
US9104437B2 (en) Efficient serialization of mutable objects
EP1193950A2 (fr) Procédé d'optimisation, par un élément d'architecture de réseau, de la consulation de données.
JP2004519756A (ja) 多数のサービスからコンテンツを提供する方法
EP1195699A1 (fr) Procédé d'optimisation, par un terminal, de la consultation de données
US20130024549A1 (en) Method, system and computer program product for lightweight directory access protocol applications
US20040122915A1 (en) Method and system for an extensible client specific calendar application in a portal server
WO2002067114A1 (en) Method and apparatus for the creation of mobile software applications
US7831905B1 (en) Method and system for creating and providing web-based documents to information devices
US11301538B1 (en) Data management in multi-application web pages
US20040010626A1 (en) System and method of processing transactions off-line
US6751647B1 (en) Method and apparatus for automated data exchange between a user computer and a provider computer using improved object-oriented programming components
KR20170027327A (ko) 통신 부하를 발생시키지 않는 데이터 교환 방법
Jin et al. An e-business framework for developing rich and reliable client applications
JP2007018110A (ja) Webアプリケーションシステム、携帯端末装置及びそれらに用いるWebコンテンツ間変数引継ぎ方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080312

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080602

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080609

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080707

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080714

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081217

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20090416

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090715

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20091002