JP2004519040A - 部分的ページ再生成に影響を与えるページ生成コードを強化する方法および装置 - Google Patents
部分的ページ再生成に影響を与えるページ生成コードを強化する方法および装置 Download PDFInfo
- Publication number
- JP2004519040A JP2004519040A JP2002563379A JP2002563379A JP2004519040A JP 2004519040 A JP2004519040 A JP 2004519040A JP 2002563379 A JP2002563379 A JP 2002563379A JP 2002563379 A JP2002563379 A JP 2002563379A JP 2004519040 A JP2004519040 A JP 2004519040A
- Authority
- JP
- Japan
- Prior art keywords
- page
- code
- client
- server
- regenerator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本発明は、変更したページのポーションを再生成し、そのポーションのみをクライアントに表示のために伝送するための方法および装置に関する。ページ生成コードの必要なパートのみ実行し、変更のみをクライアントに伝送することで、ネットワーク通信チャネルのリソース、クライアントのノードおよびサーバのノードを用いる効率が向上される。要求された場合、データが変更した場合のみ、これらの動作を行うことで、使用の効率が一層さらに向上される。本発明は、さらに、既にクライアント上にあるページの任意のポーションをそれらを再使用することによって利用し、このため、このような再使用可能なポーションを再生成するまたは伝送する必要性を排除する。ある局面では、本発明は、部分的ページ再生成のためのページ生成コードを強化するための方法に関する。
Description
【0001】
(発明の分野)
本発明は、概して、表示用のクライアントに送られたページを更新する装置および方法に関する。より詳細には、本発明は、クライアントに送られたページの変更箇所を再生成および再伝送する装置および方法に関する。
【0002】
(発明の背景)
コンピュータ通信ネットワークは、一般的に、サーバと呼ばれる一つ以上のノード、および、クライアントと名付けられた一つ以上のノードを含む。サーバは、クライアントからの要求を受け取ると、サービスをクライアントに提供する。図1は、ネットワーク10が提供し得るサービスの例を示す。クライアント14は、通信チャネル20を用いてサーバ22と通信する。クライアント14は、そのウェブブラウザを介して、ウェブページ26用のサーバ22に要求を伝送する(矢印18)。サーバ22は、全てのページ生成コード30を実行して(矢印34)、完全なウェブページ26を生成し、クライアント14上の表示(矢印42)用のウェブページ26を伝送する(矢印38)。生成されたページ26は、このポイントにおいて、サーバ側のデータ50の状態のスナップショット(snapshot)を表す。ここで、ページ生成コード30が実行された(矢印34)。
【0003】
例えば、特定の株式の株価のリストを含むために、ページ生成コード30は、ページ26を生成することを考える。サーバ22は、この時点で、サーバ格納バッファ54に格納され、または、サーバ22によって受け取られた(矢印58)データ50(すなわち、株価)を検索する(矢印46)。ここで、または、これ以前において、プログラムは実行されている(矢印34)。サーバは、生成されたページ26全体を伝送し(矢印38)、クライアントは、生成されたページ26全体を表示する(矢印42)。ページ26は、クライアント14がページ26のリフレッシュを要求する(矢印18)までクライアント14に表示されたままである(すなわち、リフレッシュを要求すると、サーバ側データ50の状態のスナップショットを有するページ26が別に伝送される)。このような要求(矢印18)とともに、サーバ22は、ページ生成コード30を再び実行して(矢印34)、新しく生成されたページ26をクライアント14に伝送する(矢印38)。
【0004】
いくつかのシステムは、定期的に更新し得る。この更新では、クライアントは、特定された時間周期毎にページ26のリフレッシュを要求する(矢印18)。ページ生成コード30の全てを再実行すると(矢印34)、サーバ22は、別の完全なページ26を生成する。再び、ページ26は、このポイントにおいて、サーバ側データ50の状態のスナップショットを表す。このポイントにおいて、サーバ22は、ページ生成コード30の全てを再実行する(矢印34)。生成されたページ26のデータ50(例えば、株価)は、以前の期間と同じものであり得、従って、ページ生成コード30を実行して(矢印34)、不必要にページ26を伝送する(矢印38)。たとえデータが変更するときでも、ページ26の大部分は、静的要素であり、変更されない。
【0005】
手動でも、定期的な更新でも、データ50が変更するときにユーザに適宜データ50を知らせ続けることはない。更新は、データ50における変更にほとんど関係がない(例えば、データは変更されないが、ページ26は伝送され得る)。この更新は、ネットワーク通信チャネルリソース、クライアントリソースおよびサーバリソースを不必要に用いる。
【0006】
(発明の要旨)
本発明は、ページの一部を再生成する方法および装置に関する。このページは、それらの一部のみを変更して、かつ、表示用のクライアントへ伝送する。ページ生成コードに必要なパートのみを実行して、かつ、クライアントに変更のみを伝送することにより、ネットワーク通信チャネルのリソース、クライアントノードおよびサーバノードを用いる効率が改善される。要求されたとき、データが変更するときのみにこれらの操作を実施することにより、さらに使用効率を改善する。また、本発明は、それらを再使用することによって、クライアント上に既にあるページの任意のポーションを利用する。従って、これらの再使用可能なポーションを再生成する、または、伝送する必要はない。
【0007】
一局面において、本発明は、部分的なページ再生成に関するページ生成コードを強化する方法に関する。この方法は、ページを生成するページ生成コードを受け取るステップと、ページ生成コードの一つ以上のフラグメントを識別するステップとを包含して、各フラグメントは、フラグメントが実行されるときに、ページに対応するポーションを生成する。この方法は、ページ生成コードによって操作し、部分的なページ再生成のための各フラグメントの実行を制御するさらなるコードを提供するステップをさらに包含する。
【0008】
一実施形態において、識別するステップは、ページ生成コードのプロセスを少なくとも一つの所定の基準と比較して、このプロセスがフラグメントとして適格かどうかを判定するステップを包含する。別の実施形態において、所定の基準は、ページ生成コードのプロセスがグローバル変数を修正しないことを要求する。別の実施形態において、所定の基準は、ページ生成コードのプロセスが、別のフラグメントが依存するデータを修正しないことを要求する。別の実施形態において、所定の基準は、ページ生成コードのプロセスが所定のプロセス署名を有することを要求する。別の実施形態において、所定の方法の署名は、プロセスにおける戻り値の型が文字列であることを要求する。
【0009】
別の実施形態において、提供されたさらなるコードは、ページ生成コードを表す全体のクラスに固有に関連するさらなるプロセスを含む。別の実施形態において、提供されたさらなるコードは、識別されたフラグメントへの呼出しを妨害する各識別されたフラグメントに固有に関連するさらなるプロセスを含む。別の実施形態において、提供されたさらなるコードは、識別されたフラグメントが依存するデータを検索するプロセスに固有に関連するさらなるプロセスを含む。別の実施形態において、識別されたフラグメントが依存するデータを検索するプロセスは、JAVA(登録商標)ビーン(bean)である。
【0010】
別の局面において、本発明は、部分的なページ再生成のためのページ生成コードを強化するためのサーバに関する。このサーバは、ページを生成するページ生成コードを受け取るための外部ページコードソースと通信する部分的ページ再生成器を含む。部分的ページ再生成器は、ページ生成コードの一つ以上のフラグメントを識別する。各フラグメントは、実行されるとき、ページの対応するポーションを生成する。この部分的ページ再生成器は、ページ生成コードによって動作して、部分的ページ再生成のために各フラグメントの実行を制御するさらなるコードを提供する。
【0011】
別の実施形態において、部分的ページ再生成器は、プロセスがフラグメントであるかどうかを判定するためにページ生成コードのプロセスを少なくとも一つの所定の基準と比較する。別の実施形態において、所定の基準は、ページ生成コードのプロセスがグローバル変数を修正しないことを要求する。別の実施形態において、所定の基準は、ページ生成コードのプロセスが別のフラグメントが依存するデータを修正しないことを要求する。別の実施形態において、所定の基準は、ページ生成コードのプロセスが所定のプロセス署名を有することを要求する。別の実施形態において、所定の方法の署名がプロセスにおける戻り値の型が文字列であることを要求する。
【0012】
別の実施形態において、部分的ページ再生成器は、ページ生成コードが表す全体のクラスと固有に関連するさらなるコードを提供する。別の実施形態において、部分的ページ再生成器は、識別されたフラグメントへの呼出を妨害する各識別されたフラグメントと固有に関連するさらなるプロセスを含むさらなるコードを提供する。別の実施形態において、部分的ページ再生成器は、識別されたフラグメントが依存するデータを検索するプロセスと固有に関連するさらなるプロセスを含むさらなるコードを提供する。別の実施形態において、識別されたフラグメントが依存するデータを検索するプロセスは、JAVA(登録商標)ビーンである。
【0013】
上記のおよび他の目的、本発明の機能および利点、ならびに、本発明自体は、添付の図面とともに読まれ、以下の好ましい実施形態の説明からより完全に理解される。
【0014】
(好ましい実施形態の詳細な説明)
(1.0 部分的ページ再生成システム)
概観すると、図2aは、ネットワーク215を介して第2の計算システム(「サーバノード」)210と通信する第1の計算システム(「クライアントノード」)205を含む部分的ページ再生成システム200の例示的な実施形態を示す。例えば、ネットワーク215は、会社のイントラネットのようなのローカルエリアネットワーク(LAN)、または、インターネットまたはワールドワイドウェブのようなワイドエリアネットワーク(WAN)であり得る。クライアントノード205のユーザは、標準電話回線、LANまたはWANリンク(例えば、T1、T3、56kb、X.25)、ブロードバンド接続(ISDN、フレームリレー、ATM)および無線接続を含む様々な接続を通してネットワーク215に接続され得る。クライアントノード205は、クライアント送受信器230を含み、ネットワーク215との通信を構築する。サーバノード210は、サーバ送受信器235を含み、ネットワーク215との通信を構築する。接続は、様々な通信プロトコル(例えば、HTTP TCP/IP、IPX、SPX、NetBIOS、Ethernet(登録商標)、RS232、および、直接非同期接続)を用いて構築され得る。
【0015】
クライアントノード205は、アプリケーションまたはウェブページにユーザインタフェース(例えば、ウェブブラウザ)、あるいは、サーバノード210を介して格納されたまたはアクセスされた現在のデータを提供するために用いられる任意の計算デバイス(例えば、パーソナルコンピュータ、セットトップボックス、電話、ハンドヘルドデバイス、キオスク(kiosk)等)であり得る。クライアントノード205は、ディスプレイ220、格納バッファ225、クライアント送受信器230およびディスプレイ変更器245を含む。ディスプレイ変更器245は、ウェブページ240の更新のためにサーバノード210に要求を伝送するためにクライアント送受信器230と通信する。ディスプレイ変更器245は、また、ウェブページ240クライアント送受信器230を通してサーバノード210から送られたウェブページ240、または、ウェブページ240のポーションを受け取る。ディスプレイ変更器245は、ウェブページ240を表示するために、または、ウェブページ240の受信され、更新されたポーションを現在表示されているウェブページ240内に組み込むためにディスプレイ220と通信する。ディスプレイ変更器245は、ウェブページ240の受信され、更新されたポーションの組み込みのための必要とされたウェブページデータを一時的に格納するために格納バッファ225と通信する。格納バッファ225は、持続的、および/または、揮発性格納装置を含み得る。
【0016】
サーバノード210および210’は、クライアントノード205の要求されたサービスを提供可能な任意の計算デバイス、特に、伝送されたウェブページ240のポーションを生成かつ伝送可能な任意の計算デバイスであり得る。図2aにおいて示されるよりもより多い、または、より少ないサーバがネットワーク215に接続され得ることは、理解されるべきである。一実施形態において、サーバノード210および210’は、二つの分離した計算デバイスである。別の実施形態において、サーバノード210および210’は、単一の計算デバイスである。どちらの実施も、本発明の原理の実施に等価であり、従って、サーバノード210に対する参照符号は、これ以後、ある構成、または、別の等価の構成のいずれかを表す。
【0017】
サーバノード210は、サーバ送受信器235、部分的ページ再生成器250、ページ生成コード30、格納バッファ54およびデータ変換モニタ255を含む。サーバノード210は、任意のソースからページ生成コード30を受け取り得る。一実施形態において、ページ生成コード30は、部分的ページ再生成器250が常駐する物理デバイス(例えば、サーバノード210)と通信する別の物理デバイス上にあり得る。別の実施形態において、ソースは、ページ生成コード30を作成し、かつ、クライアントノード205からの要求を収容するサーバノード210上にコード30を格納するプログラマであり得る。ページ生成コード30は、サーバノード210がウェブページ240を生成するために用いる任意の言語で、および、任意のフォーマットで書かれ得る。ページ生成コード30のためのフォーマットの例は、サーブレット、JAVA(登録商標) Server Page(「JSP」)、Active Server Page(「ASP」)、テンプレート言語、および/または、Common Gateway Interface(「CGI」)Scriptを含む。
【0018】
ページ再生成システム200の動作中に、サーバノード210は、ウェブページ240(または、ウェブページ240のポーション)が最後にクライアントノード205に伝送されてから変更した現在表示されているウェブページ240のポーションのみを生成して、クライアントノード205に伝送する。クライアントノード205は、これらのページポーションを現在表示されているページ240に組み込む。
【0019】
(1.1 ページ生成コードのページおよびフラグメントのポーション)
図2bで示されているように、ウェブページ240は、複数のページポーション260a、260b、260c、260d、260e、および、260f(概して、260と呼ぶ)を含む。ページ生成コード30は、複数のコードフラグメント265a、265b、265c、265d(概して、265と呼ぶ)を含む。図2bは、ウェブページ240のページポーション260a、260b、260c、260d、260e、260fと、対応するページポーション260を生成するページ生成コード30のコードフラグメント265a、265b、265c、265dとの間の対応の例を示す。ウェブページ240、次いで、ページポーション260のフォーマットの例は、HTML、XML、VRML、WML、(ディスプレイ)ポストスクリプトおよびnroffを含む。各コードフラグメント265は、一つ以上のページポーション260を生成する。例えば、図2bで示されているように、コードフラグメント265dは、ページポーション260c、260eおよび260fを生成する。
【0020】
図2bは、また、ページ生成コード30のコードフラグメント265と、コードフラグメント265が依存する、対応するデータ50a、50b、50c、50d(概して、50と呼ぶ)との間の対応の例を示す。言い換えると、コードフラグメント265が依存するデータ50は、対応するページポーション260を生成するためにコードフラグメント265が用いるデータ50である。示された実施形態が一つのフラグメント(例えば、265a)に対する一つのデータ要素(例えば、50a)を有するが、この関係は変化し得る。例えば、一つのコードフラグメントは、数個のデータ要素に依存し得、一つのデータ要素は、そのデータ要素に依存する多くのコードフラグメントを有し得る。
【0021】
図2aに戻って参照すると、部分的ページ再生成器250は、ウェブページ240をリフレッシュするためにクライアントノード205からの要求を受け取るためにサーバ送受信器235と通信する。部分的ページ再生成器250は、クライアントノード205への伝送のためにこのような要求に応答して、ウェブページ240、または、ウェブページ240ポーション260をサーバ送受信器235に伝送する。部分的ページ再生成器250は、ウェブページ240の対応するページのポーション260を作成するページ生成コード30のコードフラグメント265を実行するためにページ生成コード30と通信する。部分的ページ再生成器250は、また、対応するページポーション260を生成するためにコードフラグメント265が用いる格納バッファ54のデータ50を判定する。部分的ページ再生成器250は、データ変更モニタ255と通信して、コードフラグメント265が依存する格納バッファ54のデータ50の任意の変更の通知を受け取る。
【0022】
(1.2 コードフラグメントの識別)
部分的ページ再生成器250は、ページ生成コード30のコードフラグメント265を識別する。コードフラグメント265を識別するために、部分的ページ再生成器250は、一つ以上の基準に適合するプロセス(例えば、オブジェクト指向言語の方法、サブルーチン、関数)を識別する。例えば、一実施形態において、基準は、コードフラグメント265(例えば、プロセス)が冪等元であり、冪等を提供することである。つまり、コードフラグメント265は、コードフラグメント265が同じ引数、および、同じ依存データ50によって呼び出される毎に一致する結果を作製する。言い換えると、コードフラグメント265が実行されるときに、他のコードフラグメントへの呼出し結果を変更する(例えば、グローバルカウンタの更新がない)副作用、または、依存データ50を変更する副作用はない。
【0023】
冪等プロパティによって、部分的ページ再生成器250は、コードフラグメントを再び呼び出すのではなく、コードフラグメントによって生成され、以前にキャッシュされた出力を、同じコードフラグメントによって生成された別のページポーションと交換する。例えば、図2bの実施形態に示されたように、コードフラグメント265dは、ページポーション260cを生成する。コードフラグメント265dを2回以上実行する代わりに、ページポーション260eおよび260fは、ポーション260cを複製することによって単に生成され得る。なぜなら、フラグメントの265dのプロパティが同じ引数で呼び出される毎に、フラグメント265dが同じ出力を作製するようなフラグメント265dのプロパティであるためである。
【0024】
部分的ページ再生成器250は、例えば、プロセスが変更する任意のグローバル変数をプロセスが含まないことを検証することによって、ページ生成コード30のプロセス(例えば、オブジェクト指向言語の方法、サブルーチン、関数)がこの基準に適合していることを判定する。プロセスが基準に適合する場合、部分的ページ再生成器250は、部分的ページ再生成器250が生成する対応のマップ300(図7)のコードフラグメント265としてプロセスを識別する。
【0025】
例えば、別の実施形態は、プロセス(例えば、オブジェクト指向言語の方法、サブルーチン、関数)がウェブページ240の一つ以上のページポーション260を定義する出力(例えば、HTMLコード)を生成するという基準を用いる。部分的ページ再生成器250は、例えば、プロセスが特定の戻り値の型(例えば、ストリングを返す)を含むことを検証することによって、プロセスがこの基準に適合することを判定する。他の実施形態において、部分的ページ再生成器250は、プロセスが予め定義された特定の命名の慣例(例えば、called fragment_x)、および/または、予め定義されたプロセスへの特定の注釈(例えば、#define foo_is_a_fragment)に続く。特定のフォーマット(例えば、JSP)において、ピース(piece)が生成するページポーション240に対するコードのピース30に適合する、埋め込まれたタグが存在し得る。これらのフォーマットにおいて、タグは、コードフラグメント265を識別するように用いられ得る。他の実施形態において、部分的ページ再生成器250は、プロセスが他の特定のさらなる属性(動作時間(すなわち、ページ生成コード30が実行されているとき)に部分的ページ再生成器250に提供されるプロセス名のリストに含まれている等)を含むことを検証する。
【0026】
一実施形態において、部分的ページ再生成器250は、標準JAVA(登録商標)技術「イントロスペクション(introspection)」を用いてページ生成コード30を検査する。部分的ページ再生成器250がページ生成コード30をデコンパイルする必要がない、または、ページ生成コード30へのソースアクセスを有する必要がないことが利点である。これにより、部分的ページ再生成器250は、ページ生成コード30のソースアクセスへの制限(例えば、物理的な制限、または、ライセンスの制限)にかかわらず、任意のページ生成コード30によって動作することが可能になる。
【0027】
(1.3 さらなるコードを用いたコードフラグメントのラッピング)
コードフラグメント265を識別した後、部分的ページ再生成器250は、ページ生成コード30の他の部分から個別にそしてこの部分から独立してコードフラグメント265を実行する能力を必要とする。その全体において実行されるページ生成コード30が書き込まれるため、部分的ページ再生成器260は、ページ生成コード30に関連するさらなるコードを生成しなければならず、コードフラグメントの実行を選択的に制御する。このように制御することによって、部分的ページ再生成器250は、ページ生成コード30を強化してコードフラグメント265のそれぞれの個別の実行および独立した実行を可能にする。
【0028】
一実施形態では、さらなるコードは、さらなるコードが強化しているコードフラグメント265として同じ名前を選択する。同じ名前を選択することによって、
さらなるコードは部分ページ生成コード30のコードフラグメント265の代わりに呼び出され、実行される。さらなるコードが同一の名前を有するページ生成コード30のコードフラグメント265が連続的に呼び出され、実行されるかどうかを制御する。この制御はページ生成コード30のコードフラグメント265の選択的な実行を可能とする。
【0029】
(1.3.1 ラッピング−サーブレットフォーマットの例)
図3aは、サーブレットフォーマットおよび複数のコードフラグメント265a’、265b’、265c’を有するページ生成コード30’の実施形態を示す。「main」として識別されたコードフラグメント265a’は、ウエブページ240のヘッダー情報およびスタティック情報の全てを表す。「do table」として識別されたコードフラグメント265b’は、ウエブページ240上にテーブルを生成するページ生成コード30’の一部(例えばプロセス、方法)を表す。「do Share」として識別されたコードフラグメント265c’は、テーブルの個々のエレメントを作成するプロセスを表す。
【0030】
図3bは、時にはコードラッピングと呼ばれるさらなるコード270b、270c(概して270)の追加を示し、それぞれラッピングされたコードフラグメント268b’、268c’を作成する。ラッピングされたコードフラグメント268b’、268c’は、ラッピングされたコードフラグメント268b’、268c’内部に封入されたコードフラグメント265b’、265c’と共に示される。一実施形態では、図3bに示されたようにコードラッピング270b’、270c’は、論理接続のみを表す。言い換えれば、さらなるコード270b’、270c’は、ページ生成コード30’に配置されるのではなく、サーバノード210上の異なる領域に配置される。図3aに示されるように、この実施形態では、コードフラグメント265b’、265c’のみがページ生成コード30’内部に物理的に配置される。
【0031】
一実施形態では、さらなるコード270を生成するために、部分的ページ再生成器250は、イントロスペクション(introspection)を使用することによってクラスファイルとしてページ生成コード30を検査する。次いで部分的ページ再生成器250は、オリジナルページ生成コード30のサブクラスとして定義されたさらなるコード270を含むさらなるJAVA(R)ファイルを生成する。コンパイルされた場合、さらなるJAVA(R)ファイルはオリジナルのページ生成コード30のサブクラスとなる。別の実施形態では、部分的ページ再生成器250は、クラスファイルを直接生成する。別の実施形態では、部分的ページ生成コード30が実行される場合、部分的ページ再生成器250はコードラッピングを実行し、メモリに格納されるクラスオブジェクトを生成する。
【0032】
図3bに示された実施形態では、コードフラグメント265b’および265c’は、同様にさらなるコード270b’、270c’を用いてラッピングされている。さらなるコード270b’、270c’は、コードフラグメント265b’、265c’が既に同じ引数を用いて実行されたかどうかを決定する。コードフラグメント265b’、265c’が実行され、これによりコードフラグメントが複数のページポーションを生成することを示す場合、さらなるコード270b’、270c’が、以前に生成されたページポーションをこの複製ページポーションにコピーするコマンドを発行する。コードフラグメント265b’、265c’が実行されない場合、さらなるコード270b’、270c’は、実行のためにコードフラグメント(例えば265b’、265c’)を呼び出す。
【0033】
さらなるコード270b’、270c’では、「開始」、「終了」、「コピー先」命令の後に用いられる用語「x」は、部分的なページ再生成器250によって使用される識別タグを表し、各生成されたページポーション260を識別する。用語「mod list」は、生成されたページポーション260を有するクライアントノード205に送信される修正リストを表す。修正リストは、ページポーション260を現在表示されているページ240にどのようにして組み込むかについてクライアントノード205に命令するコマンドを含む。
【0034】
図3bの図示された実施形態では、コードフラグメント「main」265a’がラッピングされない。ページ240の初期伝送の後、ヘッダーおよびスタティック情報は変化せず、コードフラグメント265a’は、再度実行されない。その結果、さらなるコード270は、「main」コードフラグメント265a’のために必要とされない。「do table」コードフラグメント265b’および「do Share」コードフラグメント265c’によって示されるように、変更できるページ240のページポーション260の全ては、ページ240の「body」に配置される。
【0035】
別の実施形態では、ページ生成コード30が本体ページポーションを含まない場合、「main」コードフラグメント265a’は、他のラッピングされたコードフラグメント268b’、268c’と同様のさらなるコード(図示されない)を含む。さらなるコード(図示されない)は、「main」コードフラグメント265a’の「body」部分のための識別タグを提供する。初期実行はページ240を生成するように必要なヘッダー情報およびスタティックデータの全てを提供する。「main」コードフラグメント265a’が依存するデータが変化する場合、「main」コードフラグメント265a’の以後の実行が行われる。この再実行の出力がスキャンされ、「body」部分のコンテンツは棄てられたも同然である。次いで「main」コードフラグメント265a’は、任意の他のコードフラグメントのように処理され得る。
【0036】
(1.3.2 ラッピング−CGIフォーマットの例)
図4aはCGIファオーマットおよび識別されたコードフラグメント265a’’、265b’’、および265c’’を有するページ生成コード30’’の実施形態を示す。CGIフォーマットでは、コードフラグメント265a’’、265b’’、265c’’のそれぞれは個々のスクリプトを表す。図4bに示されるように、さらなるコード270a’’の機能性はサーブレットフォーマットのさらなるコード270b’、270c’の機能性と同様であるが、インプレメンテーションがサーブレットフォーマットのインプリメンテーションとは異なる。さらなるコード270a’’は、CGIインタープリタ275をラッピングして個々のコードフラグメント265a’’、265b’’、265c’’自体をラッピングするのではなくラッピングされたCGIインタープリタ268a’’を生成する。各コードフラグメント265a’’、265b’’、265c’’(すなわち、スクリプト)が呼び出された場合、さらなるコード270a’’がその呼び出しを妨害する。
【0037】
別の実施形態では、単一のスクリプト(例えばページ生成コード30’’)が存在し、コードフラグメント265a’’、265b’’、265c’’が個々のスクリプトではなく、そのスクリプト(例えば30’’)のサブルーチンを表す。本実施形態では、CGIインタープリタ275は、ラッピングされずにさらなるコード270a’’を用いて修正され、その結果、スクリプトのサブルーチン(例えば、コードフラグメント265a’’、265b’’、265c’’)を呼び出すための呼び出しが妨害される。
【0038】
(1.3.3 データを取り出すJAVA(R)ビーンのラッピング)
ページ生成コード30の他の部分から個別にそしてこの部分から独立してコードフラグメント265を実行することに加えて、部分ページ発生器250は、さらにコードフラグメント250が依存するデータ50へのアクセスを妨害する必要があり得る。典型的にはこれはデータアクセスオブジェトを介してアクセスされる。図4cは、JAVA(R)がインプリメンテーションのために使用される例示的実施形態を示す。この実施形態では、典型的にはデータ50は、1つ以上のJava(R)ビーン100を介してアクセスされる。JAVA(R)ビーン100自体は、ページ生成コード30から論理的に分離され、データ50へのアクセスを管理することに対して責任があるのみである。ビーン100は、ページ240を生成する出力を直接生成しないため、考慮されたコードフラグメント265ではない。
【0039】
データ50へのアクセスを妨害および制御するために、部分的ページ再生成器250は、さらなるコード(図示しない)を用いてデータ50を取り出すJAVA(R)ビーン100をラッピングする。各JAVA(R)ビーン100はクラスファイルであり、その結果部分的ページ再生成器250は、JAVA(R)ビーン100のためのラッパークラス(例えばプロキシ)を生成する。部分的ページ再生成器250は、例えば名前付けの規約に整合するプロセスを検索することによってデータ50を取り出すこれらのプロセス(例えば、オブジェクト指向言語の方法、サブルーチン)を識別する。
【0040】
例えば、JAVA(R)ビーンに対して、名前付け規約は、以下のようである。
【0041】
void set<propertyname>(Object)
Object get<propertyname>()
etc.
上述と同様に、JAVA(R)ビーン100のためのラッパークラス(例えば、プロキシ)を生成する利点は、ランタイムの間であっても、JAVA(R)ビーンコード100が修正されていないままであることである。一実施形態では、部分的ページ再生成器250は、2つのプロキシ105、110を生成することによってJAVA(R)ビーンのためのさらなるコードを生成する。2つのプロキシの生成が必要であるのは、ページ生成コード30によって呼び出されたプロキシ105がデータアクセスビーン100の元のプロセスの元の名前を有し、その結果、プロキシ105は、元のプロセスの代わりに呼び出され(矢印125)元のプロセスの妨害を可能にするためである。しかし、プロキシ105が同一の名前を有する元のプロセス100を呼び出す場合、JAVA(R)クラスローダ(classloader)は、プロキシ105を呼び出す(矢印130)ことによってこれを誤って決定する。
【0042】
部分的ページ再生成器250は、第2のプロキシ110を呼び出す第1のプロキシ105を生成し、第2のプロキシ110は、異なる、調停の任意の名前を有する。第2のプロキシ110が呼び出され、次いでオリジナルのプロセス100を呼び出す。第2のプロキシ110およびJAVA(R)ビーン100が第1のプロキシ105およびページ生成コード30とは異なる名前空間において存在するように構成することによって、2つのプロキシ105、110および2つの名前空間を用いて2つの名前規約は、複製名前付け規約を可能にする。第2の名前空間は第2のJava(R)クラスローダを用いて達成され得る。データ50を取り出すJAVA(R)ビーン100のための技術として説明されたが、この2つのプロキシ技術がJAVA(R)ビーンではないJAVA(R)データアクセスオブジェクトに適用可能である。例えば、Bがクラスの名前によってAを参照せず、B〜Aの全ての(名前付けされていない)参照もまたプロキシによって妨害される場合、この技術がコードAの一部とコードBの一部との間のアクセスを妨害するために使用され得る。
【0043】
(1.3.4 ラッピング−選択された実行および生成された出力の例)
図5aは、コードフラグメント265a’、265b’、265c’およびさらなるコード270b’、270c’の部分的ページ再生成器250による実行(矢印280)のフローを示す。図5bは、部分的ページ再生成器250が生成するアイテムを示す。第1の生成されたアイテムはページ240のページポーション260の出力283であり、HTMLコードとして示される。第2の生成されたアイテムが修正リスト(「mod list」)284である。一実施形態では、2つのアイテムが同時に生成される。出力283の左側の文字は部分的ページ再生成器250によって生成されないが、むしろHTMLコードの特定のラインを生成する図5aのコードフラグメント(ラッピングまたはラッピングされていない)を示すために使用される。
【0044】
以下の実行のフロー(図5aの矢印280)に従って、第1の「main」コードフラグメント265a’が実行される。最初に「main」コードフラグメント265a’は、空のページ(例えば、HTMLページの本体部のコンテンツがない)を作成し、「0」の識別タグを使用して、修正可能なページポーション260を含むページ240の部分を識別する。「main」コードフラグメント265a’はまた、修正リスト284の割り当てコマンド285aを生成する。この割り当てコマンドは、識別タグ「1」のコンテンツを識別タグ「0」を有する部分に割り当てる(例えば、割り当てコマンドの説明についての以下の表1を参照のこと)。
【0045】
「main」コードフラグメント265a’は、「do Table」コードフラグメント265b’を呼び出す。この「do Table」コードフラグメント265b’は、さらなるコード270b’でラッピングされるため、さらなるコード270b’は呼び出しを妨害し、実行を開始する。さらなるコード270b’は、識別タグ「1」を生成し、さらなるコード270b’のコードフラグメントが生成するページポーションの開始を識別する。さらなるコード270b’は、識別タグのためのHTMLスパンタグ290aを生成し、さらなるコード270b’が生成するページポーションの開始を構築する。さらなるコード270b’は、エンドスパンタグ295aを生成して、一旦さらなるコード270b’の実行が終了すると、「1」として識別されたページポーションの末端を識別する。対応300のマップ(図7)を用いて、さらなるコード270b’は、「do Table」コードフラグメント265b’がまだ実行されておらず、実行のためのページ生成コード30’の「do Table」コードフラグメント265b’を呼び出すことを決定する。
【0046】
ページ生成コード30の「do table」コードフラグメント265b’の命令セット(図示されない)の実行の間に、「do table」コードフラグメント265b’は、HTML出力283およびHTMLコードに<table>タグを生成し、「Name」および「Price」テーブルデータセルを有するヘッダーロウを生成する。「do Table」コードフラグメント265b’は、格納バッファ54から入力データ298(例えば、株を共有するためのチッカーシンボル)を受信する。
【0047】
入力データ298に応答して、「do Table」コードフラグメント265b’は、入力データ298の各チッカーシンボルのためのページ生成コード30’の「do Share」コードフラグメント265c’を呼び出す。データ「ABCC」の第1のデータ部に対して、「do Table」コードフラグメント265b’は、「do Share」コードフラグメント265c’を呼び出す。「do Share」コードフラグメント265c’がさらなるコード270c’でラッピングされるため、さらなるコード270c’は、呼び出しを妨害し、実行を開始する。さらなるコード270c’は、識別タグ「2」を作成し、ページ240の部分260の開始を識別する。さらなるコード270c’は、「do Share」コードフラグメント265c’が入力データ「ABCC」の部分によって呼び出されたとき初めてページ240の部分260の開始を生成する。
【0048】
さらなるコード270c’は、HTMLスパンタグ290bを生成して、さらなるコード270c’が生成するページポーションの開始を構築する。さらなるコード270c’は、「do Share」コードフラグメント265c’が引数「ABCC」によってまだ実行されておらず、実行のためのページ生成コード30’の「do Share」コードフラグメント265c’を呼び出すことを決定する。ページ生成コード30の「do Share」コードフラグメント265c’の命令セット(図示されない)の実行の間に、「do Share」コードフラグメント265c’は、テーブルデータセル「ABCCorp.」および「99.9」を有するテーブルのロウを生成する。入力データ298の部分を処理するページポーションに関連する「do Share」コードフラグメント265c’の実行が終了するため、さらなるコード270c’は、HTMLコードにエンドスパンタグ295bを生成し、さらなるコード270c’のフラグメントによって作成された末端部分を構築する。実行は「do table」コードフラグメント265b’に戻る。
【0049】
データ「XYZC」の次の部分に対して、「do table」コードフラグメント265b’は、「do Share」コードフラグメント265c’を再度呼び出す。「do Share」コードフラグメント265c’は、さらなるコード270c’でラッピングされるため、さらなるコード270c’は、実行を呼び出しを妨害し、実行を開始する。さらなるコード270c’は、識別タグ「3」を作成し、ページポーションの開始を識別する。さらなるコード270c’のコードフラグメントは、「do Share」コードフラグメント265c’が入力データ「XYZC」の部分によって呼び出されたとき初めてページポーションの開始を生成する。さらなるコード270c’は、HTMLスパンタグ290cを生成して、さらなるコード270c’が生成するページポーションの開始を構築する。さらなるコード270c’は、「do Share」コードフラグメント265c’が引数「XYZC」によってまだ実行されておらず、実行のための「do Share」コードフラグメント265c’を呼び出すことを決定する。ページ生成コード30の「do Share」コードフラグメント265c’の命令セット(図示されない)の実行の間に、「do Share」コードフラグメント265c’は、テーブルデータセル「XYZCorp.」および「1.2」を有するテーブルのロウを生成する。入力データ298の部分を処理するページポーションに関連する「do Share」コードフラグメント265c’の実行が終了するため、さらなるコード270c’は、エンドスパンタグ295cを生成し、さらなるコード270c’のコードフラグメントによって作成された末端部分を構築する。実行は「do table」コードフラグメント265b’に戻る。
【0050】
データ「ABCC」の次の部分に対して、「do table」コードフラグメント265b’は、「do Share」コードフラグメント265c’を呼び出す。「do Share」コードフラグメント265c’は、さらなるコード270c’でラッピングされるため、さらなるコード270c’は、実行を呼び出しを妨害し、実行を開始する。さらなるコード270c’は、識別タグ「4」を作成し、ページポーションの開始を識別する。さらなるコード270c’のコードフラグメントは、二度目に「do Share」コードフラグメント265c’が入力データ「ABCC」の部分によって呼び出されたときにページポーションの開始を生成する。さらなるコード270c’は、HTMLスパンタグ290dを生成して、さらなるコード270c’が生成するページポーションの開始を構築する。このとき、さらなるコード270c’は、「do Share」コードフラグメント265c’が引数「ABCC」によってまだ実行されておらず、実行のための「do Share」コードフラグメント265c’を呼び出せないことを決定する。再度実行した場合、「do Share」コードフラグメント265c’は、識別タグ「2」の部分と同一のテーブルデータセル「ABCCorp.」および「99.9」を有するテーブルのロウを生成する。
【0051】
「do Share」コードフラグメント265c’が実行されないため、さらなるコード270c’は、エンドスパンタグ295dを生成し、さらなるコード270c’のコードフラグメントによって作成された末端部分を構築する。必要とされるページポーションを生成するために、さらなるコード270c’は、識別タグ「2」に含まれた部分を識別タグ「4」に含まれた部分にコピーするようにクライアントノード205のディスプレイ変更器(alterer)245に命令するコピーコマンド285bを修正リスト284に生成する(例えばコピーコマンドの説明についての表1を参照のこと)。実行は「do table」コードフラグメント265b’に戻る。
【0052】
処理された入力データ298の全ての部分に対して、「do table」コードフラグメント265b’の実行が終了される。さらなるコード270b’は、エンドスパンタグ295aを生成して、さらなるコード270b’によって生成された末端部を構築する。実行は「main」コードフラグメント265a’に戻り、そして「main」コードフラグメント265a’からランタイムシステムに戻り、それによりページポーション(例えば、HTML出力ファイル)およびページポーションを挿入するための命令(例えば修正リスト)をサーバ送信器235を介してクライアントノード205に伝送する。
【0053】
図5aおよび図5bの例示的な例から、ページ240が実質的に更新され(例えば、XYZCorp.の共有の価格が増加するため)た場合、実行および出力がさらに低減されることが容易に理解される。一実施形態では、例えば、以後の更新に対して、変更されたテーブルのロウのみがクライアントノード205に伝送される。本実施形態では、部分ページ発生器250は、引数として「XYZC」を使用して関連付けられたさらなるコード270c’を用いて「do Share」コードフラグメント265c’を実行する。さらなるコード270c’は、識別タグ「5」を生成して、ページポーションの開始を識別する。さらなるコード270c’のクライアントは、「do Share」コードフラグメント265c’が次に「XYZC」によって呼び出されたときにページポーションの開始を生成する。さらなるコード270b’は、HTMLスパンタグを生成して、さらなるコード270b’が生成するページポーションの開始を構築する。さらなるコード270b’は、実行のための「do Share」コードフラグメント265c’を呼び出す。「do Share」コードフラグメント265c’は、テーブルデータセル「XYZCorp.」および「2.5」(新しい価格)を有するテーブルのロウを生成する。「do Share」コードフラグメント265c’の実行が終了するために、さらなるコード270c’はspan id=5入力に対してエンドタグを生成して、さらなるコード270c’のフラグメントによって作成された末端部を構築する。
【0054】
部分的ページ再生成器250は、対応300のマップ(図7)を用いて「XYZC」を有するロウが識別タグ「3」を有することを決定する。部分的ページ再生成器250は、ABCCorp.を有するテーブルのロウが、価格が変更されないために更新される必要がないことを決定する。部分的ページ再生成器250は、現在表示されたウエブページに組み込むために、更新されたロウおよび修正リストの生成されたHTML出力をクライアントノード205のディスプレイ変更器245に伝送する。部分的ページ再生成器250は、伝送された修正リストにコマンド「Assign 5→3」を含む(例えば割り当てコマンドの説明についての表1を参照のこと)。このコマンドは、識別タグ「3」を用いてHTML出力を見つけるようにディスプレイ変更器245に命令し、HTML出力を、識別タグ「5」を有する新しく伝送されたHTML出力部分と置換する。
【0055】
(1.3.5 クライアントフィードバック用いたサーバ格納バッファの更新)
図5aの例示的な実施形態では、入力データ298がクライアントノード205から発生する。本実施形態では、クライアントのユーザがデータを伝送されたページ240の1つ以上のユーザ入力フィールドに入力し、そして提示ボタン、更新ボタンをクリックし、および/またはエンターキーを押した後で、入力データ298がクライアントノード205から伝送される。別の実施形態では、クライアントノード205のディスプレイ変更器245が伝送されたページ240のユーザ入力フィールドをモニタリングする。ディスプレイ変更器245がユーザ入力フィールドにデータを検出した場合(例えば、ユーザがデータをフィールドに入力しそしてタブキーを押すか、あるいはユーザがデータを入力し、ページの別の部分にカーソルを移動させ、そしてマウスキーをクリックする)、ディスプレイ変更器245は、ページ更新リクエストを用いてデータを部分的ページ再生成器250に伝送する。
【0056】
さらに別の実施形態では、部分的ページ再生成器250は、さらなるソフトウエア(例えば「フィードバック」と呼ばれる方法)を、ページ生成コード30によって生成されたページ240の一部であるクライアントノード205に提供する。さらなるソフトウエアが呼び出される(例えばユーザ動作によって)場合、さらなるソフトウエアは、その引数がサーバノード210に伝送されるように構成する。部分的ページ再生成器250はまた、さらなるソフトウエア(例えばまた「フィードバック」とも呼ばれる方法)をページ生成コード30に提供する。サーバノード210上のこの「フィードバック」方法は、クライアントノード205によって受信された引数を使用して、格納バッファ54内のデータ50を更新する。
【0057】
例えば、生成されたページの一部は、
<input type=”text” onchange=”feedback(value)”>
であり得る。これは入力ボックスを表示し、ユーザが値を入力しタブを押すか、またはマウスを移動させる度に呼び出されるカスタムコード(feedback(value))の一部を含む。これは、この動作に応答してクライアントノード205上の「フィードバック」方法を呼び出し、入力された値を伝える。この値は、サーバノード210に伝送される。サーバノード210上のページ生成コード30における「feedback」と呼ばれる方法は引数としてこの値を用いて呼び出される。これは、例えば、
Void feedback(String stock)
{
portfolio.setCurrentStock(stock)
}
であり得る。ポートフォリオは、データアクセスビーン100(図4c)の基準である。
【0058】
別の実施形態では、ページ240は変更されることが可能になるために、サーバノード210上の「feedback」の呼び出しは、部分的ページ再生成器250にページ240を速やかにリフレッシュさせる。
【0059】
(1.4 対応のマップ)
部分的ページ再生成器250は、ページ240の部分260の識別タグ290(例えば、HTMLスパンタグ)を決定し、部分的ページ再生成器250がこのような情報を格納するページポーション260を作成するにつれて、部分的ページ再生成器250が対応のマップ300(図7)を生成するため、任意のこれらのページポーション260に対するデータ50が変更されるかどうかを決定する。ページポーションのレイアウト関係をモデル化するページ記述モデル303(図6)が対応のマップ300内部にある。
【0060】
(1.4.1 対応のマップ−ページ記述モデル)
図6は、ページ記述モデル303によってモデル化された論理接続の例示的な実施形態を示す。図5aおよび図5bに説明されたように、同じ例示的な例を用いることによって、ページ記述モデル303は、ノード305a、305b、305c、305d、305e、305f、および305g(一般的に305)を有するノードツリー303’を含む。ページポーション260の関係(すなわち、ページ記述モデル303)はノードツリー303’として示される。他の実施形態では、他のモデルが使用され得る。本発明の異なる実施形態は、ノードツリー303’の異なるレベルにおいて作成および動作し得る。言い換えれば、いくつかの更新は、子ノードのみを処理する一方で、他の更新は、子ノードにおける更新に影響を与える親ノードを使用する。ページ240を更新するために生成され、伝送されるデータの量がより小さくなるほど、更新に影響を与える必要があるリソースがより少なくなる。
【0061】
ノードツリー303’の各ノード305は、ノードツリー303’の他のノード305のそれぞれに関して固有であり、クライアントノード205に送信されたHTML出力283に挿入された識別タグ(例えばスパンタグ)に関して同一のIDを有する。別の実施形態では、ノードIDは、挿入されたタグとは異なる場合、対応300のマップは、ページ240の部分260を表すモデルノード305とクライアントノード205に送信されたHTMLコードの実際の識別タグ(例えばスパンタグ)との間の関係を含み、ページポーションの表示を生成する。ページ記述モデル303を作成するために、対応300のマップは、ページ生成コード30のコードフラグメント265と各コードフラグメント265が生成するページポーション260との間の通信を含む。さらに対応300のマップはページ生成コード30のコードフラグメント265と各コードフラグメント265が依存するデータ50との間の通信を含む。
【0062】
(1.4.2 対応のマップデータ構造)
図7は、対応300のマップのための一般的なデータ構造308の例を示す。データ構造308は、ノードツリー303’、値フィールド320、キーフィールド330、現在の値のテーブル345、およびイベントフィールド360を含む。値フィールド320は、コードフラグメント265の実行が生成するページ240の部分260を表す(矢印323)。一実施形態では、値フィールド320のデータは、クライアントノード205のディスプレイ220上のページ240の部分260を生成するために使用されるHTML出力283である。別の実施形態では、HTML出力自体を格納する必要がない(修正リストおよび作業リストに一次的に格納する以外)。値フィールド320はデータを有さないが他のフィールドの数に関係するのみである。
【0063】
値フィールド320は1つ以上のノード305を作成するために使用され得る。対応のマップ300は、特定の値フィールド320に対応するノードツリー303’におけるこれらのノード305に値フィールド320をマッピングする(矢印325)。
【0064】
キーフィールド330は、コードフラグメント265の実行を表す(矢印335)。キーフィールド330は、コードフラグメント265を再実行するのに必要なデータを含み、キーが対応する値を生成する(矢印340)。単一のキーフィールド330は、複数の通信を有し得る(矢印340)。なぜなら、キー330のコードフラグメント265が再実行される場合、コードフラグメント265が依存するデータ50の変化の後に新しい値320が作成されるためである。しかし常に特定のキー330に対する1つのみの現在の値320が存在する。
【0065】
キー330によって生成された現在の値320が現在の値345のテーブルに格納される。現在の値345のテーブルでは、キー330が表された場合、値フィールド320へのキーフィールド330の対応(矢印350)は常に1対1である。言い換えると、いくつかのキー330は、現在の値345のテーブルに表すことができないが、キー330が現在の値345のテーブルにある場合、キー330に対して多くとも1つの値320がある。現在の値345のテーブルが特定の引数を用いてキーフィールド330をトラッキングすることによって、作成された1つのみの現在の値フィールド320がある(すなわち、コードフラグメントの1つの基準は、同じ引数およびデータ50を用いてそれが常に同じ出力(すなわち値フィールド320)を生成することである)。
【0066】
対応300のマップは値フィールド320をイベントフィールド360にマッピングする(矢印355)。イベントフィールド360は、マッピングされる値のフィールド320に影響を与えるイベントに関するデータを含む(矢印355)。一般的な意味では、単にマッピングイベント360は、値320がデータ50の一部に依存し、「何か」が変更された通知と、どの値320が現在無効であることを識別することの間で変換する手段の1つとして使用される概念に過ぎない。
【0067】
例えば、値フィールド320が依存するデータ50の変化を示すイベントに対する基準がイベントフィールド360に格納され得る。この対応(矢印355)では、データ50が変化する場合、またはイベントがデータ50の変化を表すように生成される場合、部分的ページ再生成器250は、変化されたデータ50を表す、イベント360にマッピングされた(矢印355)値フィールド320にマッピングされた(矢印325)これらのノード305が、もはや有効ではなく更新されるべきであることを決定する。データ50の変更イベント360のこれらのタイプの生成およびモニタリングは当業者に周知であり、任意の生成およびモニタリング技術は受容可能である。
【0068】
(1.4.3 対応のマップ−図5aおよび図5bを用いる例)
図8は、部分的ページ再生成器250が図5aおよび図5bの選択的な実行の例を実行することによって作成される対応300’のマップの例示的実施形態を示す。現在の値345’のテーブルは、1つのキーの1つの値320’への対応を含む。現在の値345’のテーブルのキーは、特定の引数を用いたコードフラグメント265を表す。テーブル345’は、キー330が生成する固有の値320’へのポインタ375を含む。示されたように、例において作成された3つの固有のページポーション260に対応する3つの固有の値320’(ノード305b’、305c’、および305d’によって表される)がある。各値320’は、ページ記述モデルノードツリー303’の1つ以上のノード305’(すなわち、全てのページポーション)へのポインタ375を有する。各ノード305はデータまたはデータへのポインタ375を含む。各ノードは、この特定のノードの識別タグ(「ID」)、親および子のノードのID、対応するノード305’を生成した値320’を含む。
【0069】
(1.5 ページポーションの組み込みのための命令)
図5bに示されるように、部分的ページ再生成器250は、クライアントノード205のディスプレイ220上のページ240の部分260を生成するために使用される実際の出力283と共に修正リスト284を生成する。サーバノード210は、修正されたページ240の部分260をこれらの特定の部分260のための修正リストと共にクライアントノード205に伝送する。クライアントノード205は、修正リストを使用して、ページ240の適切な領域に伝送された部分260を表示させる。このディスプレイ変更器245は修正リストを用いて伝送されたページポーション260を組み込むタスクを実行する。
【0070】
伝送された1つ以上のページポーションを表示されたページ240に組み込むために、ディスプレイ変更器245は、修正リスト上にあるコマンドを処理することを可能にしなければならない。部分的ページ再生成器250は、ディスプレイ変更器245の能力を決定する。一実施形態では、クライアントノード205のディスプレイ変更器245は、クライアントソフトウエアの一部である。本実施形態では、クライアントノード205は、ディスプレイ変更器245に命令するサーバノード210が最初のリクエストの間に理解し得ることを通知し得る。
【0071】
別の実施形態では、クライアントノード205のディスプレイ変更器245は、ページ240がクライアントノード205にまず送信される場合、サーバ送信器235によって動的にページ240に追加されたスクリプトの一部である。スクリプトクライアントのページへのリンクの例は、添付物1に説明される。
【0072】
本実施形態では、クライアントノード205が初期リクエストの一部としてブラウザのどの「タイプ」を実行するかをサーバノード210に通知し、次いでサーバノード210は、サーバノード210に格納された公知のブラウザのテーブルの能力を参照し得る(例えば、クライアントブラウザは、Internet Explorer 5.0であるとしてクライアントブラウザ自体を識別し得る)。さらに別の実施形態では、サーバ送受信器235は、クライアントブラウザのタイプに依存して、ディスプレイ変更器245および/またはクライアントの送受信器230の異なるバージョンをクライアントのブラウザに送信する。
【0073】
(1.5.1 コマンドの例)
修正リストは、所定のセットのコマンドからのコマンドを使用する。一実施形態に対して、表1は、修正リスト中に出現し得る4つのコマンドのタイプのセットの例を列挙する。表1の第1の列はコマンドの名前を列挙する。表1の第2の列は、各コマンドに含まれ得るパラメータを列挙する。表1の第3の列は各コマンドの一般的な説明を列挙する。用語「ノード」は、対応のマップ300のページ記述モデルノードツリー303’のノード305を指す。コマンドパラメータは識別タグ(すなわちID)を使用して、ノード305を表す。例えば、ノード305が株価のテーブルデータセルであり、価格が120に変化した場合、コマンドは、Assign(8,「$120」)であり得る。ディスプレイ変更器245は、識別タグ「8」と共にテーブルデータセルに「$120」の値を挿入する。
【0074】
【表1】
表1
(1.6 データが変更された場合のページの更新)
イベント360がデータ50における変更を表すことが検出される場合、部分的ページ再生成器250は、イベント360に対応する(矢印355、図7)値320を無効値リスト(図示せず)上のイベント360に追加する。一実施形態では、無効値リストは、対応のマップ300の一部である。無効値リストは、変更されもはや値ではないクライアントノード205上のページ240に現在表示された全ての値をトラッキングする。一旦、無効値リスト上のエントリが存在する場合、部分的ページ再生成器250は、そのリクエストに応答してページ240をリフレッシュする要求を待ち、ページ240の変更された部分260のための更新を生成および伝送する。
【0075】
ページ240をリフレッシュするための要求は、多くの異なる方法で生成され得る。例えば、クライアントノード205上のユーザは、ページ240のリフレッシュをリクエストし得る。別の実施形態では、ディスプレイ変更器245は、ページ240のリフレッシュを周期的にリクエストし得る。別の実施形態では、部分的ページ再生成器250は、一旦データ50の変化が検出されると、リフレッシュのためのリクエストを生成する。例えば、上述のように、「フィードバック」方法がサーバノード210上で呼び出された場合、部分再生器250は、リフレッシュのためのリクエストを自動的に生成する。別の実施形態では、クライアントノード205とサーバノード210との間の通信プロトコルは、サーバプッシュモデル(すなわち、サーバノード210は、クライアントノード205が、がリクエストを開始することなく、データをクライアントノード210に伝送する)を支援またはシミュレートする。
【0076】
(1.6.1 伝送されたページポーションのための更新の生成)
図9は、変更されたページ240の部分260のために、部分的ページ再生成器250が更新を生成することによる例示的なプロセスを示す。部分再生器250は、変更されたページポーション260のための出力および表示されたページの変更されたページポーション260をどのようにして組み込むかに関してディスプレイ変更器245に命令するための修正リストを生成する。例示的プロセスは、クライアントノード205について現在利用可能な任意の未変更の部分を利用することによって、クライアントノード205に伝送されたデータの量を最小化する。
【0077】
例示的なプロセスを開始するために、部分的ページ再生成器250は、無効な値のリストを検査し、現在の値が無効な値を表すのと同時に現在の値345のテーブル(図7)から無効値リスト上の全ての値320を取り除く(ステップ400)。部分的ページ再生成器250は、「recycle Root」ノードを生成する(ステップ405)。「recycle Root」ノードは、以後再使用され得るノード305を格納するために使用された一時的な空間である。部分的ページ再生成器250は、2つのコマンドの初期の空のリスト(作業リストおよび修正リスト)を作成する(ステップ410)。部分的ページ再生成器250は作業リストを生成し、作業リストから修正リストにアイテムの群を移動させる。本例で使用されたコマンドは、表1に示されたコマンドと同じである。
【0078】
部分的ページ再生成器250は、無効な値のリストをスキャンし、無効な値のリスト上の値320の内の1つに対応する最高のノードを見出す(ステップ420)(ノードツリー303’のルートに最も近いノードとして最高のノード)。このようなノードがない場合、例示的なプロセスはステップ465にジャンプする(矢印423)。部分的ページ再生成器250は、対応する無効な値に対するページ記述モデルノードツリー303’から最高のノードを除去する(ステップ425)。これらのノードはそれ自身無効であり得ないため、後で使用され得るので、最高のノードの子ノード305は、recycleRootに移動される(ステップ430)。部分的ページ再生成器250は、対応のマップ300を用いて最高のノードの対応する値を再計算するために使用されたキー330(図7)を決定する(ステップ435)。例えば、図7を用いて、部分的ページ再生成器250はノード305に従い、ノード305は、キー330に対応し(矢印340)、値320に対応する(矢印325)。
【0079】
一旦キー330が決定されると(ステップ435)、部分的ページ再生成器250は、対応するキー330に対する現在の値(すなわち、現在の値のテーブル345の値320)があるかどうかを決定する。このキー330に対する現在の値がある場合、再計算(ステップ445)は、以前のループの繰り返し(矢印463)においてこのキー330のために既に開始する。再計算(ステップ445)が既に開始している場合、部分的ページ再生成器250は、対応する現在の値のためのページ記述モデルのノードツリー303’にノード305を追加し(ステップ443)、「CopyValue」コマンドを作業リストに追加する(ステップ443)。再計算(ステップ445)が既に開始されている場合、例示的なプロセスはステップ460にジャンプする(矢印458)。
【0080】
再計算(ステップ445)がまだ開始していない場合、部分的ページ再生成器250は、決定されたキー330(ステップ435)に関連付けられたコードフラグメント265を再実行して(ステップ445)、新しい値を生成する。生成された出力が出力ファイル(例えば、図5bのHTML出力コード283)に識別タグを用いて保存される。ノードは、新しく生成された値に対するページ記述モデルのノードツリー303’に追加される(ステップ450)。次いで部分的ページ再生成器250は、識別タグを用いて「Assign」コマンドを作業リストに追加する(ステップ455)。
【0081】
再実行(ステップ445)の間、決定されたキー(ステップ435)に関連付けられたコードフラグメント265は、他のコードフラグメント(例えば図5aの「do table」コードフラグメントは、「do Share」コードフラグメントを呼び出す)を呼び出し得る。現在の値のテーブル345の値320に整合するパラメータを有する各呼び出しに対して、さらなるコード270を経由する部分的ページ再生成器250は、この呼び出しを妨害する。妨害は、図5aおよび図5bの2回目の実行に対する「do Share」(ABCC)の実行の例と同様である。妨害によって、部分的ページ再生成器250は、識別タグ(例えば、図5bのspan ID 「4」、290dおよび295d)を用いて空のページポーションを生成し、作業リストに追加される「CopyValue」コマンドを生成する。
【0082】
部分的ページ再生成器250は、無効な値のリストを検査してルートから到達可能なより多くのノードが存在するかどうかを決定する(ステップ460)。より多くのノードがある場合、プロセスはステップ420に戻る(矢印463)。ノードがない場合、プロセスはステップ465を続ける。
【0083】
部分的ページ再生成器250は、リサイクルルートにおけるノードを検査して任意のノードが再使用され得るかどうかを決定する(ステップ465)。これらのノードのそれぞれがクライアントノード205上で利用可能なページポーション260を表すため、これらのノードを再使用することはかなり有益である。部分260は、作業リスト上の「CopyValue」コマンドと整合する場合に再使用され得る。recycleRootにおけるノードが最小され得る場合、部分的ページ再生成器250は、整合ノードに設定されたソースノードパラメータを用いて、整合する「CopyValue」コマンドを「MoveNode」コマンドに変換する(ステップ468)。再使用された親ノードおよび子ノードは、それらがリサイクルされ得ない場合に使用されるとしてマーキングされる(ステップ468)。部分的ページ再生成器250は、作業リストの少なくとも1つのコマンドが変更されたことを示すフラグを設定する(ステップ468)。
【0084】
部分的ページ再生成器250は、最初に「Assign」コマンド、次いで「MoveNode」コマンドを置くことによって、作業リストのコマンドをソート(ステップ470)することによって継続する。部分的ページ再生成器250は、「Assign」コマンドおよび「MoveNode」コマンドを作業リストから除去し(ステップ470)、クライアントノード205への伝送準備ができている修正リストにこれらのコマンドを添付する。残っている「CopyValue」コマンドは作業リスト上に残されている。
【0085】
部分的ページ再生成器250は、フラグが設定された(ステップ468)かどうか理解するためにチェックすることによって任意のコマンドが変更されたかどうかを決定する(ステップ475)。少なくとも1つのコマンドが変更された場合、以前に到達不可能なノードが現在では到達可能であるために、この決定が為される。フラグが設定された場合(ステップ468)例示的なプロセスは、ステップ420に戻る(矢印463)。
【0086】
ノードがもはやリサイクルされ得ない場合、部分的ページ再生成器250は、全ての残っている「CopyValue」コマンドを「CopyNode」コマンドに変換する(ステップ480)。これらは「MoveNode」コマンドよりもより効率的ではないが、別の「Assign」コマンドよりもさらによい。「Copy Node」コマンドに対するソースは正確な値を有する任意のノードである。「CopyValue」コマンドを変換する場合、その値に関連したノードのセットが検査され、1つのノードが選択される。唯一の要求は、このノードが「CopyNode」コマンドが実行される場合にクライアントに対して利用可能であるうちの1つのノードであることである。「CopyValue」コマンドをステップ468およびステップ480両方において変換する場合、この要求は、ソースノードとして最低の識別タグを有するノードを選択することによって満たされ得る。
【0087】
この変換の間、部分的ページ再生成器250は、コピーされたサブツリーを再命名し、生じたサブツリーは固有の識別子を有するノードを含む。任意の手段が再命名(例えば予め順序化された深さの第1の横断(pre−order depth first traversal))のために使用され得る。部分的ページ再生成器250は作業リスト(現在「CopyNode」コマンドのみを含む)を修正リストに添付する(ステップ485)。
【0088】
1つの例では、修正リスト284は複数のリストを含む。最後の2つのセクションを除く全ては、1つ以上の「Assign」コマンド、次いで1つ以上の「MoveNode」コマンドを含む。最後から2番目のセクションは1つ以上の「Assign」コマンド、次いで0以上の「MoveNode」コマンドを含み、最後のセクションは、0以上の「CopyNode」コマンド(例えばAAM AAAMMM AAACCCを含み、ここでA=「Assign」コマンド、M=「MoveNode」コマンド、C=「CopyNode」コマンド、および空間は各セクションを分割する)を含む。
【0089】
次いで、部分的ページ再生成器250は、対応する値320のためのページ記述モデルノードツリー303’からリサイクルリスト上に残された全てのノードを除去する(ステップ490)。値320がページ記述モデルノードツリー303’において残っている対応しているノード305を有さない場合、値320が放棄され、現在の値のテーブル345から除去される。また部分的ページ再生成器250は、放棄された値320に関連付けられた任意のイベントレコード360およびキー330を除去する。これはクライアントノード205上で開始するコマンドを反映する。
【0090】
(1.7 更新された部分の伝送されたページへの組み込み)
一旦出力283および修正リスト284が作成されると、部分的ページ再生成器250は、ネットワーク通信チャンネル215を介してサーバ送受信器235を経由して2つのアイテムを、クライアント送受信器230を介してディスプレイ変更器245に伝送する。ディスプレイ変更器245は修正リスト284を用いて出力283を組み込む。
【0091】
(1.7.1 修正リストの使用)
図10は、ディスプレイ変更器245が、サーバノード210が更新されたページポーション260と共に伝送された修正リスト284を用いて、変更されたページ240の部分260のための更新を組み込むプロセスの例示的実施形態を示す。上述のように、修正リスト284は、AssignおよびMoveNodeコマンドを含む複数のセクションと、CopyNodeコマンドのみを含む選択的な最後のセクションからなる。ディスプレイ変更器245は、次いで、修正リスト284の各セクションを処理する。ディスプレイ変更器245は「MoveNode」コマンドのための修正リスト284の現在のセクションを検査する(ステップ500)。各「MoveNode」コマンドに対して、ディスプレイ変更器245は「MoveNode」コマンドのソースノードおよび任意の孫ノードを格納バッファ225に保存する(ステップ505)。次いで、ディスプレイ変更器245は、「Assign」コマンドのための修正リスト284の現在の選択を検査する(ステップ510)。各「Assign」コマンドに対して、ディスプレイ変更器245は、「Assign」コマンドの出力(例えば、表示可能な部分260、実際のHTMLコード)を、「Assign」コマンドの宛先ノードによって特定されたページ240の部分260に挿入する(ステップ515)。
【0092】
ディスプレイ変更器245は、「MoveNode」コマンドに対する修正リスト284の現在のセクションを再検査する(ステップ520)。各「MoveNode」コマンドに対して、ディスプレイ変更器245は、格納バッファ225に一次的に格納された(ステップ505)適切なソースノードを取り出す(ステップ530)。ディスプレイ変更器245は、ノードの値および任意の孫ノードを「MoveNode」コマンドの宛先ノードによって特定されたページ240の部分260に挿入する(ステップ535)。
【0093】
ディスプレイ変更器245は、修正リスト284の次のセクションに移動する(ステップ540)。もうセクションがない場合、プロセスはステップ565に続く。新しいセクションが「CopyNode」コマンドのみを含まない場合、プロセスはステップ500まで続く。
【0094】
ディスプレイ変更器245は、「CopyNode」コマンドのための修正リスト284の現在のセクションを検査する(ステップ550)。各「CopyNode」コマンドに対してディスプレイ変更器245は、適切なソースノードおよび任意の孫ノードをコピーする(ステップ555)。ディスプレイ変更器245は、コピーされたノードおよび任意の孫ノードの出力を「CopyNode」コマンドの宛先ノードによって特定されたページ240の部分260に挿入する(ステップ555)。このコピープロセスの間、ディスプレイ変更器245は、コピーされたノードの埋め込まれたノード識別タグの全てを再命名する(ステップ560)。一実施形態では、ディスプレイ変更器245は、HTMLコード(例えば、格納バッファ225に現在表示されたページ240のHTMLコードのコピー)への組み込みの全てを実行し、更新の全ての組み込みが終了した場合、ディスプレイ変更器245は、更新されたページを表示する(ステップ565)。別の実施形態では、更新が表示されたページ240に組み込まれた場合、ディスプレイ変更器245は、各更新を表示する(ステップ550)。
【0095】
(1.7.2 組み込みの例)
図11(a)、11(b)、11(c)および11(d)は、表示されたページ240への更新を組み込むディスプレイ変更器245の例を示す。示された例において、ディスプレイ変更器245がテーブルを更新しているページ240のポーション260は、識別票「1」を有するノードとして識別される。テーブル(すなわち、ノード「1」)は、新しい要素(すなわち、値「ガンマ」を有するを子供ノード)をテーブルに追加することによって更新される。
【0096】
図11(a)は、更新の前に伝送されたページ240を表わすページ記述モデルノードツリー303’’を示す。図5aおよび5bの例に類似して、ノードツリー303’’は、三つの子供ノード「2」、「3」および「4」とともに親ノード「1」を含む。子供ノード「2」は、「アルファ」の値を有する。子供ノード「3」は、「ベータ」の値を有する。子供ノード「4」は、「デルタ」の値を有する。図11(a)は、さらに、部分的ページ再発生器250がディスプレイ変更器245に伝送した修正リスト284’’を示す。
【0097】
ディスプレイ変更器245は、図10の例示的なプロセスに続く変化を組み込むための修正リスト284’’を使用する。ディスプレイ変更器245は、修正リスト284’’を検査し(ステップ500)、「Assign」コマンドを見出す。ディスプレイ変更器245は、さらに、「Assign」コマンドの宛先ノード(すなわち、ノード「1」)の孫(すなわち、子ノード)に関連する「MoveNode」コマンドがあることを判定する(ステップ500)。図11(b)に示されるように、修正リスト284’’’は、再利用可能なノード603を格納バッファ225内にインプリシットにセーブする動作(ステップ505)を含む。テーブルのための「Assign」コマンドがあるため、ディスプレイ変更器246は、ページ記述モデルノードツリー303’’のワーキングバージョン600を作成し始めるためにそのノードの孫を取り除く。
【0098】
図11(c)を参照すると、ディスプレイ変更器245は、「Assign」コマンドに規定されたように出力を挿入する(ステップ515)。この例では、「Assign」コマンドの出力は、修正リスト284’’には示されていないが、ページ記述モデルノードツリー303’’のワーキングバージョン605に示される。「Assign」コマンドごとに、新しいノード「1」が識別タグ「5」、「6」、「7」および「8」を有する4つの孫ノードを含む。識別タグ「5」、「6」および「8」を有する派生ノードは、空である。識別タグ「7」を有する派生ノードは、値「ガンマ」を有する。
【0099】
ディスプレイ変更器245は、「MoveNode」コマンドのための修正リスト284’’を検査する(ステップ520)ことによって継続する。図11(c)に示されるように、三つの移動コマンドがある。各「MoveNode」コマンドに対して、ディスプレイ変更器245は、ソースノード(すなわち、2、3、4)として識別されたノードを検索し(ステップ530)、値(すなわち、アルファ、ベータ、デルタ)を指定ノード(すなわち、5、6、8)に挿入する(ステップ535)。図11(d)は、更新されたページ240のページ記述モデルノードツリー303’’’を示し、ここで、クライアントノード205のディスプレイ220上に表示される(ステップ565)。
【0100】
株価のテーブルがこの説明にわたって用いられているが、本発明は、任意の他の種類のコンテンツで同様に良く働く。例えば、図12は、クライアントノード205でユーザに表示されている電子メールページ608の例のスクリーンショットである。ページ生成コード(図示せず)は、特定のユーザのための「インボックス」におけるメッセージのリスト610を表示し得る。各メッセージの送信者615に対して、題目620および日付625が、メッセージが読まれたかどうか(例えば、太字で表示される)についての表示(図示せず)とともに示される。このリスト610は、さらに、メッセージが選択された場合にフル画面(full)630に表示されるようなリンクを含む。部分的なページ再生成器の実施形態を用いて、メッセージの表示されたリスト610は、多数の方法で更新される。
【0101】
−新しいメッセージが着いたとき、図11において「ガンマ」が追加されるのと類似の方法(しかし、リスト610の端部に)で、メッセージがリスト610に添付される。
【0102】
−リスト610が、ソーティング基準ごとに子供ノードを再配置することによって容易に格納される。
【0103】
−メッセージが読まれた場合、リスト610内のそのメッセージの入力がこれを反映するように修正される。
【0104】
部分的なページ再生成器は、このようなメッセージリスト610を作成するために、構造内の株価の例を模倣する可能性がある。部分的なページ再生成器は、メッセージ数を判定し、各メッセージのためのページ部分(例えば、html)を出力するループを実行する。
【0105】
このような電子メールアプリケーションは、より複雑なインターフェース、例えば、電子メールを「ツリー構造」635内に含む利用可能なリスト一覧(listing)フォルダーによって増大され得る。部分的なページ再生成器は、各「フォルダー」に対して一つのフラグメントを実行することによって、この構造635を作成し、閉じられたフォルダーを表示するか、または、開いたフォルダーを表示するかのいずれかを行い、そして、フォルダーのコンテンツを表示するために同じフラグメントを再帰的に呼び出す。生成された出力が、フォルダーが選択された(すなわち、開かれたまたは閉じられた)ときにサーバノード210を知らせる各フォルダーのための「オンクリック(onClick)」イベントを含む場合、ページ608は、ユーザがそれを選択した後のフォルダーの新しい状態を示すように自動的に更新される。
【0106】
(均等物)
本発明は、精神または必須の特徴から逸脱することなく他の特定の形態において具体化され得る。したがって、上記の実施形態は、すべての観点で、本明細書において記載された本発明に制限するのではなく、例示であることが考慮されるできである。このため、本発明の範囲は、上記の説明によってではなく添付された特許請求の範囲によって示され、特許請求の範囲の意味および均等物の範囲内のすべての変更が、本発明に含まれることが意図される。
【0107】
(付表1)
ページへの更新を検索および表示し得るHTMLページにプレーヤーを追加する作用例である。この実証が、Internet Explorer 5.0とともに作用する。
【0108】
ここに示されるのは、オリジナルのページであり、クライアントプレーヤー(送受信機230およびディスプレイ変更器245)を用いて増大される。これは、灰色およびu1とラベル付けされて示される。ページは、さらに、すぐに更新を得てロードされる(これは、単純化である)ように修正される。これは、灰色およびu2でラベル付けされて示される。
【0109】
【数1】
以下のコードは、「player.js」のコンテンツであり、オリジナルのページに追加される。これは、非常に簡略化されたクライアントプレーヤ(送受信機230およびディスプレイ変更器245)であり、簡単な「割当て」動作のみを行い得る。このことの動作は、以下のようである。
【0110】
更新が要求された場合、更新を含むページの位置、または更新を含むページを生成するサーバが均一なリソースロケータ(URL)として供給される。これは、「getUpdates」機能に通される。この機能は、サーバへの通信チャネルとして用いられる隠れたサブページ(フレーム)を作成する。
【0111】
サーバがURLリクエストを受け取る場合、サーバは、HTMLページ(例えば、所与の文字)として符号化された更新のセットを供給することによって応答する。ロードされた場合、更新のこのページは、順番に更新をオリジナルのページに付与する「doUpdate」法を呼び出す。
【0112】
【数2】
以下は、例となる更新ページである。このページは、通常、サーバノード(210)によって動的に作成される。
【0113】
【数3】
【図面の簡単な説明】
【図1】
図1は、従来技術で公知のクライアント/サーバネットワークの図である。
【図2a】
図2aは、本発明の原理を具現化する例示的なクライアント/サーバネットワークの図である。
【図2b】
図2bは、ページ生成コードのフラグメントと生成されたページポーションとの間の対応、および、ページ生成コードのフラグメントと格納デバイスに格納されたデータとの間の対応とを示す本発明の実施形態のブロック図である。
【図3a】
図3aは、サーブレットページ生成コードのフラグメントのブロック図である。
【図3b】
図3bは、本発明に従う、個々のフラグメントの実行を制御するために、さらなるコードによって強化されたサーブレットページ生成コードのフラグメントのブロック図である。
【図4a】
図4aは、CGIページ生成コードのフラグメントのブロック図である。
【図4b】
図4bは、本発明に従う、個々のフラグメントの実行を制御するさらなるコードによって強化されたCGIページ生成コードのフラグメントのブロック図である。
【図4c】
図4cは、二つのプロキシを用いるラッピングの方法のブロック図である。
【図5a】
図5aは、本発明に従う、サーブレットページ生成コードの強化されたフラグメントの実行シーケンスのブロック図である。
【図5b】
図5bは、本発明に従うページポーションを識別する識別タグを有する、生成されたページ、および、関連する修正リストに対するHTMLコードの例示的な出力である。
【図6】
図6は、本発明に従う、ページ記述モデル、および、ページ生成コードのフラグメントと生成されたページポーションとの間の対応のブロック図である。
【図7】
図7は、本発明に従う、フラグメント、データおよびページポーションの間の対応のマップに対する一般的なデータ構造の例のブロック図である。
【図8】
図8は、本発明に従う、フラグメント、データおよびページポーションの間の対応のマップの例のブロック図である。
【図9】
図9は、本発明に従う、データが変更するときの修正リストを生成する例のフロー図である。
【図10】
図10は、本発明に従う、修正リストを用いての組み込み更新の例のフロー図である。
【図11】
図11(a)〜(d)は、本発明に従う、新しいページポーションを現在表示されているページに挿入するプロセスの例のブロック図である。
【図12】
図12は、本発明に従う、eメールページへの組み込み更新の例のスクリーンショットである。
(発明の分野)
本発明は、概して、表示用のクライアントに送られたページを更新する装置および方法に関する。より詳細には、本発明は、クライアントに送られたページの変更箇所を再生成および再伝送する装置および方法に関する。
【0002】
(発明の背景)
コンピュータ通信ネットワークは、一般的に、サーバと呼ばれる一つ以上のノード、および、クライアントと名付けられた一つ以上のノードを含む。サーバは、クライアントからの要求を受け取ると、サービスをクライアントに提供する。図1は、ネットワーク10が提供し得るサービスの例を示す。クライアント14は、通信チャネル20を用いてサーバ22と通信する。クライアント14は、そのウェブブラウザを介して、ウェブページ26用のサーバ22に要求を伝送する(矢印18)。サーバ22は、全てのページ生成コード30を実行して(矢印34)、完全なウェブページ26を生成し、クライアント14上の表示(矢印42)用のウェブページ26を伝送する(矢印38)。生成されたページ26は、このポイントにおいて、サーバ側のデータ50の状態のスナップショット(snapshot)を表す。ここで、ページ生成コード30が実行された(矢印34)。
【0003】
例えば、特定の株式の株価のリストを含むために、ページ生成コード30は、ページ26を生成することを考える。サーバ22は、この時点で、サーバ格納バッファ54に格納され、または、サーバ22によって受け取られた(矢印58)データ50(すなわち、株価)を検索する(矢印46)。ここで、または、これ以前において、プログラムは実行されている(矢印34)。サーバは、生成されたページ26全体を伝送し(矢印38)、クライアントは、生成されたページ26全体を表示する(矢印42)。ページ26は、クライアント14がページ26のリフレッシュを要求する(矢印18)までクライアント14に表示されたままである(すなわち、リフレッシュを要求すると、サーバ側データ50の状態のスナップショットを有するページ26が別に伝送される)。このような要求(矢印18)とともに、サーバ22は、ページ生成コード30を再び実行して(矢印34)、新しく生成されたページ26をクライアント14に伝送する(矢印38)。
【0004】
いくつかのシステムは、定期的に更新し得る。この更新では、クライアントは、特定された時間周期毎にページ26のリフレッシュを要求する(矢印18)。ページ生成コード30の全てを再実行すると(矢印34)、サーバ22は、別の完全なページ26を生成する。再び、ページ26は、このポイントにおいて、サーバ側データ50の状態のスナップショットを表す。このポイントにおいて、サーバ22は、ページ生成コード30の全てを再実行する(矢印34)。生成されたページ26のデータ50(例えば、株価)は、以前の期間と同じものであり得、従って、ページ生成コード30を実行して(矢印34)、不必要にページ26を伝送する(矢印38)。たとえデータが変更するときでも、ページ26の大部分は、静的要素であり、変更されない。
【0005】
手動でも、定期的な更新でも、データ50が変更するときにユーザに適宜データ50を知らせ続けることはない。更新は、データ50における変更にほとんど関係がない(例えば、データは変更されないが、ページ26は伝送され得る)。この更新は、ネットワーク通信チャネルリソース、クライアントリソースおよびサーバリソースを不必要に用いる。
【0006】
(発明の要旨)
本発明は、ページの一部を再生成する方法および装置に関する。このページは、それらの一部のみを変更して、かつ、表示用のクライアントへ伝送する。ページ生成コードに必要なパートのみを実行して、かつ、クライアントに変更のみを伝送することにより、ネットワーク通信チャネルのリソース、クライアントノードおよびサーバノードを用いる効率が改善される。要求されたとき、データが変更するときのみにこれらの操作を実施することにより、さらに使用効率を改善する。また、本発明は、それらを再使用することによって、クライアント上に既にあるページの任意のポーションを利用する。従って、これらの再使用可能なポーションを再生成する、または、伝送する必要はない。
【0007】
一局面において、本発明は、部分的なページ再生成に関するページ生成コードを強化する方法に関する。この方法は、ページを生成するページ生成コードを受け取るステップと、ページ生成コードの一つ以上のフラグメントを識別するステップとを包含して、各フラグメントは、フラグメントが実行されるときに、ページに対応するポーションを生成する。この方法は、ページ生成コードによって操作し、部分的なページ再生成のための各フラグメントの実行を制御するさらなるコードを提供するステップをさらに包含する。
【0008】
一実施形態において、識別するステップは、ページ生成コードのプロセスを少なくとも一つの所定の基準と比較して、このプロセスがフラグメントとして適格かどうかを判定するステップを包含する。別の実施形態において、所定の基準は、ページ生成コードのプロセスがグローバル変数を修正しないことを要求する。別の実施形態において、所定の基準は、ページ生成コードのプロセスが、別のフラグメントが依存するデータを修正しないことを要求する。別の実施形態において、所定の基準は、ページ生成コードのプロセスが所定のプロセス署名を有することを要求する。別の実施形態において、所定の方法の署名は、プロセスにおける戻り値の型が文字列であることを要求する。
【0009】
別の実施形態において、提供されたさらなるコードは、ページ生成コードを表す全体のクラスに固有に関連するさらなるプロセスを含む。別の実施形態において、提供されたさらなるコードは、識別されたフラグメントへの呼出しを妨害する各識別されたフラグメントに固有に関連するさらなるプロセスを含む。別の実施形態において、提供されたさらなるコードは、識別されたフラグメントが依存するデータを検索するプロセスに固有に関連するさらなるプロセスを含む。別の実施形態において、識別されたフラグメントが依存するデータを検索するプロセスは、JAVA(登録商標)ビーン(bean)である。
【0010】
別の局面において、本発明は、部分的なページ再生成のためのページ生成コードを強化するためのサーバに関する。このサーバは、ページを生成するページ生成コードを受け取るための外部ページコードソースと通信する部分的ページ再生成器を含む。部分的ページ再生成器は、ページ生成コードの一つ以上のフラグメントを識別する。各フラグメントは、実行されるとき、ページの対応するポーションを生成する。この部分的ページ再生成器は、ページ生成コードによって動作して、部分的ページ再生成のために各フラグメントの実行を制御するさらなるコードを提供する。
【0011】
別の実施形態において、部分的ページ再生成器は、プロセスがフラグメントであるかどうかを判定するためにページ生成コードのプロセスを少なくとも一つの所定の基準と比較する。別の実施形態において、所定の基準は、ページ生成コードのプロセスがグローバル変数を修正しないことを要求する。別の実施形態において、所定の基準は、ページ生成コードのプロセスが別のフラグメントが依存するデータを修正しないことを要求する。別の実施形態において、所定の基準は、ページ生成コードのプロセスが所定のプロセス署名を有することを要求する。別の実施形態において、所定の方法の署名がプロセスにおける戻り値の型が文字列であることを要求する。
【0012】
別の実施形態において、部分的ページ再生成器は、ページ生成コードが表す全体のクラスと固有に関連するさらなるコードを提供する。別の実施形態において、部分的ページ再生成器は、識別されたフラグメントへの呼出を妨害する各識別されたフラグメントと固有に関連するさらなるプロセスを含むさらなるコードを提供する。別の実施形態において、部分的ページ再生成器は、識別されたフラグメントが依存するデータを検索するプロセスと固有に関連するさらなるプロセスを含むさらなるコードを提供する。別の実施形態において、識別されたフラグメントが依存するデータを検索するプロセスは、JAVA(登録商標)ビーンである。
【0013】
上記のおよび他の目的、本発明の機能および利点、ならびに、本発明自体は、添付の図面とともに読まれ、以下の好ましい実施形態の説明からより完全に理解される。
【0014】
(好ましい実施形態の詳細な説明)
(1.0 部分的ページ再生成システム)
概観すると、図2aは、ネットワーク215を介して第2の計算システム(「サーバノード」)210と通信する第1の計算システム(「クライアントノード」)205を含む部分的ページ再生成システム200の例示的な実施形態を示す。例えば、ネットワーク215は、会社のイントラネットのようなのローカルエリアネットワーク(LAN)、または、インターネットまたはワールドワイドウェブのようなワイドエリアネットワーク(WAN)であり得る。クライアントノード205のユーザは、標準電話回線、LANまたはWANリンク(例えば、T1、T3、56kb、X.25)、ブロードバンド接続(ISDN、フレームリレー、ATM)および無線接続を含む様々な接続を通してネットワーク215に接続され得る。クライアントノード205は、クライアント送受信器230を含み、ネットワーク215との通信を構築する。サーバノード210は、サーバ送受信器235を含み、ネットワーク215との通信を構築する。接続は、様々な通信プロトコル(例えば、HTTP TCP/IP、IPX、SPX、NetBIOS、Ethernet(登録商標)、RS232、および、直接非同期接続)を用いて構築され得る。
【0015】
クライアントノード205は、アプリケーションまたはウェブページにユーザインタフェース(例えば、ウェブブラウザ)、あるいは、サーバノード210を介して格納されたまたはアクセスされた現在のデータを提供するために用いられる任意の計算デバイス(例えば、パーソナルコンピュータ、セットトップボックス、電話、ハンドヘルドデバイス、キオスク(kiosk)等)であり得る。クライアントノード205は、ディスプレイ220、格納バッファ225、クライアント送受信器230およびディスプレイ変更器245を含む。ディスプレイ変更器245は、ウェブページ240の更新のためにサーバノード210に要求を伝送するためにクライアント送受信器230と通信する。ディスプレイ変更器245は、また、ウェブページ240クライアント送受信器230を通してサーバノード210から送られたウェブページ240、または、ウェブページ240のポーションを受け取る。ディスプレイ変更器245は、ウェブページ240を表示するために、または、ウェブページ240の受信され、更新されたポーションを現在表示されているウェブページ240内に組み込むためにディスプレイ220と通信する。ディスプレイ変更器245は、ウェブページ240の受信され、更新されたポーションの組み込みのための必要とされたウェブページデータを一時的に格納するために格納バッファ225と通信する。格納バッファ225は、持続的、および/または、揮発性格納装置を含み得る。
【0016】
サーバノード210および210’は、クライアントノード205の要求されたサービスを提供可能な任意の計算デバイス、特に、伝送されたウェブページ240のポーションを生成かつ伝送可能な任意の計算デバイスであり得る。図2aにおいて示されるよりもより多い、または、より少ないサーバがネットワーク215に接続され得ることは、理解されるべきである。一実施形態において、サーバノード210および210’は、二つの分離した計算デバイスである。別の実施形態において、サーバノード210および210’は、単一の計算デバイスである。どちらの実施も、本発明の原理の実施に等価であり、従って、サーバノード210に対する参照符号は、これ以後、ある構成、または、別の等価の構成のいずれかを表す。
【0017】
サーバノード210は、サーバ送受信器235、部分的ページ再生成器250、ページ生成コード30、格納バッファ54およびデータ変換モニタ255を含む。サーバノード210は、任意のソースからページ生成コード30を受け取り得る。一実施形態において、ページ生成コード30は、部分的ページ再生成器250が常駐する物理デバイス(例えば、サーバノード210)と通信する別の物理デバイス上にあり得る。別の実施形態において、ソースは、ページ生成コード30を作成し、かつ、クライアントノード205からの要求を収容するサーバノード210上にコード30を格納するプログラマであり得る。ページ生成コード30は、サーバノード210がウェブページ240を生成するために用いる任意の言語で、および、任意のフォーマットで書かれ得る。ページ生成コード30のためのフォーマットの例は、サーブレット、JAVA(登録商標) Server Page(「JSP」)、Active Server Page(「ASP」)、テンプレート言語、および/または、Common Gateway Interface(「CGI」)Scriptを含む。
【0018】
ページ再生成システム200の動作中に、サーバノード210は、ウェブページ240(または、ウェブページ240のポーション)が最後にクライアントノード205に伝送されてから変更した現在表示されているウェブページ240のポーションのみを生成して、クライアントノード205に伝送する。クライアントノード205は、これらのページポーションを現在表示されているページ240に組み込む。
【0019】
(1.1 ページ生成コードのページおよびフラグメントのポーション)
図2bで示されているように、ウェブページ240は、複数のページポーション260a、260b、260c、260d、260e、および、260f(概して、260と呼ぶ)を含む。ページ生成コード30は、複数のコードフラグメント265a、265b、265c、265d(概して、265と呼ぶ)を含む。図2bは、ウェブページ240のページポーション260a、260b、260c、260d、260e、260fと、対応するページポーション260を生成するページ生成コード30のコードフラグメント265a、265b、265c、265dとの間の対応の例を示す。ウェブページ240、次いで、ページポーション260のフォーマットの例は、HTML、XML、VRML、WML、(ディスプレイ)ポストスクリプトおよびnroffを含む。各コードフラグメント265は、一つ以上のページポーション260を生成する。例えば、図2bで示されているように、コードフラグメント265dは、ページポーション260c、260eおよび260fを生成する。
【0020】
図2bは、また、ページ生成コード30のコードフラグメント265と、コードフラグメント265が依存する、対応するデータ50a、50b、50c、50d(概して、50と呼ぶ)との間の対応の例を示す。言い換えると、コードフラグメント265が依存するデータ50は、対応するページポーション260を生成するためにコードフラグメント265が用いるデータ50である。示された実施形態が一つのフラグメント(例えば、265a)に対する一つのデータ要素(例えば、50a)を有するが、この関係は変化し得る。例えば、一つのコードフラグメントは、数個のデータ要素に依存し得、一つのデータ要素は、そのデータ要素に依存する多くのコードフラグメントを有し得る。
【0021】
図2aに戻って参照すると、部分的ページ再生成器250は、ウェブページ240をリフレッシュするためにクライアントノード205からの要求を受け取るためにサーバ送受信器235と通信する。部分的ページ再生成器250は、クライアントノード205への伝送のためにこのような要求に応答して、ウェブページ240、または、ウェブページ240ポーション260をサーバ送受信器235に伝送する。部分的ページ再生成器250は、ウェブページ240の対応するページのポーション260を作成するページ生成コード30のコードフラグメント265を実行するためにページ生成コード30と通信する。部分的ページ再生成器250は、また、対応するページポーション260を生成するためにコードフラグメント265が用いる格納バッファ54のデータ50を判定する。部分的ページ再生成器250は、データ変更モニタ255と通信して、コードフラグメント265が依存する格納バッファ54のデータ50の任意の変更の通知を受け取る。
【0022】
(1.2 コードフラグメントの識別)
部分的ページ再生成器250は、ページ生成コード30のコードフラグメント265を識別する。コードフラグメント265を識別するために、部分的ページ再生成器250は、一つ以上の基準に適合するプロセス(例えば、オブジェクト指向言語の方法、サブルーチン、関数)を識別する。例えば、一実施形態において、基準は、コードフラグメント265(例えば、プロセス)が冪等元であり、冪等を提供することである。つまり、コードフラグメント265は、コードフラグメント265が同じ引数、および、同じ依存データ50によって呼び出される毎に一致する結果を作製する。言い換えると、コードフラグメント265が実行されるときに、他のコードフラグメントへの呼出し結果を変更する(例えば、グローバルカウンタの更新がない)副作用、または、依存データ50を変更する副作用はない。
【0023】
冪等プロパティによって、部分的ページ再生成器250は、コードフラグメントを再び呼び出すのではなく、コードフラグメントによって生成され、以前にキャッシュされた出力を、同じコードフラグメントによって生成された別のページポーションと交換する。例えば、図2bの実施形態に示されたように、コードフラグメント265dは、ページポーション260cを生成する。コードフラグメント265dを2回以上実行する代わりに、ページポーション260eおよび260fは、ポーション260cを複製することによって単に生成され得る。なぜなら、フラグメントの265dのプロパティが同じ引数で呼び出される毎に、フラグメント265dが同じ出力を作製するようなフラグメント265dのプロパティであるためである。
【0024】
部分的ページ再生成器250は、例えば、プロセスが変更する任意のグローバル変数をプロセスが含まないことを検証することによって、ページ生成コード30のプロセス(例えば、オブジェクト指向言語の方法、サブルーチン、関数)がこの基準に適合していることを判定する。プロセスが基準に適合する場合、部分的ページ再生成器250は、部分的ページ再生成器250が生成する対応のマップ300(図7)のコードフラグメント265としてプロセスを識別する。
【0025】
例えば、別の実施形態は、プロセス(例えば、オブジェクト指向言語の方法、サブルーチン、関数)がウェブページ240の一つ以上のページポーション260を定義する出力(例えば、HTMLコード)を生成するという基準を用いる。部分的ページ再生成器250は、例えば、プロセスが特定の戻り値の型(例えば、ストリングを返す)を含むことを検証することによって、プロセスがこの基準に適合することを判定する。他の実施形態において、部分的ページ再生成器250は、プロセスが予め定義された特定の命名の慣例(例えば、called fragment_x)、および/または、予め定義されたプロセスへの特定の注釈(例えば、#define foo_is_a_fragment)に続く。特定のフォーマット(例えば、JSP)において、ピース(piece)が生成するページポーション240に対するコードのピース30に適合する、埋め込まれたタグが存在し得る。これらのフォーマットにおいて、タグは、コードフラグメント265を識別するように用いられ得る。他の実施形態において、部分的ページ再生成器250は、プロセスが他の特定のさらなる属性(動作時間(すなわち、ページ生成コード30が実行されているとき)に部分的ページ再生成器250に提供されるプロセス名のリストに含まれている等)を含むことを検証する。
【0026】
一実施形態において、部分的ページ再生成器250は、標準JAVA(登録商標)技術「イントロスペクション(introspection)」を用いてページ生成コード30を検査する。部分的ページ再生成器250がページ生成コード30をデコンパイルする必要がない、または、ページ生成コード30へのソースアクセスを有する必要がないことが利点である。これにより、部分的ページ再生成器250は、ページ生成コード30のソースアクセスへの制限(例えば、物理的な制限、または、ライセンスの制限)にかかわらず、任意のページ生成コード30によって動作することが可能になる。
【0027】
(1.3 さらなるコードを用いたコードフラグメントのラッピング)
コードフラグメント265を識別した後、部分的ページ再生成器250は、ページ生成コード30の他の部分から個別にそしてこの部分から独立してコードフラグメント265を実行する能力を必要とする。その全体において実行されるページ生成コード30が書き込まれるため、部分的ページ再生成器260は、ページ生成コード30に関連するさらなるコードを生成しなければならず、コードフラグメントの実行を選択的に制御する。このように制御することによって、部分的ページ再生成器250は、ページ生成コード30を強化してコードフラグメント265のそれぞれの個別の実行および独立した実行を可能にする。
【0028】
一実施形態では、さらなるコードは、さらなるコードが強化しているコードフラグメント265として同じ名前を選択する。同じ名前を選択することによって、
さらなるコードは部分ページ生成コード30のコードフラグメント265の代わりに呼び出され、実行される。さらなるコードが同一の名前を有するページ生成コード30のコードフラグメント265が連続的に呼び出され、実行されるかどうかを制御する。この制御はページ生成コード30のコードフラグメント265の選択的な実行を可能とする。
【0029】
(1.3.1 ラッピング−サーブレットフォーマットの例)
図3aは、サーブレットフォーマットおよび複数のコードフラグメント265a’、265b’、265c’を有するページ生成コード30’の実施形態を示す。「main」として識別されたコードフラグメント265a’は、ウエブページ240のヘッダー情報およびスタティック情報の全てを表す。「do table」として識別されたコードフラグメント265b’は、ウエブページ240上にテーブルを生成するページ生成コード30’の一部(例えばプロセス、方法)を表す。「do Share」として識別されたコードフラグメント265c’は、テーブルの個々のエレメントを作成するプロセスを表す。
【0030】
図3bは、時にはコードラッピングと呼ばれるさらなるコード270b、270c(概して270)の追加を示し、それぞれラッピングされたコードフラグメント268b’、268c’を作成する。ラッピングされたコードフラグメント268b’、268c’は、ラッピングされたコードフラグメント268b’、268c’内部に封入されたコードフラグメント265b’、265c’と共に示される。一実施形態では、図3bに示されたようにコードラッピング270b’、270c’は、論理接続のみを表す。言い換えれば、さらなるコード270b’、270c’は、ページ生成コード30’に配置されるのではなく、サーバノード210上の異なる領域に配置される。図3aに示されるように、この実施形態では、コードフラグメント265b’、265c’のみがページ生成コード30’内部に物理的に配置される。
【0031】
一実施形態では、さらなるコード270を生成するために、部分的ページ再生成器250は、イントロスペクション(introspection)を使用することによってクラスファイルとしてページ生成コード30を検査する。次いで部分的ページ再生成器250は、オリジナルページ生成コード30のサブクラスとして定義されたさらなるコード270を含むさらなるJAVA(R)ファイルを生成する。コンパイルされた場合、さらなるJAVA(R)ファイルはオリジナルのページ生成コード30のサブクラスとなる。別の実施形態では、部分的ページ再生成器250は、クラスファイルを直接生成する。別の実施形態では、部分的ページ生成コード30が実行される場合、部分的ページ再生成器250はコードラッピングを実行し、メモリに格納されるクラスオブジェクトを生成する。
【0032】
図3bに示された実施形態では、コードフラグメント265b’および265c’は、同様にさらなるコード270b’、270c’を用いてラッピングされている。さらなるコード270b’、270c’は、コードフラグメント265b’、265c’が既に同じ引数を用いて実行されたかどうかを決定する。コードフラグメント265b’、265c’が実行され、これによりコードフラグメントが複数のページポーションを生成することを示す場合、さらなるコード270b’、270c’が、以前に生成されたページポーションをこの複製ページポーションにコピーするコマンドを発行する。コードフラグメント265b’、265c’が実行されない場合、さらなるコード270b’、270c’は、実行のためにコードフラグメント(例えば265b’、265c’)を呼び出す。
【0033】
さらなるコード270b’、270c’では、「開始」、「終了」、「コピー先」命令の後に用いられる用語「x」は、部分的なページ再生成器250によって使用される識別タグを表し、各生成されたページポーション260を識別する。用語「mod list」は、生成されたページポーション260を有するクライアントノード205に送信される修正リストを表す。修正リストは、ページポーション260を現在表示されているページ240にどのようにして組み込むかについてクライアントノード205に命令するコマンドを含む。
【0034】
図3bの図示された実施形態では、コードフラグメント「main」265a’がラッピングされない。ページ240の初期伝送の後、ヘッダーおよびスタティック情報は変化せず、コードフラグメント265a’は、再度実行されない。その結果、さらなるコード270は、「main」コードフラグメント265a’のために必要とされない。「do table」コードフラグメント265b’および「do Share」コードフラグメント265c’によって示されるように、変更できるページ240のページポーション260の全ては、ページ240の「body」に配置される。
【0035】
別の実施形態では、ページ生成コード30が本体ページポーションを含まない場合、「main」コードフラグメント265a’は、他のラッピングされたコードフラグメント268b’、268c’と同様のさらなるコード(図示されない)を含む。さらなるコード(図示されない)は、「main」コードフラグメント265a’の「body」部分のための識別タグを提供する。初期実行はページ240を生成するように必要なヘッダー情報およびスタティックデータの全てを提供する。「main」コードフラグメント265a’が依存するデータが変化する場合、「main」コードフラグメント265a’の以後の実行が行われる。この再実行の出力がスキャンされ、「body」部分のコンテンツは棄てられたも同然である。次いで「main」コードフラグメント265a’は、任意の他のコードフラグメントのように処理され得る。
【0036】
(1.3.2 ラッピング−CGIフォーマットの例)
図4aはCGIファオーマットおよび識別されたコードフラグメント265a’’、265b’’、および265c’’を有するページ生成コード30’’の実施形態を示す。CGIフォーマットでは、コードフラグメント265a’’、265b’’、265c’’のそれぞれは個々のスクリプトを表す。図4bに示されるように、さらなるコード270a’’の機能性はサーブレットフォーマットのさらなるコード270b’、270c’の機能性と同様であるが、インプレメンテーションがサーブレットフォーマットのインプリメンテーションとは異なる。さらなるコード270a’’は、CGIインタープリタ275をラッピングして個々のコードフラグメント265a’’、265b’’、265c’’自体をラッピングするのではなくラッピングされたCGIインタープリタ268a’’を生成する。各コードフラグメント265a’’、265b’’、265c’’(すなわち、スクリプト)が呼び出された場合、さらなるコード270a’’がその呼び出しを妨害する。
【0037】
別の実施形態では、単一のスクリプト(例えばページ生成コード30’’)が存在し、コードフラグメント265a’’、265b’’、265c’’が個々のスクリプトではなく、そのスクリプト(例えば30’’)のサブルーチンを表す。本実施形態では、CGIインタープリタ275は、ラッピングされずにさらなるコード270a’’を用いて修正され、その結果、スクリプトのサブルーチン(例えば、コードフラグメント265a’’、265b’’、265c’’)を呼び出すための呼び出しが妨害される。
【0038】
(1.3.3 データを取り出すJAVA(R)ビーンのラッピング)
ページ生成コード30の他の部分から個別にそしてこの部分から独立してコードフラグメント265を実行することに加えて、部分ページ発生器250は、さらにコードフラグメント250が依存するデータ50へのアクセスを妨害する必要があり得る。典型的にはこれはデータアクセスオブジェトを介してアクセスされる。図4cは、JAVA(R)がインプリメンテーションのために使用される例示的実施形態を示す。この実施形態では、典型的にはデータ50は、1つ以上のJava(R)ビーン100を介してアクセスされる。JAVA(R)ビーン100自体は、ページ生成コード30から論理的に分離され、データ50へのアクセスを管理することに対して責任があるのみである。ビーン100は、ページ240を生成する出力を直接生成しないため、考慮されたコードフラグメント265ではない。
【0039】
データ50へのアクセスを妨害および制御するために、部分的ページ再生成器250は、さらなるコード(図示しない)を用いてデータ50を取り出すJAVA(R)ビーン100をラッピングする。各JAVA(R)ビーン100はクラスファイルであり、その結果部分的ページ再生成器250は、JAVA(R)ビーン100のためのラッパークラス(例えばプロキシ)を生成する。部分的ページ再生成器250は、例えば名前付けの規約に整合するプロセスを検索することによってデータ50を取り出すこれらのプロセス(例えば、オブジェクト指向言語の方法、サブルーチン)を識別する。
【0040】
例えば、JAVA(R)ビーンに対して、名前付け規約は、以下のようである。
【0041】
void set<propertyname>(Object)
Object get<propertyname>()
etc.
上述と同様に、JAVA(R)ビーン100のためのラッパークラス(例えば、プロキシ)を生成する利点は、ランタイムの間であっても、JAVA(R)ビーンコード100が修正されていないままであることである。一実施形態では、部分的ページ再生成器250は、2つのプロキシ105、110を生成することによってJAVA(R)ビーンのためのさらなるコードを生成する。2つのプロキシの生成が必要であるのは、ページ生成コード30によって呼び出されたプロキシ105がデータアクセスビーン100の元のプロセスの元の名前を有し、その結果、プロキシ105は、元のプロセスの代わりに呼び出され(矢印125)元のプロセスの妨害を可能にするためである。しかし、プロキシ105が同一の名前を有する元のプロセス100を呼び出す場合、JAVA(R)クラスローダ(classloader)は、プロキシ105を呼び出す(矢印130)ことによってこれを誤って決定する。
【0042】
部分的ページ再生成器250は、第2のプロキシ110を呼び出す第1のプロキシ105を生成し、第2のプロキシ110は、異なる、調停の任意の名前を有する。第2のプロキシ110が呼び出され、次いでオリジナルのプロセス100を呼び出す。第2のプロキシ110およびJAVA(R)ビーン100が第1のプロキシ105およびページ生成コード30とは異なる名前空間において存在するように構成することによって、2つのプロキシ105、110および2つの名前空間を用いて2つの名前規約は、複製名前付け規約を可能にする。第2の名前空間は第2のJava(R)クラスローダを用いて達成され得る。データ50を取り出すJAVA(R)ビーン100のための技術として説明されたが、この2つのプロキシ技術がJAVA(R)ビーンではないJAVA(R)データアクセスオブジェクトに適用可能である。例えば、Bがクラスの名前によってAを参照せず、B〜Aの全ての(名前付けされていない)参照もまたプロキシによって妨害される場合、この技術がコードAの一部とコードBの一部との間のアクセスを妨害するために使用され得る。
【0043】
(1.3.4 ラッピング−選択された実行および生成された出力の例)
図5aは、コードフラグメント265a’、265b’、265c’およびさらなるコード270b’、270c’の部分的ページ再生成器250による実行(矢印280)のフローを示す。図5bは、部分的ページ再生成器250が生成するアイテムを示す。第1の生成されたアイテムはページ240のページポーション260の出力283であり、HTMLコードとして示される。第2の生成されたアイテムが修正リスト(「mod list」)284である。一実施形態では、2つのアイテムが同時に生成される。出力283の左側の文字は部分的ページ再生成器250によって生成されないが、むしろHTMLコードの特定のラインを生成する図5aのコードフラグメント(ラッピングまたはラッピングされていない)を示すために使用される。
【0044】
以下の実行のフロー(図5aの矢印280)に従って、第1の「main」コードフラグメント265a’が実行される。最初に「main」コードフラグメント265a’は、空のページ(例えば、HTMLページの本体部のコンテンツがない)を作成し、「0」の識別タグを使用して、修正可能なページポーション260を含むページ240の部分を識別する。「main」コードフラグメント265a’はまた、修正リスト284の割り当てコマンド285aを生成する。この割り当てコマンドは、識別タグ「1」のコンテンツを識別タグ「0」を有する部分に割り当てる(例えば、割り当てコマンドの説明についての以下の表1を参照のこと)。
【0045】
「main」コードフラグメント265a’は、「do Table」コードフラグメント265b’を呼び出す。この「do Table」コードフラグメント265b’は、さらなるコード270b’でラッピングされるため、さらなるコード270b’は呼び出しを妨害し、実行を開始する。さらなるコード270b’は、識別タグ「1」を生成し、さらなるコード270b’のコードフラグメントが生成するページポーションの開始を識別する。さらなるコード270b’は、識別タグのためのHTMLスパンタグ290aを生成し、さらなるコード270b’が生成するページポーションの開始を構築する。さらなるコード270b’は、エンドスパンタグ295aを生成して、一旦さらなるコード270b’の実行が終了すると、「1」として識別されたページポーションの末端を識別する。対応300のマップ(図7)を用いて、さらなるコード270b’は、「do Table」コードフラグメント265b’がまだ実行されておらず、実行のためのページ生成コード30’の「do Table」コードフラグメント265b’を呼び出すことを決定する。
【0046】
ページ生成コード30の「do table」コードフラグメント265b’の命令セット(図示されない)の実行の間に、「do table」コードフラグメント265b’は、HTML出力283およびHTMLコードに<table>タグを生成し、「Name」および「Price」テーブルデータセルを有するヘッダーロウを生成する。「do Table」コードフラグメント265b’は、格納バッファ54から入力データ298(例えば、株を共有するためのチッカーシンボル)を受信する。
【0047】
入力データ298に応答して、「do Table」コードフラグメント265b’は、入力データ298の各チッカーシンボルのためのページ生成コード30’の「do Share」コードフラグメント265c’を呼び出す。データ「ABCC」の第1のデータ部に対して、「do Table」コードフラグメント265b’は、「do Share」コードフラグメント265c’を呼び出す。「do Share」コードフラグメント265c’がさらなるコード270c’でラッピングされるため、さらなるコード270c’は、呼び出しを妨害し、実行を開始する。さらなるコード270c’は、識別タグ「2」を作成し、ページ240の部分260の開始を識別する。さらなるコード270c’は、「do Share」コードフラグメント265c’が入力データ「ABCC」の部分によって呼び出されたとき初めてページ240の部分260の開始を生成する。
【0048】
さらなるコード270c’は、HTMLスパンタグ290bを生成して、さらなるコード270c’が生成するページポーションの開始を構築する。さらなるコード270c’は、「do Share」コードフラグメント265c’が引数「ABCC」によってまだ実行されておらず、実行のためのページ生成コード30’の「do Share」コードフラグメント265c’を呼び出すことを決定する。ページ生成コード30の「do Share」コードフラグメント265c’の命令セット(図示されない)の実行の間に、「do Share」コードフラグメント265c’は、テーブルデータセル「ABCCorp.」および「99.9」を有するテーブルのロウを生成する。入力データ298の部分を処理するページポーションに関連する「do Share」コードフラグメント265c’の実行が終了するため、さらなるコード270c’は、HTMLコードにエンドスパンタグ295bを生成し、さらなるコード270c’のフラグメントによって作成された末端部分を構築する。実行は「do table」コードフラグメント265b’に戻る。
【0049】
データ「XYZC」の次の部分に対して、「do table」コードフラグメント265b’は、「do Share」コードフラグメント265c’を再度呼び出す。「do Share」コードフラグメント265c’は、さらなるコード270c’でラッピングされるため、さらなるコード270c’は、実行を呼び出しを妨害し、実行を開始する。さらなるコード270c’は、識別タグ「3」を作成し、ページポーションの開始を識別する。さらなるコード270c’のコードフラグメントは、「do Share」コードフラグメント265c’が入力データ「XYZC」の部分によって呼び出されたとき初めてページポーションの開始を生成する。さらなるコード270c’は、HTMLスパンタグ290cを生成して、さらなるコード270c’が生成するページポーションの開始を構築する。さらなるコード270c’は、「do Share」コードフラグメント265c’が引数「XYZC」によってまだ実行されておらず、実行のための「do Share」コードフラグメント265c’を呼び出すことを決定する。ページ生成コード30の「do Share」コードフラグメント265c’の命令セット(図示されない)の実行の間に、「do Share」コードフラグメント265c’は、テーブルデータセル「XYZCorp.」および「1.2」を有するテーブルのロウを生成する。入力データ298の部分を処理するページポーションに関連する「do Share」コードフラグメント265c’の実行が終了するため、さらなるコード270c’は、エンドスパンタグ295cを生成し、さらなるコード270c’のコードフラグメントによって作成された末端部分を構築する。実行は「do table」コードフラグメント265b’に戻る。
【0050】
データ「ABCC」の次の部分に対して、「do table」コードフラグメント265b’は、「do Share」コードフラグメント265c’を呼び出す。「do Share」コードフラグメント265c’は、さらなるコード270c’でラッピングされるため、さらなるコード270c’は、実行を呼び出しを妨害し、実行を開始する。さらなるコード270c’は、識別タグ「4」を作成し、ページポーションの開始を識別する。さらなるコード270c’のコードフラグメントは、二度目に「do Share」コードフラグメント265c’が入力データ「ABCC」の部分によって呼び出されたときにページポーションの開始を生成する。さらなるコード270c’は、HTMLスパンタグ290dを生成して、さらなるコード270c’が生成するページポーションの開始を構築する。このとき、さらなるコード270c’は、「do Share」コードフラグメント265c’が引数「ABCC」によってまだ実行されておらず、実行のための「do Share」コードフラグメント265c’を呼び出せないことを決定する。再度実行した場合、「do Share」コードフラグメント265c’は、識別タグ「2」の部分と同一のテーブルデータセル「ABCCorp.」および「99.9」を有するテーブルのロウを生成する。
【0051】
「do Share」コードフラグメント265c’が実行されないため、さらなるコード270c’は、エンドスパンタグ295dを生成し、さらなるコード270c’のコードフラグメントによって作成された末端部分を構築する。必要とされるページポーションを生成するために、さらなるコード270c’は、識別タグ「2」に含まれた部分を識別タグ「4」に含まれた部分にコピーするようにクライアントノード205のディスプレイ変更器(alterer)245に命令するコピーコマンド285bを修正リスト284に生成する(例えばコピーコマンドの説明についての表1を参照のこと)。実行は「do table」コードフラグメント265b’に戻る。
【0052】
処理された入力データ298の全ての部分に対して、「do table」コードフラグメント265b’の実行が終了される。さらなるコード270b’は、エンドスパンタグ295aを生成して、さらなるコード270b’によって生成された末端部を構築する。実行は「main」コードフラグメント265a’に戻り、そして「main」コードフラグメント265a’からランタイムシステムに戻り、それによりページポーション(例えば、HTML出力ファイル)およびページポーションを挿入するための命令(例えば修正リスト)をサーバ送信器235を介してクライアントノード205に伝送する。
【0053】
図5aおよび図5bの例示的な例から、ページ240が実質的に更新され(例えば、XYZCorp.の共有の価格が増加するため)た場合、実行および出力がさらに低減されることが容易に理解される。一実施形態では、例えば、以後の更新に対して、変更されたテーブルのロウのみがクライアントノード205に伝送される。本実施形態では、部分ページ発生器250は、引数として「XYZC」を使用して関連付けられたさらなるコード270c’を用いて「do Share」コードフラグメント265c’を実行する。さらなるコード270c’は、識別タグ「5」を生成して、ページポーションの開始を識別する。さらなるコード270c’のクライアントは、「do Share」コードフラグメント265c’が次に「XYZC」によって呼び出されたときにページポーションの開始を生成する。さらなるコード270b’は、HTMLスパンタグを生成して、さらなるコード270b’が生成するページポーションの開始を構築する。さらなるコード270b’は、実行のための「do Share」コードフラグメント265c’を呼び出す。「do Share」コードフラグメント265c’は、テーブルデータセル「XYZCorp.」および「2.5」(新しい価格)を有するテーブルのロウを生成する。「do Share」コードフラグメント265c’の実行が終了するために、さらなるコード270c’はspan id=5入力に対してエンドタグを生成して、さらなるコード270c’のフラグメントによって作成された末端部を構築する。
【0054】
部分的ページ再生成器250は、対応300のマップ(図7)を用いて「XYZC」を有するロウが識別タグ「3」を有することを決定する。部分的ページ再生成器250は、ABCCorp.を有するテーブルのロウが、価格が変更されないために更新される必要がないことを決定する。部分的ページ再生成器250は、現在表示されたウエブページに組み込むために、更新されたロウおよび修正リストの生成されたHTML出力をクライアントノード205のディスプレイ変更器245に伝送する。部分的ページ再生成器250は、伝送された修正リストにコマンド「Assign 5→3」を含む(例えば割り当てコマンドの説明についての表1を参照のこと)。このコマンドは、識別タグ「3」を用いてHTML出力を見つけるようにディスプレイ変更器245に命令し、HTML出力を、識別タグ「5」を有する新しく伝送されたHTML出力部分と置換する。
【0055】
(1.3.5 クライアントフィードバック用いたサーバ格納バッファの更新)
図5aの例示的な実施形態では、入力データ298がクライアントノード205から発生する。本実施形態では、クライアントのユーザがデータを伝送されたページ240の1つ以上のユーザ入力フィールドに入力し、そして提示ボタン、更新ボタンをクリックし、および/またはエンターキーを押した後で、入力データ298がクライアントノード205から伝送される。別の実施形態では、クライアントノード205のディスプレイ変更器245が伝送されたページ240のユーザ入力フィールドをモニタリングする。ディスプレイ変更器245がユーザ入力フィールドにデータを検出した場合(例えば、ユーザがデータをフィールドに入力しそしてタブキーを押すか、あるいはユーザがデータを入力し、ページの別の部分にカーソルを移動させ、そしてマウスキーをクリックする)、ディスプレイ変更器245は、ページ更新リクエストを用いてデータを部分的ページ再生成器250に伝送する。
【0056】
さらに別の実施形態では、部分的ページ再生成器250は、さらなるソフトウエア(例えば「フィードバック」と呼ばれる方法)を、ページ生成コード30によって生成されたページ240の一部であるクライアントノード205に提供する。さらなるソフトウエアが呼び出される(例えばユーザ動作によって)場合、さらなるソフトウエアは、その引数がサーバノード210に伝送されるように構成する。部分的ページ再生成器250はまた、さらなるソフトウエア(例えばまた「フィードバック」とも呼ばれる方法)をページ生成コード30に提供する。サーバノード210上のこの「フィードバック」方法は、クライアントノード205によって受信された引数を使用して、格納バッファ54内のデータ50を更新する。
【0057】
例えば、生成されたページの一部は、
<input type=”text” onchange=”feedback(value)”>
であり得る。これは入力ボックスを表示し、ユーザが値を入力しタブを押すか、またはマウスを移動させる度に呼び出されるカスタムコード(feedback(value))の一部を含む。これは、この動作に応答してクライアントノード205上の「フィードバック」方法を呼び出し、入力された値を伝える。この値は、サーバノード210に伝送される。サーバノード210上のページ生成コード30における「feedback」と呼ばれる方法は引数としてこの値を用いて呼び出される。これは、例えば、
Void feedback(String stock)
{
portfolio.setCurrentStock(stock)
}
であり得る。ポートフォリオは、データアクセスビーン100(図4c)の基準である。
【0058】
別の実施形態では、ページ240は変更されることが可能になるために、サーバノード210上の「feedback」の呼び出しは、部分的ページ再生成器250にページ240を速やかにリフレッシュさせる。
【0059】
(1.4 対応のマップ)
部分的ページ再生成器250は、ページ240の部分260の識別タグ290(例えば、HTMLスパンタグ)を決定し、部分的ページ再生成器250がこのような情報を格納するページポーション260を作成するにつれて、部分的ページ再生成器250が対応のマップ300(図7)を生成するため、任意のこれらのページポーション260に対するデータ50が変更されるかどうかを決定する。ページポーションのレイアウト関係をモデル化するページ記述モデル303(図6)が対応のマップ300内部にある。
【0060】
(1.4.1 対応のマップ−ページ記述モデル)
図6は、ページ記述モデル303によってモデル化された論理接続の例示的な実施形態を示す。図5aおよび図5bに説明されたように、同じ例示的な例を用いることによって、ページ記述モデル303は、ノード305a、305b、305c、305d、305e、305f、および305g(一般的に305)を有するノードツリー303’を含む。ページポーション260の関係(すなわち、ページ記述モデル303)はノードツリー303’として示される。他の実施形態では、他のモデルが使用され得る。本発明の異なる実施形態は、ノードツリー303’の異なるレベルにおいて作成および動作し得る。言い換えれば、いくつかの更新は、子ノードのみを処理する一方で、他の更新は、子ノードにおける更新に影響を与える親ノードを使用する。ページ240を更新するために生成され、伝送されるデータの量がより小さくなるほど、更新に影響を与える必要があるリソースがより少なくなる。
【0061】
ノードツリー303’の各ノード305は、ノードツリー303’の他のノード305のそれぞれに関して固有であり、クライアントノード205に送信されたHTML出力283に挿入された識別タグ(例えばスパンタグ)に関して同一のIDを有する。別の実施形態では、ノードIDは、挿入されたタグとは異なる場合、対応300のマップは、ページ240の部分260を表すモデルノード305とクライアントノード205に送信されたHTMLコードの実際の識別タグ(例えばスパンタグ)との間の関係を含み、ページポーションの表示を生成する。ページ記述モデル303を作成するために、対応300のマップは、ページ生成コード30のコードフラグメント265と各コードフラグメント265が生成するページポーション260との間の通信を含む。さらに対応300のマップはページ生成コード30のコードフラグメント265と各コードフラグメント265が依存するデータ50との間の通信を含む。
【0062】
(1.4.2 対応のマップデータ構造)
図7は、対応300のマップのための一般的なデータ構造308の例を示す。データ構造308は、ノードツリー303’、値フィールド320、キーフィールド330、現在の値のテーブル345、およびイベントフィールド360を含む。値フィールド320は、コードフラグメント265の実行が生成するページ240の部分260を表す(矢印323)。一実施形態では、値フィールド320のデータは、クライアントノード205のディスプレイ220上のページ240の部分260を生成するために使用されるHTML出力283である。別の実施形態では、HTML出力自体を格納する必要がない(修正リストおよび作業リストに一次的に格納する以外)。値フィールド320はデータを有さないが他のフィールドの数に関係するのみである。
【0063】
値フィールド320は1つ以上のノード305を作成するために使用され得る。対応のマップ300は、特定の値フィールド320に対応するノードツリー303’におけるこれらのノード305に値フィールド320をマッピングする(矢印325)。
【0064】
キーフィールド330は、コードフラグメント265の実行を表す(矢印335)。キーフィールド330は、コードフラグメント265を再実行するのに必要なデータを含み、キーが対応する値を生成する(矢印340)。単一のキーフィールド330は、複数の通信を有し得る(矢印340)。なぜなら、キー330のコードフラグメント265が再実行される場合、コードフラグメント265が依存するデータ50の変化の後に新しい値320が作成されるためである。しかし常に特定のキー330に対する1つのみの現在の値320が存在する。
【0065】
キー330によって生成された現在の値320が現在の値345のテーブルに格納される。現在の値345のテーブルでは、キー330が表された場合、値フィールド320へのキーフィールド330の対応(矢印350)は常に1対1である。言い換えると、いくつかのキー330は、現在の値345のテーブルに表すことができないが、キー330が現在の値345のテーブルにある場合、キー330に対して多くとも1つの値320がある。現在の値345のテーブルが特定の引数を用いてキーフィールド330をトラッキングすることによって、作成された1つのみの現在の値フィールド320がある(すなわち、コードフラグメントの1つの基準は、同じ引数およびデータ50を用いてそれが常に同じ出力(すなわち値フィールド320)を生成することである)。
【0066】
対応300のマップは値フィールド320をイベントフィールド360にマッピングする(矢印355)。イベントフィールド360は、マッピングされる値のフィールド320に影響を与えるイベントに関するデータを含む(矢印355)。一般的な意味では、単にマッピングイベント360は、値320がデータ50の一部に依存し、「何か」が変更された通知と、どの値320が現在無効であることを識別することの間で変換する手段の1つとして使用される概念に過ぎない。
【0067】
例えば、値フィールド320が依存するデータ50の変化を示すイベントに対する基準がイベントフィールド360に格納され得る。この対応(矢印355)では、データ50が変化する場合、またはイベントがデータ50の変化を表すように生成される場合、部分的ページ再生成器250は、変化されたデータ50を表す、イベント360にマッピングされた(矢印355)値フィールド320にマッピングされた(矢印325)これらのノード305が、もはや有効ではなく更新されるべきであることを決定する。データ50の変更イベント360のこれらのタイプの生成およびモニタリングは当業者に周知であり、任意の生成およびモニタリング技術は受容可能である。
【0068】
(1.4.3 対応のマップ−図5aおよび図5bを用いる例)
図8は、部分的ページ再生成器250が図5aおよび図5bの選択的な実行の例を実行することによって作成される対応300’のマップの例示的実施形態を示す。現在の値345’のテーブルは、1つのキーの1つの値320’への対応を含む。現在の値345’のテーブルのキーは、特定の引数を用いたコードフラグメント265を表す。テーブル345’は、キー330が生成する固有の値320’へのポインタ375を含む。示されたように、例において作成された3つの固有のページポーション260に対応する3つの固有の値320’(ノード305b’、305c’、および305d’によって表される)がある。各値320’は、ページ記述モデルノードツリー303’の1つ以上のノード305’(すなわち、全てのページポーション)へのポインタ375を有する。各ノード305はデータまたはデータへのポインタ375を含む。各ノードは、この特定のノードの識別タグ(「ID」)、親および子のノードのID、対応するノード305’を生成した値320’を含む。
【0069】
(1.5 ページポーションの組み込みのための命令)
図5bに示されるように、部分的ページ再生成器250は、クライアントノード205のディスプレイ220上のページ240の部分260を生成するために使用される実際の出力283と共に修正リスト284を生成する。サーバノード210は、修正されたページ240の部分260をこれらの特定の部分260のための修正リストと共にクライアントノード205に伝送する。クライアントノード205は、修正リストを使用して、ページ240の適切な領域に伝送された部分260を表示させる。このディスプレイ変更器245は修正リストを用いて伝送されたページポーション260を組み込むタスクを実行する。
【0070】
伝送された1つ以上のページポーションを表示されたページ240に組み込むために、ディスプレイ変更器245は、修正リスト上にあるコマンドを処理することを可能にしなければならない。部分的ページ再生成器250は、ディスプレイ変更器245の能力を決定する。一実施形態では、クライアントノード205のディスプレイ変更器245は、クライアントソフトウエアの一部である。本実施形態では、クライアントノード205は、ディスプレイ変更器245に命令するサーバノード210が最初のリクエストの間に理解し得ることを通知し得る。
【0071】
別の実施形態では、クライアントノード205のディスプレイ変更器245は、ページ240がクライアントノード205にまず送信される場合、サーバ送信器235によって動的にページ240に追加されたスクリプトの一部である。スクリプトクライアントのページへのリンクの例は、添付物1に説明される。
【0072】
本実施形態では、クライアントノード205が初期リクエストの一部としてブラウザのどの「タイプ」を実行するかをサーバノード210に通知し、次いでサーバノード210は、サーバノード210に格納された公知のブラウザのテーブルの能力を参照し得る(例えば、クライアントブラウザは、Internet Explorer 5.0であるとしてクライアントブラウザ自体を識別し得る)。さらに別の実施形態では、サーバ送受信器235は、クライアントブラウザのタイプに依存して、ディスプレイ変更器245および/またはクライアントの送受信器230の異なるバージョンをクライアントのブラウザに送信する。
【0073】
(1.5.1 コマンドの例)
修正リストは、所定のセットのコマンドからのコマンドを使用する。一実施形態に対して、表1は、修正リスト中に出現し得る4つのコマンドのタイプのセットの例を列挙する。表1の第1の列はコマンドの名前を列挙する。表1の第2の列は、各コマンドに含まれ得るパラメータを列挙する。表1の第3の列は各コマンドの一般的な説明を列挙する。用語「ノード」は、対応のマップ300のページ記述モデルノードツリー303’のノード305を指す。コマンドパラメータは識別タグ(すなわちID)を使用して、ノード305を表す。例えば、ノード305が株価のテーブルデータセルであり、価格が120に変化した場合、コマンドは、Assign(8,「$120」)であり得る。ディスプレイ変更器245は、識別タグ「8」と共にテーブルデータセルに「$120」の値を挿入する。
【0074】
【表1】
表1
(1.6 データが変更された場合のページの更新)
イベント360がデータ50における変更を表すことが検出される場合、部分的ページ再生成器250は、イベント360に対応する(矢印355、図7)値320を無効値リスト(図示せず)上のイベント360に追加する。一実施形態では、無効値リストは、対応のマップ300の一部である。無効値リストは、変更されもはや値ではないクライアントノード205上のページ240に現在表示された全ての値をトラッキングする。一旦、無効値リスト上のエントリが存在する場合、部分的ページ再生成器250は、そのリクエストに応答してページ240をリフレッシュする要求を待ち、ページ240の変更された部分260のための更新を生成および伝送する。
【0075】
ページ240をリフレッシュするための要求は、多くの異なる方法で生成され得る。例えば、クライアントノード205上のユーザは、ページ240のリフレッシュをリクエストし得る。別の実施形態では、ディスプレイ変更器245は、ページ240のリフレッシュを周期的にリクエストし得る。別の実施形態では、部分的ページ再生成器250は、一旦データ50の変化が検出されると、リフレッシュのためのリクエストを生成する。例えば、上述のように、「フィードバック」方法がサーバノード210上で呼び出された場合、部分再生器250は、リフレッシュのためのリクエストを自動的に生成する。別の実施形態では、クライアントノード205とサーバノード210との間の通信プロトコルは、サーバプッシュモデル(すなわち、サーバノード210は、クライアントノード205が、がリクエストを開始することなく、データをクライアントノード210に伝送する)を支援またはシミュレートする。
【0076】
(1.6.1 伝送されたページポーションのための更新の生成)
図9は、変更されたページ240の部分260のために、部分的ページ再生成器250が更新を生成することによる例示的なプロセスを示す。部分再生器250は、変更されたページポーション260のための出力および表示されたページの変更されたページポーション260をどのようにして組み込むかに関してディスプレイ変更器245に命令するための修正リストを生成する。例示的プロセスは、クライアントノード205について現在利用可能な任意の未変更の部分を利用することによって、クライアントノード205に伝送されたデータの量を最小化する。
【0077】
例示的なプロセスを開始するために、部分的ページ再生成器250は、無効な値のリストを検査し、現在の値が無効な値を表すのと同時に現在の値345のテーブル(図7)から無効値リスト上の全ての値320を取り除く(ステップ400)。部分的ページ再生成器250は、「recycle Root」ノードを生成する(ステップ405)。「recycle Root」ノードは、以後再使用され得るノード305を格納するために使用された一時的な空間である。部分的ページ再生成器250は、2つのコマンドの初期の空のリスト(作業リストおよび修正リスト)を作成する(ステップ410)。部分的ページ再生成器250は作業リストを生成し、作業リストから修正リストにアイテムの群を移動させる。本例で使用されたコマンドは、表1に示されたコマンドと同じである。
【0078】
部分的ページ再生成器250は、無効な値のリストをスキャンし、無効な値のリスト上の値320の内の1つに対応する最高のノードを見出す(ステップ420)(ノードツリー303’のルートに最も近いノードとして最高のノード)。このようなノードがない場合、例示的なプロセスはステップ465にジャンプする(矢印423)。部分的ページ再生成器250は、対応する無効な値に対するページ記述モデルノードツリー303’から最高のノードを除去する(ステップ425)。これらのノードはそれ自身無効であり得ないため、後で使用され得るので、最高のノードの子ノード305は、recycleRootに移動される(ステップ430)。部分的ページ再生成器250は、対応のマップ300を用いて最高のノードの対応する値を再計算するために使用されたキー330(図7)を決定する(ステップ435)。例えば、図7を用いて、部分的ページ再生成器250はノード305に従い、ノード305は、キー330に対応し(矢印340)、値320に対応する(矢印325)。
【0079】
一旦キー330が決定されると(ステップ435)、部分的ページ再生成器250は、対応するキー330に対する現在の値(すなわち、現在の値のテーブル345の値320)があるかどうかを決定する。このキー330に対する現在の値がある場合、再計算(ステップ445)は、以前のループの繰り返し(矢印463)においてこのキー330のために既に開始する。再計算(ステップ445)が既に開始している場合、部分的ページ再生成器250は、対応する現在の値のためのページ記述モデルのノードツリー303’にノード305を追加し(ステップ443)、「CopyValue」コマンドを作業リストに追加する(ステップ443)。再計算(ステップ445)が既に開始されている場合、例示的なプロセスはステップ460にジャンプする(矢印458)。
【0080】
再計算(ステップ445)がまだ開始していない場合、部分的ページ再生成器250は、決定されたキー330(ステップ435)に関連付けられたコードフラグメント265を再実行して(ステップ445)、新しい値を生成する。生成された出力が出力ファイル(例えば、図5bのHTML出力コード283)に識別タグを用いて保存される。ノードは、新しく生成された値に対するページ記述モデルのノードツリー303’に追加される(ステップ450)。次いで部分的ページ再生成器250は、識別タグを用いて「Assign」コマンドを作業リストに追加する(ステップ455)。
【0081】
再実行(ステップ445)の間、決定されたキー(ステップ435)に関連付けられたコードフラグメント265は、他のコードフラグメント(例えば図5aの「do table」コードフラグメントは、「do Share」コードフラグメントを呼び出す)を呼び出し得る。現在の値のテーブル345の値320に整合するパラメータを有する各呼び出しに対して、さらなるコード270を経由する部分的ページ再生成器250は、この呼び出しを妨害する。妨害は、図5aおよび図5bの2回目の実行に対する「do Share」(ABCC)の実行の例と同様である。妨害によって、部分的ページ再生成器250は、識別タグ(例えば、図5bのspan ID 「4」、290dおよび295d)を用いて空のページポーションを生成し、作業リストに追加される「CopyValue」コマンドを生成する。
【0082】
部分的ページ再生成器250は、無効な値のリストを検査してルートから到達可能なより多くのノードが存在するかどうかを決定する(ステップ460)。より多くのノードがある場合、プロセスはステップ420に戻る(矢印463)。ノードがない場合、プロセスはステップ465を続ける。
【0083】
部分的ページ再生成器250は、リサイクルルートにおけるノードを検査して任意のノードが再使用され得るかどうかを決定する(ステップ465)。これらのノードのそれぞれがクライアントノード205上で利用可能なページポーション260を表すため、これらのノードを再使用することはかなり有益である。部分260は、作業リスト上の「CopyValue」コマンドと整合する場合に再使用され得る。recycleRootにおけるノードが最小され得る場合、部分的ページ再生成器250は、整合ノードに設定されたソースノードパラメータを用いて、整合する「CopyValue」コマンドを「MoveNode」コマンドに変換する(ステップ468)。再使用された親ノードおよび子ノードは、それらがリサイクルされ得ない場合に使用されるとしてマーキングされる(ステップ468)。部分的ページ再生成器250は、作業リストの少なくとも1つのコマンドが変更されたことを示すフラグを設定する(ステップ468)。
【0084】
部分的ページ再生成器250は、最初に「Assign」コマンド、次いで「MoveNode」コマンドを置くことによって、作業リストのコマンドをソート(ステップ470)することによって継続する。部分的ページ再生成器250は、「Assign」コマンドおよび「MoveNode」コマンドを作業リストから除去し(ステップ470)、クライアントノード205への伝送準備ができている修正リストにこれらのコマンドを添付する。残っている「CopyValue」コマンドは作業リスト上に残されている。
【0085】
部分的ページ再生成器250は、フラグが設定された(ステップ468)かどうか理解するためにチェックすることによって任意のコマンドが変更されたかどうかを決定する(ステップ475)。少なくとも1つのコマンドが変更された場合、以前に到達不可能なノードが現在では到達可能であるために、この決定が為される。フラグが設定された場合(ステップ468)例示的なプロセスは、ステップ420に戻る(矢印463)。
【0086】
ノードがもはやリサイクルされ得ない場合、部分的ページ再生成器250は、全ての残っている「CopyValue」コマンドを「CopyNode」コマンドに変換する(ステップ480)。これらは「MoveNode」コマンドよりもより効率的ではないが、別の「Assign」コマンドよりもさらによい。「Copy Node」コマンドに対するソースは正確な値を有する任意のノードである。「CopyValue」コマンドを変換する場合、その値に関連したノードのセットが検査され、1つのノードが選択される。唯一の要求は、このノードが「CopyNode」コマンドが実行される場合にクライアントに対して利用可能であるうちの1つのノードであることである。「CopyValue」コマンドをステップ468およびステップ480両方において変換する場合、この要求は、ソースノードとして最低の識別タグを有するノードを選択することによって満たされ得る。
【0087】
この変換の間、部分的ページ再生成器250は、コピーされたサブツリーを再命名し、生じたサブツリーは固有の識別子を有するノードを含む。任意の手段が再命名(例えば予め順序化された深さの第1の横断(pre−order depth first traversal))のために使用され得る。部分的ページ再生成器250は作業リスト(現在「CopyNode」コマンドのみを含む)を修正リストに添付する(ステップ485)。
【0088】
1つの例では、修正リスト284は複数のリストを含む。最後の2つのセクションを除く全ては、1つ以上の「Assign」コマンド、次いで1つ以上の「MoveNode」コマンドを含む。最後から2番目のセクションは1つ以上の「Assign」コマンド、次いで0以上の「MoveNode」コマンドを含み、最後のセクションは、0以上の「CopyNode」コマンド(例えばAAM AAAMMM AAACCCを含み、ここでA=「Assign」コマンド、M=「MoveNode」コマンド、C=「CopyNode」コマンド、および空間は各セクションを分割する)を含む。
【0089】
次いで、部分的ページ再生成器250は、対応する値320のためのページ記述モデルノードツリー303’からリサイクルリスト上に残された全てのノードを除去する(ステップ490)。値320がページ記述モデルノードツリー303’において残っている対応しているノード305を有さない場合、値320が放棄され、現在の値のテーブル345から除去される。また部分的ページ再生成器250は、放棄された値320に関連付けられた任意のイベントレコード360およびキー330を除去する。これはクライアントノード205上で開始するコマンドを反映する。
【0090】
(1.7 更新された部分の伝送されたページへの組み込み)
一旦出力283および修正リスト284が作成されると、部分的ページ再生成器250は、ネットワーク通信チャンネル215を介してサーバ送受信器235を経由して2つのアイテムを、クライアント送受信器230を介してディスプレイ変更器245に伝送する。ディスプレイ変更器245は修正リスト284を用いて出力283を組み込む。
【0091】
(1.7.1 修正リストの使用)
図10は、ディスプレイ変更器245が、サーバノード210が更新されたページポーション260と共に伝送された修正リスト284を用いて、変更されたページ240の部分260のための更新を組み込むプロセスの例示的実施形態を示す。上述のように、修正リスト284は、AssignおよびMoveNodeコマンドを含む複数のセクションと、CopyNodeコマンドのみを含む選択的な最後のセクションからなる。ディスプレイ変更器245は、次いで、修正リスト284の各セクションを処理する。ディスプレイ変更器245は「MoveNode」コマンドのための修正リスト284の現在のセクションを検査する(ステップ500)。各「MoveNode」コマンドに対して、ディスプレイ変更器245は「MoveNode」コマンドのソースノードおよび任意の孫ノードを格納バッファ225に保存する(ステップ505)。次いで、ディスプレイ変更器245は、「Assign」コマンドのための修正リスト284の現在の選択を検査する(ステップ510)。各「Assign」コマンドに対して、ディスプレイ変更器245は、「Assign」コマンドの出力(例えば、表示可能な部分260、実際のHTMLコード)を、「Assign」コマンドの宛先ノードによって特定されたページ240の部分260に挿入する(ステップ515)。
【0092】
ディスプレイ変更器245は、「MoveNode」コマンドに対する修正リスト284の現在のセクションを再検査する(ステップ520)。各「MoveNode」コマンドに対して、ディスプレイ変更器245は、格納バッファ225に一次的に格納された(ステップ505)適切なソースノードを取り出す(ステップ530)。ディスプレイ変更器245は、ノードの値および任意の孫ノードを「MoveNode」コマンドの宛先ノードによって特定されたページ240の部分260に挿入する(ステップ535)。
【0093】
ディスプレイ変更器245は、修正リスト284の次のセクションに移動する(ステップ540)。もうセクションがない場合、プロセスはステップ565に続く。新しいセクションが「CopyNode」コマンドのみを含まない場合、プロセスはステップ500まで続く。
【0094】
ディスプレイ変更器245は、「CopyNode」コマンドのための修正リスト284の現在のセクションを検査する(ステップ550)。各「CopyNode」コマンドに対してディスプレイ変更器245は、適切なソースノードおよび任意の孫ノードをコピーする(ステップ555)。ディスプレイ変更器245は、コピーされたノードおよび任意の孫ノードの出力を「CopyNode」コマンドの宛先ノードによって特定されたページ240の部分260に挿入する(ステップ555)。このコピープロセスの間、ディスプレイ変更器245は、コピーされたノードの埋め込まれたノード識別タグの全てを再命名する(ステップ560)。一実施形態では、ディスプレイ変更器245は、HTMLコード(例えば、格納バッファ225に現在表示されたページ240のHTMLコードのコピー)への組み込みの全てを実行し、更新の全ての組み込みが終了した場合、ディスプレイ変更器245は、更新されたページを表示する(ステップ565)。別の実施形態では、更新が表示されたページ240に組み込まれた場合、ディスプレイ変更器245は、各更新を表示する(ステップ550)。
【0095】
(1.7.2 組み込みの例)
図11(a)、11(b)、11(c)および11(d)は、表示されたページ240への更新を組み込むディスプレイ変更器245の例を示す。示された例において、ディスプレイ変更器245がテーブルを更新しているページ240のポーション260は、識別票「1」を有するノードとして識別される。テーブル(すなわち、ノード「1」)は、新しい要素(すなわち、値「ガンマ」を有するを子供ノード)をテーブルに追加することによって更新される。
【0096】
図11(a)は、更新の前に伝送されたページ240を表わすページ記述モデルノードツリー303’’を示す。図5aおよび5bの例に類似して、ノードツリー303’’は、三つの子供ノード「2」、「3」および「4」とともに親ノード「1」を含む。子供ノード「2」は、「アルファ」の値を有する。子供ノード「3」は、「ベータ」の値を有する。子供ノード「4」は、「デルタ」の値を有する。図11(a)は、さらに、部分的ページ再発生器250がディスプレイ変更器245に伝送した修正リスト284’’を示す。
【0097】
ディスプレイ変更器245は、図10の例示的なプロセスに続く変化を組み込むための修正リスト284’’を使用する。ディスプレイ変更器245は、修正リスト284’’を検査し(ステップ500)、「Assign」コマンドを見出す。ディスプレイ変更器245は、さらに、「Assign」コマンドの宛先ノード(すなわち、ノード「1」)の孫(すなわち、子ノード)に関連する「MoveNode」コマンドがあることを判定する(ステップ500)。図11(b)に示されるように、修正リスト284’’’は、再利用可能なノード603を格納バッファ225内にインプリシットにセーブする動作(ステップ505)を含む。テーブルのための「Assign」コマンドがあるため、ディスプレイ変更器246は、ページ記述モデルノードツリー303’’のワーキングバージョン600を作成し始めるためにそのノードの孫を取り除く。
【0098】
図11(c)を参照すると、ディスプレイ変更器245は、「Assign」コマンドに規定されたように出力を挿入する(ステップ515)。この例では、「Assign」コマンドの出力は、修正リスト284’’には示されていないが、ページ記述モデルノードツリー303’’のワーキングバージョン605に示される。「Assign」コマンドごとに、新しいノード「1」が識別タグ「5」、「6」、「7」および「8」を有する4つの孫ノードを含む。識別タグ「5」、「6」および「8」を有する派生ノードは、空である。識別タグ「7」を有する派生ノードは、値「ガンマ」を有する。
【0099】
ディスプレイ変更器245は、「MoveNode」コマンドのための修正リスト284’’を検査する(ステップ520)ことによって継続する。図11(c)に示されるように、三つの移動コマンドがある。各「MoveNode」コマンドに対して、ディスプレイ変更器245は、ソースノード(すなわち、2、3、4)として識別されたノードを検索し(ステップ530)、値(すなわち、アルファ、ベータ、デルタ)を指定ノード(すなわち、5、6、8)に挿入する(ステップ535)。図11(d)は、更新されたページ240のページ記述モデルノードツリー303’’’を示し、ここで、クライアントノード205のディスプレイ220上に表示される(ステップ565)。
【0100】
株価のテーブルがこの説明にわたって用いられているが、本発明は、任意の他の種類のコンテンツで同様に良く働く。例えば、図12は、クライアントノード205でユーザに表示されている電子メールページ608の例のスクリーンショットである。ページ生成コード(図示せず)は、特定のユーザのための「インボックス」におけるメッセージのリスト610を表示し得る。各メッセージの送信者615に対して、題目620および日付625が、メッセージが読まれたかどうか(例えば、太字で表示される)についての表示(図示せず)とともに示される。このリスト610は、さらに、メッセージが選択された場合にフル画面(full)630に表示されるようなリンクを含む。部分的なページ再生成器の実施形態を用いて、メッセージの表示されたリスト610は、多数の方法で更新される。
【0101】
−新しいメッセージが着いたとき、図11において「ガンマ」が追加されるのと類似の方法(しかし、リスト610の端部に)で、メッセージがリスト610に添付される。
【0102】
−リスト610が、ソーティング基準ごとに子供ノードを再配置することによって容易に格納される。
【0103】
−メッセージが読まれた場合、リスト610内のそのメッセージの入力がこれを反映するように修正される。
【0104】
部分的なページ再生成器は、このようなメッセージリスト610を作成するために、構造内の株価の例を模倣する可能性がある。部分的なページ再生成器は、メッセージ数を判定し、各メッセージのためのページ部分(例えば、html)を出力するループを実行する。
【0105】
このような電子メールアプリケーションは、より複雑なインターフェース、例えば、電子メールを「ツリー構造」635内に含む利用可能なリスト一覧(listing)フォルダーによって増大され得る。部分的なページ再生成器は、各「フォルダー」に対して一つのフラグメントを実行することによって、この構造635を作成し、閉じられたフォルダーを表示するか、または、開いたフォルダーを表示するかのいずれかを行い、そして、フォルダーのコンテンツを表示するために同じフラグメントを再帰的に呼び出す。生成された出力が、フォルダーが選択された(すなわち、開かれたまたは閉じられた)ときにサーバノード210を知らせる各フォルダーのための「オンクリック(onClick)」イベントを含む場合、ページ608は、ユーザがそれを選択した後のフォルダーの新しい状態を示すように自動的に更新される。
【0106】
(均等物)
本発明は、精神または必須の特徴から逸脱することなく他の特定の形態において具体化され得る。したがって、上記の実施形態は、すべての観点で、本明細書において記載された本発明に制限するのではなく、例示であることが考慮されるできである。このため、本発明の範囲は、上記の説明によってではなく添付された特許請求の範囲によって示され、特許請求の範囲の意味および均等物の範囲内のすべての変更が、本発明に含まれることが意図される。
【0107】
(付表1)
ページへの更新を検索および表示し得るHTMLページにプレーヤーを追加する作用例である。この実証が、Internet Explorer 5.0とともに作用する。
【0108】
ここに示されるのは、オリジナルのページであり、クライアントプレーヤー(送受信機230およびディスプレイ変更器245)を用いて増大される。これは、灰色およびu1とラベル付けされて示される。ページは、さらに、すぐに更新を得てロードされる(これは、単純化である)ように修正される。これは、灰色およびu2でラベル付けされて示される。
【0109】
【数1】
以下のコードは、「player.js」のコンテンツであり、オリジナルのページに追加される。これは、非常に簡略化されたクライアントプレーヤ(送受信機230およびディスプレイ変更器245)であり、簡単な「割当て」動作のみを行い得る。このことの動作は、以下のようである。
【0110】
更新が要求された場合、更新を含むページの位置、または更新を含むページを生成するサーバが均一なリソースロケータ(URL)として供給される。これは、「getUpdates」機能に通される。この機能は、サーバへの通信チャネルとして用いられる隠れたサブページ(フレーム)を作成する。
【0111】
サーバがURLリクエストを受け取る場合、サーバは、HTMLページ(例えば、所与の文字)として符号化された更新のセットを供給することによって応答する。ロードされた場合、更新のこのページは、順番に更新をオリジナルのページに付与する「doUpdate」法を呼び出す。
【0112】
【数2】
以下は、例となる更新ページである。このページは、通常、サーバノード(210)によって動的に作成される。
【0113】
【数3】
【図面の簡単な説明】
【図1】
図1は、従来技術で公知のクライアント/サーバネットワークの図である。
【図2a】
図2aは、本発明の原理を具現化する例示的なクライアント/サーバネットワークの図である。
【図2b】
図2bは、ページ生成コードのフラグメントと生成されたページポーションとの間の対応、および、ページ生成コードのフラグメントと格納デバイスに格納されたデータとの間の対応とを示す本発明の実施形態のブロック図である。
【図3a】
図3aは、サーブレットページ生成コードのフラグメントのブロック図である。
【図3b】
図3bは、本発明に従う、個々のフラグメントの実行を制御するために、さらなるコードによって強化されたサーブレットページ生成コードのフラグメントのブロック図である。
【図4a】
図4aは、CGIページ生成コードのフラグメントのブロック図である。
【図4b】
図4bは、本発明に従う、個々のフラグメントの実行を制御するさらなるコードによって強化されたCGIページ生成コードのフラグメントのブロック図である。
【図4c】
図4cは、二つのプロキシを用いるラッピングの方法のブロック図である。
【図5a】
図5aは、本発明に従う、サーブレットページ生成コードの強化されたフラグメントの実行シーケンスのブロック図である。
【図5b】
図5bは、本発明に従うページポーションを識別する識別タグを有する、生成されたページ、および、関連する修正リストに対するHTMLコードの例示的な出力である。
【図6】
図6は、本発明に従う、ページ記述モデル、および、ページ生成コードのフラグメントと生成されたページポーションとの間の対応のブロック図である。
【図7】
図7は、本発明に従う、フラグメント、データおよびページポーションの間の対応のマップに対する一般的なデータ構造の例のブロック図である。
【図8】
図8は、本発明に従う、フラグメント、データおよびページポーションの間の対応のマップの例のブロック図である。
【図9】
図9は、本発明に従う、データが変更するときの修正リストを生成する例のフロー図である。
【図10】
図10は、本発明に従う、修正リストを用いての組み込み更新の例のフロー図である。
【図11】
図11(a)〜(d)は、本発明に従う、新しいページポーションを現在表示されているページに挿入するプロセスの例のブロック図である。
【図12】
図12は、本発明に従う、eメールページへの組み込み更新の例のスクリーンショットである。
Claims (159)
- サーバによって伝送されたページの部分的なページ再生成のための方法であって、
ページを生成するページ生成コードを受け取るステップと、
該ページをクライアントに表示のために伝送するステップと、
該伝送されたページのポーションを該ページ生成コードのコードフラグメントに関連付けるステップと、
該伝送されたページの該ポーションを再生成するために該コードの該関連付けられたコードフラグメントを実行するステップと
を包含する、方法。 - 前記再生成されたページ部分を前記クライアントに、前記伝送されたページへの取り込みのために伝送するステップをさらに包含する、請求項1に記載の方法。
- 前記関連付けられたコードフラグメントの選択実行を可能にするために前記ページ生成コードの実行を操作するステップをさらに包含する、請求項1に記載の方法。
- 前記操作するステップは、前記全体のページ生成コードより少ない実行を可能にするために前記関連付けられたコードフラグメントと前記コードの他の部分との間の通信を妨害するステップをさらに包含する、請求項3に記載の方法。
- 前記操作するステップは、前記関連付けられたコードフラグメントの選択的実行を可能にするために前記ページ生成コードで動作させるさらなるコードを追加するステップをさらに包含する、請求項3に記載の方法。
- 前記関連付けるステップは、出力を生成するために前記ページ生成コードのコードフラグメントを実行するステップと、
前記伝送されたページのどの部分が該実行されたコードフラグメントによって作成されたかを識別するために、識別タグを用いて該実行されたコードフラグメントの前記生成された出力を識別するステップと
をさらに包含する、請求項1に記載の方法。 - 前記識別するステップは、前記生成された出力の始めおよび終わりに前記識別タグを挿入するステップをさらに包含する、請求項6に記載の方法。
- 前記コードは、サーブレットとしてフォーマットされる、請求項1に記載の方法。
- 前記ページは、ハイパーテキストマークアップ言語(HTML)ページとしてフォーマットされる、請求項1に記載の方法。
- 伝送されたページの部分的ページ再生成のためのサーバであって、
クライアントと通信する送受信機と、
該送受信機と通信する部分的ページ再生成器と
を含む、サーバ。 - 前記部分ページ再生成器と通信する外部ページコードソースをさらに含む、請求項10に記載のサーバ。
- 伝送されたページの部分的ページ再生成のためのサーバであって、
クライアントと通信し、該ページを該クライアントに表示のために伝送する送受信機と、
該送受信機および外部ページコードソースと通信する部分的ページ再生成器であって、該ページを該外部ページコードソースから生成するページ生成コードを受け取り、該ページのポーションを該ページ生成コードのコードフラグメントと関連付け、該伝送されたページの該ポーションを再生成するために該コードの該関連付けられたコードフラグメントを実行する、部分的ページ再生成器と
を含む、サーバ。 - 前記外部ページコードソースは、前記サーバ上に配置される、請求項12に記載のサーバ。
- 前記部分的ページ再生成器は、前記再生成された部分を前記送受信機に前記クライアントへの伝送のために送るようにさらに構成される、請求項12に記載のサーバ。
- 前記部分的ページ再生成器は、前記関連付けられたコードフラグメントの選択的実行を可能にするために前記ページ生成コードの実行を操作するようにさらに構成される、請求項12に記載のサーバ。
- 前記部分的ページ再生成器は、前記全体のページ生成コードより少ない実行を可能にするために前記関連付けられたコードフラグメントと前記コードの他の部分との間の通信を妨害するようにさらに構成される、請求項15に記載のサーバ。
- 前記部分的ページ再生成器は、前記関連付けられたコードフラグメントの選択的実行を可能にするために前記ページ生成コードで動作するためのさらなるコードを追加するようにさらに構成される、請求項15に記載のサーバ。
- 前記部分的ページ再生成器は、出力を生成するために前記コードフラグメントを実行し、前記伝送されたページのどの部分が該実行されたコードフラグメントによって作成されたかを識別するために該実行されたコードフラグメントの生成された出力の始めおよび終わりに識別タグを挿入するようにさらに構成される、請求項12に記載のサーバ。
- 前記部分的ページ再生成器は、前記ページのポーションと該ポーションを生成する前記コードのコードフラグメントとの間の関係を格納するようにさらに構成される、請求項18に記載のサーバ。
- 伝送されたページの部分的ページ再生成のためのシステムであって、
外部ページコードソースと、
クライアント送受信機を含むクライアントと、
サーバであって、
該クライアント送受信機と通信するサーバ送受信機と、
該サーバ送受信機および該外部ページコードソースと通信する部分的ページ再生成器と
とを含む、サーバと
を含む、システム。 - 前記外部ページコードソースは、前記サーバ上に配置される、請求項20に記載のシステム。
- 伝送されたページの部分的ページ再生成のためのシステムであって、
外部ページコードソースと、
クライアント送受信機を含むクライアントであって、該クライアント送受信機は、該ページを受け取る、クライアントと、
サーバであって、
該クライアントと通信するサーバ送受信機であって、該ページを該クライアントに表示のために伝送する、サーバ送受信機と、
該サーバ送受信機および該外部コードソースと通信する部分的ページ再生成器であって、該外部ページコードソースから該ページを生成するページ生成コードを受け取り、該ページのポーションを該ページ生成コードのコードフラグメントと関連付け、該伝送されたページのポーションを再生成するために該コードの関連付けられたコードフラグメントを実行する、部分的ページ再生成器と
を含むサーバと
を含む、システム。 - 前記外部ページコードソースは、前記サーバ上に配置される、請求項22に記載のシステム。
- 前記部分的ページ再生成器は、前記再生成された部分を前記サーバ送受信機に前記クライアントへの伝送のために送るようにさらに構成される、請求項23に記載のシステム。
- 前記部分的ページ再生成器は、前記関連付けられたコードフラグメントの選択的実行を可能にするために前記ページ生成コードの実行を操作するようにさらに構成される、請求項23に記載のシステム。
- 前記部分的ページ再生成器は、前記全体のページ生成コードより少ない実行を可能にするために前記関連付けられたコードフラグメントと前記コードの他の部分との間の通信を妨害するようにさらに構成される、請求項26に記載のシステム。
- 前記部分的ページ再生成器は、前記関連付けられたコードフラグメントの選択的実行を可能にするために前記ページ生成コードと動作するさらなるコードを追加するようにさらに構成される、請求項26に記載のシステム。
- 前記部分的ページ再生成器は、出力を生成するために前記コードフラグメントを実行し、前記伝送されたページのどのポーションが前記実行されたコードフラグメントによって作成されたかを識別するために前記実行されたコードフラグメントの前記生成された出力の始めおよび終わりに識別タグを挿入するようにさらに構成される、請求項23に記載のシステム。
- 前記部分的ページ再生成器は、前記ページの前記ポーションと該ポーションを生成する前記コードの前記コードフラグメントとの間の関係を格納するようにさらに構成される、請求項29に記載のシステム。
- 部分的ページ再生成のためにページ生成コードを強化するための方法であって、
ページを生成するページ生成コードを受け取るステップと、
該ページ生成コード内の一以上のコードフラグメントを識別するステップであって、各コードフラグメントは、該コードフラグメントが実行されるときに該ページの対応する部分を生成する、ステップと、
部分的ページ再生成のために各コードフラグメントの実行を制御する該ページ生成コードと動作するさらなるコードを提供するステップと
を包含する、方法。 - 前記識別するステップは、前記ページ生成コードのプロセスを少なくとも一つの所定の基準と比較して、該プロセスがコードフラグメントとして適格かどうかを判定するステップをさらに包含する、請求項30に記載の方法。
- 前記所定の基準は、前記ページ生成コードにおける前記プロセスは、広域の変数を修正しないことを含む、請求項31に記載の方法。
- 前記所定の基準は、前記ページ生成コードにおける前記プロセスは、別のコードフラグメントが信頼するデータを修正しないことを含む、請求項31に記載の方法。
- 前記所定の基準は、前記ページ生成コードにおける前記プロセスは、所定のプロセス署名を有することを含む、請求項31に記載の方法。
- 前記所定の方法のサインは、前記プロセスの戻り値の型が文字列であることである、請求項34に記載の方法。
- 前記提供されたさらなるコードは、前記ページ生成コードを表す全体の分類と固有に関連付けられたさらなるプロセスを含む、請求項30に記載の方法。
- 前記提供されたさらなるコードは、前記識別されたコードフラグメントへの呼び出しを妨害するために各識別されたコードフラグメントと固有に関連付けられたさらなるプロセスを含む、請求項30に記載の方法。
- 前記提供されたさらなるコードは、前記識別されたコードフラグメントが信頼するデータを検索するプロセスと固有に関連付けられたさらなるプロセスを含む、請求項30に記載の方法。
- 前記識別されたコードフラグメントが信頼するデータを検索する前記プロセスは、JAVA(R)ビーンである、請求項38に記載の方法。
- 部分的ページ再生成のためにページ生成コードを強化するためのサーバであって、
ページを生成するページ生成コードを受け取るために外部のページコードソースと通信し、該ページ生成コード内の一以上のコードフラグメントを識別する部分的ページ再生成器であって、各コードフラグメントは、部分的ページ再生成のために各コードフラグメントの実行を制御する該ページ生成コードと動作するさらなるコードが実行および提供されたときに該ページの対応するポーションを生成する、部分的ページ再生成器を含む、サーバ。 - 前記部分的ページ再生成器は、前記ページ生成コードのプロセスを少なくとも一つの所定の基準と比較して、前記プロセスがコードフラグメントであるかどうかを判定するようにさらに構成される、請求項40に記載のサーバ。
- 前記所定の基準は、前記ページ生成コードにおける前記プロセスが広域の変数を修正しないことを含む、請求項41に記載のサーバ。
- 前記所定の基準は、前記ページ生成コードにおける前記プロセスは、別のコードフラグメントが信頼するデータを修正しないことを含む、請求項40に記載のサーバ。
- 前記所定の基準は、前記ページ生成コードにおける前記プロセスは、所定のプロセスサインを有することを含む、請求項41に記載のサーバ。
- 前記所定のプロセスサインは、前記プロセスの復帰タイプが文字列であることである、請求項44に記載のサーバ。
- 前記部分的ページ再生成器は、前記ページ生成コードを表す全体の分類と固有に関連付けられるさらなるプロセスを含むさらなるコードを提供するようにさらに構成される、請求項40に記載のサーバ。
- 前記部分的ページ再生成器は、前記識別されたコードフラグメントへの呼び出しを妨害するために各識別されたコードフラグメントと固有に関連付けられるさらなるプロセスを含むさらなるコードを提供するようにさらに構成される、請求項40に記載のサーバ。
- 前記部分的ページ再生成器は、前記識別されたコードフラグメントが信頼するデータを検索するプロセスと固有に関連付けられるさらなるプロセスを含むさらなるコードを提供するようにさらに構成される、請求項40に記載のサーバ。
- 前記識別されたコードフラグメントが信頼するデータを検索する前記プロセスは、JAVA(R)ビーンである、請求項48に記載のサーバ。
- サーバによって伝送されたページを自動的に更新するための方法であって、
ページを生成するページ生成コードを受け取るステップと、
該ページをクライアントに表示のために伝送するステップと、
データを該ページ生成コードのコードフラグメントと関連付けるステップと、
該県連付けられたデータにおける変化を検出するステップと、
該伝送されたページの少なくとも一部を再生成するために該関連付けられたコードフラグメントを実行するステップと
を包含する、方法。 - 前記変化に応答して前記コードフラグメントの前記関連付けられたデータをマーキングするステップと、
前記ページに対するクライアントの要求を受け取るステップとをさらに包含し、
前記実行するステップは、前記クライアントの要求に応答して前記マーキングされたデータと関連付けられた前記コードフラグメントを実行するステップを包含する、請求項50に記載の方法。 - 前記クライアントが前記ページに対する前記要求を発するときに制御するプロトコールインターフェースを前記クライアントに伝送するステップをさらに包含する、請求項51に記載の方法。
- 前記ページに対する定期的な要求を受け取るステップをさらに包含する請求項51に記載の方法。
- 前記ページに対する前記要求を伝送するためのクライアントへの接続時間を修正するステップをさらに包含する、請求項52に記載の方法。
- 前記再生成されたページ部分を前記クライアントに伝送するステップをさらに包含する、請求項50に記載の方法。
- 前記関連付けられたデータをモニタするステップをさらに包含する、請求項50に記載の方法。
- 前記関連付けられたデータは、前記関連付けられたコードスラグメントが依存する変数を含む、請求項50に記載の方法。
- 前記関連付けられたデータは、前記クライアントのユーザから取得された入力を含む、請求項50に記載の方法。
- 前記コードは、サーブレットとしてフォーマットされる、請求項50に記載の方法。
- 前記ページは、ハイパーテキストマークアップ言語(HTML)ページとしてフォーマットされる、請求項50に記載の方法。
- 伝送されたページを自動的に更新するためのサーバであって、
クライアントと通信する送受信機と、
該送受信機と通信する部分的ページ再生成器と、
該部分的ページ再生成器と通信するデータソースと、
該部分的ページ再生成器および該データソースと通信するモニタモジュールとを含む、サーバ。 - 伝送されたページを自動的に更新するためのサーバであって、
クライアントと通信し、該ページを該クライアントに表示のために伝送する送受信機と、
該ロランシーバ、外部のページコードソースおよびデータソースと通信する部分的ページ再生成器であって、該外部のページコードソースから該ページを生成するページ生成コードを受け取り、該データソースからのデータを該ページ生成コードのコードフラグメントと関連付け、該関連付けられたデータにおける変化を検出し、該伝送されたページの少なくとも一部を再生成するために該関連付けられたコードフラグメントを実行する、部分的ページ再生成器と
を含む、サーバ。 - 前記部分的ページ再生成器は、前記変化に応答して前記コードフラグメントの前記関連付けられたデータにマークを付け、前記ページに対する前記クライアントからの要求に応答して前記表示と関連付けられた前記コードフラグメントを実行するようにさらに構成される、請求項62に記載のサーバ。
- 前記部分的ページ再生成器は、前記クライアントが前記ページに対する要求を発するときに制御するためにプロトコールインターフェースを前記クライアントに伝送するようにさらに構成される、請求項63に記載のサーバ。
- 前記部分的ページ再生成器は、前記ページに対する前記要求を果たすための接続時間を修正するようにさらに構成される、請求項62に記載のサーバ。
- 前記部分的ページ再生成器は、前記クライアントへの伝送のために前記再生成されたページのポーションを前記送受信機に送るようにさらに構成される、請求項62に記載のサーバ。
- 前記部分的ページ再生成器および前記データソースと通信するモニタモジュールをさらに含み、該モニタモジュールは、変化を検出するために前記関連付けられたデータモニタし、前記部分的ページ再生成器に該検出された変化を通知する、請求項62に記載のサーバ。
- 前記関連付けられたデータは、前記関連付けられたコードフラグメントが依存する変数を含む、請求項62に記載のサーバ。
- 前記関連付けられたデータは、前記クライアントのユーザから取得された入力を含む、請求項62に記載のサーバ。
- 前記コードは、サーブレットとしてフォーマットされる、請求項62に記載のサーバ。
- 前記ページは、ハイパーテキストマークアップ言語(HTML)ページとしてフォーマットされる、請求項62に記載のサーバ。
- 伝送されたページを自動的に更新するためのクライアントであって、
送受信機と、
該送受信機と通信するディスプレイ変更器と
を含む、クライアント。 - 伝送されたページを自動的に更新するためのクライアントであって、
該ページを受け取る送受信機と、
該送受信機と通信するディスプレイ変更器であって、該ページの部分を受け取り、該再生成されたページのポーションをクライアントのディスプレイ上に表示する、ディスプレイ変更器と
を含む、クライアント。 - 前記ディスプレイ変更器は、サーバへのユーザ入力データにおける変化を自動的に伝送するようにさらに構成される、請求項73に記載のクライアント。
- 前記送受信機と通信するプロトコールインターフェースであって、前記クライアントが前記ページに対する要求を発するときに制御する、プロトコールインターフェースをさらに含む、請求項73に記載のクライアント。
- 前記プロトコールインターフェースは、前記ページに対する定期的な要求を生成するようにさらに構成される、請求項75に記載のクライアント。
- 前記プロトコールインターフェースは、前記ページに対する前記要求を伝送するための接続時間を修正するようにさらに構成される、請求項75に記載のクライアント。
- 伝送されたページを自動的に更新するためのシステムであって、
クライアント送受信機を含むクライアントと、
サーバであって、
該クライアント送受信機と通信するサーバ送受信機と
該サーバ送受信機と通信する部分的ページ再生成器と
を含む、サーバと、
該部分的ページ再生成器と通信する外部のページコードソースと、
該部分的ページ再生成器と通信するデータソースと、
該部分的ページ再生成器および該データソースと通信するモニタモジュールとを含む、システム。 - 前記クライアントは、ディスプレイ変更器をさらに含む、請求項78に記載のシステム。
- 伝送されたページを自動的に更新するためのシステムであって、
外部のページコードソースと、
データソースと、
クライアントであって、
該ページを受け取るクライアント送受信機と、
該クライアント送受信機と通信するディスプレイ変更器であって、該ページのポーションを受け取り、該再生成されたページのポーションをクライアントのディスプレイ上に表示する、ディスプレイ変更器と
を含むクライアントと、
サーバであって、
該クライアントと通信し、該ページを該クライアントに表示のために伝送する送受信機と、
該送受信機、該外部のページコードソースおよび該データソースと通信する部分的ページ再生成器であって、該ページを生成するページ生成コードを該外部のページコードソースから受け取り、該データソースからのデータを該ページ生成コードのコードフラグメントと関連付け、該関連付けられたデータにおける変化を検出し、該再生成されたページのポーションを再生成するために該関連付けられたコードフラグメントを実行する、部分的再生成器と
を含む、サーバと
を含む、システム。 - 前記サーバの前記部分的ページ再生成器は、前記変化に応答して前記コードフラグメントの前記関連付けられたデータにマークを付け、前記ページに対する前記クライアントからの要求に応答して前記表示と関連付けられた前記コードフラグメントを実行するようにさらに構成される、請求項80に記載のシステム。
- 前記部分的ページ再生成器は、プロトコールインターフェースを前記クライアントに伝送し、前記クライアントが前記ページに対する要求を発するときに制御するために前記クライアントにおいて実行されるようにさらに構成される、請求項81に記載のシステム。
- 前記サーバの前記部分的ページ再生成器は、前記ページに対する前記要求に応答して前記ページを伝送するための接続時間を修正するようにさらに構成される、請求項82に記載のシステム。
- 前記サーバの前記部分的ページ再生成器は、前記クライアントへの伝送のために前記再生成されたページのポーションを前記送受信機に送るようにさらに構成される、請求項80に記載のシステム。
- 前記サーバは、前記送受信機と通信するプロトコールインターフェースをさらに含み、該プロトコールインターフェースは、クライアントが前記ページに対する要求を発するときに制御する、請求項80に記載のシステム。
- 前記クライアントの前記プロトコールインターフェースは、前記ページに対する定期的な要求を生成するように構成される、請求項85に記載のシステム。
- 前記サーバの前記プロトコールインターフェースは、前記ページに対する前記要求に応答して前記ページを伝送するための接続時間を修正するようにさらに構成される、請求項85に記載のシステム。
- 前記部分的ページ再生成器および前記データソースと通信するモニタモジュールをさらに含み、該モニタモジュールは、変化を検出するために前記関連付けられたデータをモニタし、前記部分的ページ再生成器に該検出された変化を通知する、請求項80に記載のシステム。
- 前記外部のページコードソースは、前記サーバ上に配置される、請求項80に記載のシステム。
- 前記ダータソースは、前記サーバ上に配置される、請求項80に記載のシステム。
- 前記関連付けられたデータは、前記関連付けられたコードフラグメントが依存する変数を含む、請求項80に記載のシステム。
- 前記関連付けられたデータは、前記クライアントのユーザから取得された入力を含む、請求項80に記載のシステム。
- 前記クライアントの前記ディスプレイ変更器は、サーバへのユーザ入力における変化を自動的に伝送するようにさらに構成される、請求項92に記載のシステム。
- 部分的ページ再生成のためにページをそのページ生成コードにマッピングするための方法であって、
ページを生成するページ生成コードを受け取るステップと、
該ページ生成コード内の一以上のコードフラグメントを識別するステップであって、各コードフラグメントは、実行されるときに該ページの対応する部分を生成する、ステップと、
各コードフラグメントと該コードフラグメントが生成する該ページの一以上の部分との間の対応マップを生成するステップと、
該ページの一部を再生成するときにどのコードフラグメントを実行するかを判定するために該マップにアクセスするステップと
を包含する、方法。 - 前記識別されたコードフラグメントが依存するデータを判定するステップをさらに包含する、請求項94に記載の方法。
- 前記判定するステップは、前記実行されたコードフラグメントが依存するデータを判定するための実行の間に前記識別されたコードフラグメントの入力をモニタするステップをさらに包含する、請求項95に記載の方法。
- 前記マップを生成するステップは、前記対応マップにおいて、前記コードフラグメントと前記ページの前記ポーションを生成するために前記コードフラグメントが依存する前記データとの間の対応を生成するステップをさらに包含する、請求項95に記載の方法。
- 前記コードフラグメントが依存する前記データをモニタするステップと、
前記対応マップにおいて、前記データが変化したことを示すために前記データと関連付けられた指標を生成するステップと
をさらに包含する、請求項97に記載の方法。 - 出力を生成するために前記ページ生成コードの前記コードフラグメントの少なくとも一つを実行するステップと、
前記伝送されたページのどのポーションが前記実行されたコードフラグメントに対応するかを識別するために各実行されたコードフラグメントの前記生成された出力を対応する識別タグと識別するステップとをさらに包含する、請求項94に記載の方法。 - 前記対応マップにおいて、前記コードフラグメントが前記対応する識別タグによって生成する前記ページの前記一以上のポーションを識別するステップをさらに包含する、請求項99に記載の方法。
- 前記マップを生成するステップは、前記対応マップにおいて、前記伝送されたページのページ記述モデルを生成するステップをさらに包含する、請求項99に記載の方法。
- 前記コードフラグメントの一つによって生成された前記ページのポーションに対応する前記ページ記述モデルにおけるノードを識別するステップをさらに包含する、請求項101に記載の方法。
- 前記対応する識別タグによって前記ノードを識別するステップをさらに包含する、請求項102に記載の方法。
- 部分的ページ再生成のためにページをそのページ生成コードにマッピングするためのサーバであって、
対応マップを格納する格納バッファと、
外部のページコードソースと通信する部分的ページ再生成器であって、部分的ページ再生成器は、該外部のページコードソースから該ページを生成するページ生成コードを受け取り、該ページ生成コード内の一以上のコードフラグメントを識別し、各コードフラグメントは、実行されるときに該ページの対応するポーションを生成し、各コードフラグメントと該格納バッファ内に格納するために該コードフラグメントが生成する該ページの一以上のポーションとの間の対応マップを生成し、前記ページのポーションを再生成するときにどのコードフラグメントを実行するかを判定するために該格納バッファから該マップにアクセスする、部分的ページ再生成器と
を含む、サーバ。 - 前記部分的ページ再生成器は、前記識別されたコードフラグメントが依存するデータを判定するようにさらに構成される、請求項104に記載のサーバ。
- 前記部分的ページ再生成器は、前記識別されたコードフラグメントが依存する前記データを判定するための実行の間に前記識別されたコードフラグメントの入力をモニタするようにさらに構成される、請求項105に記載のサーバ。
- 前記格納バッファ内に格納された前記対応マップは、前記ページのポーションを生成するために各識別されたコードフラグメントと該コードフラグメントが依存するデータ間の対応を含む、請求項105に記載のサーバ。
- 前記格納バッファ内に格納された前記対応マップは、前記データが変化したかどうかを示すために前記コードフラグメントが依存する前記データと関連付けられた指標を含む、請求項107に記載のサーバ。
- 出力を生成するために前記ページ生成コードの前記コードフラグメントの少なくとも一つを実行し、前記伝送されたページのどのポーションが前記実行されたコードフラグメントに対応するかを識別するために各実行されたコードフラグメントの前記生成された出力を対応する識別タグと識別するようにさらに構成される、請求項104に記載のサーバ。
- 前記部分的ページ再生成器は、前記対応マップにおいて、前記伝送されたページのページ記述モデルを生成するようにさらに構成される、請求項109に記載のサーバ。
- 前記部分的ページ再生成器は、前記コードフラグメントの一つによって生成された前記ページのポーションに対応する前記ページ記述モデルにおけるノードを識別するようにさらに構成される、請求項110に記載のサーバ。
- 前記部分的ページ再生成器は、前記対応する識別タグによって前記ノードを識別するようにさらに構成される、請求項111に記載のサーバ。
- 部分的なページをクライアント上に表示された伝送されたページに組み込むための方法であって、
該伝送されたページをクライアント上に表示するステップと、
該クライアントによってサーバからの該伝送されたページの再生成されたポーションを受け取るステップと、
該クライアントによって該再生成されたポーションを前記クライアント上に表示された該伝送されたページに組み込むステップと
を包含する、方法。 - 前記クライアントによって修正リストを前記サーバから受け取るステップと、前記再生成されたページのポーションの前記伝送されたページへの組み込みについて前記クライアントに指令するステップとをさらに包含する、請求項113に記載の方法。
- 前記クライアントによってさらなるコードを受け取るステップと、前記修正リストに含まれたコマンドを解釈する方法について前記クライアントに指令するステップとをさらに包含する、請求項114に記載の方法。
- 前記クライアント上に表示された前記伝送されたページの第一のポーションを複製するステップと、
前記複製された第一のポーションを前記クライアント上に表示された前記伝送されたページの第二のポーションに挿入するステップと
さらに包含する、請求項113に記載の方法。 - 前記第二のポーションに挿入された前記複製された第一のポーションの識別タグを第一の値から同一でない第二の値へ変更するステップをさらに包含する、請求項116に記載の方法。
- 前記伝送されたページの第一のポーションを第二のポーションに移動させるステップをさらに包含する、請求項113に記載の方法。
- 前記移動させるステップは、前記第一のポーションを格納バッファに保存するステップをさらに包含する、請求項118に記載の方法。
- 前記移動させるステップは、前記伝送されたページの前記第一のポーションを前記再生成された部分内の第二のポーションに移動させるステップをさらに包含する、請求項118に記載の方法。
- 前記移動された第一のポーションの識別タグを第一の値から同一でない第二の値へ変更するステップをさらに包含する、請求項118に記載の方法。
- 前記組み込むステップは、前記伝送されたページのポーションを前記再生成された部分に置き換えるステップをさらに包含する、請求項113に記載の方法。
- 部分的なページを伝送されたページに組み込むためのクライアントであって、
該伝送されたページおよび任意の部分的なポーションを受け取る送受信機と、
該送受信機と通信するディスプレイ変更器であって、サーバから該伝送されたページの再生成されたポーションを受け取り、該再生成されたページのポーションを該クライアント上に表示された該伝送されたページに組み込む、ディスプレイ変更器と
を含む、クライアント。 - 前記ディスプレイ変更器は、前記サーバから修正リストを受け取り、前記再生成されたポーションの前記伝送されたページへの組み込みについて前記クライアントに指令するようにさらに構成される、請求項123に記載のクライアント。
- 前記ディスプレイ変更器は、前記修正リストに含まれるコマンドを解釈する方法について前記クライアントに指令するためのさらなるコードを受け取るようにさらに構成される、請求項123に記載のクライアント。
- 前記ディスプレイ変更器と通信する格納バッファをさらに含み、該格納バッファは、前記伝送されたページを更新する際の使用のために前記クライアント上に表示された前記伝送されたページの第一のポーションを格納する、請求項123に記載のクライアント。
- 部分的なページを伝送されたページに組み込むためのシステムであって、
外部のページコードソースと、
クライアントであって、
該ページを受け取るクライアント送受信機と、
該クライアント送受信機と通信するディスプレイ変更器であって、サーバから該伝送されたページの再生成されたポーションを受け取り、該再生成されたページのポーションをクライアント上に表示された該伝送されたページに組み込む、ディスプレイ変更器と
を含む、クライアントと、
サーバであって、
該クライアントと通信し、該ページを該クライアントに表示のために伝送するサーバ送受信機と、
該サーバ送受信機および該外部のページコードソースと通信する部分的ページ再生成器であって、該外部のページコードソースから該ページを生成するページ生成コードを受け取り、該伝送されたページのポーションを再生成するために該コードの関連付けられたコードフラグメントを実行する、部分的ページ再生成器と
を含む、サーバと
を含む、システム。 - 前記クライアントの前記ディスプレイ変更器は、前記サーバから修正リストを受け取り、前記再生成されたポーションの前記伝送されたページへの組み込みについて前記クライアントに指令するようにさらに構成される、請求項127に記載のシステム。
- 前記クライアントの前記ディスプレイ変更器は、さらなるコード受け取り、前記修正リストに含まれるコマンドを解釈する方法について前記クライアントに指令するようにさらに構成される、請求項127に記載のシステム。
- 前記クライアントは、前記ディスプレイ変更器と通信する格納バッファをさらに含み、該格納バッファは、前記伝送されたページを更新する際の使用のために前記クライアント上に表示された前記伝送されたページの第一のポーションを格納する、請求項127に記載のシステム。
- 部分的ページ再生成の伝送されたページへの組み込みを指令するための方法であって、
ページを生成するページ生成コードを受け取るステップと、
該ページをクライアントに表示のために伝送するステップと、
該伝送されたページのポーションを再生成するために該コードのコードフラグメントを実行するステップと、
該再生成されたポーションの該伝送されたページへの組み込みについて該クライアントに指令するための少なくとも一つのコマンドを含む修正リストを判定するステップと
を含む、方法。 - 前記伝送されたページへの組み込みのために前記伝送されたページの前記再生成されたポーションを前記クライアントに伝送するステップをさらに包含する、請求項131に記載の方法。
- 前記修正リストを前記再生成されたページ部分内にはめ込むステップをさらに包含する、請求項132に記載の方法。
- 前記修正リストを前記クライアントに伝送するステップをさらに包含する、請求項132に記載の方法。
- 前記クライアントが前記再生成されたページのポーションを組み込むために前記修正リストの前記コマンドを解釈する能力を有するかどうかを判定するステップをさらに包含する、請求項131に記載の方法。
- 前記クライアントが前記コマンドを解釈する能力に欠けることを判定することに応答してさらなるコードを前記クライアントに伝送するステップをさらに包含する、請求項135に記載の方法。
- 前記伝送されたページの複数のポーションを識別するステップと、
前記ページを前記クライアントに伝送する前に該複数のポーションの各部分に対応する識別タグを前記伝送されたページに挿入するステップと
をさらに包含する、請求項131に記載の方法。 - 対応する識別タグによって前記伝送されたページの前記再生成された部分を識別するステップをさらに包含する、請求項136に記載の方法。
- 前記修正リストは、前記対応する識別タグに対する基準を含む、請求項136に記載の方法。
- 前記修正リストは、移動コマンドおよび複製コマンドおよび割当てコマンドの少なくとも一つを含む、請求項131に記載の方法。
- 部分的ページ再生成の伝送されたページへの組み込みを指令するためのサーバであって、
クライアントと通信し、該ページを該クライアントに表示のために伝送する送受信機と、
該送受信機および外部のページコードソースと通信する部分的ページ再生成器であって、該伝送されたページのポーションを再生成するために該コードのコードフラグメントを実行し、該再生成されたポーションの該伝送されたページへの組み込みについて該クライアントに指令するために少なくとも一つのコマンドを含む修正リストを判定する、部分的ページ再生成器と
を含む、サーバ。 - 前記外部のページコードソースは、前記サーバ上に配置される、請求項141に記載のサーバ。
- 前記部分的ページ再生成器は、前記修正リストを前記再生成されたページ部分にはめ込むようにさらに構成される、請求項141に記載のサーバ。
- 前記部分的ページ再生成器は、前記クライアントに伝送するために前記修正リストを前記送受信機に送るようにさらに構成される、請求項141に記載のサーバ。
- 前記部分的ページ再生成器は、前記クライアントが前記再生成されたページのポーションを組み込むために前記修正リストの前記コマンドを解釈する能力を有するかどうかを判定するようにさらに構成される、請求項141に記載のサーバ。
- 前記部分的ページ再生成器は、前記クライアントに伝送するために前記クライアントが前記能力に欠けることを判定することに応答してさらなるコードを前記送受信機に送るようにさらに構成される、請求項145に記載のサーバ。
- 前記部分的ページ再生成器は、前記伝送されたページの複数のポーションを識別し、前記ページを前記クライアントに伝送する前に前記複数のポーションの各部分に対応する識別タグを前記伝送されたページに挿入するようにさらに構成される、請求項141に記載のサーバ。
- 前記部分的ページ再生成器は、前記対応する識別タグによって前記伝送されたページの前記再生成されたポーションを識別するようにさらに構成される、請求項147に記載のサーバ。
- 前記修正リストは、前記対応する識別タグに対する基準を含む、請求項148に記載のサーバ。
- 前記修正リストは、移動コマンドおよび複製コマンドおよび割当てコマンドの少なくとも一つを含む、請求項141に記載のサーバ。
- 部分的ページ再生成の伝送されたページへの組み込みを指令するためのシステムであって、
外部のページコードソースと、
クライアントであって、
該ページを受け取るクライアント送受信機と、
該クライアント送受信機と通信するディスプレイ変更器であって、該伝送されたページの再生成された部分を受け取り、該再生成された部分を該クライアント上に表示された該伝送されたページに組み込む、ディスプレイ変更器と
を含むクライアントと、
サーバであって、
該クライアントと通信し、該ページを該クライアントに表示のために伝送するサーバ送受信機と、
該送受信機および外部のページコードソースと通信する部分的ページ再生成器であって、該伝送されたページの部分を再生成するために該コードのコードフラグメントを実行し、該再生成された部分の該伝送されたページへの組み込みについて該クライアントに指令するために少なくとも一つのコマンドを含む修正リストを判定する、部分的ページ再生成器と
を含むサーバと
を含む、システム。 - 前記サーバの前記部分的ページ再生成器は、前記修正リストを前記再生成ページ部分にはめ込むようにさらに構成される、請求項151に記載のシステム。
- 前記サーバの前記部分的ページ再生成器は、前記クライアントに伝送するために前記修正リストを送るようにさらに構成される、請求項151に記載のシステム。
- 前記サーバの前記部分的ページ再生成器は、前記クライアントが前記再生成されたページ部分を組み込むために前記修正リストの前記コマンドを解釈する能力を有するかどうかを判定するようにさらに構成される、請求項151に記載のシステム。
- 前記サーバの前記部分的ページ再生成器は、前記クライアントが前記コマンドを解釈する前記能力に欠けることを判定することに応答して前記クライアントに伝送するために前記送受信機に送るようにさらに構成される、請求項154に記載のシステム。
- 前記サーバの前記部分的ページ再生成器は、前記伝送されたページの複数のポーションを識別し、前記ページを前記クライアントに伝送する前に前記複数のポーションの各部分に対応する識別タグを該伝送されたページに挿入するようにさらに構成される、請求項151に記載のシステム。
- 前記サーバの前記部分的ページ再生成器は、前記対応する識別タグによって前記伝送されたページの前記再生成されたポーションを識別するようにさらに構成される、請求項156に記載のシステム。
- 前記修正リストは、前記対応する識別タグに対する基準を含む、請求項157に記載のシステム。
- 前記修正リストは、移動コマンドおよび複製コマンドおよび割当てコマンドの少なくとも一つを含む、請求項151に記載のシステム。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US70517000A | 2000-11-02 | 2000-11-02 | |
US70489700A | 2000-11-02 | 2000-11-02 | |
US70449800A | 2000-11-02 | 2000-11-02 | |
US70485700A | 2000-11-02 | 2000-11-02 | |
US09/704,896 US7346842B1 (en) | 2000-11-02 | 2000-11-02 | Methods and apparatus for incorporating a partial page on a client |
US09/704,904 US7051084B1 (en) | 2000-11-02 | 2000-11-02 | Methods and apparatus for regenerating and transmitting a partial page |
PCT/US2001/045272 WO2002063504A2 (en) | 2000-11-02 | 2001-11-02 | Methods and apparatus for augmenting page generation code to effect partial page regeneration |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004519040A true JP2004519040A (ja) | 2004-06-24 |
Family
ID=27560241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002563379A Pending JP2004519040A (ja) | 2000-11-02 | 2001-11-02 | 部分的ページ再生成に影響を与えるページ生成コードを強化する方法および装置 |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP2004519040A (ja) |
GB (1) | GB2384346A (ja) |
WO (1) | WO2002063504A2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007226783A (ja) * | 2006-02-22 | 2007-09-06 | Research In Motion Ltd | プッシュコンテンツの配信および処理を容易にする装置および関連方法 |
JP2010122724A (ja) * | 2008-11-17 | 2010-06-03 | Fujitsu Ltd | データ共有プログラム,データ共有方法及びデータ共有装置 |
JP2017004544A (ja) * | 2012-12-19 | 2017-01-05 | アマゾン テクノロジーズ インコーポレイテッド | リロードイベントに基づくウェブリソースの対話性分析 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7051084B1 (en) * | 2000-11-02 | 2006-05-23 | Citrix Systems, Inc. | Methods and apparatus for regenerating and transmitting a partial page |
US7171470B2 (en) | 2003-02-20 | 2007-01-30 | International Business Machines Corporation | Grid service scheduling of related services using heuristics |
US7805523B2 (en) * | 2004-03-15 | 2010-09-28 | Mitchell David C | Method and apparatus for partial updating of client interfaces |
US7480624B2 (en) * | 2004-09-27 | 2009-01-20 | Accenture Global Services Gmbh | System for supporting interactive presentations to customers |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999008182A1 (en) * | 1997-08-05 | 1999-02-18 | Lutris Technologies, Inc. | Method and apparatus for static and dynamic generation of information on a user interface |
US6021426A (en) * | 1997-07-31 | 2000-02-01 | At&T Corp | Method and apparatus for dynamic data transfer on a web page |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5859971A (en) * | 1996-02-15 | 1999-01-12 | International Business Machines Corp. | Differencing client/server communication system for use with CGI forms |
US5946697A (en) * | 1997-04-22 | 1999-08-31 | Microsoft Corporation | Rapid transfer of HTML files |
EP1125221A4 (en) * | 1998-05-13 | 2006-04-05 | Bull Hn Information Syst | METHOD FOR IMPROVING THE EXECUTION OF A CODE USING AN HTML ANALYSIS LANGUAGE AND CORRESPONDING APPARATUS |
US6377957B1 (en) * | 1998-12-29 | 2002-04-23 | Sun Microsystems, Inc. | Propogating updates efficiently in hierarchically structured date |
-
2001
- 2001-11-02 JP JP2002563379A patent/JP2004519040A/ja active Pending
- 2001-11-02 GB GB0309650A patent/GB2384346A/en not_active Withdrawn
- 2001-11-02 WO PCT/US2001/045272 patent/WO2002063504A2/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021426A (en) * | 1997-07-31 | 2000-02-01 | At&T Corp | Method and apparatus for dynamic data transfer on a web page |
WO1999008182A1 (en) * | 1997-08-05 | 1999-02-18 | Lutris Technologies, Inc. | Method and apparatus for static and dynamic generation of information on a user interface |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007226783A (ja) * | 2006-02-22 | 2007-09-06 | Research In Motion Ltd | プッシュコンテンツの配信および処理を容易にする装置および関連方法 |
JP4521003B2 (ja) * | 2006-02-22 | 2010-08-11 | リサーチ イン モーション リミテッド | プッシュコンテンツの配信および処理を容易にする装置および関連方法 |
JP2010122724A (ja) * | 2008-11-17 | 2010-06-03 | Fujitsu Ltd | データ共有プログラム,データ共有方法及びデータ共有装置 |
JP2017004544A (ja) * | 2012-12-19 | 2017-01-05 | アマゾン テクノロジーズ インコーポレイテッド | リロードイベントに基づくウェブリソースの対話性分析 |
Also Published As
Publication number | Publication date |
---|---|
GB2384346A (en) | 2003-07-23 |
GB0309650D0 (en) | 2003-06-04 |
WO2002063504A3 (en) | 2004-04-08 |
WO2002063504A2 (en) | 2002-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7346842B1 (en) | Methods and apparatus for incorporating a partial page on a client | |
US7051084B1 (en) | Methods and apparatus for regenerating and transmitting a partial page | |
US6209029B1 (en) | Method and apparatus for accessing data sources in a three tier environment | |
US7120897B2 (en) | User control objects for providing server-side code generation from a user-defined dynamic web page content file | |
US8447806B2 (en) | Method and apparatus for updating and synchronizing information between a client and a server | |
JP5010551B2 (ja) | 動的ウェブページコンテンツファイルからのサーバ側コード生成 | |
US7269792B2 (en) | System and method for generating high-function browser widgets with full addressability | |
US6961750B1 (en) | Server-side control objects for processing client-side user interface elements | |
JP4467205B2 (ja) | サーバ側制御オブジェクトによるポストバック入力のハンドリング | |
US6370561B1 (en) | Method and system for invoking methods of objects over the internet | |
US6675230B1 (en) | Method, system, and program for embedding a user interface object in another user interface object | |
US7523158B1 (en) | System and method for partial page updates using a proxy element | |
EP1156428A2 (en) | Databinding using server-side control objects | |
EP1164473A2 (en) | State management of server-side control objects | |
US20020162093A1 (en) | Internationalization compiler and process for localizing server applications | |
JP3808020B2 (ja) | Javaサーブレットの機能を有するWebサーバ、Javaプログラムの更新方法、およびコンピュータプログラム | |
JPH11514769A (ja) | 埋め込み形ウェブサーバ | |
EP1952274A1 (en) | A method and system for developing interactive web applications in a unified framework | |
US7478142B1 (en) | Self-contained applications that are applied to be received by and processed within a browser environment and that have a first package that includes a manifest file and an archive of files including a markup language file and second package | |
JP2009054151A (ja) | 通信メッセージ・インスタンス投入方法、データ・インスタンス投入方法、通信メッセージ・インスタンス投入装置、および、コンピュータ読取可能媒体 | |
US6339839B1 (en) | Enabling multiple code generators in a translator-based embedded scripting system | |
JP2004519040A (ja) | 部分的ページ再生成に影響を与えるページ生成コードを強化する方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040913 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061124 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070515 |