JP2005535042A - クライアント・サーバ通信におけるインクリメントデータを処理する方法およびコンピュータシステム - Google Patents

クライアント・サーバ通信におけるインクリメントデータを処理する方法およびコンピュータシステム Download PDF

Info

Publication number
JP2005535042A
JP2005535042A JP2004526822A JP2004526822A JP2005535042A JP 2005535042 A JP2005535042 A JP 2005535042A JP 2004526822 A JP2004526822 A JP 2004526822A JP 2004526822 A JP2004526822 A JP 2004526822A JP 2005535042 A JP2005535042 A JP 2005535042A
Authority
JP
Japan
Prior art keywords
client
server
browser
increment
component
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.)
Granted
Application number
JP2004526822A
Other languages
English (en)
Other versions
JP4763286B2 (ja
Inventor
モーザー マーティン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SAP SE
Original Assignee
SAP SE
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SAP SE filed Critical SAP SE
Publication of JP2005535042A publication Critical patent/JP2005535042A/ja
Application granted granted Critical
Publication of JP4763286B2 publication Critical patent/JP4763286B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation

Abstract

サーバ(901)上のサーバコントローラ(101−1)は、サーバ(901)に格納されているアプリケーションコンポーネントのオリジナルモデル(200−T1)を変更モデル(200−T2)に変更するための、クライアント(900)のクライアントコントローラ(100−2)により生成された変更リクエストを受け取る(410)。サーバレンダラ(101−2)は、オリジナルモデル(200−T1)と変更モデル(200−T2)との差分に対応する少なくとも1つのブラウザインクリメント(300−I)を生成する(420)。クライアントアセンブラ(100−1)は少なくとも1つのブラウザインクリメント(300−I)をサーバ(901)から受け取り、オリジナルモデル(200−T1)に対応するオリジナルDOMコンポーネント(300−T1)を少なくとも1つのブラウザインクリメント(300−I)を用いてクライント(900)のところで更新し、その結果、変更モデル(200−T2)に対応する変更されたDOMコンポーネント(300−T2)が生成される。

Description

本発明は全般的には電子データ処理に関する発明であって、さらに詳しくは、クライント・サーバ通信のための方法、コンピュータプログラム製品ならびにシステムに関する。
背景技術
いくつかのソフトウェアアプリケーションはMicrosoft Internet Explorerのような慣用のウェブブラウザを使用してアクセス可能である。典型的には、この種のアプリケーションによって複数のページが提供される。1つのページにはグラフィカルユーザインタフェース(GUI)のための関連情報が含まれており、このページを介してユーザはアプリケーションと対話することができる。このページには複数のコンポーネントを含めることができる。
このページは典型的にはサーバにおいて生成され、その後、クライアントへ送信される。クライントサイドではブラウザによって、ユーザに対してこのページがビジュアライズされる。ページをリフレッシュするためユーザがGUIを介してクライアントと対話すると、プロセス全体が繰り返される。上述の手順に対して一般的に受け入れられているプログラミングデザインパターンは、いわゆるMVC(Model-View-Controller)デザインパターンである。この場合、閲覧および操作のためのアプリケーションデータをカプセル化するモデルがコントローラによって処理されて、ビューとなるようレンダリングされる。ビューはブラウザ互換のコンテンツを含むページに対応する。その際、各モデル事に複数のビューと複数のコントローラを設けることができる。たとえば、モデルのデータをテーブルとしてビジュアライズするために一方のビューを使用しながら、同じデータをパイチャートとしてビジュアライズするために他方のビューを使用することができる。このことはすべてサーバ上で行われ、ついでビュー全体がクライアントへ送られる。したがってMVCデザインパターンのためには複数のCPUサイクルと、クライアント・サーバ間の通信を可能にする大きい帯域幅のコンピュータネットワークが必要とされる。それというのも、ページ全体(レイアウト情報およびデータ)がサーバ上で再生され、結果として得られたビューがネットワークを介してサーバからクライアントへ再転送されるからである。さらにユーザは、リフレッシュされたページが最終的にクライアント上で表示されるまで、待ち時間や画面のちらつきのような望ましくない作用に直面する。
Microsoft Internet Explorer IE 6.0などのようないくつかの慣用のブラウザには、ちらつきのないレンダリングを行う特徴的な機能が含まれている。変更のあったページをクライアントが受け取る場合、ページのドキュメントオブジェクトモデル(DOM)にダイナミックHTMLを埋め込むことでブラウザはそのページにおいて変更されたコンポーネントを識別し、ページ全体ではなくそれらのコンポーネントだけを置き換える。このことにより、ユーザにとっては画面のちらつきが低減されることになるけれども、ページ生成のために依然としてCPU時間(CPUサイクル)を消費することになり、サーバからクライアントへページ全体を転送するための帯域幅が必要とされる。さらにユーザ各々がクライアントと対話するためにはサーバのラウンドトリップが必要とされ、したがってページ生成ならびに転送ゆえに高いサーバ負荷が引き起こされる。
このため、クライアント・サーバ通信においてCPU時間の消費ならびに帯域幅の要求を減らすと同時に、ユーザに対する不所望な作用も減らす必要性が常に存在している。
発明の概要
したがって本発明の課題は、ページリフレッシュにあたりクライアント・サーバ通信における帯域幅要求を減らすようにした方法、コンピュータプログラム製品ならびにコンピュータシステムを提供することにある。
この課題を解決するため本発明の1つの実施形態によれば、請求項1記載のインクリメントデータを処理するコンピュータシステムは以下のように構成されている:a)サーバ上のサーバコントローラはクライアントの変更リクエストを受け取り、この変更リクエストに応答して、アプリケーションコンポーネントのオリジナルモデルをこのアプリケーションコンポーネントにおける変更モデルに変更する。b)サーバレンダラは、オリジナルモデルと変更モデルとの差分に対応する少なくとも1つのブラウザインクリメントを生成する。c)クライアントアセンブラは少なくとも1つのブラウザインクリメントをサーバから受け取り、この少なくとも1つのブラウザインクリメントによってクライアントにおけるオリジナルDOMコンポーネントを更新する。オリジナルDOMコンポーネントはオリジナルモデルに対応し、更新の結果、変更モデルに対応する変更されたDOMコンポーネントが生成される。d)変更リクエストはクライアントコントローラによって生成される。オリジナルDOMコンポーネントはオリジナルモデルに対応し、更新の結果、変更モデルに対応する変更されたDOMコンポーネントが生成される。d)変更リクエストはクライアントコントローラによって生成される。
本発明のさらに別の実現形態は、請求項10記載のサーバ、請求項11記載のクライアント、請求項15記載のサーバ側の方法、請求項16記載のクライアント側の方法、請求項20記載のサーバ側のコンピュータプログラム製品、請求項21記載のクライアント側のコンピュータプログラム製品である。モデルとビューとコントローラが記憶されサーバによって処理される従来技術のMVCパターンと比較すると、本発明による方法は、ビューとコントローラがサーバ側の部分とクライアント側の部分に分割されているパターンである。ビューにおけるサーバ側の部分はサーバレンダラである。ビューにおけるクライアント側の部分はクライアントアセンブラである。コントローラにおけるサーバ側の部分はサーバコントローラであり、コントローラにおけるクライアント側の部分はクライアントコントローラである。
本発明により得られる効果として、ネットワーク通信のために必要とされる帯域幅が、サーバとクライアントとの間でブラウザインクリメントではなくページ全体が交換される従来技術のシステムよりも小さい点が挙げられる。ページの僅かな部分しか変更されないことが多い。このようなケースでは、ブラウザインクリメントの伝送によってページ全体の伝送よりも著しく僅かな帯域幅しか必要とされない。
本発明のさらに別の効果として挙げられるのは、クライアントとのインタラクションを行うユーザの目にとって心地よい作用が得られることである。なぜならばブラウザコンポーネントのDOMコンポーネントをブラウザインクリメントで更新することから、グラフィカルユーザインタフェースにおいてちらつきのない変更が得られるからである。
さらに本発明によれば、サーバがアプリケーションのステータスを保持しておく必要がないという効果が得られる。それというのも、サーバは必要とする状態情報をクライアントから得るからである。
本発明の観点を、殊に特許請求の範囲に示されている要素やそれらの組み合わせによって実現し達成することができる。つまり本発明の特徴に関する既述の組み合わせは限定を意味するものではなく、すべての特徴は本発明の範囲を逸脱することなく、さらに別の配置構成において組み合わせ可能である。なお、上述の概略的な説明ならびに以下の詳細な説明は例であって、説明のためのものにすぎず、ここで述べた本発明を限定するものではない。
図面の簡単な説明
図1は、本発明の実施形態を実現する一例としてのコンピュータシステムを示すブロック概略図である。図2A〜図2Dは、本発明の1つの実施形態によるグラフィカルユーザインタフェースの1つの実装例を示す図である。図3は、本発明の1つの実施形態に従って動作させたときのクライアントとサーバのインタラクションについて示す図である。図4Aおよび図4Bは、本発明の1つの実施形態によるブラウザインクリメントに関するクライアント側の処理について示す図である。図5は、本発明による1つの実施形態において利用可能な2つの相補的なコンピュータプログラム製品およびそれらの主要な機能ブロックについて示す図である。図6は、本発明によるすなわちインクリメントデータすなわち変化分のデータを処理するためのサーバ側の方法を示す簡単なフローチャートである。図7Aおよび図7Bは、本発明によるインクリメントデータを処理するクライアント側の方法を示す簡単なフローチャートである。
発明の詳細な説明
可能であるならば、同じ部分または同等の部分を指すために全図を通して同じ参照符号を用いることにする。
以降で使用する用語の定義:クライアント:クライアントとは、たとえばソフトウェアアプリケーションにより提供されるサービスにアクセスするよう構成されたコンピュータアプリケーションのことである。典型的には、ウェブアプリケーションにアクセスするクライアントはウェブブラウザを実行し、たとえばPC上で実行されるNetscape Navigator、PDA上で実行されるPocket Internet Explorer、あるいはセルラフォン上で実行されるWAPブラウザなどを実行する。
サーバ:サーバとは、クライアントによりアクセスされるアプリケーションが実行されるコンピュータ装置のことである。
ページ:ページには、ウェブアプリケーション(以下の定義を参照)のグラフィカルユーザインタフェースを定義するコンテンツ(レイアウトおよびデータ)が含まれている。ページは一般に、HTMLまたはWMLのようなブラウザ互換フォーマットになるようサーバ上でレンダリングされる。
コンポーネント:
コンポーネントは1つのページの基本構成ブロックである。1つのページ内に必ずコンポーネントが存在している。1つのコンポーネントにはさらに別のコンポーネントを含めることができる。この場合、コンポーネントは「ペアレントコンポーネント」と呼ばれ、さらに別のコンポーネントは「チャイルドコンポーネント」と呼ばれる。あるページ内でペアレントコンポーネントをもたないそのページのコンポーネントをルートコンポーネントと称する。本発明によれば、「アプリケーションコンポーネント」とも呼ばれるサーバ側の部分を有している。
このアプリケーションコンポーネントは、コンポーネントデスクリプタおよびブラウザインクリメントの生成中、存在している。これによってステートレスなサーバとすることができる。それというのもアプリケーションコンポーネントは制限されたタイムインターバルだけしか存在できないからであり、クライアントから必要なステート情報を受け取ることができるからである。コンポーネントは、ブラウザコンポーネントと呼ばれることになるクライアント側の部分も有している。ブラウザコンポーネントは対応するコンポーネントのステートないしは状態を保持する。
コンポーネントデスクリプタ:
あるページがブラウザ互換フォーマットになるようレンダリングされるならば、そのページの各アプリケーションコンポーネントはブラウザ互換フォーマットになるようレンダリングされる。レンダリングされるアプリケーションコンポーネントを「コンポーネントデスクリプタ」と称する。コンポーネントデスクリプタを名前と値のペアとして実装することができる。
ウェブアプリケーション:
以下で用いられるウェブアプリケーションという用語には、複数のページの集合が含まれる。ウェブアプリケーションの1つの特別な特徴は、サーバにおけるステートを保持し続けないことである。換言すれば、リクエストをサーバが受信するたびに、サーバはアクセスされたウェブアプリケーションのステートを最初から生成する。ウェブアプリケーションが出力を生成した後、そのステートは通常、破棄される。
ドキュメントオブジェクトモデル:
対応するW3Cの定義によれば、あるページのドキュメントオブジェクトモデル(Document Object Model, DOM)により、構文解析されるHTMLコンテンツおよびXMLコンテンツをアクセスし操作するメカニズムが提供される。
クラス名:あるコンポーネントのクラス名によって、コンポーネントのアプリケーションコンポーネントを実装するサーバ側のコンポーネントクラス(たとえばJavaクラス、Java Server Pagesクラス、servletクラス、Cクラス、C++クラスあるいはBusiness Server Pagesクラス)の名前が指定される。
アプリケーションコンポーネントはコンポーネントクラスのインスタンスであって、これには対応するモデル、サーバコントローラならびにサーバレンダラを含めることができる。
スクリプトクラス名:あるコンポーネントにおけるスクリプトクラス名によって、アプリケーションコンポーネントに対応するブラウザコンポーネントを実装するクライアント側のコンポーネントスクリプトクラス(たとえばJavaScript class, Java Applets class, またはVisualBasic Script class)の名前が指定される。コンポーネントスクリプトクラスとコンポーネントクラスに同一階層をもたせることができる。ブラウザコンポーネントはコンポーネントスクリプトクラスのインスタンスであり、これには対応するクライアントコントローラ、クライアントアセンブラおよび現在のページのDOMコンポーネントを含めることができる。DOMコンポーネントには、対応するコンポーネントをビジュアライズするブラウザによって使用される1つまたは複数のDOMノードを含めることができる。
図1には、本発明の実施形態を実現する一例としてのコンピュータシステムを示すブロック概略図が示されている。
コンピュータシステム999にはコンピュータ900が含まれており、このシステムはさらに別の複数のコンピュータ901,902(または90q、ただしq=q〜Q−1でありQは任意の数)を有している。
コンピュータ900は、コンピュータネットワーク990を介して別のコンピュータ901,902と通信を行うことができる。コンピュータ900はプロセッサ910、記憶装置920、バス930を有しており、さらにオプションとして入力デバイス940および出力デバイス950(I/Oデバイス、ユーザインタフェース960)を有している。図示されているように本発明はコンピュータプログラム製品100(CPP)、プログラム担体970またはプログラム信号980によって実装されている。
コンピュータ900に対しコンピュータ901/902は場合によっては「リモートコンピュータ」と呼ばれることもあり、コンピュータ901/902はたとえばサーバ、ピアデバイスまたは他の共通のネットワークノードであって、典型的にはコンピュータ900に対し相対的に記述された要素の多くまたはすべてを有している。
コンピュータ900はたとえば慣用のパーソナルコンピュータ(PC)、デスクトップ機器またはハンドヘルド機器、マルチプロセッサコンピュータ、ペンコンピュータ、マイクロプロセッサベースのまたはプログラミング可能なコンシューマ向けエレクトロニクスデバイス、ミニコンピュータ、メインフレームコンピュータ、パーソナルモバイルコンピューティングデバイス、モバイルフォン、ポータブルまたは据え置き型のパーソナルコンピュータ、パームトップコンピュータ等である。
プロセッサ910はたとえば中央処理ユニット(CPU)、マイクロコントローラユニット(MCU)、ディジタルシグナルプロセッサ(DSP)等である。
記憶装置920によって、データおよび命令を一時的または持続的に格納する素子がシンボリックに表されている。記憶装置920はここではコンピュータ900の一部分として描かれているけれども、記憶装置機能をネットワーク990やコンピュータ901/902に、さらにはプロセッサ910自体(たとえばキャッシュ、レジスタ)の中に、あるいは他のどこかにおいて実現することもできる。この場合、記憶装置920をリードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)または他のアクセスオプションをもつメモリとすることができる。さらに記憶装置920を、磁気記憶媒体、光学記憶媒体、半導体記憶媒体などのようなコンピュータで読み取り可能な媒体によって実現してもよいし、あるいはコンピュータで読み取り可能な他の何らかの記憶媒体によって実現させてもよい。
記憶装置920はたとえば基本入出力システム(BIOS)、オペレーティングシステム(OS)、プログラムライブラリ、コンパイラ、インタプリタあるいはテキスト処理ツールなどのようなサポートモジュールを記憶することができる。
CPP100によってプログラム命令がインプリメントされ、さらにオプションとして本発明による方法の各ステップをプロセッサに実行させるデータがインプリメントされる。換言すればCPP100は、本発明に従って動作するようコンピュータ900の動作を制御することができる。本発明を限定するものではないが一例としてCPP100を、何らかのプログラミング言語で書かれたソースコードやコンパイル済みのオブジェクトコード(「バイナリコード」)として用いることができる。
また、ここではCPP100は記憶装置920に格納されたものとして描かれているけれども、CPPをどこか別の場所に配置しておいてもよい。CPP100をプログラム担体970において実現することもできる。
プログラム担体970はコンピュータ900の外部に描かれている。
CPP1100をコンピュータ900に転送させるために好適であるのは、プログラム担体970を入力デバイス940へ挿入することである。
プログラム担体970を、既にたくさん挙げた媒体のようなコンピュータで読み取り可能な何らかの媒体によって実現することができる(記憶装置920参照)。一般にプログラム担体970はコンピュータで読み取り可能な媒体を実現する製品であって、これは本発明による方法をコンピュータに実施させるために使用可能であるコンピュータで読み取り可能なプログラムコードを有している。さらにプログラム信号980によってCPP100を実現することもできる。入力デバイス940により、コンピュータ900により処理するためのデータと命令が供給される。この入力デバイス940をたとえばキーボード、ポインティングデバイス(たとえばマウス、トラックボール、カーソル方向キー)、マイクロフォン、ジョイスティック、ゲームパッド、スキャナまたはディスクドライブとすることができる。これらの例は人間のインタラクションを伴うデバイスであるけれども、(たとえば衛星用パラボラアンテナまたは地上用アンテナを備えた)ワイヤレスレシーバ、センサ(たとえばサーモメータ)、カウンタ(たとえば工場内の荷物計数器)のように人間のインタラクションを伴わない動作も可能である。入力デバイス940を、プログラム担体270を読み出すために用いることができる。
出力デバイス950によって、処理された命令およびデータが呈示される。たとえばこのデバイスをモニタまたはディスプレイとすることができ、たとえばブラウン管(CRT)またはフラットパネルディスプレイあるいは液晶ディスプレイ(LCD)、スピーカ、プリンタ、プロッタまたはバイブレーションアラーム機器とすることができる。
既に述べたことと同様、出力デバイス950もユーザとコミュニケーションをとることができるけれども、別のコンピュータと通信することも可能である。
入力デバイス940および出力デバイス950を結合して単一のデバイスとすることができる。オプションとして何らかのデバイス940と950を設けることができる。
バス930およびネットワーク990によれば、命令およびデータの信号の搬送により論理的および物理的なコネクションが形成される。好適にはコンピュータ900内のコネクションをバス930と称する一方、コンピュータ900〜202間のコネクションをネットワーク990と称する。オプションとしてネットワーク990にはゲートウェイが含まれ、これはデータ伝送およびプロトコル変換に特化されたコンピュータである。
デバイス940および950は(図示されているように)バス930またはネットワーク990(オプション)によってコンピュータ900と接続されている。
(ネットワーク990のような)ネットワークは、オフィスや企業間コンピュータネットワーク、イントラネットおよびインターネットにおいて一般的なものである。ネットワーク990を有線ネットワークとしてもよいし、あるいはワイヤレスネットワークとしてもよい。ネットワーク実装の例としてローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、公衆交換電話回線網(PSTN)および総合サービスディジタルネットワーク(ISDN)を挙げることができる。ネットワーク実装の他の例も当業者に周知である。
種々の伝送プロトコルならびにデータフォーマットが知られており、たとえば伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ハイパーテキスト転送プロトコル(HTTP)、セキュアHTTP(HTTPS)またはワイヤレスアプリケーションプロトコル(WAP)などが挙げられる。
要素と要素の間に接続されているインタフェースも当業者によく知られている。わかりやすくするため、インタフェースは図示されていない。インタフェースとしてたとえばシリアルポートインタフェース、パラレルポートインタフェース、ゲームポート、汎用シリアルバス(USB)インタフェース、内蔵モデムまたは外付けモデム、ビデオアダプタまたはサウンドカードを挙げることができる。
コンピュータとプログラムは密接に関連している。あとで用いるように、「コンピュータにより〜が提供される」および「プログラムにより〜が提供される」というようなフレーズは、プログラムにより制御されるコンピュータによってなされるアクションを表す便宜的な簡易表現である。
図2A〜図2Dは、本発明の1つの実施形態によるグラフィカルユーザインタフェースの実装例をそれぞれ4つの連続的な時点T1,T2,T3,T4で示した図である。
ユーザとグラフィカルユーザインタフェース955とのインタラクションに関する以下の例は、本明細書全体を通して本発明を説明するために用いられる。しかしながら本発明によれば、どのようなグラフィカルユーザインタフェースであっても実装することができる。たとえばGUI955は、クライアントコンピュータ900の出力デバイス950(図1参照)においてユーザに呈示され、そのユーザは入力デバイス940を使用してGUI955とインタラクションを行う。
GUI955は、ツリー955−1の各ノードによってビジュアライズされる階層構造データとのインタラクションをユーザが行うことができるようにするグラフィカルユーザインタフェースである。たとえばこの階層構造データはサーバコンピュータ901(図1参照)に格納されている。しかしこの階層構造データを、コンピュータシステム999(図1参照)におけるどのような記憶装置に格納してもよい。ユーザはリセット(ボタン)955−2を使用してツリー955−1をリセットすることもできる。ツリー955−1の各ノードのステータスはマイナス符号(−)またはプラス符号(+)によって表されている。マイナス符号は、ノードのステータスが展開されていることを表している。たとえばあるノードをクリックすることにより、ユーザはノードのステータスを折りたたまれた状態(+)から展開された状態(−)あるいはその逆へ変更することができる。
図2Aの場合、時点T1においてユーザはツリー955−1と取り組むよう促され、その際、種々のノードの状態は以下の通りである:ルートノードR1:展開状態(−);子ノードFL1,FL2;第1レベルノードFL1:展開された子ノード:SL1,SL2;第1レベルノードFL2:折り畳まれた状態;第2レベルノードSL1,SL2:折り畳まれた状態(+)。
たとえばユーザは、展開させるため(たとえばノードをクリックすることにより)第2レベルノードSL2を選択する。
ユーザの選択を受け取った後、ツリー955−1はそれに応じて変更される。
図2Bの場合、時点T2において第2レベルSL2のステータスは以下のように変更される:展開された状態(−);子ノードTL1。第3階層ノードTL1が第2階層ノードSL2の子ノードとしてツリー955−1に加わる。その後でたとえば、ユーザは(ノードをクリックして)折り畳むために第2レベルノードSL2を再び選択する。ユーザの選択を受け取った後、クライント900はそれ相応にツリー955−1を変更する。
図2Cの場合、時点T3において第2レベルSL2のステータスは以下のように変更されて元に戻される:折り畳まれた状態(+)。第3階層ノードTL1はツリー955−1において隠された状態になり、第2階層ノードSL2の子ノードとして見ることができなくなる。ついでたとえば、ユーザはリセットボタン955ー2をクリックして、ツリー955−1を初期状態にリセットする。リセット要求を受け取った後、クライアント900はそれ相応にツリー955−1を変更する。
図2Dには、時点T4におけるツリー955−1の初期状態の一例が示されている。ルートノードR1は折り曲げられた状態(+)のステータスを有しており、その子ノードのいずれもビジュアライズされていない。ツリー955−1の択一的な初期状態は以下の通りである:ルートノードR1:展開された状態(−);子ノード:FL1,F2が折り畳まれた状態(+)。
さらに別の択一的な初期状態:すべてのノードが展開された状態(+)。以下の説明では、図2A〜図2Dを用いて説明したようなGUIの挙動を、時点T1〜T4の前または後でGUI955のアピアランスが変化したときに、ネットワーク帯域幅要求を小さくしかつユーザに対するスクリーンのちらつきを抑えるようにして実現するために、本発明の実施形態について述べる。
図3は、本発明の1つの実施形態に従って動作させたときのクライアント900とサーバ901のインタラクションについて示す図である。図1に示されているように、クライアント900はネットワーク990を介してサーバ901と通信する。
サーバ901には、サーバコントローラ101−1、サーバレンダラ101ー2を有するアプリケーションコンポーネントが含まれている。この実施形態の場合、アプリケーションコンポーネントのインスタンスにはさらにオリジナルモデル200−T1も含まれている。たとえばサーバコントローラ101−1およびサーバレンダラ101−2はCPP101(図1参照)の一部分であり、これはサーバ901のメモリ921に格納される。サーバコントローラ101−1はクライアント900の変更要求410を受け取る。変更要求を受け取ると、サーバコントローラ101−1はオリジナルモデル200−T1を変更されたモデル200−T2へ変更する。複数のアプリケーションコンポーネントが存在する場合、対応するサーバコントローラは各アプリケーションコンポーネントを互いに作用させ合うようにする。換言すればたとえばサーバコントローラ101−1は、さらに別のサーバコントローラにさらに別のモデルの変更を行わせるイベントを引き起こすことができる。
アプリケーションコンポーネントにおけるオリジナルモデル200−T1および変更モデル200−T2は、同じサークルシンボルによって描かれている。図2Aの実施例に戻ると、オリジナルモデル200−T1は時点T1においてツリー955−1としてビジュアライズされている。変更要求は、第2レベルノードSL2になるよう展開するユーザのインタラクションに対応する。
変更モデル200−T2は時点Tにおいてツリー955−1としてビジュアライズされる。
本発明の1つの実施形態によれば、継承を備えたオブジェクト指向コンポーネントアーキテクチャフレームワーク(以下ではフレームワークとも称する)が利用される。
フレームワークはサーバ側の部分とクライアント側の部分を有する。フレームワークは、1つまたは複数のクラスのメソッドのセットのようなファンクションプールとしてインプリメントすることができる。たとえばコンポーネントによって標準グラフィカルユーザインタフェース要素がインプリメントされ、ボタン(たとえばリセット955−2)、ツリー(たとえばツリー955−1)、テーブル、タブストリップまたはGUI955のようなグラフィカルユーザインタフェースにおける他の何らかのインタフェース要素がインプリメントされる。さらにコンポーネントにプロパティおよびオファーサービスをもたせることができ、たとえばグラフィカルユーザインタフェース記述ファイルからのグラフィカルユーザインタフェース生成およびドロップインタラクションハンドリングおよびコンポーネントアドミニストレーションなどである。このフレームワークによって、ランタイムでのコンポーネントの生成および削除ならびにランタイムでのコンポーネントのすべてのプロパティへのアクセスがサポートされる。これに加えてフレームワークによって、ブロードキャストイベントメカニズム、グラフィカルユーザインタフェースの変更ならびにページの置き換えを伴わないサーバアクセスなどのような汎用サービスを提供することができる。
あるコンポーネントを、Tomcatなどのようなサーブレットエンジンにより利用される手順と同様の特別な登録手順を用いることなくインストールすることができる。換言すれば、あるコンポーネントをインストールすると自動的にそのコンポーネントをフレームワークで利用できるようになる。
たとえば1つのコンポーネントにおける1つのアプリケーションコンポーネントは、Javaクラス、Java Server Pagesクラス、servletクラス、Pascalクラス、Cクラス、C++クラスまたはBuisiness Server Pagesクラスのようなコンポーネントクラスによって定義される。コンポーネントクラスはサーバ901上で実行される。たとえばコンポーネントクラスによって、モデル(たとえばモデル200−T1)ならびにサーバレンダラ(たとえばサーバレンダラ101−2)およびコンポーネントのサーバコントローラ(たとえばサーバコントローラ101−1)がインプリメントされる。
オリジナルモデル200−T1をビジュアライズするため、サーバレンダラ101−2はHTML, XHTMLまたはWMLのようなブラウザ互換のコードを生成する。最初にサーバレンダラ101−2はオリジナルモデル200−T1からコンポーネントデスクリプタを生成し、このコンポーネントデスクリプタをクライアント900へ送信する。コンポーネントデスクリプタは、たとえば(時点T1における)図2Aの例ではブラウザ互換のツリー955−1の記述に相応する。当業者にとって、たとえばJavaページ、Java Server Pageまたは択一的にオリジナルモデル200−T1のサーバ側の記述をベースとして、コンポーネントデスクリプタをどのように生成するのかは周知である。たとえばJavaScriptクラス、JavaAppletクラスまたはVisualBasic Scriptクラスのようなコンポーネントスクリプトクラスは、オリジナルモデル200−T1の対応するコンポーネントデスクリプタをベースとして、オリジナルブラウザコンポーネント200−T1を生成する。
1つの実施形態によれば、コンポーネントには名前と値のペアのセットとしてプロパティが含まれており、この場合、プロパティは対応するコンポーネントデスクリプタの一部分である。
コンポーネントの標準プロパティは識別子、クラス名、スクリプトクラス名および親コンポーネント名である。識別子はコンポーネントを含む1つのページにおいてユニークないしは一意である。クラス名とスクリプトクラス名によって、そのコンポーネントにおけるコンポーネントクラスとコンポーネントスクリプトクラスの名前が指定される。親コンポーネント名は、コンポーネントにおける親コンポーネントの識別子である。たとえば、スクリプトクラス名をクラス名から導出することができる。コンポーネントにおけるアプリケーションコンポーネントに対応するブラウザコンポーネントを生成するために、スクリプトクラスを使用することができる。
あるページが最初にサーバ901において生成されると、そのページの各アプリケーションコンポーネントにおけるコンポーネントクラスはアプリケーションコンポーネントの対応するプロパティとともに呼び出される。それらのプロパティには、サーバ901において知られているアプリケーションコンポーネントに関するすべての情報が含まれている。
コンポーネントクラスにより、たとえばコンポーネントクラスのインタフェースにおける1つまたは複数のファンクションを利用して、アプリケーションコンポーネントのコンポーネントデスクリプタがページに書き込まれる。これらのファンクションの例は以下の通りである:
・prolog (...)
・base (...)
・epilog (...)
たとえば、すべてのツリーファンクションはパラメータセットを有している。たとえばパタメータ「プロパティ」は、アプリケーションコンポーネントを記述する名前と値のペアのセットである。ページにデータを書き込むためにさらに別のパラメータ "output"が用いられ、この場合、データは出力ストリームにおいてクライアントへ送信される。出力ストリームにおいてクライアントへ送信されるページへの書き込みのことを、出力ストリームへの書き込みデータまたはレンダリングデータとも呼ぶことにする。
ファンクションprolog (...)によって、出力ストリームに対しコンポーネントデスクリプタヘッダが書き込まれる。コンポーネントデスクリプタヘッダは、アプリケーションコンポーネントを記述する名前と値のペアに関するブラウザ互換の記述である。
ファンクションbase (...)によって、出力ストリームに対しコンポーネントのベースコンテンツがレンダリングされる。ベースコンテンツは、ユーザに対して呈示されるコンポーネントの初期コンテンツとして定義される。フレームワークは、1つのページ内における複数のコンポーネントのベースコンテンツを組み合わせることができる。
その結果、GUI955の記述が生じる。たとえばあるコンポーネントのベースコンテンツにはさらに、名前と値のペアたとえばコンテンツの名前と値のペアが含まれており、これはそのコンポーネントにおけるブラウザ互換の初期コンテンツの記述であり、あるいはユーザに呈示される初期コンテンツへの参照である。タイプ仕様の名前と値のペアによって、初期コンテンツに対する参照タイプを記述することができる。たとえばタイプ仕様の名前と値のペアに"HTML"が含まれているならば、対応するコンテンツの名前と値のペアにはHTML文字列のような初期コンテンツが含まれている。他の参照タイプの例として挙げられるのは"DOM"、"WML"およびリンク(他のページへのリンク)である。
タイプ仕様の名前と値のペアに参照タイプ"DOM"が含まれている場合、コンテンツの名前と値のペアにはそのページの対応するDOMノードの一意の識別子が含まれている。たとえばページ生成時にサーバ901はページに対しHTMLコードを生成することができ、この場合、HTMLコードはID属性を有しており、これにはID属性の値としてDOMノードにおける一意の識別子が含まれている。同じことは他の参照タイプにも適用される。
ファンクションepilog (...) によって、コンポーネントをフレームワークに登録するため出力ストリームに対しクライアントサイドスクリプトが書き込まれる。
出力ストリームにコンポーネントデスクリプタを書き込むためのいくつかのファンクションを、コンポーネントクラスのスーパークラスによって扱うことができる。換言すればスーパークラスは、出力ストリームに対する複数のコンポーネント(たとえばクラスプロパティ)に対して同一であるプロパティを書くことができる。スーパークラスのサブクラスであるコンポーネントクラスによって、特定のコンポーネントのプロパティを対応する出力ストリームに加えることができる。
以下のコーディングブロックは、ツリーコンポーネントのコンポーネントデスクリプタにおける単純化されたHTMLコードの一例である:
< table id='node' >
<tr><td>id</td><td>node</td></tr>
<tr><td>parent</td><td>parentContainer</td></tr>
<tr><td>class</td><td>SPNode</td></tr>
<tr><td>positionX</td><td>0</td></tr>
<tr><td>positionY</td><td>0</td></tr>
<tr><td>Width</td><td>82</td></tr>
<tr><td>Height</td><td>25</td></tr>
<tr><td>contentType</td><td>HTML</td></tr>
<tr><td>content</td><td><HTML-string of node base content </td></tr>
. . .
</table>
<script language='JavaScript'>
SPFramework. registerComponent ('node', 'SPNode');
</script>
このコーディングブロックのテーブル部分には、たとえばファンクションprolog()により生成されるコンポーネントデスクリプタヘッダ(たとえばidentifier, parent, class, positionX, positionY, Width, Height)が含まれており、さらにたとえばファンクションbase()により生成されるコンポーネントのベースコンテンツ(たとえばcontentType, content)が含まれている。
図2Aの実施例を再び参照すると、コンポーネントデスクリプタは時点T1においてツリー955−1に対応している。
このコーディングブロックのJavaScrip部分はファンクションepilog()によって生成可能である。
クライアントコントローラ101−1によってオリジナルモデル200−T1が変更モデル200−T2に変更されると(10)、サーバレンダラ101−2は少なくともブラウザインクリメント300−Iをブラウザ互換フォーマットで生成する(420)。変更10によっては、2つ以上のブラウザインクリメントをサーバレンダラ101−2によって生成することもできる。たとえばブラウザインクリメント300−Iは、オリジナルモデル200−T1と変更モデル200−T2との差分に相応する。図2Bを再び参照すると、ブラウザインクリメント300−Iは第3レベルノードTL1に相応する。その後、サーバ901は少なくともブラウザインクリメント300−Iをクライアント900へ送信する(430)。
たとえば、コンポーネントクラスのインタフェースはさらに別のインクリメント(...)を有している。ファンクションincrement()はパラメータ「プロパティ」と「アウトプット」をもつことができ、これは先に説明したインタフェースのファンクションと同様のものとすることができる。このファンクションにさらに別のパラメータ "parameter"をもたせることができ、これはパラメータ「プロパティ」と同じようにさらに別の名前と値のペアのセットである。
ファンクションincrement()が呼び出される可能性があるのは、アプリケーションコンポーネントのモデル(たとえばオリジナルモデル200−T1)に作用するユーザのインタラクションによって(たとえばユーザが第2レベルノードSL2に展開するよう指示して)対応するブラウザコンポーネントの少なくとも一部分についてそのビジュアライゼーションの変更が要求されたときである。
ファンクションincrement()は、対応するブラウザインクリメント(たとえばブラウザインクリメント300−I)を生成し(420)、それを出力ストリームに書き込むタスクを有している。
パラメータ"parameter"の設けられた名前と値のペアによって、生成すべきブラウザインクリメントの厳密なフォーマットが指定される。
図2Bの実施例に再び戻ると、ブラウザインクリメント300−IのHTMLの例には以下のステートメントを含めることができる。
< div id = '/Rl/FLl/SL2/TLl' > node label < /div > .
識別子"/R1/FL1/SL2/TL1"によりブラウザインクリメントのパスが記述され、これは時点T2において第3レベルノードTL1に相応する。ノードラベルをアイコン(たとえばサークル内の"+"とすることができ、これによってノードまたはテキストまたは他の何らかのグラフィック表現がビジュアライズされる。
1つの択一的な実施形態によれば、単一のファンクション(たとえばファンクションall_inone(...))または他の何らかの複数のファンクションを使用して、対応するデータを出力ストリームに書き込むのに必要とされる既述のタスクを実行させることができる。
以上要約すると、本発明の1つの実施形態によれば、サーバ側のコンポーネントクラスは2つのタスクを有している:
要求に応じてコンポーネントデスクリプタを出力ストリームに書き込む。この場合、コンポーネントデスクリプタはすべてのコンポーネントプロパティのリストを形成する。さらに、コンポーネントベースのコンテンツを生成し、それを出力ストリームに書き込む。
さらに、コンポーネントをフレームワークに登録するコードを出力ストリームに書き込む。
要求に応じて、パラメータにより記述されているようにブラウザインクリメントを生成する。ブラウザインクリメントを出力ストリームに書き込む。
クライアント900にはアプリケーションコンポーネントに対応するブラウザコンポーネントが含まれており、これは相応のクライアントアセンブラ100−1およびクライアントコントローラ100−2を有している。たとえばクライアントコントローラ100−2とクライアントアセンブラ100−1はCPP100(図1参照)の一部分であり、これはクライアント900の記憶装置920内に格納されている。ブラウザコンポーネント(たとえばJavaScriptオブジェクト)のインスタンスが、対応するコンポーネントスクリプトクラスからインスタンス化される。たとえばフレームワークにおけるクライアントサイド部分は、コンポーネントデスクリプタを指すポインタを受け取るコンストラクタを使用する。ブラウザコンポーネントはコンポーネントデスクリプタからプロパティおよびプロパティ値を抽出し、それらをブラウザコンポーネントのインスタンスに付加する。ブラウザコンポーネントのインスタンスにはオリジナルのDOMコンポーネント300−T1が含まれている。
オリジナルモデル200−T1が変更された後、クライアントアセンブラ100−1はブラウザインクリメント300−Iを受け取り(520)、(オリジナルモデル200−T1に対応する)オリジナルDOMコンポーネント300−T1を少なくともブラウザインクリメント300−Iによって更新する(530)。その結果、変更されたモデル200−T2に対応する変更されたDOMコンポーネント300−T2が生じる。変更されたDOMコンポーネント300−T2およびオリジナルDOMコンポーネント300−T1は、同じ楕円によって描かれている。たとえば、変更されたDOMコンポーネント300−T2とオリジナルDOMコンポーネント300−T1は、対応するコンポーネントスクリプトクラスのインスタンス(たとえばJavaScriptオブジェクト)である。本発明の1つの実施形態によれば、1つのコンポーネントのコンポーネントクラスに対応するコンポーネントスクリプトクラスはクライアント900で実行され、たとえばクライアントアセンブラ100−1およびクライアントコントローラ100−2をインプリメントする。たとえばクライアントアセンブラ100−1のインタフェースにはファンクションhandleResponse (...)が含まれている。
本発明の1つの実施形態によれば、ファンクションhandleResponse()が呼び出されるのは、クライアントアセンブラ100−1がコンポーネントクラスのファンクションincrement()からブラウザインクリメント300−Iを受け取るときである(520)。たとえば、フレームワークはファンクションincrement()のパラメータ「アウトプット」をファンクションhandleResponse()のパラメータ「レスポンス」へ送る。ファンクションhandleResponse()のさらに別のパラメータ「ターゲット」は、受信ステップ410においてサーバ901へ送られる値である。ブラウザインクリメント300−Iの受け取り(520)に応答してファンクションhandleResponse()が呼び出されると、パラメータ「ターゲット」によりブラウザインクリメント300−Iの受取側(ブラウザコンポーネント)がクライアントに対し指示される。この受取側は最初の要求側と同じにすることができるが、最初の要求側とは異ならせてもよい。
ブラウザインクリメント300−Iをサーバ901から取り出すための1番目の例は、スクリプトタグを使用することである。2番目の例は、隠蔽HTML iFrame要素を使用することである。
スクリプトタグ(たとえばJavaScript)を使用してブラウザインクリメントを取り出すために、フレームワークのクライアントサイド部分により以下のステップが実行される。
最初に、対応するリクエストURLが生成される。
たとえばフレームワークのクライアントサイド部分は、サーバから受け取ったページからサーバが生成した基本リクエストURLを取り出して、そのリクエスト固有のパラメータを付加する。
次にスクリプトタグ(たとえばstag)が生成され、これはSCR属性を有している。このためにたとえば、以下のようなJavaScriptステートメントを使用することができる:
var stag = createNode ("script").
次に、リクエストURLがスクリプトタグのSCR属性に割り当てられる(stag.SRC = リクエストURL)。
その後、スクリプトタグがページのDOMに加えられる。たとえばこのことは、JavaScriptステートメントdocument.body.appendChild(stag)を使用することにより達成できる。
スクリプトタグがDOMに加えられると、クライアントはサーバリクエストをサーバへ送信する。サーバは、そのリクエストに対する応答を含むスクリプトステートメントを生成する。たとえば、サーバはフレームワークのサーバサイド部分に対する呼び出しを生成することができ、サーバリクエストの結果は以下のようなパラメータとして送られる:
Framework.handleResponse(result)
ファンクションhandleResponse(...)によってクライアント側における結果が解釈され、その結果はコンポーネントごとに対応するコンポーネントへ送られる。
VBスクリプトのような他のスクリプト言語も、スクリプトタグを使用したブラウザインクリメント取り出しのインプリメントに等しく使用することができる。
第2の例によれば、ブラウザインクリメント取り出しのためにスクリプトタグの代わりにiFrameが使用される。この例の場合、サーバから受け取ったページには隠蔽iFrameが含まれており、これはフレームワークのサーバサイド部分によって生成されページに組み込まれる。ついでフレームワークのクライアントサイド部分が、最初の例において挙げたような対応するリクエストURLを生成する。
その後、リクエストURLが隠蔽iFrameのSCR属性に割り当てられる。
リクエストURLがSCR属性に割り当てられると、クライアントは相応のリクエストをサーバへ送信する。サーバは1番目の例で挙げたようなスクリプトを生成することができる、あるいはクライアントにおいてどのようなアクションが要求されたのかを表す記述を生成することができる。
後者のケースであれば、クライアント側のフレームワークはその記述を解釈し、それに従って動作する。
クライアントアセンブラ100−1が、ブラウザコンポーネントの更新が(たとえばユーザのインタラクションによって)要求されることを通知すると、クライアントコントローラ100−2は変更リクエストを生成し、これはサーバ901へ送信される(510)。図4A、図4Bおよび図5には、クライアントコントローラ100−2のその他の機能について説明されている。
変更されたブラウザコンポーネント全体をサーバ901からクライアント900へ送るのではなくブラウザインクリメント300−Iだけを送信することによって、ネットワーク990を介したクライアント・サーバ通信のために僅かな帯域幅しか必要とされず、また、ページ全体を再生成するよりもブラウザインクリメント300−Iを生成する方がサーバのCPU時間を消費しない。
オリジナルDOMコンポーネント300−T1がクライアントアセンブラ100−1を介してブラウザインクリメント300−Iによって更新されるならば、ページ全体を置き換えるときに頻繁に発生するスクリーンのちらつきが低減される。
図4Aおよび図4Bには、本発明の1つの実施形態によるブラウザインクリメント300−Iに関するクライアント側の処理について詳しく示されている。有利にはブラウザインクリメント300−Iの受け取り(520)に応答して、クライアントコントローラ100−2はブラウザインクリメント300−Iをクライアント900のキャッシュメモリ920−Cに格納する。
図4Aには、ディアクティベーションリクエストDAR(deactivation-request)の受け取りに応答してブラウザインクリメント300−Iを非アクティブ状態にする様子が描かれている。ディアクティベーションリクエストDARは、図2Aまたは図2Bに示されているようにユーザとクライアント900とのインタラクションによって生成することができ、あるいはコンピュータシステム999における他のコンピュータによって生成することができる。たとえばディアクティベーションリクエストDARはクライアントコントローラ100−2によって受け取られる。ついでクライアントコントローラ100−2はクライアントアセンブラ100−1に命令して(610)、変更されたDOMコンポーネント300−T2におけるブラウザインクリメント300−Iを非アクティブ状態し、その結果、非アクティブ状態にされたDOMコンポーネント300−T3が生じることになる。たとえばブラウザインクリメント300−Iを、対応するディアクティベーションフラグのセットにより非アクティブ状態にすることができる。非アクティブDOMコンポーネント300−T3において、ブラウザインクリメント300−Iが抑圧される(たとえばディアクティベーションフラグのデリートまたはセット、これは取消線によって表される)。変更DOMコンポーネント300−T2および非アクティブDOMコンポーネント300−T3は、同じ楕円によって描かれている。図2Bおよび図2Cを再び参照すると、変更DOMコンポーネント300−T2は時点T2におけるツリー955−1に対応し、ここでは第2レベルノードSL2が展開されており、これには第3レベルノードTL1が含まれている。
非アクティブDOMコンポーネント300−T3はT3におけるツリー955−1に対応しており、ここでは第3レベルノードTL1は抑圧され、第2レベルノードSL2は折り畳まれている。時点T1におけるツリー955−1のビジュアライゼーションは時点T3におけるビジュアライゼーションと同じであるにもかかわらず、時点T1におけるクライアント900のステータスは時点T3におけるステータスとは異なる。なぜならばクライアントインクリメント300−Iは時点T3においてキャッシュ920−C内で得られるが、時点T1では得られないからである。図4Bを参照して説明したようなリアクティベーションリクエストのケースにおいて、このことはクライアント90の挙動に作用を及ぼす。
たとえばブラウザコンポーネントは、サーバ901とコンタクトをとることなくクライアント900においてインタラクションを行うことができる。図2Dを再び参照すると、時点T4においてユーザはリセットボタン955−2を使用してリセットリクエストを生成し、ルートノードR1になるようツリー955−1を折り畳む。同様にクライアント900において、サーバ901におけるリセットアプリケーションコンポーネント(図示せず)に対応するリセットブラウザコンポーネント(図示せず)は、ツリー955−1をビジュアライズするブラウザコンポーネントとインタラクションを行い、その結果、ブラウザコンポーネントにおけるすべての他のブラウザインクリメント(図示せず)は、対応するDOMコンポーネント(たとえば非アクティブDOMコンポーネント300−T3)において、ルートノードR1に対応するブラウザインクリメントを除き非アクティブ状態となる。
図4Aには、クライアントコントローラ100−2がリアクティベーションリクエストRARを受け取ったときにブラウザインクリメント300−Iが再びアクティブ状態になる様子が描かれている。クライアントコントローラ100−2はキャッシュメモリ920−Cからブラウザインクリメント300−Iを取り出し、クライアントアセンブラ100−1に命令して、非アクティブDOMコンポーネント300−T3におけるブラウザインクリメント300−Iを再びアクティブにする。リアクティベーションの結果、再びアクティブにされたDOMコンポーネント300−T3′が生じる。図2Aの例を再び参照すると、ユーザは時点T1と同じようにクライアント900とインタラクションを行う。とはいえこの場合には、時点T2におけるツリー955−1のビジュアライゼーションに相応する変更DOMコンポーネント300−T2に到達するためにサーバ901にブラウザ差分ないしはブラウザインクリメント300−Iを要求する代わりに、クライアント900は単純に自分自身のキャッシュ902−Cからブラウザインクリメント300−Iを取り出し、非アクティブDOMコンポーネント300−T3におけるブラウザインクリメント300−Iを再びアクティブにする(570)。
その結果として再びアクティブにされたDOMコンポーネント300−T3′は、変更DOMコンポーネント300−T2と同一になる。
クライアント900におけるブラウザインクリメントのキャッシングならびにクライアント900におけるブラウザコンポーネントのインタラクションの実現によって、クライアント900がサーバ901とコンタクトをとることなく特定のイベントを処理可能であることからサーバへのリクエストの個数が減少するため、サーバ901の負荷が軽減される。
図5は、本発明による1つの実施形態において利用可能な2つの相補的なコンピュータプログラム製品CPP101(サーバプログラム)、CPP100(クライアントプログラム)、ならびにそれらの主要な機能ブロックについて示す図である。たとえば、CPP100をブラウザとすることができる。
フレームワークは、CPP101の一部分であるサーバサイド部分100−10およびCPP100の一部分であるクライアントサイド部分にインプリメントされている。すでに説明したようにフレームワークによって、多数のコンポーネントに適用可能な汎用ファンクションが提供される。
ユーザに対しアプリケーションのグラフィカルユーザインタフェースを呈示するために、DOM100−9が使用される。この例ではDOM100−9によって、ツリーコンポーネント955−1(図2A参照)とリセットコンポーネント955−2(図2A参照)を含むページが呈示される。ユーザがCPP100と(たとえば指定したツリーノードが展開されるよう指示することで)インタラクションを行い、サーバ901におけるモデル200−Tn(n=1,2〜N)に作用が及ぼされると、対応するクライアントコントローラ100−2はユーザインタラクションに関する通知を受け取り(701)、サーバ901上で動いているCPP101に対し相応のリクエストを送信する(702)。たとえばクライアントコントローラ100−2は特定のブラウザイベントを予約することができ、対応するブラウザイベントがユーザのインタラクションによって引き起こされたときに通知される。
ユーザインタラクションがサーバ901とコンタクトをとることなくクライアントコントローラ100−2によって処理できる場合、クライアントコントローラ100−2は対応するクライアントアセンブラ100−1に命令して(702)、ユーザインタラクションに応じたDOM100−9のビジュアライゼーションを調整するためにブラウザにより現在ビジュアライズされているページのDOM100−9を更新させる(803)。
ユーザのインタラクションによってサーバ901の介在が要求される場合、CPP100は対応するリクエストをCPP101へ送信する(702)。この要求によってサーバコントローラ101−1は、対応するモデル200−Tnをそれ相応に変更する(703)。サーバレンダラ101−2は変更(703)の後、モデル200−Tnをレンダリング/生成する(801)。レンダリング801の結果は、ビジュアライゼーションのために使用可能なモデルの記述である。ついでこの記述はクライアント900へ送られる。
本発明の1つの実施形態によれば、この記述はサーバレンダラ101−2からクライアントアセンブラ100−1へ送信される(802)。クライアントアセンブラ100−1はこの記述を利用して、DOM100−9の対応するノードを変更することによりDOM100−9をそれ相応に更新する(803)。
発明の別の実施形態によれば、この記述をサーバコントローラ101−1からクライアントコントローラ100−2へ送信することができ、その後、クライアントコントローラ100−2はクライアントアセンブラ100−1に命令して(702′)、DOM100−9をそれ相応に更新する(803)。
本発明のさらに別の実施形態によれば、この記述はサーバ側のフレームワーク101−10からクライアント側のフレームワーク100−10へ送信され、そこにおいてこの記述が対応するクライアントコントローラ100−2にディスパッチされる。
図6には、本発明によるサーバ側の観点がサーバ側の方法400についての単純化されたフローチャートによって要約されており、これは本発明の1つの実施形態によって実施することができる。たとえば、コンピュータシステム999におけるサーバ901上のインクリメントデータを処理するための方法は、コンピュータプログラム製品101によって実施可能であり、そこに含まれる命令によれば、サーバ901のメモリ921にロードされると、サーバ901の少なくとも1つのプロセッサ911が方法400を実行するようになる。方法400には受信ステップ410、生成ステップ420ならびに送信ステップ430が含まれている。
受信ステップ410において、サーバコントローラ101−1はクライアントコントローラ100−2から変更リクエストを受け取る。クライアントコントローラ100−2は、コンピュータシステム999のクライアント900において動作している。変更リクエストによってサーバ901はオリジナルモデル200−T1を変更モデル200−T2に変更し、これら双方がたとえばサーバ901のメモリに格納される。
生成ステップ420においてサーバレンダラ101−2は、オリジナルモデル200−T1と変更モデル200−T2との間の差分に相応する少なくとも1つのブラウザインクリメント300−Iを生成する。
送信ステップ430において、サーバ901は少なくとも1つのブラウザインクリメント300−Iをクライアント900のクライアントアセンブラ100−1へ送る。クライアント900はブラウザインクリメント300−Iを使用し、少なくとも1つのブラウザインクリメント300−IによってオリジナルDOMコンポーネント300−T1を更新する。更新の結果、変更DOMコンポーネント300−T2が得られ、オリジナルDOMコンポーネント300−T1はオリジナルモデル200−T1に対応していたのに対し、これは変更モデル200−T2に対応する。
図7Aには、本発明によるクライアント側の観点がクライアント側の方法500についての単純化されたフローチャートによって要約されており、これは本発明の1つの実施形態によって実施することができる。たとえば、コンピュータシステム999におけるクライアント900上のインクリメントデータを処理するための方法は、コンピュータプログラム製品100によって実施可能であり、そこに含まれる命令によれば、クライアント901のメモリ920にロードされると、クライアント900の少なくとも1つのプロセッサ910が方法500を実行するようになる。方法500には送信ステップ510、受信ステップ520ならびに更新ステップ530が含まれている。
送信ステップ510において、クライアントコントローラ100−2は変更リクエストをサーバコントローラ101−1へ送信する。サーバコントローラ101−1は、コンピュータシステム999のサーバ901上にインプリメントされている。
受信ステップ520においてクライアントアセンブラ100−1は、少なくとも1つのブラウザインクリメント300−Iをサーバ901から変更リクエストに対する応答として受け取る。
更新ステップ530において、クライアントアセンブラ100−1はオリジナルDOMコンポーネント300−T1を少なくとも1つのブラウザインクリメント300−Iによって更新し、その結果、変更されたDOMコンポーネント300−T2が生じる。オリジナルDOMコンポーネント300−T1はオリジナルモデル200−T1に相応し、変更DOMコンポーネント300−T2は変更モデル200−T2に相応する。
図7Bには図7Aの概略的なフローチャートが続いている。破線の矩形で表されたステップは、本発明の様々な実施形態における方法500によって実行することができる。これらのステップにおいて、ステップ510〜530を必ずしも事前に実行しなくてもよい。インクリメントデータを処理するための1つの択一的な基本メカニズムを使用するケースにおいて、図7Bに示されている各ステップをクライアント側のイベント処理のためにも利用できる。
ディアクティベーションの例において、方法500にはさらに記憶ステップ540とディアクティベーションステップ550が含まれている。
記憶ステップ540において、クライアント900は少なくとも1つのブラウザインクリメント300−Iを自身のキャッシュメモリ920−Cに格納する。
ディアクティベーションステップ550において、クライアントコントローラ100−2はディアクティベーションリクエストDARを受け取り、その結果としてクライアントアセンブラ100−1は、対応するDOMコンポーネント内のブラウザインクリメント300−Iを非アクティブ状態にする。
リアクティベーションの例において、本発明による方法500にはさらに取り出しステップ560とリアクティベーションステップ570が含まれている。しかしディアクティベーションステップ550を事前に実行する必要はない。
取り出しステップ560においてクライアント900は、ステップ540を用いて格納されていた少なくとも1つのブラウザインクリメント300−Iをキャッシュメモリ920−Cから取り出す。たとえばこれを、クライアントコントローラ100−2が受け取ったリアクティベーションリクエストRARによって開始させることができる。
その後、リアクティベーションステップ570においてクライアントアセンブラ100−1は、対応するDOMコンポーネントにおけるブラウザインクリメント300−Iをリアクティベーションして再びアクティブな状態にする。
本発明の実施形態を実現する一例としてのコンピュータシステムを示すブロック概略図 本発明の1つの実施形態によるグラフィカルユーザインタフェースの1つの実装例を示す図 本発明の1つの実施形態によるグラフィカルユーザインタフェースの1つの実装例を示す図 本発明の1つの実施形態によるグラフィカルユーザインタフェースの1つの実装例を示す図 本発明の1つの実施形態によるグラフィカルユーザインタフェースの1つの実装例を示す図 本発明の1つの実施形態に従って動作させたときのクライアントとサーバのインタラクションについて示す図 本発明の1つの実施形態によるブラウザインクリメントに関するクライアント側の処理について示す図 本発明の1つの実施形態によるブラウザインクリメントに関するクライアント側の処理について示す図 本発明による1つの実施形態において利用可能な2つの相補的なコンピュータプログラム製品およびそれらの主要な機能ブロックについて示す図 本発明によるすなわちインクリメントデータすなわち変化分のデータを処理するためのサーバ側の方法を示す簡単なフローチャート 本発明によるインクリメントデータを処理するクライアント側の方法を示す簡単なフローチャート 本発明によるインクリメントデータを処理するクライアント側の方法を示す簡単なフローチャート

Claims (22)

  1. インクリメントデータを処理するコンピュータシステム(999)において、
    サーバ(901)に格納されているアプリケーションコンポーネントのオリジナルモデル(200−T1)を該アプリケーションコンポーネントの変更モデル(200−T2)に変更するための変更リクエストをクライアント(900)から受け取るサーバコントローラ(101−1)と、
    前記オリジナルモデル(200−T1)と前記変更モデル(200−T2)との差分に対応する少なくとも1つのブラウザインクリメント(300−I)を生成するサーバレンダラ(101−2)と、
    サーバ(901)から少なくとも1つのブラウザインクリメント(300−I)を受け取るクライアントアセンブラ(100−1)と、
    前記変更リクエストを生成するクライアントコントローラ(100−2)とが設けられており、
    前記クライアントアセンブラ(100−1)は、クライアント(900)のところでブラウザコンポーネントのオリジナルDOMコンポーネント(300−T1)を該少なくとも1つのブラウザインクリメント(300−I)によって更新し、前記変更モデル(200−T2)に対応する変更ドキュメントオブジェクトモデル(DOM)コンポーネント(300−T2)を生じさせ、該オリジナルドキュメントオブジェクトモデル(DOM)コンポーネント(300−T1)を前記オリジナルモデル(200−T1)に対応させることを特徴とする、
    インクリメントデータを処理するためのコンピュータシステム(999)。
  2. 請求項1記載のコンピュータシステム(999)において、
    クライアントコントローラ(100−2)は前記少なくとも1つのブラウザインクリメント(300−I)をクライアント(900)のキャッシュメモリ(920−C)に格納し、ディアクティベーションリクエスト(DAR)の受け取りに応答して前記クライアントアセンブラ(100−1)に命令し、前記少なくとも1つのブラウザインクリメント(300−I)を非アクティブ状態にすることを特徴とするコンピュータシステム。
  3. 請求項2記載のコンピュータシステム(999)において、
    クライアントコントローラ(100−2)は前記少なくとも1つのブラウザインクリメント(300−I)をキャッシュメモリ(920−C)から取り出し、リアクティベーションリクエスト(RAR)の受け取りに応答して前記クライアントアセンブラ(100−1)に命令し、前記少なくとも1つのブラウザインクリメント(300−I)を再びアクティブ状態にすることを特徴とするコンピュータシステム。
  4. 請求項1から3のいずれか1項記載のコンピュータシステム(999)において、
    前記クライアントコントローラ(100−2)はリセットリクエストに応答して前記クライアントアセンブラ(100−1)に命令し、オリジナルのまたは変更されたドキュメントオブジェクトモデル(DOM)コンポーネント(300−T1,300−T2)をリセットすることを特徴とするコンピュータシステム。
  5. 請求項1から4のいずれか1項記載のコンピュータシステム(999)において、
    前記のオリジナルモデル(200−T1)と変更モデル(200−T2)は、Javaクラス、Java Server Pagesクラス、servletクラス、Pascalクラス、Cクラス、C++クラス、Business Server Pagesクラスのグループから選択されたコンポーネントクラスによって定義されていることを特徴とするコンピュータシステム。
  6. 請求項1から5のいずれか1項記載のコンピュータシステム(999)において、
    前記ブラウザコンポーネントは、JavaScriptクラス、JavaAppletクラス、VisualBasic Scriptクラスのグループから選択されたコンポーネントスクリプトクラスによって定義されていることを特徴とするコンピュータシステム。
  7. 請求項5記載のコンピュータシステム(999)において、
    前記コンポーネントクラスにより、サーバコントローラ(101−1)とサーバレンダラ(101−2)の少なくとも一部分がインプリメントされることを特徴とするコンピュータシステム。
  8. 請求項6記載のコンピュータシステム(999)において、
    前記コンポーネントスクリプトクラスにより、前記のクライアントコントローラ(100−1)とクライアントアセンブラ(100−2)の少なくとも一部分がインプリメントされることを特徴とするコンピュータシステム。
  9. 請求項6記載のコンピュータシステム(999)において、
    前記コンポーネントスクリプトクラスおよび前記コンポーネントクラスは同一の階層を有することを特徴とするコンピュータシステム。
  10. インクリメントデータを処理するコンピュータシステム(999)内のサーバ(901)において、
    該サーバ(901)に格納されているアプリケーションコンポーネントのオリジナルモデル(200−T1)を該アプリケーションコンポーネントの変更モデル(200−T2)に変更するための変更リクエストを、コンピュータシステム(999)におけるクライアント(900)のクライアントコントローラ(100−2)から受け取るサーバコントローラ(101−1)と、
    前記のオリジナルモデル(200−T1)と変更モデル(200−T2)との差分に対応する少なくとも1つのブラウザインクリメント(300−I)を生成するサーバレンダラ(101−2)が設けられており、
    前記少なくとも1つのブラウザインクリメント(300−I)は、クライアント(900)のクライアントアセンブラ(100−1)に送信されて、オリジナルモデル(200−T1)に対応するオリジナルドキュメントオブジェクトモデル(DOM)コンポーネント(300−T1)が前記少なくとも1つのブラウザコンポーネント(300−I)により更新され、変更モデル(200−T2)に対応する変更されたドキュメントオブジェクトモデル(DOM)コンポーネント(300−T2)が生成されることを特徴とする、
    インクリメントデータを処理するコンピュータシステム内のサーバ。
  11. インクリメントデータを処理するコンピュータシステム(999)内のクライアント(900)において、
    該コンピュータシステム(999)内に設けられているサーバ(901)のサーバコントローラ(101−1)へ変更リクエストを送信するクライアントコントローラ(100−2)と、
    前記サーバ(901)から少なくとも1つのブラウザインクリメント(300−I)を受け取るクライアントアセンブラ(100−1)が設けられており、該クライアントアセンブラ(100−1)は、アプリケーションコンポーネントのオリジナルモデル(200−T1)に対応するオリジナルドキュメントオブジェクトモデル(DOM)コンポーネント(300−T1)を該少なくとも1つのブラウザインクリメント(300−I)によって更新し、前記アプリケーションコンポーネントの変更モデル(200−T2)に対応する変更ドキュメントオブジェクトモデル(DOM)コンポーネント(300−T2)を生じさせ、
    前記サーバコントローラ(101−1)は、サーバ(901)に格納されているオリジナルモデル(200−T1)を変更して変更モデル(200−T2)を形成し、
    前記サーバ(901)のサーバレンダラ(101−2)は、前記のオリジナルモデル(200−T1)と変更モデル(200−T2)との差分に対応する少なくとも1つのブラウザインクリメント(300−I)を生成することを特徴とする、
    インクリメントデータを処理するコンピュータシステム(999)内のクライアント。
  12. 請求項11記載のコンピュータシステム(999)において、
    前記クライアントコントローラ(100−2)は、前記少なくとも1つのブラウザインクリメント(300−I)をクライアント(900)のキャッシュメモリ(920−C)に格納し、ディアクティベーションリクエスト(DAR)の受け取りに応答して前記クライアントアセンブラ(100−1)に命令し、前記ブラウザインクリメント(300−I)を非アクティブ状態にすることを特徴とするコンピュータシステム。
  13. 請求項12記載のクライアント(999)において、
    クライアントコントローラ(100−2)は前記少なくとも1つのブラウザインクリメント(300−I)をキャッシュメモリ(920−C)から取り出し、リアクティベーションリクエスト(RAR)の受け取りに応答して前記クライアントアセンブラ(100−1)に命令し、前記少なくとも1つのブラウザインクリメント(300−I)を再びアクティブ状態にすることを特徴とするコンピュータシステム。
  14. 請求項11から13のいずれか1項記載のクライアント(900)において、
    前記クライアントコントローラ(100−2)はリセットリクエストに応答して前記クライアントアセンブラ(100−1)に命令し、オリジナルドキュメントオブジェクトモデル(DOM)コンポーネント(300−T1)をリセットすることを特徴とするコンピュータシステム。
  15. コンピューターシステム(999)のサーバ(901)においてインクリメントデータを処理する方法(400)において、
    サーバ(901)に格納されているアプリケーションコンポーネントのオリジナルモデル(200−T1)を該アプリケーションコンポーネントの変更モデル(200−T2)に変更するための変更リクエストを、コンピュータシステム(999)のクライアント(900)に属するクライアントコントローラ(100−2)からサーバコントローラ(101−1)が受け取るステップ(410)と、
    オリジナルモデル(200−T1)と変更モデル(200−T2)との差分に対応する少なくとも1つのブラウザインクリメント(300−I)をサーバレンダラ(101−2)が生成するステップ(420)と、
    該少なくとも1つのブラウザインクリメント(300−I)をクライアント(900)のクライアントアセンブラ(100−1)に送信するステップ(430)が設けられており、該ステップ(430)により、前記オリジナルモデル(200−T1)に対応するオリジナルドキュメントオブジェクトモデル(DOM)コンポーネント(300−T1)を前記少なくとも1つのブラウザインクリメント(300−I)によって更新し、変更モデル(200−T2)に対応する変更ドキュメントオブジェクトモデル(DOM)コンポーネント(300−T2)を生成することを特徴とする、
    コンピュータシステムのサーバにおいてインクリメントデータを処理する方法。
  16. コンピュータシステム(999)のクライアント(900)においてインクリメントデータを処理する方法(500)において、
    クライアントコントローラ(100−2)からコンピュータシステム(999)におけるサーバ(901)のサーバコントローラ(101−1)へ変更リクエストを送信するステップ(510)と、
    該変更リクエストに対する応答として、少なくとも1つのブラウザインクリメント(300−I)をサーバ(901)からクライアントアセンブラ(100−1)が受け取るステップ(520)と、
    アプリケーションコンポーネントのオリジナルモデル(200−T1)に対応するオリジナルドキュメントオブジェクトモデル(DOM)コンポーネントを、該少なくとも1つのブラウザインクリメント(300−I)によって更新するステップ(530)が設けられており、該更新ステップ(530)により、前記アプリケーションコンポーネントの変更モデル(200−T2)に対応する変更ドキュメントオブジェクトモデル(DOM)コンポーネント(300−T2)を生成し、
    前記サーバコントローラ(101−2)は、サーバ(901)に格納されているオリジナルモデル(200−T1)を変更して変更モデル(200−T2)を形成し、
    前記サーバ(901)のサーバレンダラ(101−2)は、オリジナルモデル(200−T1)と変更モデル(200−T2)との差に対応する少なくとも1つのブラウザインクリメント(300−I)を生成することを特徴とする、
    コンピュータシステムのクライアントにおいてインクリメントデータを処理する方法。
  17. 請求項16記載の方法(500)において、
    前記少なくとも1つのブラウザインクリメント(300−1)をクライアント(900)のキャッシュメモリ(920−C)に格納するステップ(540)が設けられていることを特徴とする方法。
  18. 請求項17記載の方法(500)において、
    前記クライアントコントローラ(100−2)がディアクティベーションリクエスト(DAR)を受け取ったことに応答して、クライアントアセンブラ(100−1)がブラウザインクリメント(300−I)を非アクティブ状態にするステップ(550)が設けられていることを特徴とする方法。
  19. 請求項18記載の方法(500)において、
    クライアントアセンブラ(100−1)が前記少なくとも1つのブラウザインクリメント(300−I)をキャッシュメモリ(920−C)から取り出すステップ(560)と、
    クライアントコントローラ(100−2)がリアクティベーションリクエスト(RAR)を受け取ったことに応答して、該少なくとも1つのブラウザインクリメント(300−I)を再びアクティブ状態にするステップ(570)が設けられていることを特徴とする方法。
  20. サーバ(901)のメモリ(921)にロードされると、該サーバ(901)の少なくとも1つのプロセッサ(911)に対し請求項15記載のステップを実行させる命令を有することを特徴とするコンピュータプログラム製品(101)。
  21. クライアント(900)のメモリ(920)にロードされると、該クライアント(900)の少なくとも1つのプロセッサ(910)に対し請求項16から請求項19のいずれか1項記載のステップを実行させる命令を有することを特徴とするコンピュータプログラム製品(100)。
  22. インクリメントデータを処理するコンピュータシステム(999)において、
    変更リクエストに対する応答として、サーバ(901)上のアプリケーションコンポーネントのモデル(200−Tn)を変更(703)するサーバコントローラ(101−1)と、
    モデル(200−Tn)が変更(703)された後、少なくとも1つのブラウザインクリメント(300−I)を生成するサーバレンダラ(101−2)と、
    サーバ(901)から少なくとも1つのブラウザインクリメント(300−I)を受け取って、クライアント(900)におけるブラウザコンポーネントのインスタンスを該少なくとも1つのブラウザインクリメント(300−I)により更新し、該ブラウザコンポーネントは前記アプリケーションコンポーネントに対応することを特徴とする、
    インクリメントデータを処理するコンピュータシステム。
JP2004526822A 2002-08-02 2003-07-30 クライアント・サーバ通信におけるインクリメントデータを処理する方法およびコンピュータシステム Expired - Lifetime JP4763286B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP02017408.2 2002-08-02
EP02017408A EP1388783B1 (en) 2002-08-02 2002-08-02 Method and computer system for handling incremental data in client-server communication
PCT/EP2003/008409 WO2004015566A1 (en) 2002-08-02 2003-07-30 Method and computer system for handling incremental data in client-server communication

Publications (2)

Publication Number Publication Date
JP2005535042A true JP2005535042A (ja) 2005-11-17
JP4763286B2 JP4763286B2 (ja) 2011-08-31

Family

ID=30129178

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004526822A Expired - Lifetime JP4763286B2 (ja) 2002-08-02 2003-07-30 クライアント・サーバ通信におけるインクリメントデータを処理する方法およびコンピュータシステム

Country Status (9)

Country Link
US (1) US20060200535A1 (ja)
EP (1) EP1388783B1 (ja)
JP (1) JP4763286B2 (ja)
CN (1) CN100380318C (ja)
AT (1) ATE385589T1 (ja)
AU (1) AU2003266253B2 (ja)
CA (1) CA2494659C (ja)
DE (1) DE60224926T2 (ja)
WO (1) WO2004015566A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008021307A (ja) * 2006-07-10 2008-01-31 Internatl Business Mach Corp <Ibm> 異機種環境においてメッセージのサーバ・ベースのレンダリングを管理するためにコンピュータを利用する方法およびシステム
JP2008508585A (ja) * 2004-07-29 2008-03-21 インジェニコ (ユーケー) リミテッド 電子金融取引システム
US10985991B2 (en) 2014-06-02 2021-04-20 Yamaha Corporation Relay device, program, and display control method

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1406183A3 (en) * 2002-10-01 2004-04-14 Sap Ag Method and system for refreshing browser pages
US8095659B2 (en) 2003-05-16 2012-01-10 Jp Morgan Chase Bank Service interface
US7913177B1 (en) * 2004-03-08 2011-03-22 Adobe Systems Incorporated System and method for managing instantiation of interface elements in rich internet applications
US7954050B2 (en) * 2004-06-25 2011-05-31 Icesoft Technologies Canada Corp. Systems and methods for rendering and increasing portability of document-based user interface software objects
US8627344B2 (en) * 2004-12-15 2014-01-07 Siebel Systems, Inc. Methods and apparatuses for user interface management
US20060136810A1 (en) * 2004-12-22 2006-06-22 Sap Aktiengesellschaft Electronic form generator
US7610291B2 (en) * 2005-08-17 2009-10-27 International Business Machines Corporation Logical grouping and management of redundant objects in storage systems
ZA200806190B (en) * 2006-01-18 2009-10-28 Ericsson Telefon Ab L M Dependency notification
US8190650B2 (en) * 2006-05-02 2012-05-29 Microsoft Corporation Efficiently filtering using a web site
US7984375B1 (en) 2006-10-10 2011-07-19 Adobe Systems Incorporated Automated detection and implementation of state and object modifications
US20080155427A1 (en) * 2006-12-21 2008-06-26 Jean-Francois Leblay Mobile business client
US8134553B2 (en) * 2007-09-24 2012-03-13 Microsoft Corporation Rendering three-dimensional objects on a server computer
US20100067113A1 (en) * 2008-09-18 2010-03-18 Matthew John Harrison Apparatus and Method for Displaying Hierarchical Data
US8572226B2 (en) * 2008-12-17 2013-10-29 Sap Ag Enhancing network details using network monitoring scripts
US9171097B2 (en) 2009-03-31 2015-10-27 Qualcomm Incorporated Memoizing web-browsing computation with DOM-based isomorphism
US9311425B2 (en) * 2009-03-31 2016-04-12 Qualcomm Incorporated Rendering a page using a previously stored DOM associated with a different page
US20110173589A1 (en) * 2010-01-13 2011-07-14 Microsoft Corporation Cross-Browser Interactivity Testing
US9077681B2 (en) * 2010-10-05 2015-07-07 Microsoft Technology Licensing, Llc Page loading optimization using page-maintained cache
US8700691B2 (en) 2011-12-05 2014-04-15 Microsoft Corporation Minimal download and simulated page navigation features
US10289743B2 (en) * 2012-01-19 2019-05-14 Microsoft Technology Licensing, Llc Client-side minimal download and simulated page navigation features
US9846605B2 (en) 2012-01-19 2017-12-19 Microsoft Technology Licensing, Llc Server-side minimal download and error failover
CN102830973A (zh) * 2012-08-14 2012-12-19 无锡哲勤科技有限公司 海量数据下Web应用开发双层MVC的方法和分层结构
US9646103B2 (en) * 2014-07-10 2017-05-09 MyMojo Corporation Client-side template engine and method for constructing a nested DOM module for a website
US10712913B2 (en) * 2014-10-20 2020-07-14 Oracle International Corporation Event-based architecture for expand-collapse operations
US9881070B2 (en) * 2014-12-12 2018-01-30 Microsoft Technology Licensing, Llc Controlling service functions in response to service instigation and service reactivation messages
CN107085530B (zh) * 2017-05-17 2021-03-16 武汉斗鱼网络科技有限公司 刷新应用界面的方法、装置及移动终端
US11023672B1 (en) * 2018-01-29 2021-06-01 Amazon Technologies, Inc. Dynamic service injection
CN110456738B (zh) * 2018-05-07 2021-08-27 华中科技大学 监控系统及其监控方法
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
US10552639B1 (en) 2019-02-04 2020-02-04 S2 Systems Corporation Local isolator application with cohesive application-isolation interface
US10558824B1 (en) 2019-02-04 2020-02-11 S2 Systems Corporation Application remoting using network vector rendering
US10452868B1 (en) 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering
CN112540816A (zh) * 2020-11-30 2021-03-23 北京飞漫软件技术有限公司 一种远程页面渲染方法、装置、设备及计算机存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09171510A (ja) * 1995-10-19 1997-06-30 Fuji Xerox Co Ltd 構造化データ処理装置
JP2002189618A (ja) * 2000-12-21 2002-07-05 Hitachi Information Systems Ltd 差分キャッシュを用いたwwwサーバとwwwブラウザの処理方法、およびそのプログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870549A (en) * 1995-04-28 1999-02-09 Bobo, Ii; Charles R. Systems and methods for storing, delivering, and managing messages
CA2692298C (en) * 1997-02-07 2014-10-28 About.Com, Inc. Collaborative internet data mining system
US20010047394A1 (en) * 1999-09-10 2001-11-29 Kloba David D. System, method, and computer program product for executing scripts on mobile devices
US6718515B1 (en) * 1999-12-07 2004-04-06 International Business Machines Corporation Method of populating a dynamic HTML table from a set of data objects through a common interface
JP2003521784A (ja) * 2000-02-04 2003-07-15 アメリカ オンライン インコーポレーティッド スケーラブルなウェブページを配信およびレンダリングするためのシステムとプロセス
US6704024B2 (en) * 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
US7047318B1 (en) * 2001-04-20 2006-05-16 Softface, Inc. Method and apparatus for creating and deploying web sites with dynamic content
US6978445B2 (en) * 2001-09-28 2005-12-20 Siebel Systems, Inc. Method and system for supporting user navigation in a browser environment
US6918090B2 (en) * 2002-01-23 2005-07-12 International Business Machines Corporation Dynamic setting of navigation order in aggregated content
US20030167315A1 (en) * 2002-02-01 2003-09-04 Softwerc Technologies, Inc. Fast creation of custom internet portals using thin clients

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09171510A (ja) * 1995-10-19 1997-06-30 Fuji Xerox Co Ltd 構造化データ処理装置
JP2002189618A (ja) * 2000-12-21 2002-07-05 Hitachi Information Systems Ltd 差分キャッシュを用いたwwwサーバとwwwブラウザの処理方法、およびそのプログラム

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSND200000370004, Win98研究会, "付録CD−ROM連動基本から裏技まで!Win98パソコン完全攻略テクニック Q&A形式", PC WORK! 第6巻 第1号, 19990108, 第6巻, p.54, JP, 株式会社毎日コミュニケーションズ *
CSNG200301441011, 上野 英俊 Hidetoshi Ueno, "XMLコンテンツの差分生成法とプッシュ型配信への応用 Delta file creation method of XML contents and", 情報処理学会研究報告 Vol.2002 No.24 IPSJ SIG Notes, 20020308, 第2002巻第24号, p.107−114, JP, 社団法人情報処理学会 Information Processing Socie *
JPN6009053843, Win98研究会, "付録CD−ROM連動基本から裏技まで!Win98パソコン完全攻略テクニック Q&A形式", PC WORK! 第6巻 第1号, 19990108, 第6巻, p.54, JP, 株式会社毎日コミュニケーションズ *
JPN6009053845, 上野 英俊 Hidetoshi Ueno, "XMLコンテンツの差分生成法とプッシュ型配信への応用 Delta file creation method of XML contents and", 情報処理学会研究報告 Vol.2002 No.24 IPSJ SIG Notes, 20020308, 第2002巻第24号, p.107−114, JP, 社団法人情報処理学会 Information Processing Socie *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008508585A (ja) * 2004-07-29 2008-03-21 インジェニコ (ユーケー) リミテッド 電子金融取引システム
JP2008021307A (ja) * 2006-07-10 2008-01-31 Internatl Business Mach Corp <Ibm> 異機種環境においてメッセージのサーバ・ベースのレンダリングを管理するためにコンピュータを利用する方法およびシステム
US10985991B2 (en) 2014-06-02 2021-04-20 Yamaha Corporation Relay device, program, and display control method

Also Published As

Publication number Publication date
EP1388783A1 (en) 2004-02-11
DE60224926T2 (de) 2009-01-22
CN100380318C (zh) 2008-04-09
CN1682183A (zh) 2005-10-12
DE60224926D1 (de) 2008-03-20
EP1388783B1 (en) 2008-02-06
ATE385589T1 (de) 2008-02-15
CA2494659A1 (en) 2004-02-19
WO2004015566A1 (en) 2004-02-19
US20060200535A1 (en) 2006-09-07
JP4763286B2 (ja) 2011-08-31
AU2003266253A1 (en) 2004-02-25
AU2003266253B2 (en) 2008-08-07
CA2494659C (en) 2012-04-17

Similar Documents

Publication Publication Date Title
JP4763286B2 (ja) クライアント・サーバ通信におけるインクリメントデータを処理する方法およびコンピュータシステム
US8136109B1 (en) Delivery of data and formatting information to allow client-side manipulation
US6701368B1 (en) Providing a stream of data to a browser to update properties on a page
US20190236118A1 (en) Filtered stylesheets
RU2466450C2 (ru) Способ и система для создания ит-ориентированных серверных сетевых приложений
US8645862B2 (en) Displaying and executing web services in multiple content domains
US7870482B2 (en) Web browser extension for simplified utilization of web services
EP1330739B1 (en) Accessing data stored at an intermediary from a service
US20110113090A1 (en) Dynamic mobile client
US20060230059A1 (en) Method and apparatus to select and deliver portable portlets
US20040003130A1 (en) Systems and methods for accessing web services using a tag library
AU2001293254A1 (en) Accessing data stored at an intermediary from a service
US20030167320A1 (en) Registration service for registering plug-in applications with a management console
US20160012144A1 (en) Javascript-based, client-side template driver system
WO2016005885A2 (en) Asynchronous initialization of document object model (dom) modules
JP2007506163A (ja) 拡張可能なプロビジョニングを伴う動的なコンテンツ処理システムおよび方法
CN117390326A (zh) 页面管理方法、装置、设备以及存储介质
Fysarakis et al. Node. dpws: Efficient web services for the internet of things
US7685258B2 (en) Disconnectible applications
KR100462900B1 (ko) 웹 브라우저에서 동작하는 경량 알람 매니저 및 그 서비스방법과 그를 위한 알람 데이터 제공 방법
US7831905B1 (en) Method and system for creating and providing web-based documents to information devices
JP2022537008A (ja) 動的に構成可能なクライアントアプリケーションアクティビティ
Kao et al. Designing an XML-based context-aware transformation framework for mobile execution environments using CC/PP and XSLT
JP2004234345A (ja) アプリケーションプログラム実行装置およびプログラム
TWM511643U (zh) 植基於ajax技術的數據集中控管系統

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091016

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100113

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100120

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100212

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100219

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100312

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100319

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100415

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101007

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20101111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20101115

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20101115

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110609

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140617

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4763286

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term