JP2004535606A - クライアント上で表示されたユーザインターフェース要素およびウェブサーバ上で実行するソフトウェアアプリケーションコンポーネントを同期させる方法および装置 - Google Patents
クライアント上で表示されたユーザインターフェース要素およびウェブサーバ上で実行するソフトウェアアプリケーションコンポーネントを同期させる方法および装置 Download PDFInfo
- Publication number
- JP2004535606A JP2004535606A JP2002541524A JP2002541524A JP2004535606A JP 2004535606 A JP2004535606 A JP 2004535606A JP 2002541524 A JP2002541524 A JP 2002541524A JP 2002541524 A JP2002541524 A JP 2002541524A JP 2004535606 A JP2004535606 A JP 2004535606A
- Authority
- JP
- Japan
- Prior art keywords
- user interface
- component
- property
- interface element
- web server
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
Abstract
クライアント上に表示されたユーザ要素およびウェブサーバ上で実行するソフトウェアアプリケーションコンポーネントを同期させるためのシステムおよび方法が記載される。ユーザインターフェース要素およびソフトウェアアプリケーションコンポーネントを同期させることは、ユーザインターフェース要素を、特性を有するユーザインターフェース要素コンポーネントとして提示することと、ユーザインターフェース要素コンポーネントの特性をソフトウェアアプリケーションコンポーネントの特性に関連させるワイヤリング記述子を提供することとを包含する。ワイヤリング記述子は、ユーザインターフェース要素コンポーネントをソフトウェアアプリケーションコンポーネントに結び付け、ユーザインターフェース要素コンポーネントの特性をソフトウェアアプリケーションコンポーネントの特性に同期させる。
Description
【0001】
(発明の分野)
本発明は、概して、ソフトウェアコンポーネントを同期させることに関し、特に、クライアント上に表示されたユーザインターフェース要素およびウェブサーバ上で実行するソフトウェアアプリケーションコンポーネントを同期させることに関する。
【0002】
(発明の背景)
サーブレットは、ウェブサーバ上で走行するJava(R)のアプレットであり、しばしば、ソフトウェアの移植性を改善する。サーブレットは、Java(R)のプログラムであるため、サーブレットは、異なるオペレーティングシステムのためにリコンパイルされる必要がない。高度な双方向ハイパーテキストマークアップ言語(HTML)アプリケーションのウェブ開発者は、しばしば、サーバ側のウェブ開発のためにサーブレットを利用する。サーブレットに基づくダイナミックウェブページは、サーバ間に容易に伝送され得、通常、「バックエンド(back−end)」アプリケーションに良好に統合され得る(すなわち、アプリケーションの一部がサーバ上で実行するが、アプリケーションの別の部分は、クライアントコンピュータ上で実行する)。
【0003】
サーブレットを用いてプログラミングを行う場合、アプリケーション開発者は、しばしば、データベースまたはアプリケーションにアクセスするためにJAVA(R) Beanを用いる。サーブレットは、Java(R) Beanによって完成された機能の結果をウェブページを見ているユーザに提示するために、出力ストリームにHTMLタグ、テキスト、およびデータを書き込み得る。より詳細には、プログラマーは、通常、ユーザへ結果を提示する各HTMLラインのためにJAVA(R)方法の「println()」等のプリントステートメントを呼び出す。アプリケーション開発者は、ウェブページのHTMLコンテンツをソフトウェアコード内に含めるため、アプリケーション開発者は、長いHTMLウェブページのために困難でかつ時間を消費するタスクに直面する。さらに、アプリケーション開発者は、概して、HTMLコンテンツの創作者(すなわち、HTML開発者)が完成されることを望むすべてのコンテンツ変更を作り上げなければならない。
【0004】
JAVA(R)サーバページ(JSP)は、HTML開発者とアプリケーション開発者との間の分離を改善する。JSPは、アプリケーション開発者がJAVA(R)コードの一部をHTMLウェブページ内に含めることを可能にし、ウェブサーバは、ウェブページからサーブレットを自動的に作成する。したがって、アプリケーション開発者は、プリントステートメントを呼び出すことなく、HTMLコードを含めることができ、HTML開発者は、HTMLを変更させることができる。しかしながら、同一のファイル上で作業するHTML開発者およびアプリケーション開発者を有することは、分離した開発では非生産的でかつ非実用的になり得る。例えば、あるアプリケーション開発者がファイルを修正する間、多くの他の開発者は、通常、そのファイルを同時に修正することはできず、結果として、そのアプリケーション開発者が修正を終えるまで待たなければならない。さらに、一つのファイルに二つの言語を有すること(すなわち、JAVA(R)コードをHTML内部に含むこと)は、読むことが困難なファイルを作成し得る。
【0005】
したがって、HTML開発者およびアプリケーション開発者によって開発されたファイル間の明瞭な分離を可能にする必要性が残っている。
【0006】
(発明の要旨)
本発明は、クライアント上に表示されたユーザインターフェース要素およびウェブサーバ上で実行するソフトウェアアプリケーションコンポーネントを同期させるための方法および装置に関する。一局面では、本発明は、ユーザインターフェース要素およびソフトウェアアプリケーションコンポーネントを同期させるための方法に関する。本方法は、一つの特性を有するユーザインターフェース要素コンポーネントとしてユーザインターフェース要素を提示する工程と、ユーザインターフェース要素コンポーネントの特性をソフトウェアアプリケーションコンポーネントの一つの特性と関連する書き込み記述子を提供する工程とを包含する。本方法は、さらに、ユーザインターフェース要素コンポーネントをソフトウェアアプリケーションコンポーネントと結合するために書き込み記述子を実行する工程と、ユーザインターフェース要素コンポーネントの特性をソフトウェアアプリケーションコンポーネントの特性と同期させる工程とを含む。
【0007】
一実施形態では、ユーザインターフェース要素コンポーネントの特性をソフトウェアアプリケーションコンポーネントの特性と関連させるために書き込み記述子を提供する工程は、さらに、ウェブページのフラグメントを識別する工程を包含する。さらに別の実施形態では、書き込み記述子を提供する工程は、ユーザインターフェース要素コンポーネントの特性およびソフトウェアアプリケーションコンポーネントの特性を同期させるためにイベントを識別する工程をさらに包含する。
【0008】
別の局面では、本発明は、クライアント上に表示されたユーザインターフェース要素およびウェブサーバ上で実行するソフトウェアアプリケーションコンポーネントを同期させる装置に関する。本装置は、ユーザインターフェースプロパティモジュール、ロジックプロパティモジュール、およびイベントモジュールを含む。ユーザインターフェースプロパティモジュールは、ユーザインターフェース要素コンポーネントの特性を識別する。ロジックプロパティモジュールは、ソフトウェアアプリケーションコンポーネントの特性を識別する。イベントモジュールは、イベント発生時にユーザインターフェース要素オブジェクトの特性およびソフトウェアアプリケーションオブジェクトの特性を同期させるためのイベントを識別する。
【0009】
一実施形態では、本装置は、さらに、データを格納および管理するデータベースサーバを含む。別の実施形態では、本装置は、ウェブサーバとデータベースサーバとの間の要求および応答を統合するミドルウェアサーバを含む。さらに別の実施形態では、本装置は、ユーザインターフェース要素を提供するソフトウェア設計ステーションを含む。別の実施形態では、本装置は、ソフトウェアアプリケーションコンポーネントを提供するアプリケーション開発システムを含む。別の実施形態では、本装置は、ダイナミックユーザインターフェースを特定する接続モジュールを含む。
【0010】
上述の本発明の利点は、さらなる利点とともに、添付図面に結び付けられた以下の説明を参照することによってより良く理解され得る。図面において、同様の参照符号は、概して、異なる図にわたって同一部分に関する。さらに、図面は、必ずしも縮尺調整されているわけではなく、その代わりに、概して、本発明の原理を例示する際に配置されるように強調している。
【0011】
(発明の詳細な説明)
図1を参照すると、本発明にしたがって構成されたコンピュータネットワーク2の一実施形態が示される。コンピュータネットワーク2は、クライアントコンピュータ10またはクライアント、ウェブサーバ20、アプリケーション開発システム30、およびソフトウェア設計ステーション40を含む。簡単に概観すると、ウェブサーバ20は、ウェブ通信チャネル35を介してクライアント10と通信し、アプリケーション通信チャネル45を介してアプリケーション開発システム30と通信する。ウェブサーバ20は、さらに、ソフトウェアコンポーネント通信チャネル47を介してソフトウェア設計ステーション40と通信する。さらなるコンポーネントネットワーク2が省略されており、これは、図2においてさらに説明される。
【0012】
ウェブ通信チャネル35、アプリケーション通信チャネル45、およびソフトウェアコンポーネント通信チャネル47は、ローカルエリアネットワーク(LAN)、ミディアムエリアネットワーク(MAN)、または、インターネットまたはワールドワイドウェブ(WWW)等のワイドエリアネットワーク(WAN)を介する通信をサポートし得る。これらの通信チャネル35、45、47の例となる実施形態は、標準的電話線、LANまたはWANリンク(例えば、T1、T3、56kb、X.25)、ブロードバンド接続(ISDN、フレームリレー、ATM)、および無線接続を含む。これらの通信チャネル35、45、47を介する接続は、種々の通信プロトコル(例えば、TCP/IP、IPX、SPX、NetBIOS、Ethernet(R)、RS232、および直接的非同期接続)を用いて確立され得る。いくつかの実施形態では、用いられるプロトコルは、フロリダ州Fort LauderdaleのCitrix System,Inc.によって開発されたIndependent Computing Architecture(ICA)プロトコル、ワシントン州RedmondのMicrosoft Corporationによって開発されたRemote Display Protocol(RDP)、マサチューセッツ洲CambridgeのMassachusetts Institute of Technologyによって開発されたX−Windows(R)その他であり得る。
【0013】
クライアント10は、任意のパーソナルコンピュータ(例えば、286、386、486、Pentium(R)、Pentium(R) II、Macintosh computer)、Windows(R)ベースの端末、Network Computer、無線デバイス、情報機器(information appliance)、RISC Power PC、X−device、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、携帯端末、またはWindows(R)ベースのデスクトップおよび小さいディスプレイ提示プログラムを実行するために十分な持続性のストレージ機能を有する他のコンピューティングデバイスであり得る。ディスプレイ提示プログラムは、グラフィカルな表示を提示するためにウェブ通信チャネル35にわたってウェブサーバ20によって送られるコマンドおよびデータを用いる。クライアント10によってサポートされたWindows(R)優先のプラットフォームは、制限なしで、WINDOWS(R) 3.x、WINDOW(R) 95、WINDOWS(R) 98、WINDOWS(R) NT 3.51、WINDOWS(R) NT 4.0、WINDOWS(R) 2000、WINDOWS(R) CE、MAC/OS、JAVA(R)、およびUNIX(R)を含み得る。クライアント10は、目に見えるディスプレイデバイス(例えば、コンピュータモニタ)、またはデータ入力デバイス(例えば、キーボード)、ダウンロードされたアプリケーションプログラムを格納するための持続性または揮発性ストレージ(例えば、コンピュータメモリ)、プロセッサ、およびマウスを含み得る。小型のディスプレイ提示プログラムの実行により、クライアント10は分散コンピュータシステムモデル(すなわち、サーバベースのコンピューティングモデル)に参加することが可能になる。
【0014】
分散コンピュータシステムモデルでは、アプリケーションプログラムの実行は、全体としてウェブサーバ20上で発生され、そしてユーザインターフェース(UI)、キー操作およびマウスの移動は、ウェブ通信チャネル35を介してクライアント10に伝送される。ユーザインターフェースは、テキスト駆動(例えば、DOS)されるか、または、グラフィカル駆動(例えば、Windows(R))され得る。クライアント10によってサポートされ得るプラットフォームは、DOSおよびwindowsベースの端末用のWindows(R) CEを含む。あるいは、クライアントは、「thin−client」モデルにしたがって動作し得る。
【0015】
ウェブサーバ20は、ウェブページのコンテンツ等のデータをクライアント10にウェブ通信チャネル35を介して送達する任意のコンピューティングデバイスであり得る。クライアントと同様に、ウェブサーバ20は、ビジュアルディスプレイデバイス(例えば、コンピュータモニタ)、データ入力デバイス(例えば、キーボード)、ダウンロードされたアプリケーションプログラムを格納するための持続性または揮発性のストレージ(例えば、コンピュータメモリ)、プロセッサ、およびマウスを含み得る。別の実施形態では、ウェブサーバ20は、サーバファーム(Server farm)(図示せず)のメンバーである。サーバファームは、単一のエンティティとして管理された一以上のサーバの論理群である。
【0016】
図1に示された一実施形態では、クライアント10は、ワシントン州RedmondのMicrosoft Corporationによって開発されたInternet Explorer(R)等のウェブブラウザ50をウェブに接続するために含む。ウェブブラウザ50の制御の下で、クライアント10は、ウェブページのリクエストをウェブ通信チャネル35を介してウェブサーバ20に送る。ウェブページのデータは、テキスト、グラフィックス、および他の形態の情報の形態であり得る。クライアント10がウェブ通信チャネル35を介して複数のウェブサーバ20のうちの任意の一つにアクセスし得る場合、ユーザは、適切なウェブサーバ20に接続するために既知のアドレス(URL)をウェブブラウザ50に供給しなければならない。ウェブサーバ20は1より多くのウェブページを含み得るため、ユーザは、さらに、アドレスの中からどのウェブページをウェブブラウザ50上で見たいかを特定する。このウェブページのリクエストは、一実施形態において、さらに、アプリケーションプログラムをウェブサーバ20上で実行させるためのリクエストを含む。ウェブサーバ20は、このリクエストを受け取り、分散コンピュータシステムモデルにおいて、この所望のアプリケーションプログラムを実行する。
【0017】
クライアント10およびウェブサーバ20について上述したように、アプリケーション開発システム30およびソフトウェア設計ステーション40は、持続性または揮発性ストレージ(例えば、コンピュータメモリ)、プロセッサ、ビジュアルディスプレイデバイス(例えば、コンピュータモニタ)およびデータ入力デバイス(例えば、キーボード)を有する任意のデバイス(例えば、Windows(R)ベースの端末、パーソナルコンピュータ)であり得る。図1の一実施形態では、アプリケーション開発システム30は、統合開発環境(Integrated Development Environment)(IDE)52を含む。IDE52は、アプリケーションに統合されたプログラミング環境である。例えば、Microsoft Officeアプリケーションは、種々のバージョンのBASICプログラミング言語をサポートする。IDEの例示的実施形態は、制限なく、ニュージャージー州SpringfieldのData Representationによって製造された、Java(R)用のSimplicityおよびカリフォルニア州CupertinoのSymantecによって開発されたVisual Cafeを含む。図1にさらに示される別の実施形態では、アプリケーション開発者は、ウェブサーバ20上のアプリケーションコンポーネントをIDE52’でもって開発する。
【0018】
アプリケーション開発者は、Java(R)Beanコンポーネント(すなわち、Bean)等のアプリケーションコンポーネントをIDE52でもって開発する。ソフトウェアコンポーネント(例えば、Java(R) Bean)は、ソフトウェアアプリケーションの再利用可能、交換可能、かつ、分離した部分である。アプリケーションコンポーネントは、他のプログラミング言語(例えば、Visual Basic、C++)で開発され、かつ、書き込まれ得るが、アプリケーションコンポーネントは、以下に詳細に説明されるように、Java(R)のプログラミング言語に書き込まれたJava(R) Beanである。
【0019】
Java(R) Beanコンポーネントへのインターフェースは、方法、プロパティ、およびイベントの特定のセットからなる。「方法」は、ソフトウェアクラスに結ぶ付けられ、Java(R) Beanによって行われる手続である。「プロパティ」は、Java(R) Beanの特性を規定する。本明細書において用いられるように、用語「イベント」は、プログラムが検出する任意の活動または処理を包含するために十分広い意味を持つ。例えば、イベントは、マウスボタンをクリックするまたはキーを押す等のユーザの処理、または、メモリ外で走行する等のシステム発生であり得る。ソフトウェア設計ステーション40およびアプリケーション開発システム30は、このインターフェースを通じてアプリケーションコンポーネントの能力(例えば、どの種類のイベントをBeanが生成または応答し得るか)を決定する。アプリケーションコンポーネントの完成の後、アプリケーション開発者は、アプリケーションコンポーネントをウェブサーバ20に後の使用のために伝送する。
【0020】
ソフトウェア開発者(本明細書にわたって、Hyper Text Markup Language(HTML)開発者とも呼ばれる)は、ソフトウェア設計ステーション40を用いて、ソフトウェア(例えば、HTML)コンポーネントを開発する。HTMLコンポーネントは、クライアント側のコンポーネント(すなわち、クライアント10上での実行)である。HTMLコンポーネントの例は、スクロールバー、ボタン、メニューバー、テーブル、カレンダー、計算器その他を含む(しかし、これらに制限されない)。HTML開発者がHTMLコンポーネントを完成した後、HTML開発者は、コンポーネントをウェブサーバ20に後の使用のために伝送する。ソフトウェアコンポーネントは、本明細書わたってHTMLコンポーネントとして記載されるが、当業者は、ソフトウェア開発者は、クライアント側のコンポーネント(すなわち、クライアント10上での実行)またはサーバ側のコンポーネント(すなわち、ウェブサーバ20上での実行)のいずれかであるソフトウェアコンポーネントを開発するために他のプログラミング言語(例えば、Java(R)、C++、Visual Basic)を使用し得ることを理解する。しかしながら、異なるプログラミング言語がソフトウェア開発者によって用いられる場合、ウェブサーバ20は、ウェブサーバ20がウェブページ(またはアプリケーション)をクライアント10に伝送する前にウェブブラウザ50がソフトウェアコンポーネントを開発するために用いられたプログラミング言語をサポートすることをチェックする。
【0021】
ソフトウェア設計ステーション40は、ウェブオーサリングツール55(すなわち、HTMLエディタ)を実行する。ある実施形態において、本明細書にわたって記載されるように、ソフトウェア開発者は、HTMLに書き込まれたウェブページを開発および修正するためにウェブページオーサリングツール55を用いる。他の実施形態では、ソフトウェア開発者は、ウェブページを開発するために、Extensible Markup Language、または、XML等(しかし、これらに制限されない)の他のプログラミング言語を用いる。ウェブオーサリングツール55の例は、制限なく、カリフォルニア州San FranciscoのMacromedia,Incorporatedによって製造されたDreamweaver、韓国SeoulのNamo Interactive Inc.によって製造されたWebEditor、カリフォルニア州San JoseのAdobe Systems Incorporatedによって製造されたGoLiveおよびワシントン州RedmondのMicrosoftによって開発されたFrontPageを含む。あるいは、ウェブサーバ20は、HTML開発者による使用のためにウェブページオーサリングツール55’を実行する。
【0022】
図2は、ウェブサーバ20、EJBサーバ60、およびデータベースサーバ70を含むコンピュータネットワーク2の例示的実施形態のブロック図を示す。ウェブサーバ20は、EJB通信チャネル65を介してEnterprise Java(R) Bean(EJB)サーバ60と通信する。EJBサーバ60は、さらに、データベース通信チャネル75を介してデータベースサーバ70と通信する。
【0023】
データベースサーバ70は、しばしば、コンピュータネットワーク2の「バックエンド(back end)」ティアー(tier)と呼ばれ、データを格納および管理する。ウェブサーバ20は、データベースソフトウェアプログラム72とインターフェースをとることによってデータベースサーバ70上に格納された情報にアクセスする。一実施形態では、データベースソフトウェア72は、ウェブサーバ20のデータまたはEJBサーバ60のデータをLightweight Directory Access Protocol(LDAP)データモデルに保守する。他の実施形態では、データベースソフトウェア72は、データをODBCコンプライアントデータベースに格納する。例えば、データベースソフトウェア72は、カリフォルニア州RedwoodのOracle Corporationによって製造されたORACLEデータベースとして提供され得る。他の実施形態では、データベースソフトウェア72は、Microsoft ACCESSデータベースまたはMicrosoft SQLサーバデータベースであり得る。データベースサーバ70は、ローカルメモリからデータを検索し、データベース通信チャネル75を介してデータをEJBサーバ60に、そして、その結果として、EJB通信チャネル65を介してウェブサーバ20に伝送する。
【0024】
EJBサーバ60(しばしば、「ミドルウェア」サーバと呼ばれる)は、非アプリケーションの詳細を処理し、EJBコンテナを管理する(host)(すなわち、実行する)。EJBコンテナは、EJBコンポーネントを含む。EJBコンポーネントは、取り引き等のビジネスロジックをインプリメントするJava(R)コンポーネント(伝統的なJava(R) Bean同様)である。EJBサーバ60は、取り引きおよびリソース管理、バージョン管理(versioning)、スケーラビリティ(scalability)、移動性、持続性、およびEJBコンポーネントに対する安全性等のサービスを提供する。結果として、EJBサーバ60は、アプリケーションコンポーネントをサポートする。一実施形態では、EJBサーバ60は、Remote Method Invocation(RMI)を、EJB通信チャネル65を介する伝送プロトコルとして用いる。別の実施形態では、EJBサーバ60は、Internet Inter−ORB Protocol(IIOP)を、EJB通信チャネル65を介する伝送プロトコルとして用いる。EJBサーバ60の例は、カリフォルニア州Redwood ShoresのOracle Corporationによって製造されたOracle8i Jserverである。当業者は、EJBコンテナを管理(host)し、そして、EJBコンテナに必要なサービスを提供し得る任意のサーバがEJBサーバ60であり得ることを理解する。
【0025】
ウェブサーバ20は、さらに、ワイヤリング記述子80、完成したHTMLコンポーネント82、および完成したアプリケーションコンポーネント84を含む。ワイヤリング記述子80は、図3および一実施形態においてさらに説明されるように、ウェブサーバ20が(HTMLコンポーネント82に含まれる)HTML UI要素85とアプリケーションコンポーネント84との間の関係を線引きするために用いる宣言型XMLファイルまたはドキュメントである。さらに、ワイヤリング記述子80は、アプリケーションコンポーネント84の開発とHTMLコンポーネント82(すなわち、HTML UI要素85)との間の分離を可能にする。
【0026】
さらに、ウェブサーバ20は、XMLプロセッサまたはパーサ(図示せず)を含む。XMLプロセッサは、XMLファイルを読み出し、XMLファイルのコンテンツおよび構造へのアクセスを提供するソフトウェアモジュールである。一実施形態では、XMLパーサは、XMLファイルを読み出し、そしてXMLパーサが正常に形成されていないXMLファイル(すなわち、XMLのための注釈かつ構造的規則に従わないXMLファイル)を受け取る場合に、エラーメッセージを生成する、非確証パーサである。別の実施形態では、XMLパーサは、XML非確証パーサの関数を実行するのに加えて、XMLドキュメントが有効かどうか(すなわち、タグの構造および数が意味をなすこと)も確認する確証パーサである。XMLプロセッサの例示の実施形態は、ニューヨーク洲ArmonkのIBM Corporationによって開発されたXML4J Parserである。
【0027】
HTMLコンポーネント82は、ソフトウェア設計ステーション40がソフトウェアコンポーネント通信チャネル47を介してウェブサーバ20に伝送する完成したソフトウェアコンポーネントである。アプリケーションコンポーネント84は、アプリケーション開発システム30がアプリケーション通信チャネル45を介してウェブサーバ20に伝送するソフトウェアコンポーネントである。ウェブサーバ20は、ウェブページをクライアント10にウェブブラウザ50上への表示のために伝送する。一実施形態では、ユーザは、ウェブサーバ20上のアプリケーションプログラムの実行を要求する。図2に示されたこの実施形態では、ウェブサーバ20は、所望のアプリケーションプログラム(すなわち、アプリケーションコンポーネント84)を実行し、HTML UI要素(すなわち、HTML UI要素85)を操作することによってHTML要素(すなわち、HTML要素94)と通信する。HTML要素94は、ウェブサーバ20上で実行しているアプリケーションコンポーネント84のためのリモートインターフェースを提供する。各HTML要素(すなわち、HTML要素94)は、ウェブサーバ20内のUI要素(すなわち、UI要素85)として表わされる。
【0028】
HTML要素(例えば、HTML要素94)およびソフトウェアコンポーネント(例えば、アプリケーションコンポーネント84)は、同一のインターフェースをインプリメントするが、HTML要素およびソフトウェアコンポーネントは、分離したクラスである。ソフトウェアコンポーネント(例えば、アプリケーションコンポーネント84)は、サーバ(例えば、ウェブサーバ20)上で実行する。HTML要素は、クライアント(例えば、クライアント10)上に常駐し、ソフトウェアコンポーネントの機能を実行するためにリモートインターフェースを提供する。例えば、テレビジョンは、ソフトウェアコンポーネントに類似し、テレビジョンのリモートコントロールは、HTML要素に類似する。テレビジョンのリモートコントロールおよびテレビジョンは、前部(すなわち、同じインターフェース)上に同一のボタンを有するが、各デバイスは、異なる機能を実行する。テレビジョン(テレビジョンリモートではなく)が実際にその機能を実行する(例えば、音量を増加する)としても、テレビジョンリモート上のボタン(例えば、音量増加)を押すことは、テレビジョン上の同一のボタン(音量増加)を押すことと等価である。
【0029】
本発明の方法および装置がウェブサーバ20の絡みで記載されるが、当業者は、サーブレットエンジンをサポートする任意のウェブ(またはアプリケーション)サーバ20はワイヤリング記述子80を格納および実行し得ることを理解する。図2に示される別の実施形態では、リモートワイヤリングサーバ86は、ワイヤリング記述子80’、HTML UI要素85’を有するHTMLコンポーネント82’、およびアプリケーションコンポーネント84’を格納する。リモートワイヤリングサーバ86は、コンポーネントワイヤリング通信チャネル87を介してソフトウェア設計ステーション40と通信し、アプリケーションワイヤリング通信チャネル88を介してアプリケーション開発システム30と通信する。さらに、ワイヤリングサーバ86は、ワイヤリング通信チャネル90を介してウェブサーバ20と通信する。
【0030】
図3は、例示のワイヤリング記述子80を示す。図3に示された簡単な概要および実施形態では、ワイヤリング記述子80は、宣言型記述ファイルである。さらなる実施形態では、本明細書にわたって記載されるように、ワイヤリング記述子80は、宣言型XMLファイルである。しかしながら、当業者は、ワイヤリング記述子80は、Dynamic HTML(DHTML)、Wireless Markup Language(WML)、Document Object Model(DOM)、Java(R) Speech Markup Language(JSML)その他を含む(これに制限されない)任意の宣言型マークアップ言語に書き込まれたファイルであり得ることを理解する。さらに、ワイヤリング記述子80は、Java(R)、Java(R)Script、Visual Basic、C++(Visual BasicおよびC++はActive−Xを用いる)その他等(しかし、これらに制限されない)の伝統的なプログラミングおよび/またはスクリプティング言語で書き込まれ得る。
【0031】
XML等のマークアップ言語で書き込まれた場合、ワイヤリング記述子80は、ドキュメントタイプの定義(DTD)に結び付けられる。DTDは、マークアップ言語のための文法であり、マークアップ言語が有するタグを、それらのタグの属性が何であるか、およびどのようにしてこれらの属性が併用されるかについて定義する。ウェブサーバ20が確証XMLパーサを含む場合、確証XMLパーサは、XMLドキュメントが有効かどうか(すなわち、タグの構造および数が意味をなすこと)を、XMLドキュメントをそのDTDと比較することによって確認する。ワイヤリング記述子80のためのDTDの例は、付表Aに表わしている。
【0032】
ワイヤリング記述子80は、一組の関連性を含む。各関連性は、HTML UI要素85のプロパティまたは特性をアプリケーションコンポーネント84のプロパティに接続する。各関連性は、二つの部分からなる。第一の部分は、アプリケーションコンポーネント84またはHTML UI要素85のプロパティをそれらそれぞれのソフトウェアクラスの絡みで識別する。第二の部分は、クライアント10が表示するアプリケーションコンポーネント84の正しい入力挙動およびHTML UI要素85の正しい出力挙動を達成するために選択されたプロパティの同期を引き起こすイベントを定義する。さらに、各関連性は、入力関連性または出力関連性のいずれかである。入力関連性は、HTML UI要素85の何のUIイベントがアプリケーションコンポーネント84の対応するプロパティの値の変化を引き起こすかを識別する。出力関連性は、アプリケーションコンポーネント84の何のイベントがHTML UI要素85の値を再表示する結果になることを必要とするかを識別する。
【0033】
より詳細には、ワイヤリング記述子80は、WireUpItem要素302を含む。ワイヤリング記述子80は一つのWireUpItem要素302を有するように記載されるが、当業者は、ワイヤリング80は複数のWireUpItem要素302を含み得ることを理解する。一実施形態では、図3に示されるように、WireUpItem要素302は、UIプロパティモジュール304、ロジックプロパティモジュール306、およびイベントモジュール308を含む。UIプロパティモジュール304は、UI名前属性312およびUIプロパティ名前属性314を有する。UI名前属性312は、HTML UI要素85の識別に対応する。UIプロパティ名前属性314は、HTML UI要素85のプロパティを識別する。図3に示される一実施形態では、UIプロパティモジュール304は、さらに、タイプ属性316を含む。UIタイプ属性316は、HTML UI要素85のデータタイプに対応する。
【0034】
ロジックプロパティモジュール306は、アプリケーションコンポーネント84のプロパティを唯一的に識別する。ロジックプロパティモジュール306は、ロジック名前属性318およびロジックプロパティ名前属性320を含む。ロジック名前属性318は、アプリケーションコンポーネント84を唯一的に識別する。ロジックプロパティ名前属性320は、アプリケーションコンポーネント84のプロパティを識別する。UIプロパティモジュール304と同様に、一実施形態では、ロジックプロパティモジュール306は、さらに、ロジックタイプ属性322を含む。ロジックタイプ属性322は、アプリケーションコンポーネント84のデータタイプに対応する。一実施形態では、ウェブサーバ20は、タイプ変換を自動化するためにタイプ属性316、322を用いる。
【0035】
図3に示されるさらなる実施形態では、ロジックプロパティモジュール306は、ロジックアイテム324も含む。ワイヤリング記述子80は、複合UIタイプ(すなわち、複数列のHTMLテーブル)を複合アプリケーションコンポーネントプロパティ(すなわち、一組のサブプロパティからなるプロパティ)でマッピングするためにロジックプロパティモジュール306のロジックアイテム要素324を用いる。各ロジックアイテム要素324は、複数のアイテム(図示せず)を有する。各アイテムは、名前属性(図示せず)およびタイプ属性(図示せず)を有する。アイテムの名前属性は、ロジックプロパティ306のサブプロパティ(図示せず)を識別し、アイテムのタイプ属性は、サブプロパティのデータタイプ(例えば、整数、文字列)を識別する。
【0036】
イベントモジュール308は、以下にさらに示されるように、UI要素85(すなわち、UIプロパティ名前属性314によって識別されたプロパティの値)のプロパティとアプリケーションコンポーネント84(すなわち、ロジックプロパティ名前属性320によって識別されたプロパティの値)のプロパティとの間の同期をトリガーするイベントを識別する。イベントモジュール308は、イベント名前属性326およびイベント入力−出力属性328を含む。図4により詳細に記載されるように、イベント名前属性326は、同期をトリガーするイベントを識別し、イベント入力−出力属性328は、同期の方向を識別する。
【0037】
さらなる実施形態では、WireUpItem要素302は、接続モジュール310を含む。ワイヤリング記述子80は、ダイナミックユーザインターフェースのために接続モジュール310を用いる。接続モジュール310は、一つまたは複数のオプション要素330を有し得る。各オプション要素330は、オプション値属性(図示せず)、オプションフラグメント属性(図示せず)、およびオプションワイヤリング属性(図示せず)を有する。オプション値属性は、アプリケーションコンポーネント84のプロパティの値と合わせられる。オプションフラグメント属性(図示せず)は、HTMLフラグメント(図7により詳細に記載される)を識別する。オプションワイヤリング属性(図示せず)は、HTMLフラグメントに結び付けられるワイヤリング記述子を識別する。
【0038】
ここで図4を参照すると、フロー図は、クライアント10上で表示されたHTML UI要素85(HTMLコンポーネント82内)を、ウェブサーバ20上で通常実行するアプリケーションコンポーネント84と同期させるためにウェブサーバ20によって採用されたステップの一実施形態を示す。アプリケーション開発システム30は、アプリケーションコンポーネント84をウェブサーバ20にアプリケーション通信チャネル45を介して提供する(ステップ402)。ソフトウェア設計ステーション40は、HTML UI要素85を有するHTMLコンポーネント82をウェブサーバ20にソフトウェアコンポーネント通信チャネル47を介して提供する(ステップ404)。
【0039】
ウェブサーバ20は、次いで、HTML UI要素85をUI要素オブジェクトまたはクラスとして提示し、アプリケーションコンポーネント84をアプリケーションオブジェクトまたはクラスとして提示する(ステップ406)。UI要素はHTML UI要素85の属性およびHTML UI要素85が行う機能を特定する。アプリケーションクラスは、アプリケーションコンポーネント84の属性およびアプリケーションコンポーネント84の機能を特定する。一実施形態では、ウェブサーバ20は、UIプロパティモジュール304およびイベントモジュール308からUI要素クラスを形成し、ロジックプロパティモジュール306およびイベントモジュール308からアプリケーションクラスを形成する。さらなる実施形態では、ウェブサーバ20は、それぞれのプロパティモジュール304、306、イベントモジュール308および、さらに接続モジュール310を用いてそれぞれのクラスを形成する。
【0040】
ウェブサーバ20は、次いで、ワイヤリング記述子80を用いて、UI要素クラスをアプリケーションクラスに結び付ける(ステップ408)。より詳細には、ウェブサーバ20は、HTML UI要素85の識別に対応するUI名前属性312を、アプリケーションコンポーネント84を識別するロジック名前属性318に結び付ける。ウェブサーバ20は、さらに、HTML UI要素85のプロパティを識別するUIプロパティ名前属性314を、アプリケーションコンポーネント84のプロパティを識別するロジックプロパティ名前属性320に結び付ける。さらに、ウェブサーバ20は、UI要素のプロパティ(すなわち、プロパティ名前属性314)とアプリケーションコンポーネント84のプロパティ(すなわち、ロジックプロパティ名前属性320)との間の同期をトリガーするイベントを識別するためにイベントモジュール308を用いる。
【0041】
一実施形態では、イベントモジュール308のイベント入力−出力属性328の値が「入力」に等しい場合、ワイヤリング記述子80は、HTML UI要素85のプロパティの値に等しいアプリケーションコンポーネント84のプロパティの値を設定する。イベント入力−出力属性328の値が「出力」に等しい場合、ワイヤリング記述子80は、アプリケーションコンポーネント84のプロパティの値に等しいHTML UI要素85のプロパティの値を設定する。上記に示されたように、ワイヤリング記述子80は、アプリケーションコンポーネント84およびHTMLコンポーネント82の開発の間の分離を可能にする。
【0042】
ランタイムにおいて、ウェブサーバ20は、ワイヤリング記述子80をインタプリタする(ステップ410)。一実施形態において、ウェブサーバ20は、上記のように、ワイヤリング記述子80を構文解析するために、XMLパーサを採用する。ウェブサーバ20は、次いで、イベントモジュール308内で以前に識別されたイベントにおける関連(interest)を登録する(ステップ412)。ウェブサーバは、イベントが発生する(ステップ414)のを待つ。一実施形態では、ウェブサーバ20は、イベントモジュール308において識別されたイベントが発生するかどうかを判定するためにクライアント10およびウェブサーバ20をポーリングを行う。別の実施形態では、クライアント10は、イベント(例えば、コールバック)の発生についてウェブサーバ20に通知する。登録されたイベントの一つが発生した場合、ウェブサーバ20は、HTML UI要素85のプロパティ(すなわち、プロパティ名前属性314)の値およびアプリケーションコンポーネント84のプロパティ(すなわち、ロジックプロパティ名前属性320)の値を同期させる(ステップ416)。
【0043】
同期後、ウェブサーバ20は、HTML UI要素85をクライアント10上に表示する(ステップ418)。一実施形態では、ウェブサーバ20は、HTML UI要素85をクライアント10上に表示するためにJava(R) Server Page(JSP)を用いる。別の実施形態では、ウェブサーバ20は、ウェブブラウザ50(すなわち、サーバプッシュモデル(server−push model))上でユーザが見るウェブページを定期的に更新(すなわち、アプリケーションコンポーネント84および/またはHTML UI要素85への更新)するためにサーバ側のDocument Object Model(DOM)を用いる。あるいは、クライアント10は、ウェブサーバ20がウェブ通信チャネル35を介して伝送するウェブページへの更新(すなわち、クライアントプルモデル(client−pull model))を定期的に要求および/またはダウンロードするためにリモートDOMを用いる。
【0044】
HTMLコンポーネント82のクライアント10上の表示についてのさらなる詳細において、並びに、さらに図5Aを参照して、一実施形態では、コンピュータネットワーク2は、クライアント10上で活動するユーザがウェブサーバ20と通信して、双方向ウェブページ(本明細書において、アクティブドキュメントとして呼ばれる)502にアクセスすることを可能にする。アクティブドキュメント502は、通常、少なくとも二つのポーションまたはコンポーネント、「コンテンツ」ポーション504および「実行可能な」ポーション508を含む。アクティブドキュメント502のコンテンツポーション504は、HTMLコンポーネント82(例えば、スクロールバー、ボタン、メニューバー、テーブル、カレンダー、計算器)を含む。アクティブドキュメント502の実行可能なポーション508は、ユーザがアクティブドキュメント502と相互作用する間にアクティブドキュメント502に結び付けられたHTMLコンポーネント82(すなわち、HTML UI要素85)を作成または修正する。実行可能なポーション508は、実行可能なコード508aを含み得る。アクティブドキュメント502の実行可能なポーション508は、アプレット、スクリプトまたは実行可能なコードの任意の他の形態として提供され得る。
【0045】
簡単な例として、図5Aに示された実施形態を用いて、アクティブドキュメント502は、当初は黒色に表示されるテキストコンポーネント510を含む。実行可能なコード508aは、カーソルのポジションをディスプレイ上にモニタしており、カーソルがテキストコンポーネント510上に配置された場合、実行可能なコード508は、テキストコンポーネント510のコンテンツ、すなわち、黒色から赤色に色特性を変更する。テキストコンポーネント510の変化は、表示されたアクティブドキュメント502上でのカーソルの移動に応答して発生する。
【0046】
図5Bを参照すると、さらなる実施形態では、各コンテンツコンポーネント504が、DOMによって記述され、DOMは、Application Programming Interface(DOM API)512を実行可能なポーション508に顕示する。以下により詳細に記載されるように、アクティブドキュメント502の実行可能なポーション508は、コンテンツポーション504がクライアント10に伝送される間、ウェブサーバ20上にそのまま残る。このため、DOM API512の機能は、ウェブ通信チャネル35を介して行われる。DOM API512は、実行可能なポーション508がアクティブドキュメント502のコンテンツコンポーネント504を標準的な方法で操作することを可能にする。DOM API512が標準化されるため、コンテンツコンポーネント504は、アクティブドキュメント502を表示するために用いられたウェブブラウザ50にかかわらず標準的な方法で操作され得る。
【0047】
より詳細には、図5Cを参照すると、クライアント10は、ウェブ通信チャネル35を介してアクティブドキュメント502にアクセスする。この実施形態では、コンテンツコンポーネント504のみがクライアント10に伝送される。アクティブドキュメント502の実行可能なポーション508は、ウェブサーバ20上に保持される。アクティブドキュメント502に対するクライアント10からのユーザの要求に応答して、ウェブサーバ20は、ウェブ通信チャネル35を介してアクティブドキュメント502のコンテンツコンポーネント504をクライアント10に伝送する。コンテンツコンポーネント504は、全て共に伝送され得るか、または、各コンポーネント504は、ウェブブラウザ50がそれに遭遇したときに伝送され得る。すなわち、コンポーネント504は、「オンデマンド」で伝送され得る。
【0048】
ウェブサーバ20は、DOM API512を含むDOM Proxy514を提供する。アクティブドキュメント502の実行可能なポーション508は、ウェブブラウザ50によって提供されたDOM API512と直接相互作用されたかのように、DOM Proxy514にコマンドを発し、DOM Proxy514から出力を受け取る。DOM Proxy514は、DOM API512が受け入れるより多くのコマンド受け入れ得る。この実施形態では、DOM Proxy514は、さらなるコマンドをDOM API512が提供する一以上のコマンドに翻訳する。いくつかの実施形態では、DOM Proxy514によって提供されたDOM API512は、提供されたさらなる機能性に向上され得るか、または、World Wide Web Consortiumによって公表されたDOM Level0の仕様またはDOM Level1の仕様に適合させ得る。
【0049】
DOM Proxy514は、アクティブドキュメント502の実行可能なポーション508からコマンドを受け取り、ウェブ通信チャネル35を介してそれらをクライアント10に伝送する。DOM Proxy514は、さらに、ウェブ通信チャネル35を介してクライアント10からデータを受け取り、受け取られたデータをアクティブドキュメント502の実行可能なポーション508に提供し得る。DOM Proxy514は、サーブレットまたはアプリケーションプログラムとして提供され得る。例えば、DOM Proxy514は、Java(R) BeanまたはActive Xコントロールとして提供され得る。あるいは、DOM Proxy514は、DOM APIコマンドの結果をビジュアルディスプレイとして表現するよりも、ウェブ通信チャネル35を介してデータを伝送するようにウェブブラウザ50を修正することによって提供され得る。
【0050】
クライアント10は、さらに、DOM Acess Module(DAM)516を含む。DAM516は、ウェブ通信チャネル35を介してDOM Proxy514と通信する。DAM516は、ウェブ通信チャネル35を介してDOM Proxy514から受け取られたデータに応答して、ウェブブラウザ50によって提供されたDOM API512にDOM API呼び出しを発する。DOM Proxy514およびDAM516は、ウェブ通信チャネル35を介した転送のためのデータをパックおよびアンパックし得る。あるいは、DOM Proxy514およびDAM516は、標準プロトコルを向上させるか、またはデータの転送のためにそれら自体のプロトコルを提供し得る。DAM516は、スクリプト、アプレット、プラグインまたはアプリケーションコンポーネント84として提供され得る。例えば、DAM516は、Java(R) BeanまたはActive−Xコントロールとして提供され得る。
【0051】
一実施形態では、DAM516およびDOM Proxy514によって用いられたプロトコルは、DOM Proxy514がクライアント10上で発生する一定のイベントの通知を受け取ることを示すことを可能にする。これらの実施形態では、DOM Proxy514は、ハンドラールーチンを、「MouseClicked」イベント等のイベントモジュール308(これは、関連のあるイベントを識別する)のイベント名前属性326に結び付ける。クライアント10上でイベントが発生した場合、DAM516は、DOM Proxy514に通知する。一実施形態では、DAM516は、イベントが発生したことを示すメッセージをDOM Proxy514に送ることによってDOM Proxy514に通知し、イベント名前属性326のコピーおよび、オプションとして、イベントの説明を含む。DOM Proxy514は、さらに、イベントを識別するイベント名前属性326のコピーを含むメッセージをDAM516に送ることによって、イベントにもはや関連がないことを示し得る。特定の実施形態では、DAM516は、承認で、このようなメッセージに応答するDOM Proxy514がイベント名前属性326とイベントのためのハンドラとの間の結合を開放すること(例えば、DOM Proxy514がハンドラおよびイベントに結び付くテーブル内の入力を取り除き得る)を可能にする。
【0052】
図6は、ソフトウェアオブジェクトのプロパティをアプリケーションオブジェクトのプロパティに結び付けるワイヤリング記述子80の例示の実施形態を示す。上記のように、ソフトウェア設計ステーション40は、ソフトウェアコンポーネント通信チャネル47を介してウェブサーバ20に第1、第2、および第3のHTML UI要素85’、85’’、および85’’’(概して、85)をそれぞれ提供する。同様に、アプリケーション開発システム30は、アプリケーション通信チャネル45を介して第1および第2のアプリケーションコンポーネント84’、84’’(概して、84)をそれぞれ有するウェブサーバ20に提供する。ウェブサーバ20は、次いで、各HTML UI要素85’、85’’および85’’’をUI要素オブジェクト600、604として、そして各アプリケーションコンポーネント84’、84’’をアプリケーションオブジェクト628として提示する。ワイヤリング記述子80は、その結果、アプリケーションコンポーネント84とHTMLコンポーネント82(すなわち、HTML UI要素85)との開発間の分離を可能にする。
【0053】
第1のUI要素オブジェクト600は、第1のUIプロパティP1 612および第2のUIプロパティP2 616を含む。さらに、第2のUI要素オブジェクト604は、第3のUIプロパティP3 620を含み、第3のUI要素オブジェクト608は、第4のUIプロパティP4 624からなる。第1のアプリケーションオブジェクト628は、第1のアプリケーションプロパティPa 636を含む。第2のアプリケーションオブジェクト632は、第2のアプリケーションプロパティPb 640および第3のアプリケーションプロパティPc 644を含む。
【0054】
ワイヤリング記述子80は、さらに、(イベントモジュール308の対応するイベント名前属性326およびイベント入力−出力属性328を用いて)第1の入力イベント648を識別し、第1のUI要素オブジェクト600の第1のUIプロパティP1 612と第1のアプリケーションオブジェクト628の第1のアプリケーションプロパティPa 636との間の同期を引き起こす。同様に、ワイヤリング記述子80は、(イベントモジュール308の対応するイベント名前属性326および入力−出力属性328を用いて)第2の入力イベント652を識別して、第3のUIプロパティP3 620を第2のアプリケーションプロパティPb 640と同期させる。最後に、ワイヤリング記述子80は、(イベントモジュール308の対応するイベント名前属性326およびイベント入力−出力属性328を用いて)出力イベント656を識別し、第4のUIプロパティP4 624を第3のアプリケーションプロパティPc 644に同期させる。
【0055】
さらなる実施形態では、さらに図7を参照して、HTML開発者は、ウェブページ(またはHTMLコンポーネント82)を設計するためにHTMLフラグメントを用いる。HTMLフラグメントは、0以上のHTML UI要素85を有する予め設計されたHTMLソフトウェアの一部である。より詳細には、HTML開発者は、HTML開発者のウェブページでの使用のために別のウェブサイト(例えば、ウェブページグラフィック)からHTMLフラグメントを取得する。HTMLウェブページ(またはフラグメント)内のHTML UI要素85は、さらなるフラグメントのためのプレースホルダーである。したがって、ウェブサーバ20がプレースホルダー要素85をクライアント10上に表示することを試みる場合、ウェブサーバ20は、ワイヤリング記述子の実行の間にHTMLフラグメントを取り替える。
【0056】
より詳細には、UI要素オブジェクト608の第4のUIプロパティP4 624が、HTMLフラグメント(図示せず)のためのプレースホルダーである。以前に記載されたように、一実施形態では、ワイヤリング記述子80は、(イベントモジュール308の対応するイベント名前属性326およびイベント入力−出力属性328を用いて)出力イベント656’を識別して、第4のUIプロパティP4 624を第3のアプリケーションプロパティPc 644に同期させる。しかしながら、第4のUIプロパティP4 624は、HTMLフラグメントのためのプレースホルダーである。HTMLフラグメントは、フラグメントのHTML UI要素710’、710’’、710’’’(概して710)とフラグメントが採用するアプリケーションコンポーネントのアプリケーションプロパティとの間の関係を記述するためにW2フラグメントワイヤリング記述子705を有する。上記のように、ワイヤリング記述子80のために、フラグメントワイヤリング記述子705は、HTMLフラグメントにUI要素オブジェクトとして含まれるHTML UI要素710を提示する。フラグメントワイヤリング記述子705は、さらに、アプリケーションオブジェクトとしてHTMLフラグメントに結び付けられるアプリケーションコンポーネント715’、715’’(概して715)を提示する。
【0057】
ウェブサーバ20は、UIプロパティモジュールP1 612、P2 616、P3 620、P4 624に結び付けられた値およびロジックプロパティモジュールPa 636、Pb 640、Pc 644に結び付けられた値を翻訳処理し、フラグメントを用いるかどうかを決定する。例えば、ワイヤリング記述子80は第4のUIプロパティP4 624(すなわち、フラグメントのためのプレースホルダー)を第3のアプリケーションプロパティPc 644に結び付けるため、ウェブサーバ20は、ワイヤリング記述子80を翻訳処理して、第3のアプリケーションプロパティPc 644の値が変化した場合に新しいフラグメントがクライアント10上に表示される必要があることを決定する。出力イベント656’、656’’のためのイベント入力−出力属性328が「出力」と等価であるため、ウェブサーバ20は、新しいフラグメントがクライアント10上に表示されることを決定する。ウェブサーバ20は、さらに、ウェブサーバ20がフラグメントワイヤリング記述子705をフラグメントに結び付けられた関連性のために用いることを決定する。したがって、出力イベント656’、656’’は、第4のUIプロパティP4 624を第3のアプリケーションプロパティPc 644に同期させ、さらに、ウェブサーバ20にフラグメントワイヤリング記述子705を使用させる。ウェブサーバ20は、結果として、フラグメントワイヤリング記述子705を翻訳処理し、名前付けされたイベント720、722、724の関連性を登録する。
【0058】
ソフトウェア開発者がウェブページの設計において複数のHTMLフラグメント(したがって、多くのワイヤリング記述子)を用いる場合、ウェブサーバ20は、プロパティ(例えば、P1 612、P2 616、P3 620、P4 624、Pa 636、Pb 640、Pc 644)の値に基づいてHTMLフラグメントを選択する。より詳細には、第3のアプリケーションプロパティPc 644の値が異なる値に変化する場合、ウェブサーバ20は、異なるフラグメントおよび/または異なるワイヤリング記述子(例えば、W3)を用い得る。
【0059】
付表Bを参照すると、複雑なUIタイプ(すなわち、複数列のHTMLテーブル)をアプリケーションコンポーネントプロパティのセットにマッピングするワイヤリング記述子80の例が示される。HTMLテーブル「ResultTable」とプロパティ「結果」との間の関連性は、複数のプロパティを含み、複数のプロパティのそれぞれは、ロジックアイテム要素324によって識別される。ロジックアイテム要素324のアイテム名前属性は、上記のように、アプリケーションコンポーネント84(例えば、「Price」、「Town」、「NumberOfBeds」等)を識別し、ロジック要素324のアイテムタイプ属性は、アプリケーションコンポーネント84のデータタイプ(例えば、整数、文字列)を識別する。一実施形態では、HTMLコンポーネント82のこれらのプロパティの表示順序は、HTML UI要素85が特定される順序内である。
【0060】
本発明の一定の実施形態を記載したが、本発明の概念を組み込む他の実施形態が使用され得ることが当業者にとって明らかである。
【0061】
(付表A)
【0062】
【数1】
(付表B)
【0063】
【数2】
【図面の簡単な説明】
【図1】
図1は、本発明に従って構成されたコンピュータネットワークの実施形態のブロック図である。
【図2】
図2は、本発明に従うコンピュータネットワークの例示的実施形態のより詳細なブロック図である。
【図3】
図3は、ワイヤリング記述子の実施形態のブロック図である。
【図4】
図4は、クライアント上に表示されたユーザインターフェース要素およびウェブサーバ上で実行するソフトウェアアプリケーションを同期させるために用いられるプロセスの実施形態のフロー図である。
【図5A】
図5Aは、アクティブドキュメントの実施形態のブロック図である。
【図5B】
図5Bは、アクティブドキュメントのコンテンツコンポーネントを操作するためのアプリケーション−プログラミングインターフェースが提供されたアクティブドキュメントの実施形態の論理図である。
【図5C】
図5Cは、クライアント/サーバ環境にあるアクティブドキュメントを提供および表示するためのシステムの実施形態のブロック図である。
【図6】
図6は、ソフトウェアオブジェクトのプロパティをアプリケーションオブジェクトのプロパティに結び付けられるワイヤリング記述子の例示的実施形態のブロック図である。
【図7】
図7は、ウェブフラグメントを含むワイヤリング記述子の例示的実施形態のブロック図である。
(発明の分野)
本発明は、概して、ソフトウェアコンポーネントを同期させることに関し、特に、クライアント上に表示されたユーザインターフェース要素およびウェブサーバ上で実行するソフトウェアアプリケーションコンポーネントを同期させることに関する。
【0002】
(発明の背景)
サーブレットは、ウェブサーバ上で走行するJava(R)のアプレットであり、しばしば、ソフトウェアの移植性を改善する。サーブレットは、Java(R)のプログラムであるため、サーブレットは、異なるオペレーティングシステムのためにリコンパイルされる必要がない。高度な双方向ハイパーテキストマークアップ言語(HTML)アプリケーションのウェブ開発者は、しばしば、サーバ側のウェブ開発のためにサーブレットを利用する。サーブレットに基づくダイナミックウェブページは、サーバ間に容易に伝送され得、通常、「バックエンド(back−end)」アプリケーションに良好に統合され得る(すなわち、アプリケーションの一部がサーバ上で実行するが、アプリケーションの別の部分は、クライアントコンピュータ上で実行する)。
【0003】
サーブレットを用いてプログラミングを行う場合、アプリケーション開発者は、しばしば、データベースまたはアプリケーションにアクセスするためにJAVA(R) Beanを用いる。サーブレットは、Java(R) Beanによって完成された機能の結果をウェブページを見ているユーザに提示するために、出力ストリームにHTMLタグ、テキスト、およびデータを書き込み得る。より詳細には、プログラマーは、通常、ユーザへ結果を提示する各HTMLラインのためにJAVA(R)方法の「println()」等のプリントステートメントを呼び出す。アプリケーション開発者は、ウェブページのHTMLコンテンツをソフトウェアコード内に含めるため、アプリケーション開発者は、長いHTMLウェブページのために困難でかつ時間を消費するタスクに直面する。さらに、アプリケーション開発者は、概して、HTMLコンテンツの創作者(すなわち、HTML開発者)が完成されることを望むすべてのコンテンツ変更を作り上げなければならない。
【0004】
JAVA(R)サーバページ(JSP)は、HTML開発者とアプリケーション開発者との間の分離を改善する。JSPは、アプリケーション開発者がJAVA(R)コードの一部をHTMLウェブページ内に含めることを可能にし、ウェブサーバは、ウェブページからサーブレットを自動的に作成する。したがって、アプリケーション開発者は、プリントステートメントを呼び出すことなく、HTMLコードを含めることができ、HTML開発者は、HTMLを変更させることができる。しかしながら、同一のファイル上で作業するHTML開発者およびアプリケーション開発者を有することは、分離した開発では非生産的でかつ非実用的になり得る。例えば、あるアプリケーション開発者がファイルを修正する間、多くの他の開発者は、通常、そのファイルを同時に修正することはできず、結果として、そのアプリケーション開発者が修正を終えるまで待たなければならない。さらに、一つのファイルに二つの言語を有すること(すなわち、JAVA(R)コードをHTML内部に含むこと)は、読むことが困難なファイルを作成し得る。
【0005】
したがって、HTML開発者およびアプリケーション開発者によって開発されたファイル間の明瞭な分離を可能にする必要性が残っている。
【0006】
(発明の要旨)
本発明は、クライアント上に表示されたユーザインターフェース要素およびウェブサーバ上で実行するソフトウェアアプリケーションコンポーネントを同期させるための方法および装置に関する。一局面では、本発明は、ユーザインターフェース要素およびソフトウェアアプリケーションコンポーネントを同期させるための方法に関する。本方法は、一つの特性を有するユーザインターフェース要素コンポーネントとしてユーザインターフェース要素を提示する工程と、ユーザインターフェース要素コンポーネントの特性をソフトウェアアプリケーションコンポーネントの一つの特性と関連する書き込み記述子を提供する工程とを包含する。本方法は、さらに、ユーザインターフェース要素コンポーネントをソフトウェアアプリケーションコンポーネントと結合するために書き込み記述子を実行する工程と、ユーザインターフェース要素コンポーネントの特性をソフトウェアアプリケーションコンポーネントの特性と同期させる工程とを含む。
【0007】
一実施形態では、ユーザインターフェース要素コンポーネントの特性をソフトウェアアプリケーションコンポーネントの特性と関連させるために書き込み記述子を提供する工程は、さらに、ウェブページのフラグメントを識別する工程を包含する。さらに別の実施形態では、書き込み記述子を提供する工程は、ユーザインターフェース要素コンポーネントの特性およびソフトウェアアプリケーションコンポーネントの特性を同期させるためにイベントを識別する工程をさらに包含する。
【0008】
別の局面では、本発明は、クライアント上に表示されたユーザインターフェース要素およびウェブサーバ上で実行するソフトウェアアプリケーションコンポーネントを同期させる装置に関する。本装置は、ユーザインターフェースプロパティモジュール、ロジックプロパティモジュール、およびイベントモジュールを含む。ユーザインターフェースプロパティモジュールは、ユーザインターフェース要素コンポーネントの特性を識別する。ロジックプロパティモジュールは、ソフトウェアアプリケーションコンポーネントの特性を識別する。イベントモジュールは、イベント発生時にユーザインターフェース要素オブジェクトの特性およびソフトウェアアプリケーションオブジェクトの特性を同期させるためのイベントを識別する。
【0009】
一実施形態では、本装置は、さらに、データを格納および管理するデータベースサーバを含む。別の実施形態では、本装置は、ウェブサーバとデータベースサーバとの間の要求および応答を統合するミドルウェアサーバを含む。さらに別の実施形態では、本装置は、ユーザインターフェース要素を提供するソフトウェア設計ステーションを含む。別の実施形態では、本装置は、ソフトウェアアプリケーションコンポーネントを提供するアプリケーション開発システムを含む。別の実施形態では、本装置は、ダイナミックユーザインターフェースを特定する接続モジュールを含む。
【0010】
上述の本発明の利点は、さらなる利点とともに、添付図面に結び付けられた以下の説明を参照することによってより良く理解され得る。図面において、同様の参照符号は、概して、異なる図にわたって同一部分に関する。さらに、図面は、必ずしも縮尺調整されているわけではなく、その代わりに、概して、本発明の原理を例示する際に配置されるように強調している。
【0011】
(発明の詳細な説明)
図1を参照すると、本発明にしたがって構成されたコンピュータネットワーク2の一実施形態が示される。コンピュータネットワーク2は、クライアントコンピュータ10またはクライアント、ウェブサーバ20、アプリケーション開発システム30、およびソフトウェア設計ステーション40を含む。簡単に概観すると、ウェブサーバ20は、ウェブ通信チャネル35を介してクライアント10と通信し、アプリケーション通信チャネル45を介してアプリケーション開発システム30と通信する。ウェブサーバ20は、さらに、ソフトウェアコンポーネント通信チャネル47を介してソフトウェア設計ステーション40と通信する。さらなるコンポーネントネットワーク2が省略されており、これは、図2においてさらに説明される。
【0012】
ウェブ通信チャネル35、アプリケーション通信チャネル45、およびソフトウェアコンポーネント通信チャネル47は、ローカルエリアネットワーク(LAN)、ミディアムエリアネットワーク(MAN)、または、インターネットまたはワールドワイドウェブ(WWW)等のワイドエリアネットワーク(WAN)を介する通信をサポートし得る。これらの通信チャネル35、45、47の例となる実施形態は、標準的電話線、LANまたはWANリンク(例えば、T1、T3、56kb、X.25)、ブロードバンド接続(ISDN、フレームリレー、ATM)、および無線接続を含む。これらの通信チャネル35、45、47を介する接続は、種々の通信プロトコル(例えば、TCP/IP、IPX、SPX、NetBIOS、Ethernet(R)、RS232、および直接的非同期接続)を用いて確立され得る。いくつかの実施形態では、用いられるプロトコルは、フロリダ州Fort LauderdaleのCitrix System,Inc.によって開発されたIndependent Computing Architecture(ICA)プロトコル、ワシントン州RedmondのMicrosoft Corporationによって開発されたRemote Display Protocol(RDP)、マサチューセッツ洲CambridgeのMassachusetts Institute of Technologyによって開発されたX−Windows(R)その他であり得る。
【0013】
クライアント10は、任意のパーソナルコンピュータ(例えば、286、386、486、Pentium(R)、Pentium(R) II、Macintosh computer)、Windows(R)ベースの端末、Network Computer、無線デバイス、情報機器(information appliance)、RISC Power PC、X−device、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、携帯端末、またはWindows(R)ベースのデスクトップおよび小さいディスプレイ提示プログラムを実行するために十分な持続性のストレージ機能を有する他のコンピューティングデバイスであり得る。ディスプレイ提示プログラムは、グラフィカルな表示を提示するためにウェブ通信チャネル35にわたってウェブサーバ20によって送られるコマンドおよびデータを用いる。クライアント10によってサポートされたWindows(R)優先のプラットフォームは、制限なしで、WINDOWS(R) 3.x、WINDOW(R) 95、WINDOWS(R) 98、WINDOWS(R) NT 3.51、WINDOWS(R) NT 4.0、WINDOWS(R) 2000、WINDOWS(R) CE、MAC/OS、JAVA(R)、およびUNIX(R)を含み得る。クライアント10は、目に見えるディスプレイデバイス(例えば、コンピュータモニタ)、またはデータ入力デバイス(例えば、キーボード)、ダウンロードされたアプリケーションプログラムを格納するための持続性または揮発性ストレージ(例えば、コンピュータメモリ)、プロセッサ、およびマウスを含み得る。小型のディスプレイ提示プログラムの実行により、クライアント10は分散コンピュータシステムモデル(すなわち、サーバベースのコンピューティングモデル)に参加することが可能になる。
【0014】
分散コンピュータシステムモデルでは、アプリケーションプログラムの実行は、全体としてウェブサーバ20上で発生され、そしてユーザインターフェース(UI)、キー操作およびマウスの移動は、ウェブ通信チャネル35を介してクライアント10に伝送される。ユーザインターフェースは、テキスト駆動(例えば、DOS)されるか、または、グラフィカル駆動(例えば、Windows(R))され得る。クライアント10によってサポートされ得るプラットフォームは、DOSおよびwindowsベースの端末用のWindows(R) CEを含む。あるいは、クライアントは、「thin−client」モデルにしたがって動作し得る。
【0015】
ウェブサーバ20は、ウェブページのコンテンツ等のデータをクライアント10にウェブ通信チャネル35を介して送達する任意のコンピューティングデバイスであり得る。クライアントと同様に、ウェブサーバ20は、ビジュアルディスプレイデバイス(例えば、コンピュータモニタ)、データ入力デバイス(例えば、キーボード)、ダウンロードされたアプリケーションプログラムを格納するための持続性または揮発性のストレージ(例えば、コンピュータメモリ)、プロセッサ、およびマウスを含み得る。別の実施形態では、ウェブサーバ20は、サーバファーム(Server farm)(図示せず)のメンバーである。サーバファームは、単一のエンティティとして管理された一以上のサーバの論理群である。
【0016】
図1に示された一実施形態では、クライアント10は、ワシントン州RedmondのMicrosoft Corporationによって開発されたInternet Explorer(R)等のウェブブラウザ50をウェブに接続するために含む。ウェブブラウザ50の制御の下で、クライアント10は、ウェブページのリクエストをウェブ通信チャネル35を介してウェブサーバ20に送る。ウェブページのデータは、テキスト、グラフィックス、および他の形態の情報の形態であり得る。クライアント10がウェブ通信チャネル35を介して複数のウェブサーバ20のうちの任意の一つにアクセスし得る場合、ユーザは、適切なウェブサーバ20に接続するために既知のアドレス(URL)をウェブブラウザ50に供給しなければならない。ウェブサーバ20は1より多くのウェブページを含み得るため、ユーザは、さらに、アドレスの中からどのウェブページをウェブブラウザ50上で見たいかを特定する。このウェブページのリクエストは、一実施形態において、さらに、アプリケーションプログラムをウェブサーバ20上で実行させるためのリクエストを含む。ウェブサーバ20は、このリクエストを受け取り、分散コンピュータシステムモデルにおいて、この所望のアプリケーションプログラムを実行する。
【0017】
クライアント10およびウェブサーバ20について上述したように、アプリケーション開発システム30およびソフトウェア設計ステーション40は、持続性または揮発性ストレージ(例えば、コンピュータメモリ)、プロセッサ、ビジュアルディスプレイデバイス(例えば、コンピュータモニタ)およびデータ入力デバイス(例えば、キーボード)を有する任意のデバイス(例えば、Windows(R)ベースの端末、パーソナルコンピュータ)であり得る。図1の一実施形態では、アプリケーション開発システム30は、統合開発環境(Integrated Development Environment)(IDE)52を含む。IDE52は、アプリケーションに統合されたプログラミング環境である。例えば、Microsoft Officeアプリケーションは、種々のバージョンのBASICプログラミング言語をサポートする。IDEの例示的実施形態は、制限なく、ニュージャージー州SpringfieldのData Representationによって製造された、Java(R)用のSimplicityおよびカリフォルニア州CupertinoのSymantecによって開発されたVisual Cafeを含む。図1にさらに示される別の実施形態では、アプリケーション開発者は、ウェブサーバ20上のアプリケーションコンポーネントをIDE52’でもって開発する。
【0018】
アプリケーション開発者は、Java(R)Beanコンポーネント(すなわち、Bean)等のアプリケーションコンポーネントをIDE52でもって開発する。ソフトウェアコンポーネント(例えば、Java(R) Bean)は、ソフトウェアアプリケーションの再利用可能、交換可能、かつ、分離した部分である。アプリケーションコンポーネントは、他のプログラミング言語(例えば、Visual Basic、C++)で開発され、かつ、書き込まれ得るが、アプリケーションコンポーネントは、以下に詳細に説明されるように、Java(R)のプログラミング言語に書き込まれたJava(R) Beanである。
【0019】
Java(R) Beanコンポーネントへのインターフェースは、方法、プロパティ、およびイベントの特定のセットからなる。「方法」は、ソフトウェアクラスに結ぶ付けられ、Java(R) Beanによって行われる手続である。「プロパティ」は、Java(R) Beanの特性を規定する。本明細書において用いられるように、用語「イベント」は、プログラムが検出する任意の活動または処理を包含するために十分広い意味を持つ。例えば、イベントは、マウスボタンをクリックするまたはキーを押す等のユーザの処理、または、メモリ外で走行する等のシステム発生であり得る。ソフトウェア設計ステーション40およびアプリケーション開発システム30は、このインターフェースを通じてアプリケーションコンポーネントの能力(例えば、どの種類のイベントをBeanが生成または応答し得るか)を決定する。アプリケーションコンポーネントの完成の後、アプリケーション開発者は、アプリケーションコンポーネントをウェブサーバ20に後の使用のために伝送する。
【0020】
ソフトウェア開発者(本明細書にわたって、Hyper Text Markup Language(HTML)開発者とも呼ばれる)は、ソフトウェア設計ステーション40を用いて、ソフトウェア(例えば、HTML)コンポーネントを開発する。HTMLコンポーネントは、クライアント側のコンポーネント(すなわち、クライアント10上での実行)である。HTMLコンポーネントの例は、スクロールバー、ボタン、メニューバー、テーブル、カレンダー、計算器その他を含む(しかし、これらに制限されない)。HTML開発者がHTMLコンポーネントを完成した後、HTML開発者は、コンポーネントをウェブサーバ20に後の使用のために伝送する。ソフトウェアコンポーネントは、本明細書わたってHTMLコンポーネントとして記載されるが、当業者は、ソフトウェア開発者は、クライアント側のコンポーネント(すなわち、クライアント10上での実行)またはサーバ側のコンポーネント(すなわち、ウェブサーバ20上での実行)のいずれかであるソフトウェアコンポーネントを開発するために他のプログラミング言語(例えば、Java(R)、C++、Visual Basic)を使用し得ることを理解する。しかしながら、異なるプログラミング言語がソフトウェア開発者によって用いられる場合、ウェブサーバ20は、ウェブサーバ20がウェブページ(またはアプリケーション)をクライアント10に伝送する前にウェブブラウザ50がソフトウェアコンポーネントを開発するために用いられたプログラミング言語をサポートすることをチェックする。
【0021】
ソフトウェア設計ステーション40は、ウェブオーサリングツール55(すなわち、HTMLエディタ)を実行する。ある実施形態において、本明細書にわたって記載されるように、ソフトウェア開発者は、HTMLに書き込まれたウェブページを開発および修正するためにウェブページオーサリングツール55を用いる。他の実施形態では、ソフトウェア開発者は、ウェブページを開発するために、Extensible Markup Language、または、XML等(しかし、これらに制限されない)の他のプログラミング言語を用いる。ウェブオーサリングツール55の例は、制限なく、カリフォルニア州San FranciscoのMacromedia,Incorporatedによって製造されたDreamweaver、韓国SeoulのNamo Interactive Inc.によって製造されたWebEditor、カリフォルニア州San JoseのAdobe Systems Incorporatedによって製造されたGoLiveおよびワシントン州RedmondのMicrosoftによって開発されたFrontPageを含む。あるいは、ウェブサーバ20は、HTML開発者による使用のためにウェブページオーサリングツール55’を実行する。
【0022】
図2は、ウェブサーバ20、EJBサーバ60、およびデータベースサーバ70を含むコンピュータネットワーク2の例示的実施形態のブロック図を示す。ウェブサーバ20は、EJB通信チャネル65を介してEnterprise Java(R) Bean(EJB)サーバ60と通信する。EJBサーバ60は、さらに、データベース通信チャネル75を介してデータベースサーバ70と通信する。
【0023】
データベースサーバ70は、しばしば、コンピュータネットワーク2の「バックエンド(back end)」ティアー(tier)と呼ばれ、データを格納および管理する。ウェブサーバ20は、データベースソフトウェアプログラム72とインターフェースをとることによってデータベースサーバ70上に格納された情報にアクセスする。一実施形態では、データベースソフトウェア72は、ウェブサーバ20のデータまたはEJBサーバ60のデータをLightweight Directory Access Protocol(LDAP)データモデルに保守する。他の実施形態では、データベースソフトウェア72は、データをODBCコンプライアントデータベースに格納する。例えば、データベースソフトウェア72は、カリフォルニア州RedwoodのOracle Corporationによって製造されたORACLEデータベースとして提供され得る。他の実施形態では、データベースソフトウェア72は、Microsoft ACCESSデータベースまたはMicrosoft SQLサーバデータベースであり得る。データベースサーバ70は、ローカルメモリからデータを検索し、データベース通信チャネル75を介してデータをEJBサーバ60に、そして、その結果として、EJB通信チャネル65を介してウェブサーバ20に伝送する。
【0024】
EJBサーバ60(しばしば、「ミドルウェア」サーバと呼ばれる)は、非アプリケーションの詳細を処理し、EJBコンテナを管理する(host)(すなわち、実行する)。EJBコンテナは、EJBコンポーネントを含む。EJBコンポーネントは、取り引き等のビジネスロジックをインプリメントするJava(R)コンポーネント(伝統的なJava(R) Bean同様)である。EJBサーバ60は、取り引きおよびリソース管理、バージョン管理(versioning)、スケーラビリティ(scalability)、移動性、持続性、およびEJBコンポーネントに対する安全性等のサービスを提供する。結果として、EJBサーバ60は、アプリケーションコンポーネントをサポートする。一実施形態では、EJBサーバ60は、Remote Method Invocation(RMI)を、EJB通信チャネル65を介する伝送プロトコルとして用いる。別の実施形態では、EJBサーバ60は、Internet Inter−ORB Protocol(IIOP)を、EJB通信チャネル65を介する伝送プロトコルとして用いる。EJBサーバ60の例は、カリフォルニア州Redwood ShoresのOracle Corporationによって製造されたOracle8i Jserverである。当業者は、EJBコンテナを管理(host)し、そして、EJBコンテナに必要なサービスを提供し得る任意のサーバがEJBサーバ60であり得ることを理解する。
【0025】
ウェブサーバ20は、さらに、ワイヤリング記述子80、完成したHTMLコンポーネント82、および完成したアプリケーションコンポーネント84を含む。ワイヤリング記述子80は、図3および一実施形態においてさらに説明されるように、ウェブサーバ20が(HTMLコンポーネント82に含まれる)HTML UI要素85とアプリケーションコンポーネント84との間の関係を線引きするために用いる宣言型XMLファイルまたはドキュメントである。さらに、ワイヤリング記述子80は、アプリケーションコンポーネント84の開発とHTMLコンポーネント82(すなわち、HTML UI要素85)との間の分離を可能にする。
【0026】
さらに、ウェブサーバ20は、XMLプロセッサまたはパーサ(図示せず)を含む。XMLプロセッサは、XMLファイルを読み出し、XMLファイルのコンテンツおよび構造へのアクセスを提供するソフトウェアモジュールである。一実施形態では、XMLパーサは、XMLファイルを読み出し、そしてXMLパーサが正常に形成されていないXMLファイル(すなわち、XMLのための注釈かつ構造的規則に従わないXMLファイル)を受け取る場合に、エラーメッセージを生成する、非確証パーサである。別の実施形態では、XMLパーサは、XML非確証パーサの関数を実行するのに加えて、XMLドキュメントが有効かどうか(すなわち、タグの構造および数が意味をなすこと)も確認する確証パーサである。XMLプロセッサの例示の実施形態は、ニューヨーク洲ArmonkのIBM Corporationによって開発されたXML4J Parserである。
【0027】
HTMLコンポーネント82は、ソフトウェア設計ステーション40がソフトウェアコンポーネント通信チャネル47を介してウェブサーバ20に伝送する完成したソフトウェアコンポーネントである。アプリケーションコンポーネント84は、アプリケーション開発システム30がアプリケーション通信チャネル45を介してウェブサーバ20に伝送するソフトウェアコンポーネントである。ウェブサーバ20は、ウェブページをクライアント10にウェブブラウザ50上への表示のために伝送する。一実施形態では、ユーザは、ウェブサーバ20上のアプリケーションプログラムの実行を要求する。図2に示されたこの実施形態では、ウェブサーバ20は、所望のアプリケーションプログラム(すなわち、アプリケーションコンポーネント84)を実行し、HTML UI要素(すなわち、HTML UI要素85)を操作することによってHTML要素(すなわち、HTML要素94)と通信する。HTML要素94は、ウェブサーバ20上で実行しているアプリケーションコンポーネント84のためのリモートインターフェースを提供する。各HTML要素(すなわち、HTML要素94)は、ウェブサーバ20内のUI要素(すなわち、UI要素85)として表わされる。
【0028】
HTML要素(例えば、HTML要素94)およびソフトウェアコンポーネント(例えば、アプリケーションコンポーネント84)は、同一のインターフェースをインプリメントするが、HTML要素およびソフトウェアコンポーネントは、分離したクラスである。ソフトウェアコンポーネント(例えば、アプリケーションコンポーネント84)は、サーバ(例えば、ウェブサーバ20)上で実行する。HTML要素は、クライアント(例えば、クライアント10)上に常駐し、ソフトウェアコンポーネントの機能を実行するためにリモートインターフェースを提供する。例えば、テレビジョンは、ソフトウェアコンポーネントに類似し、テレビジョンのリモートコントロールは、HTML要素に類似する。テレビジョンのリモートコントロールおよびテレビジョンは、前部(すなわち、同じインターフェース)上に同一のボタンを有するが、各デバイスは、異なる機能を実行する。テレビジョン(テレビジョンリモートではなく)が実際にその機能を実行する(例えば、音量を増加する)としても、テレビジョンリモート上のボタン(例えば、音量増加)を押すことは、テレビジョン上の同一のボタン(音量増加)を押すことと等価である。
【0029】
本発明の方法および装置がウェブサーバ20の絡みで記載されるが、当業者は、サーブレットエンジンをサポートする任意のウェブ(またはアプリケーション)サーバ20はワイヤリング記述子80を格納および実行し得ることを理解する。図2に示される別の実施形態では、リモートワイヤリングサーバ86は、ワイヤリング記述子80’、HTML UI要素85’を有するHTMLコンポーネント82’、およびアプリケーションコンポーネント84’を格納する。リモートワイヤリングサーバ86は、コンポーネントワイヤリング通信チャネル87を介してソフトウェア設計ステーション40と通信し、アプリケーションワイヤリング通信チャネル88を介してアプリケーション開発システム30と通信する。さらに、ワイヤリングサーバ86は、ワイヤリング通信チャネル90を介してウェブサーバ20と通信する。
【0030】
図3は、例示のワイヤリング記述子80を示す。図3に示された簡単な概要および実施形態では、ワイヤリング記述子80は、宣言型記述ファイルである。さらなる実施形態では、本明細書にわたって記載されるように、ワイヤリング記述子80は、宣言型XMLファイルである。しかしながら、当業者は、ワイヤリング記述子80は、Dynamic HTML(DHTML)、Wireless Markup Language(WML)、Document Object Model(DOM)、Java(R) Speech Markup Language(JSML)その他を含む(これに制限されない)任意の宣言型マークアップ言語に書き込まれたファイルであり得ることを理解する。さらに、ワイヤリング記述子80は、Java(R)、Java(R)Script、Visual Basic、C++(Visual BasicおよびC++はActive−Xを用いる)その他等(しかし、これらに制限されない)の伝統的なプログラミングおよび/またはスクリプティング言語で書き込まれ得る。
【0031】
XML等のマークアップ言語で書き込まれた場合、ワイヤリング記述子80は、ドキュメントタイプの定義(DTD)に結び付けられる。DTDは、マークアップ言語のための文法であり、マークアップ言語が有するタグを、それらのタグの属性が何であるか、およびどのようにしてこれらの属性が併用されるかについて定義する。ウェブサーバ20が確証XMLパーサを含む場合、確証XMLパーサは、XMLドキュメントが有効かどうか(すなわち、タグの構造および数が意味をなすこと)を、XMLドキュメントをそのDTDと比較することによって確認する。ワイヤリング記述子80のためのDTDの例は、付表Aに表わしている。
【0032】
ワイヤリング記述子80は、一組の関連性を含む。各関連性は、HTML UI要素85のプロパティまたは特性をアプリケーションコンポーネント84のプロパティに接続する。各関連性は、二つの部分からなる。第一の部分は、アプリケーションコンポーネント84またはHTML UI要素85のプロパティをそれらそれぞれのソフトウェアクラスの絡みで識別する。第二の部分は、クライアント10が表示するアプリケーションコンポーネント84の正しい入力挙動およびHTML UI要素85の正しい出力挙動を達成するために選択されたプロパティの同期を引き起こすイベントを定義する。さらに、各関連性は、入力関連性または出力関連性のいずれかである。入力関連性は、HTML UI要素85の何のUIイベントがアプリケーションコンポーネント84の対応するプロパティの値の変化を引き起こすかを識別する。出力関連性は、アプリケーションコンポーネント84の何のイベントがHTML UI要素85の値を再表示する結果になることを必要とするかを識別する。
【0033】
より詳細には、ワイヤリング記述子80は、WireUpItem要素302を含む。ワイヤリング記述子80は一つのWireUpItem要素302を有するように記載されるが、当業者は、ワイヤリング80は複数のWireUpItem要素302を含み得ることを理解する。一実施形態では、図3に示されるように、WireUpItem要素302は、UIプロパティモジュール304、ロジックプロパティモジュール306、およびイベントモジュール308を含む。UIプロパティモジュール304は、UI名前属性312およびUIプロパティ名前属性314を有する。UI名前属性312は、HTML UI要素85の識別に対応する。UIプロパティ名前属性314は、HTML UI要素85のプロパティを識別する。図3に示される一実施形態では、UIプロパティモジュール304は、さらに、タイプ属性316を含む。UIタイプ属性316は、HTML UI要素85のデータタイプに対応する。
【0034】
ロジックプロパティモジュール306は、アプリケーションコンポーネント84のプロパティを唯一的に識別する。ロジックプロパティモジュール306は、ロジック名前属性318およびロジックプロパティ名前属性320を含む。ロジック名前属性318は、アプリケーションコンポーネント84を唯一的に識別する。ロジックプロパティ名前属性320は、アプリケーションコンポーネント84のプロパティを識別する。UIプロパティモジュール304と同様に、一実施形態では、ロジックプロパティモジュール306は、さらに、ロジックタイプ属性322を含む。ロジックタイプ属性322は、アプリケーションコンポーネント84のデータタイプに対応する。一実施形態では、ウェブサーバ20は、タイプ変換を自動化するためにタイプ属性316、322を用いる。
【0035】
図3に示されるさらなる実施形態では、ロジックプロパティモジュール306は、ロジックアイテム324も含む。ワイヤリング記述子80は、複合UIタイプ(すなわち、複数列のHTMLテーブル)を複合アプリケーションコンポーネントプロパティ(すなわち、一組のサブプロパティからなるプロパティ)でマッピングするためにロジックプロパティモジュール306のロジックアイテム要素324を用いる。各ロジックアイテム要素324は、複数のアイテム(図示せず)を有する。各アイテムは、名前属性(図示せず)およびタイプ属性(図示せず)を有する。アイテムの名前属性は、ロジックプロパティ306のサブプロパティ(図示せず)を識別し、アイテムのタイプ属性は、サブプロパティのデータタイプ(例えば、整数、文字列)を識別する。
【0036】
イベントモジュール308は、以下にさらに示されるように、UI要素85(すなわち、UIプロパティ名前属性314によって識別されたプロパティの値)のプロパティとアプリケーションコンポーネント84(すなわち、ロジックプロパティ名前属性320によって識別されたプロパティの値)のプロパティとの間の同期をトリガーするイベントを識別する。イベントモジュール308は、イベント名前属性326およびイベント入力−出力属性328を含む。図4により詳細に記載されるように、イベント名前属性326は、同期をトリガーするイベントを識別し、イベント入力−出力属性328は、同期の方向を識別する。
【0037】
さらなる実施形態では、WireUpItem要素302は、接続モジュール310を含む。ワイヤリング記述子80は、ダイナミックユーザインターフェースのために接続モジュール310を用いる。接続モジュール310は、一つまたは複数のオプション要素330を有し得る。各オプション要素330は、オプション値属性(図示せず)、オプションフラグメント属性(図示せず)、およびオプションワイヤリング属性(図示せず)を有する。オプション値属性は、アプリケーションコンポーネント84のプロパティの値と合わせられる。オプションフラグメント属性(図示せず)は、HTMLフラグメント(図7により詳細に記載される)を識別する。オプションワイヤリング属性(図示せず)は、HTMLフラグメントに結び付けられるワイヤリング記述子を識別する。
【0038】
ここで図4を参照すると、フロー図は、クライアント10上で表示されたHTML UI要素85(HTMLコンポーネント82内)を、ウェブサーバ20上で通常実行するアプリケーションコンポーネント84と同期させるためにウェブサーバ20によって採用されたステップの一実施形態を示す。アプリケーション開発システム30は、アプリケーションコンポーネント84をウェブサーバ20にアプリケーション通信チャネル45を介して提供する(ステップ402)。ソフトウェア設計ステーション40は、HTML UI要素85を有するHTMLコンポーネント82をウェブサーバ20にソフトウェアコンポーネント通信チャネル47を介して提供する(ステップ404)。
【0039】
ウェブサーバ20は、次いで、HTML UI要素85をUI要素オブジェクトまたはクラスとして提示し、アプリケーションコンポーネント84をアプリケーションオブジェクトまたはクラスとして提示する(ステップ406)。UI要素はHTML UI要素85の属性およびHTML UI要素85が行う機能を特定する。アプリケーションクラスは、アプリケーションコンポーネント84の属性およびアプリケーションコンポーネント84の機能を特定する。一実施形態では、ウェブサーバ20は、UIプロパティモジュール304およびイベントモジュール308からUI要素クラスを形成し、ロジックプロパティモジュール306およびイベントモジュール308からアプリケーションクラスを形成する。さらなる実施形態では、ウェブサーバ20は、それぞれのプロパティモジュール304、306、イベントモジュール308および、さらに接続モジュール310を用いてそれぞれのクラスを形成する。
【0040】
ウェブサーバ20は、次いで、ワイヤリング記述子80を用いて、UI要素クラスをアプリケーションクラスに結び付ける(ステップ408)。より詳細には、ウェブサーバ20は、HTML UI要素85の識別に対応するUI名前属性312を、アプリケーションコンポーネント84を識別するロジック名前属性318に結び付ける。ウェブサーバ20は、さらに、HTML UI要素85のプロパティを識別するUIプロパティ名前属性314を、アプリケーションコンポーネント84のプロパティを識別するロジックプロパティ名前属性320に結び付ける。さらに、ウェブサーバ20は、UI要素のプロパティ(すなわち、プロパティ名前属性314)とアプリケーションコンポーネント84のプロパティ(すなわち、ロジックプロパティ名前属性320)との間の同期をトリガーするイベントを識別するためにイベントモジュール308を用いる。
【0041】
一実施形態では、イベントモジュール308のイベント入力−出力属性328の値が「入力」に等しい場合、ワイヤリング記述子80は、HTML UI要素85のプロパティの値に等しいアプリケーションコンポーネント84のプロパティの値を設定する。イベント入力−出力属性328の値が「出力」に等しい場合、ワイヤリング記述子80は、アプリケーションコンポーネント84のプロパティの値に等しいHTML UI要素85のプロパティの値を設定する。上記に示されたように、ワイヤリング記述子80は、アプリケーションコンポーネント84およびHTMLコンポーネント82の開発の間の分離を可能にする。
【0042】
ランタイムにおいて、ウェブサーバ20は、ワイヤリング記述子80をインタプリタする(ステップ410)。一実施形態において、ウェブサーバ20は、上記のように、ワイヤリング記述子80を構文解析するために、XMLパーサを採用する。ウェブサーバ20は、次いで、イベントモジュール308内で以前に識別されたイベントにおける関連(interest)を登録する(ステップ412)。ウェブサーバは、イベントが発生する(ステップ414)のを待つ。一実施形態では、ウェブサーバ20は、イベントモジュール308において識別されたイベントが発生するかどうかを判定するためにクライアント10およびウェブサーバ20をポーリングを行う。別の実施形態では、クライアント10は、イベント(例えば、コールバック)の発生についてウェブサーバ20に通知する。登録されたイベントの一つが発生した場合、ウェブサーバ20は、HTML UI要素85のプロパティ(すなわち、プロパティ名前属性314)の値およびアプリケーションコンポーネント84のプロパティ(すなわち、ロジックプロパティ名前属性320)の値を同期させる(ステップ416)。
【0043】
同期後、ウェブサーバ20は、HTML UI要素85をクライアント10上に表示する(ステップ418)。一実施形態では、ウェブサーバ20は、HTML UI要素85をクライアント10上に表示するためにJava(R) Server Page(JSP)を用いる。別の実施形態では、ウェブサーバ20は、ウェブブラウザ50(すなわち、サーバプッシュモデル(server−push model))上でユーザが見るウェブページを定期的に更新(すなわち、アプリケーションコンポーネント84および/またはHTML UI要素85への更新)するためにサーバ側のDocument Object Model(DOM)を用いる。あるいは、クライアント10は、ウェブサーバ20がウェブ通信チャネル35を介して伝送するウェブページへの更新(すなわち、クライアントプルモデル(client−pull model))を定期的に要求および/またはダウンロードするためにリモートDOMを用いる。
【0044】
HTMLコンポーネント82のクライアント10上の表示についてのさらなる詳細において、並びに、さらに図5Aを参照して、一実施形態では、コンピュータネットワーク2は、クライアント10上で活動するユーザがウェブサーバ20と通信して、双方向ウェブページ(本明細書において、アクティブドキュメントとして呼ばれる)502にアクセスすることを可能にする。アクティブドキュメント502は、通常、少なくとも二つのポーションまたはコンポーネント、「コンテンツ」ポーション504および「実行可能な」ポーション508を含む。アクティブドキュメント502のコンテンツポーション504は、HTMLコンポーネント82(例えば、スクロールバー、ボタン、メニューバー、テーブル、カレンダー、計算器)を含む。アクティブドキュメント502の実行可能なポーション508は、ユーザがアクティブドキュメント502と相互作用する間にアクティブドキュメント502に結び付けられたHTMLコンポーネント82(すなわち、HTML UI要素85)を作成または修正する。実行可能なポーション508は、実行可能なコード508aを含み得る。アクティブドキュメント502の実行可能なポーション508は、アプレット、スクリプトまたは実行可能なコードの任意の他の形態として提供され得る。
【0045】
簡単な例として、図5Aに示された実施形態を用いて、アクティブドキュメント502は、当初は黒色に表示されるテキストコンポーネント510を含む。実行可能なコード508aは、カーソルのポジションをディスプレイ上にモニタしており、カーソルがテキストコンポーネント510上に配置された場合、実行可能なコード508は、テキストコンポーネント510のコンテンツ、すなわち、黒色から赤色に色特性を変更する。テキストコンポーネント510の変化は、表示されたアクティブドキュメント502上でのカーソルの移動に応答して発生する。
【0046】
図5Bを参照すると、さらなる実施形態では、各コンテンツコンポーネント504が、DOMによって記述され、DOMは、Application Programming Interface(DOM API)512を実行可能なポーション508に顕示する。以下により詳細に記載されるように、アクティブドキュメント502の実行可能なポーション508は、コンテンツポーション504がクライアント10に伝送される間、ウェブサーバ20上にそのまま残る。このため、DOM API512の機能は、ウェブ通信チャネル35を介して行われる。DOM API512は、実行可能なポーション508がアクティブドキュメント502のコンテンツコンポーネント504を標準的な方法で操作することを可能にする。DOM API512が標準化されるため、コンテンツコンポーネント504は、アクティブドキュメント502を表示するために用いられたウェブブラウザ50にかかわらず標準的な方法で操作され得る。
【0047】
より詳細には、図5Cを参照すると、クライアント10は、ウェブ通信チャネル35を介してアクティブドキュメント502にアクセスする。この実施形態では、コンテンツコンポーネント504のみがクライアント10に伝送される。アクティブドキュメント502の実行可能なポーション508は、ウェブサーバ20上に保持される。アクティブドキュメント502に対するクライアント10からのユーザの要求に応答して、ウェブサーバ20は、ウェブ通信チャネル35を介してアクティブドキュメント502のコンテンツコンポーネント504をクライアント10に伝送する。コンテンツコンポーネント504は、全て共に伝送され得るか、または、各コンポーネント504は、ウェブブラウザ50がそれに遭遇したときに伝送され得る。すなわち、コンポーネント504は、「オンデマンド」で伝送され得る。
【0048】
ウェブサーバ20は、DOM API512を含むDOM Proxy514を提供する。アクティブドキュメント502の実行可能なポーション508は、ウェブブラウザ50によって提供されたDOM API512と直接相互作用されたかのように、DOM Proxy514にコマンドを発し、DOM Proxy514から出力を受け取る。DOM Proxy514は、DOM API512が受け入れるより多くのコマンド受け入れ得る。この実施形態では、DOM Proxy514は、さらなるコマンドをDOM API512が提供する一以上のコマンドに翻訳する。いくつかの実施形態では、DOM Proxy514によって提供されたDOM API512は、提供されたさらなる機能性に向上され得るか、または、World Wide Web Consortiumによって公表されたDOM Level0の仕様またはDOM Level1の仕様に適合させ得る。
【0049】
DOM Proxy514は、アクティブドキュメント502の実行可能なポーション508からコマンドを受け取り、ウェブ通信チャネル35を介してそれらをクライアント10に伝送する。DOM Proxy514は、さらに、ウェブ通信チャネル35を介してクライアント10からデータを受け取り、受け取られたデータをアクティブドキュメント502の実行可能なポーション508に提供し得る。DOM Proxy514は、サーブレットまたはアプリケーションプログラムとして提供され得る。例えば、DOM Proxy514は、Java(R) BeanまたはActive Xコントロールとして提供され得る。あるいは、DOM Proxy514は、DOM APIコマンドの結果をビジュアルディスプレイとして表現するよりも、ウェブ通信チャネル35を介してデータを伝送するようにウェブブラウザ50を修正することによって提供され得る。
【0050】
クライアント10は、さらに、DOM Acess Module(DAM)516を含む。DAM516は、ウェブ通信チャネル35を介してDOM Proxy514と通信する。DAM516は、ウェブ通信チャネル35を介してDOM Proxy514から受け取られたデータに応答して、ウェブブラウザ50によって提供されたDOM API512にDOM API呼び出しを発する。DOM Proxy514およびDAM516は、ウェブ通信チャネル35を介した転送のためのデータをパックおよびアンパックし得る。あるいは、DOM Proxy514およびDAM516は、標準プロトコルを向上させるか、またはデータの転送のためにそれら自体のプロトコルを提供し得る。DAM516は、スクリプト、アプレット、プラグインまたはアプリケーションコンポーネント84として提供され得る。例えば、DAM516は、Java(R) BeanまたはActive−Xコントロールとして提供され得る。
【0051】
一実施形態では、DAM516およびDOM Proxy514によって用いられたプロトコルは、DOM Proxy514がクライアント10上で発生する一定のイベントの通知を受け取ることを示すことを可能にする。これらの実施形態では、DOM Proxy514は、ハンドラールーチンを、「MouseClicked」イベント等のイベントモジュール308(これは、関連のあるイベントを識別する)のイベント名前属性326に結び付ける。クライアント10上でイベントが発生した場合、DAM516は、DOM Proxy514に通知する。一実施形態では、DAM516は、イベントが発生したことを示すメッセージをDOM Proxy514に送ることによってDOM Proxy514に通知し、イベント名前属性326のコピーおよび、オプションとして、イベントの説明を含む。DOM Proxy514は、さらに、イベントを識別するイベント名前属性326のコピーを含むメッセージをDAM516に送ることによって、イベントにもはや関連がないことを示し得る。特定の実施形態では、DAM516は、承認で、このようなメッセージに応答するDOM Proxy514がイベント名前属性326とイベントのためのハンドラとの間の結合を開放すること(例えば、DOM Proxy514がハンドラおよびイベントに結び付くテーブル内の入力を取り除き得る)を可能にする。
【0052】
図6は、ソフトウェアオブジェクトのプロパティをアプリケーションオブジェクトのプロパティに結び付けるワイヤリング記述子80の例示の実施形態を示す。上記のように、ソフトウェア設計ステーション40は、ソフトウェアコンポーネント通信チャネル47を介してウェブサーバ20に第1、第2、および第3のHTML UI要素85’、85’’、および85’’’(概して、85)をそれぞれ提供する。同様に、アプリケーション開発システム30は、アプリケーション通信チャネル45を介して第1および第2のアプリケーションコンポーネント84’、84’’(概して、84)をそれぞれ有するウェブサーバ20に提供する。ウェブサーバ20は、次いで、各HTML UI要素85’、85’’および85’’’をUI要素オブジェクト600、604として、そして各アプリケーションコンポーネント84’、84’’をアプリケーションオブジェクト628として提示する。ワイヤリング記述子80は、その結果、アプリケーションコンポーネント84とHTMLコンポーネント82(すなわち、HTML UI要素85)との開発間の分離を可能にする。
【0053】
第1のUI要素オブジェクト600は、第1のUIプロパティP1 612および第2のUIプロパティP2 616を含む。さらに、第2のUI要素オブジェクト604は、第3のUIプロパティP3 620を含み、第3のUI要素オブジェクト608は、第4のUIプロパティP4 624からなる。第1のアプリケーションオブジェクト628は、第1のアプリケーションプロパティPa 636を含む。第2のアプリケーションオブジェクト632は、第2のアプリケーションプロパティPb 640および第3のアプリケーションプロパティPc 644を含む。
【0054】
ワイヤリング記述子80は、さらに、(イベントモジュール308の対応するイベント名前属性326およびイベント入力−出力属性328を用いて)第1の入力イベント648を識別し、第1のUI要素オブジェクト600の第1のUIプロパティP1 612と第1のアプリケーションオブジェクト628の第1のアプリケーションプロパティPa 636との間の同期を引き起こす。同様に、ワイヤリング記述子80は、(イベントモジュール308の対応するイベント名前属性326および入力−出力属性328を用いて)第2の入力イベント652を識別して、第3のUIプロパティP3 620を第2のアプリケーションプロパティPb 640と同期させる。最後に、ワイヤリング記述子80は、(イベントモジュール308の対応するイベント名前属性326およびイベント入力−出力属性328を用いて)出力イベント656を識別し、第4のUIプロパティP4 624を第3のアプリケーションプロパティPc 644に同期させる。
【0055】
さらなる実施形態では、さらに図7を参照して、HTML開発者は、ウェブページ(またはHTMLコンポーネント82)を設計するためにHTMLフラグメントを用いる。HTMLフラグメントは、0以上のHTML UI要素85を有する予め設計されたHTMLソフトウェアの一部である。より詳細には、HTML開発者は、HTML開発者のウェブページでの使用のために別のウェブサイト(例えば、ウェブページグラフィック)からHTMLフラグメントを取得する。HTMLウェブページ(またはフラグメント)内のHTML UI要素85は、さらなるフラグメントのためのプレースホルダーである。したがって、ウェブサーバ20がプレースホルダー要素85をクライアント10上に表示することを試みる場合、ウェブサーバ20は、ワイヤリング記述子の実行の間にHTMLフラグメントを取り替える。
【0056】
より詳細には、UI要素オブジェクト608の第4のUIプロパティP4 624が、HTMLフラグメント(図示せず)のためのプレースホルダーである。以前に記載されたように、一実施形態では、ワイヤリング記述子80は、(イベントモジュール308の対応するイベント名前属性326およびイベント入力−出力属性328を用いて)出力イベント656’を識別して、第4のUIプロパティP4 624を第3のアプリケーションプロパティPc 644に同期させる。しかしながら、第4のUIプロパティP4 624は、HTMLフラグメントのためのプレースホルダーである。HTMLフラグメントは、フラグメントのHTML UI要素710’、710’’、710’’’(概して710)とフラグメントが採用するアプリケーションコンポーネントのアプリケーションプロパティとの間の関係を記述するためにW2フラグメントワイヤリング記述子705を有する。上記のように、ワイヤリング記述子80のために、フラグメントワイヤリング記述子705は、HTMLフラグメントにUI要素オブジェクトとして含まれるHTML UI要素710を提示する。フラグメントワイヤリング記述子705は、さらに、アプリケーションオブジェクトとしてHTMLフラグメントに結び付けられるアプリケーションコンポーネント715’、715’’(概して715)を提示する。
【0057】
ウェブサーバ20は、UIプロパティモジュールP1 612、P2 616、P3 620、P4 624に結び付けられた値およびロジックプロパティモジュールPa 636、Pb 640、Pc 644に結び付けられた値を翻訳処理し、フラグメントを用いるかどうかを決定する。例えば、ワイヤリング記述子80は第4のUIプロパティP4 624(すなわち、フラグメントのためのプレースホルダー)を第3のアプリケーションプロパティPc 644に結び付けるため、ウェブサーバ20は、ワイヤリング記述子80を翻訳処理して、第3のアプリケーションプロパティPc 644の値が変化した場合に新しいフラグメントがクライアント10上に表示される必要があることを決定する。出力イベント656’、656’’のためのイベント入力−出力属性328が「出力」と等価であるため、ウェブサーバ20は、新しいフラグメントがクライアント10上に表示されることを決定する。ウェブサーバ20は、さらに、ウェブサーバ20がフラグメントワイヤリング記述子705をフラグメントに結び付けられた関連性のために用いることを決定する。したがって、出力イベント656’、656’’は、第4のUIプロパティP4 624を第3のアプリケーションプロパティPc 644に同期させ、さらに、ウェブサーバ20にフラグメントワイヤリング記述子705を使用させる。ウェブサーバ20は、結果として、フラグメントワイヤリング記述子705を翻訳処理し、名前付けされたイベント720、722、724の関連性を登録する。
【0058】
ソフトウェア開発者がウェブページの設計において複数のHTMLフラグメント(したがって、多くのワイヤリング記述子)を用いる場合、ウェブサーバ20は、プロパティ(例えば、P1 612、P2 616、P3 620、P4 624、Pa 636、Pb 640、Pc 644)の値に基づいてHTMLフラグメントを選択する。より詳細には、第3のアプリケーションプロパティPc 644の値が異なる値に変化する場合、ウェブサーバ20は、異なるフラグメントおよび/または異なるワイヤリング記述子(例えば、W3)を用い得る。
【0059】
付表Bを参照すると、複雑なUIタイプ(すなわち、複数列のHTMLテーブル)をアプリケーションコンポーネントプロパティのセットにマッピングするワイヤリング記述子80の例が示される。HTMLテーブル「ResultTable」とプロパティ「結果」との間の関連性は、複数のプロパティを含み、複数のプロパティのそれぞれは、ロジックアイテム要素324によって識別される。ロジックアイテム要素324のアイテム名前属性は、上記のように、アプリケーションコンポーネント84(例えば、「Price」、「Town」、「NumberOfBeds」等)を識別し、ロジック要素324のアイテムタイプ属性は、アプリケーションコンポーネント84のデータタイプ(例えば、整数、文字列)を識別する。一実施形態では、HTMLコンポーネント82のこれらのプロパティの表示順序は、HTML UI要素85が特定される順序内である。
【0060】
本発明の一定の実施形態を記載したが、本発明の概念を組み込む他の実施形態が使用され得ることが当業者にとって明らかである。
【0061】
(付表A)
【0062】
【数1】
(付表B)
【0063】
【数2】
【図面の簡単な説明】
【図1】
図1は、本発明に従って構成されたコンピュータネットワークの実施形態のブロック図である。
【図2】
図2は、本発明に従うコンピュータネットワークの例示的実施形態のより詳細なブロック図である。
【図3】
図3は、ワイヤリング記述子の実施形態のブロック図である。
【図4】
図4は、クライアント上に表示されたユーザインターフェース要素およびウェブサーバ上で実行するソフトウェアアプリケーションを同期させるために用いられるプロセスの実施形態のフロー図である。
【図5A】
図5Aは、アクティブドキュメントの実施形態のブロック図である。
【図5B】
図5Bは、アクティブドキュメントのコンテンツコンポーネントを操作するためのアプリケーション−プログラミングインターフェースが提供されたアクティブドキュメントの実施形態の論理図である。
【図5C】
図5Cは、クライアント/サーバ環境にあるアクティブドキュメントを提供および表示するためのシステムの実施形態のブロック図である。
【図6】
図6は、ソフトウェアオブジェクトのプロパティをアプリケーションオブジェクトのプロパティに結び付けられるワイヤリング記述子の例示的実施形態のブロック図である。
【図7】
図7は、ウェブフラグメントを含むワイヤリング記述子の例示的実施形態のブロック図である。
Claims (32)
- クライアント上に表示されたユーザインターフェース要素およびウェブサーバ上で実行するソフトウェアアプリケーションコンポーネントを同期させるための方法であって、
(a)ユーザインターフェース要素を、特性を有するユーザインターフェース要素コンポーネントとして提示する工程と、
(b)該ユーザインターフェース要素コンポーネントの該特性をソフトウェアアプリケーションコンポーネントの特性に関連させるワイヤリング記述子を提供する工程と、
(c)該ユーザインターフェース要素コンポーネントを該ソフトウェアアプリケーションコンポーネントに関連付けるために該ワイヤリング記述子を実行する工程と、
(d)該ユーザインターフェース要素コンポーネントの該特性を該ソフトウェアアプリケーションコンポーネントの該特性に同期させる工程と
を包含する、方法。 - 工程(d)は、前記ユーザインターフェース要素コンポーネントの前記同期された特性を用いて前記ユーザインターフェース要素を更新する工程を包含する、請求項1に記載の方法。
- 前記クライアント上に表示された前記ユーザインターフェース要素を更新するためにドキュメントコンポーネントモデルを用いる工程をさらに包含する、請求項2に記載の方法。
- 工程(b)は、記述ファイルを提供する工程をさらに包含する、請求項1に記載の方法。
- 工程(b)は、前記ユーザインターフェース要素コンポーネントの前記特性を識別する工程をさらに包含する、請求項1に記載の方法。
- 工程(b)は、ウェブページのフラグメントを識別する工程をさらに包含する、請求項1に記載の方法。
- 工程(b)は、前記ソフトウェアアプリケーションコンポーネントの前記特性を識別する工程をさらに包含する、請求項1に記載の方法。
- 工程(b)は、前記ユーザインターフェース要素コンポーネントの前記特性および前記ソフトウェアアプリケーションコンポーネントの前記特性を同期させるためのイベントを識別する工程をさらに包含する、請求項1に記載の方法。
- 前記イベントの関連性を登録する工程をさらに包含する、請求項8に記載の方法。
- 前記イベントが発生した場合に前記ユーザインターフェース要素コンポーネントの前記特性を前記ソフトウェアアプリケーションのオブジェクトの前記特性に同期させる工程をさらに包含する、請求項8に記載の方法。
- クライアント上に表示されたユーザインターフェース要素およびウェブサーバ上で実行するソフトウェアアプリケーションコンポーネントを同期させる方法であって、
(a)ウェブサーバによって、該ユーザインターフェース要素を、特性を有するユーザインターフェース要素コンポーネントとして提示する工程と、
(b)該ウェブサーバによって、ユーザインターフェースプロパティモジュール、ロジックプロパティモジュール、およびイベントプロパティモジュールを有するワイヤリング記述子を提供する工程と、
(c)該ウェブサーバによって、該ユーザインターフェースプロパティモジュールを用いて該ユーザインターフェース要素コンポーネントの該特性を識別する工程と、
(d)該ウェブサーバによって、該ロジックプロパティモジュールを用いて該ソフトウェアアプリケーションコンポーネントの特性を識別する工程と、
(e)該ウェブサーバによって、該イベントモジュールを用いて該ユーザインターフェース要素コンポーネントの該特性および該ソフトウェアアプリケーションコンポーネントの該特性を同期させるためのイベントを識別する工程と、
(f)該ウェブサーバによって、該ユーザインターフェース要素コンポーネントを該ソフトウェアアプリケーションコンポーネントと結び付けるために該ワイヤリング記述子を実行する工程と、
(g)該イベントが発生した場合に該ユーザインターフェース要素コンポーネントの該特性を該ソフトウェアアプリケーションコンポーネントの該特性に同期させる工程と、
(h)該ウェブサーバによって、該ユーザインターフェース要素の該同期された特性を用いて、該クライアント上に表示された該ユーザインターフェース要素を該ユーザインターフェース要素コンポーネントの該特性とともに更新する工程と、
(i)該クライアントによって、該ユーザインターフェース要素を表示する工程と
を包含する、方法。 - クライアント上に表示されたユーザインターフェース要素およびウェブサーバ上で実行するソフトウェアアプリケーションコンポーネントを同期させるための装置であって、
(a)ユーザインターフェース要素コンポーネントの特性を識別するユーザインターフェースプロパティモジュールと、
(b)ソフトウェアアプリケーションコンポーネントの特性を識別するロジックプロパティモジュールと、
(c)イベントが発生した場合に該ユーザインターフェース要素のオブジェクトの該特性および該ソフトウェアアプリケーションのオブジェクトの該特性を同期させるための該イベントを識別するイベントモジュールと
を含む、装置。 - データを格納および管理するデータベースサーバをさらに含む、請求項12に記載の装置。
- 前記ウェブサーバおよび前記データベースサーバと通信するミドルウェアサーバをさらに含む、請求項12に記載の装置。
- 前記ミドルウェアサーバは、前記ウェブサーバと前記データベースサーバとの間の要求および応答を統合する、請求項14に記載の装置。
- 前記ミドルウェアサーバは、前記ソフトウェアアプリケーションのコンポーネントを管理およびサポートする、請求項15に記載の装置。
- 前記ソフトウェアアプリケーションは、Java(R)プログラミング言語で書かれたJava(R) Beanである、請求項12に記載の装置。
- 前記ユーザインターフェース要素コンポーネントは、HTMLコンポーネントである、請求項12に記載の装置。
- 前記ユーザインターフェース要素を提供するソフトウェア設計ステーションをさらに含む、請求項12に記載の装置。
- 前記ウェブサーバは、前記ユーザインターフェース要素を、前記特性を有するユーザインターフェース要素コンポーネントとして提示する、請求項12に記載の装置。
- 前記ソフトウェアコンポーネントを提供するアプリケーション開発システムをさらに含む、請求項12に記載の装置。
- 前記ウェブサーバは、前記クライアント上に表示された前記ユーザインターフェース要素を更新するためのドキュメントコンポーネントモデル(DOM)プロキシをさらに含む、請求項12に記載の装置。
- 前記クライアントは、前記DOMプロキシからの前記更新を受け入れ、前記ユーザインターフェース要素の変化を伝送するためのDOMアクセスモジュールをさらに含む、請求項22に記載の装置。
- 記述ファイルは、前記ユーザインターフェースプロパティモジュール、前記ロジックプロパティモジュール、および前記イベントモジュールの少なくとも一つを記述する、請求項12に記載の装置。
- 前記記述ファイルは、XMLフォーマットである、請求項24に記載の装置。
- 前記ユーザインターフェースプロパティモジュール、前記ロジックプロパティモジュール、および前記イベントモジュールのうち少なくとも一つは、タイプ変換を自動化するためのタイプ情報をさらに含む、請求項12に記載の装置。
- 前記イベントモジュールは、前記同期の方向を特定するための入力−出力属性をさらに含む、請求項12に記載の装置。
- ダイナミックユーザインターフェースを特定する接続モジュールをさらに含む、請求項12に記載の装置。
- 前記ダイナミックユーザインタフェースは、HTMLフラグメントである、請求項28に記載の装置。
- 前記接続モジュールは、値属性をさらに含み、該値属性は、前記ソフトウェアアプリケーションコンポーネントの前記特性に等価になされる、請求項28に記載の装置。
- 前記接続モジュールは、フラグメント属性をさらに含み、該フラグメント属性は、前記HTMLフラグメントを識別する、請求項28に記載の装置。
- 前記接続モジュールは、ワイヤリング属性をさらに含み、該ワイヤリング属性は、異なるユーザインターフェースプロパティモジュール、異なるロジックプロパティモジュール、および異なるイベントモジュールの少なくとも一つを識別する、請求項28に記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/708,327 US6766333B1 (en) | 2000-11-08 | 2000-11-08 | Method and apparatus for synchronizing a user interface element displayed on a client and a software application component executing on a web server |
PCT/US2001/050197 WO2002039268A2 (en) | 2000-11-08 | 2001-11-07 | A method and apparatus for synchronizing a user interface element displayed on a client and a software application component executing on a web server |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004535606A true JP2004535606A (ja) | 2004-11-25 |
Family
ID=24845353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002541524A Withdrawn JP2004535606A (ja) | 2000-11-08 | 2001-11-07 | クライアント上で表示されたユーザインターフェース要素およびウェブサーバ上で実行するソフトウェアアプリケーションコンポーネントを同期させる方法および装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6766333B1 (ja) |
JP (1) | JP2004535606A (ja) |
AU (1) | AU2002234110A1 (ja) |
GB (1) | GB2384347B (ja) |
WO (1) | WO2002039268A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009199606A (ja) * | 2002-11-19 | 2009-09-03 | Nexaweb Technologies Inc | 処理状態を把握するウェブ・ベースのコンピュータ・システムと方法 |
Families Citing this family (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7117446B2 (en) * | 1999-02-01 | 2006-10-03 | Sonic Solutions, Inc. | User interface method and system for application programs implemented with component architectures |
US7117239B1 (en) | 2000-07-28 | 2006-10-03 | Axeda Corporation | Reporting the state of an apparatus to a remote computer |
US7185014B1 (en) | 2000-09-22 | 2007-02-27 | Axeda Corporation | Retrieving data from a server |
US8108543B2 (en) | 2000-09-22 | 2012-01-31 | Axeda Corporation | Retrieving data from a server |
US8166381B2 (en) * | 2000-12-20 | 2012-04-24 | Heart Imaging Technologies, Llc | Medical image management system |
US6934698B2 (en) * | 2000-12-20 | 2005-08-23 | Heart Imaging Technologies Llc | Medical image management system |
US20030018704A1 (en) * | 2001-03-08 | 2003-01-23 | Vasilis Polychronidis | Network presence and location agent |
US7016965B2 (en) * | 2001-11-13 | 2006-03-21 | International Business Machines Corporation | System and method for asynchronously reading data across secure sockets layer sessions |
US7254601B2 (en) | 2001-12-20 | 2007-08-07 | Questra Corporation | Method and apparatus for managing intelligent assets in a distributed environment |
US7447991B2 (en) * | 2002-04-01 | 2008-11-04 | Hewlett-Packard Development Company, L.P. | Document agents |
US7178149B2 (en) | 2002-04-17 | 2007-02-13 | Axeda Corporation | XML scripting of soap commands |
US7966418B2 (en) | 2003-02-21 | 2011-06-21 | Axeda Corporation | Establishing a virtual tunnel between two computer programs |
US7533379B2 (en) * | 2003-02-25 | 2009-05-12 | Bea Systems, Inc. | Methods for incremental application deployment |
US20040179044A1 (en) * | 2003-03-13 | 2004-09-16 | International Business Machines Corp. | Method, system, and computer program product for providing visual assistance in display of information on a display device |
US20040216056A1 (en) * | 2003-04-22 | 2004-10-28 | Computer Associates Think, Inc. | System and method for supporting scrolling of contents in a display |
JP4709481B2 (ja) * | 2003-07-31 | 2011-06-22 | インターナショナル・ビジネス・マシーンズ・コーポレーション | サーバ、情報処理方法およびプログラム |
US7805523B2 (en) * | 2004-03-15 | 2010-09-28 | Mitchell David C | Method and apparatus for partial updating of client interfaces |
WO2005089338A2 (en) * | 2004-03-15 | 2005-09-29 | Bungee Labs, Inc. | Declarative computer programming language method and system |
US7954050B2 (en) * | 2004-06-25 | 2011-05-31 | Icesoft Technologies Canada Corp. | Systems and methods for rendering and increasing portability of document-based user interface software objects |
US7543032B2 (en) * | 2004-10-22 | 2009-06-02 | Canyonbridge, Inc. | Method and apparatus for associating messages with data elements |
US7450128B2 (en) * | 2004-11-15 | 2008-11-11 | Hewlett-Packard Development Company, L.P. | Systems and methods of providing image copy and modify commands to a receiver with an associated display |
US20060129634A1 (en) * | 2004-11-18 | 2006-06-15 | Microsoft Corporation | Multiplexing and de-multiplexing graphics streams |
US7617482B2 (en) * | 2004-11-18 | 2009-11-10 | International Business Machines Corporation | Method, system and program product for implementing java server page (JSP) containers as java server faces (JSF) components |
US7817849B2 (en) * | 2005-08-18 | 2010-10-19 | Hewlett-Packard Development Company, L.P. | Method and apparatus for graphical data compression |
US20070174454A1 (en) * | 2006-01-23 | 2007-07-26 | Mitchell David C | Method and apparatus for accessing Web services and URL resources for both primary and shared users over a reverse tunnel mechanism |
US8127000B2 (en) | 2006-06-30 | 2012-02-28 | Tealeaf Technology, Inc. | Method and apparatus for monitoring and synchronizing user interface events with network data |
US8583772B2 (en) | 2008-08-14 | 2013-11-12 | International Business Machines Corporation | Dynamically configurable session agent |
US8868533B2 (en) | 2006-06-30 | 2014-10-21 | International Business Machines Corporation | Method and apparatus for intelligent capture of document object model events |
US8949406B2 (en) * | 2008-08-14 | 2015-02-03 | International Business Machines Corporation | Method and system for communication between a client system and a server system |
US20080028302A1 (en) * | 2006-07-31 | 2008-01-31 | Steffen Meschkat | Method and apparatus for incrementally updating a web page |
US8370479B2 (en) | 2006-10-03 | 2013-02-05 | Axeda Acquisition Corporation | System and method for dynamically grouping devices based on present device conditions |
US8065397B2 (en) | 2006-12-26 | 2011-11-22 | Axeda Acquisition Corporation | Managing configurations of distributed devices |
US7895571B2 (en) * | 2007-01-25 | 2011-02-22 | International Business Machines Corporation | Method and apparatus for resolving client-side logic |
US20080303827A1 (en) * | 2007-06-11 | 2008-12-11 | Adobe Systems Incorporated | Methods and Systems for Animating Displayed Representations of Data Items |
US20090259744A1 (en) * | 2008-04-14 | 2009-10-15 | Kolke Daniel J | System and Method for Running a Web-Based Application while Offline |
US20090037492A1 (en) * | 2007-07-31 | 2009-02-05 | Ahmad Baitalmal | Framework for Synchronizing Applications |
US20090037452A1 (en) * | 2007-07-31 | 2009-02-05 | Ahmad Baitalmal | System and Method for Synchronizing Applications |
US20090070388A1 (en) * | 2007-07-31 | 2009-03-12 | Kolke Daniel J | System and Method for Resolving Conflicts Between an Offline Web-Based Application and an Online Web-Based Application |
US8042055B2 (en) | 2007-08-31 | 2011-10-18 | Tealeaf Technology, Inc. | Replaying captured network interactions |
US20090235282A1 (en) * | 2008-03-12 | 2009-09-17 | Microsoft Corporation | Application remote control |
US8930818B2 (en) * | 2009-03-31 | 2015-01-06 | International Business Machines Corporation | Visualization of website analytics |
US9934320B2 (en) | 2009-03-31 | 2018-04-03 | International Business Machines Corporation | Method and apparatus for using proxy objects on webpage overlays to provide alternative webpage actions |
US9054913B1 (en) | 2009-11-30 | 2015-06-09 | Dell Software Inc. | Network protocol proxy |
US8650540B2 (en) | 2009-12-31 | 2014-02-11 | International Business Machines Corporation | Melding of mediation flow service component architecture (SCA) components |
US8533532B2 (en) | 2010-06-23 | 2013-09-10 | International Business Machines Corporation | System identifying and inferring web session events |
GB2503595A (en) | 2011-02-22 | 2014-01-01 | Ibm | On-page manipulation and real-time replacement of content |
US8996985B1 (en) | 2011-03-16 | 2015-03-31 | Google Inc. | Online document processing service for displaying comments |
US8812946B1 (en) | 2011-10-17 | 2014-08-19 | Google Inc. | Systems and methods for rendering documents |
US8471871B1 (en) | 2011-10-17 | 2013-06-25 | Google Inc. | Authoritative text size measuring |
US8397153B1 (en) * | 2011-10-17 | 2013-03-12 | Google Inc. | Systems and methods for rich presentation overlays |
US8434002B1 (en) | 2011-10-17 | 2013-04-30 | Google Inc. | Systems and methods for collaborative editing of elements in a presentation document |
US10430388B1 (en) | 2011-10-17 | 2019-10-01 | Google Llc | Systems and methods for incremental loading of collaboratively generated presentations |
US20150199308A1 (en) | 2011-10-17 | 2015-07-16 | Google Inc. | Systems and methods for controlling the display of online documents |
US8266245B1 (en) | 2011-10-17 | 2012-09-11 | Google Inc. | Systems and methods for incremental loading of collaboratively generated presentations |
US9367522B2 (en) | 2012-04-13 | 2016-06-14 | Google Inc. | Time-based presentation editing |
US9106690B1 (en) * | 2012-06-14 | 2015-08-11 | Bromium, Inc. | Securing an endpoint by proxying document object models and windows |
US9635094B2 (en) | 2012-10-15 | 2017-04-25 | International Business Machines Corporation | Capturing and replaying application sessions using resource files |
US9536108B2 (en) | 2012-10-23 | 2017-01-03 | International Business Machines Corporation | Method and apparatus for generating privacy profiles |
US9535720B2 (en) | 2012-11-13 | 2017-01-03 | International Business Machines Corporation | System for capturing and replaying screen gestures |
US10474735B2 (en) | 2012-11-19 | 2019-11-12 | Acoustic, L.P. | Dynamic zooming of content with overlays |
US9529785B2 (en) | 2012-11-27 | 2016-12-27 | Google Inc. | Detecting relationships between edits and acting on a subset of edits |
US9971752B2 (en) | 2013-08-19 | 2018-05-15 | Google Llc | Systems and methods for resolving privileged edits within suggested edits |
US9348803B2 (en) | 2013-10-22 | 2016-05-24 | Google Inc. | Systems and methods for providing just-in-time preview of suggestion resolutions |
WO2018093274A1 (en) * | 2016-11-16 | 2018-05-24 | Auckland Uniservices Limited | Methods for protein ligation and uses thereof |
US11778045B2 (en) | 2021-07-12 | 2023-10-03 | Red Hat, Inc. | Communication system for micro-frontends of a web application |
US20230297444A1 (en) * | 2022-03-18 | 2023-09-21 | Red Hat, Inc. | Synchronizing variable values between an application shell and micro-frontends of a web application |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5737622A (en) | 1986-04-14 | 1998-04-07 | National Instruments Corporation | Method and apparatus for more efficient function synchronization in a data flow program |
US5204947A (en) | 1990-10-31 | 1993-04-20 | International Business Machines Corporation | Application independent (open) hypermedia enablement services |
AU1587592A (en) | 1991-03-18 | 1992-10-21 | Echelon Corporation | Networked variables |
FR2690260B1 (fr) | 1992-04-17 | 1997-01-03 | Bull Sa | Utilisation d'un protocole bidirectionnel de tres haut niveau pour la communication entre un systeme hypermedia et une pluralite d'editeurs. |
US5838906A (en) | 1994-10-17 | 1998-11-17 | The Regents Of The University Of California | Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document |
US5623656A (en) | 1994-12-15 | 1997-04-22 | Lucent Technologies Inc. | Script-based data communication system and method utilizing state memory |
US5530852A (en) | 1994-12-20 | 1996-06-25 | Sun Microsystems, Inc. | Method for extracting profiles and topics from a first file written in a first markup language and generating files in different markup languages containing the profiles and topics for use in accessing data described by the profiles and topics |
US5710918A (en) | 1995-06-07 | 1998-01-20 | International Business Machines Corporation | Method for distributed task fulfillment of web browser requests |
US5701451A (en) | 1995-06-07 | 1997-12-23 | International Business Machines Corporation | Method for fulfilling requests of a web browser |
US5737592A (en) | 1995-06-19 | 1998-04-07 | International Business Machines Corporation | Accessing a relational database over the Internet using macro language files |
US5657390A (en) | 1995-08-25 | 1997-08-12 | Netscape Communications Corporation | Secure socket layer application program apparatus and method |
US5572643A (en) | 1995-10-19 | 1996-11-05 | Judson; David H. | Web browser with dynamic display of information objects during linking |
US5838910A (en) | 1996-03-14 | 1998-11-17 | Domenikos; Steven D. | Systems and methods for executing application programs from a memory device linked to a server at an internet site |
US5754830A (en) | 1996-04-01 | 1998-05-19 | Openconnect Systems, Incorporated | Server and web browser terminal emulator for persistent connection to a legacy host system and method of operation |
EP0853788A1 (en) | 1996-08-08 | 1998-07-22 | Agranat Systems, Inc. | Embedded web server |
AU740007B2 (en) | 1997-02-21 | 2001-10-25 | Dudley John Mills | Network-based classified information systems |
US6262729B1 (en) | 1997-04-14 | 2001-07-17 | Apple Computer, Inc. | Method and apparatus for binding user interface objects to application objects |
US6031747A (en) * | 1999-08-02 | 2000-02-29 | Lockheed Martin Missiles & Space Company | Interleaved synchronous flyback converter with high efficiency over a wide operating load range |
US6981212B1 (en) * | 1999-09-30 | 2005-12-27 | International Business Machines Corporation | Extensible markup language (XML) server pages having custom document object model (DOM) tags |
AU2001278095A1 (en) | 2000-07-31 | 2002-02-13 | James A. Starkey | Method and apparatus for generating web pages from templates |
-
2000
- 2000-11-08 US US09/708,327 patent/US6766333B1/en not_active Expired - Lifetime
-
2001
- 2001-11-07 JP JP2002541524A patent/JP2004535606A/ja not_active Withdrawn
- 2001-11-07 AU AU2002234110A patent/AU2002234110A1/en not_active Abandoned
- 2001-11-07 WO PCT/US2001/050197 patent/WO2002039268A2/en active Application Filing
- 2001-11-07 GB GB0309653A patent/GB2384347B/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009199606A (ja) * | 2002-11-19 | 2009-09-03 | Nexaweb Technologies Inc | 処理状態を把握するウェブ・ベースのコンピュータ・システムと方法 |
Also Published As
Publication number | Publication date |
---|---|
GB2384347A (en) | 2003-07-23 |
US6766333B1 (en) | 2004-07-20 |
AU2002234110A1 (en) | 2002-05-21 |
WO2002039268A2 (en) | 2002-05-16 |
GB0309653D0 (en) | 2003-06-04 |
WO2002039268A3 (en) | 2004-02-12 |
GB2384347B (en) | 2005-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6766333B1 (en) | Method and apparatus for synchronizing a user interface element displayed on a client and a software application component executing on a web server | |
US8510378B2 (en) | System and method for auto-generating JavaScript | |
US7912935B2 (en) | Development and deployment of mobile and desktop applications within a flexible markup-based distributed architecture | |
US8578333B2 (en) | Method and system for client-side user interface enhancement to enable application integration and portalisation | |
US9159040B2 (en) | Accessing a ERP application over the internet using strongly typed declarative language files | |
US8954989B1 (en) | Flexible, event-driven JavaScript server architecture | |
US7873965B2 (en) | Methods and apparatus for communicating changes between a user-interface and an executing application, using property paths | |
US8260844B2 (en) | Information messaging and collaboration system | |
US7725906B2 (en) | Method and device for executing a function with selection and sending of multiple results in a client-server environment | |
CN1189817C (zh) | 从因特网访问传统应用程序 | |
US6868454B1 (en) | Distributed-object development system and computer-readable recording medium recorded with program for making computer execute distributed-object development | |
US8914774B1 (en) | System and method for tagging code to determine where the code runs | |
US20020032706A1 (en) | Method and system for building internet-based applications | |
US20030061279A1 (en) | Application serving apparatus and method | |
US20080082987A1 (en) | Method and System for Integrating the Existing Web-Based Syswtem | |
JP2005505055A (ja) | モバイルウェブクライアントに対する方法、装置及びシステム | |
EP1283993A2 (en) | Method and system for building internet-based applications | |
US8566807B1 (en) | System and method for accessibility of document object model and JavaScript by other platforms | |
US8756579B1 (en) | Client-side and server-side unified validation | |
US9690577B1 (en) | Legacy applications as web services | |
WO2001048630A9 (en) | Client-server data communication system and method for data transfer between a server and different clients | |
JP3732816B2 (ja) | アプリケーション開発支援システム及びアプリケーション開発支援方法ならびにコンピュータプログラム | |
US8132124B2 (en) | Method and system for representing Web service activity through a user interface | |
US20070233812A1 (en) | Common communication framework for network objects | |
US10244020B1 (en) | System and method for auto-generating meta-proxies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20050201 |