JP4694031B2 - サーバ側制御オブジェクトを用いるデータ結合 - Google Patents

サーバ側制御オブジェクトを用いるデータ結合 Download PDF

Info

Publication number
JP4694031B2
JP4694031B2 JP2001129926A JP2001129926A JP4694031B2 JP 4694031 B2 JP4694031 B2 JP 4694031B2 JP 2001129926 A JP2001129926 A JP 2001129926A JP 2001129926 A JP2001129926 A JP 2001129926A JP 4694031 B2 JP4694031 B2 JP 4694031B2
Authority
JP
Japan
Prior art keywords
server
data
control object
property
side control
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.)
Expired - Fee Related
Application number
JP2001129926A
Other languages
English (en)
Other versions
JP2002024079A (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2002024079A publication Critical patent/JP2002024079A/ja
Application granted granted Critical
Publication of JP4694031B2 publication Critical patent/JP4694031B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、一般にウェブサーバフレームワークに関し、特にサーバ側データテーブルのプロパティを二方向に結合するサーバ側制御オブジェクトに関する。
【0002】
【従来の技術】
典型的なウェブブラウザは、クライアントシステムにおいて表示するウェブページの外観および基本動作を規定するウェブサーバからデータを受け取る。典型的な手順としては、ユーザが、ワールドワイドウェブ上の資源のグローバルアドレスであるユニホームリソース(資源)ロケータ(以下、「URL」という)を特定し、所望のウェブサイトにアクセスする。一般に、用語「資源」とは、プログラムによってアクセスすることができるデータまたはルーチンのことである。URLの一例は、“ HYPERLINK "http://www.microsoft.com/ms.htm" http://www.microsoft.com/ms.htm ”である。このURL例の第1の部分は、通信に用いる所与のプロトコル(例えば“http”)を示している。第2の部分は、資源の所在を示すドメイン名(例えば“ HYPERLINK "http://www.microsoft.com" www.microsoft.com ”)を特定している。第3の部分はドメイン内の資源(例えば“ms.htm”と呼ばれるファイル)を特定している。これに従い、ブラウザは、 HYPERLINK "http://www.microsoft.com" www.microsoft.com ドメイン内のms.htmファイルに関連するデータを取り出すためのURL例に関連するHTTP(ハイパーテキストトランスポートプロトコル)リクエストを生成する。www.microsoft.comサイトをホストしているウェブサーバはHTTPリクエストを受け取り、要求されたウェブページまたは資源をクライアントシステムにHTTPレスポンスで戻し、ブラウザに表示する。
【0003】
上記の例の"ms.htm"ファイルは、静的なHTML(ハイパーテキストマークアップ言語)コードを含んでいる。HTMLは、ワールドワイドウェブ上でのドキュメント(例えば、ウェブページ)作成に用いられるプレインテキストオーサリング言語である。このようなものであるので、HTMLファイルは、ウェブサーバから取り出され、ブラウザにウェブページとして表示し、ユーザがインターネットからの情報を見ている間に期待するようになる豊かなグラフィカルな経験を提供することができる。HTMLを用いて、開発者が、例えば、ブラウザに表示するフォーマット化されたテキスト、リスト、フォーム、テーブル、ハイパーテキストリンク、インライン画像および音声、ならびに背景グラフィックスを特定する。しかし、HTMLファイルは、ウェブページコンテンツの動的な生成を本質的にサポートしていない静的ファイルである。
【0004】
株価の変化や交通情報などのような動的コンテンツを表示する場合は、通常、より複雑なクライアント・サーバ対話を扱うためのサーバ側アプリケーションプログラムを開発する。サーバ側アプリケーションプログラムは、HTTPリクエストを処理し、クライアントへのHTTPレスポンスの送信に適切なHTMLコードを生成する。HTTPリクエストの一例は、照会ストリングでのデータまたはウェブベースのフォームからのデータなどのパラメータを含むことがある。このようなものであるので、サーバ側アプリケーションプログラムは、このパラメータを処理し、クライアントへのHTTPレスポンスでHTMLコードを動的に生成することができる。サーバ側アプリケーションプログラムの一例として、メモリ機構への1つ以上のフォーマット化されたテキスト書込み処理のシーケンスを用いて、適切なHTMLコードを含むドキュメントを動的に生成する場合がある。その後、得られたドキュメントは、HTTPレスポンスでクライアントシステムに送信され、そこでウェブページとしてブラウザに表示される。
【0005】
サーバ側アプリケーションプログラムの開発は、ウェブページ設計に用いる通常のHTMLコード化に精通しているだけでなく、1つ以上のプログラム言語(例えば、C++, Perl, Visual Basic, または Jscript)を含むプログラムベーシックスに精通していることが要求される複雑な作業である。しかし、ウェブページ設計者は、グラフィックデザイナーまたはエディタであることが多く、プログラム経験がない場合がある。さらに、複雑なウェブページ開発を単純化すると、いかなる開発者によっても新たなウェブコンテンツの開発の速度を上げることができる。一般に、カスタムサーバ側アプリケーションプログラムの開発もまた、多大な労力が要求され、実際、開発者はしばしばそれを試みたくないと思う程である。したがって、開発者が最小のプログラムでウェブページを動的に作成および処理することができる開発フレームワークを提供することが望ましい。
【0006】
【発明が解決しようとする課題】
動的ウェブページ生成のプログラム要件を最小にする1つの手段は、マイクロソフト社によって提供されるアクティブサーバページ(ASP)フレームワークである。ASPリソースは、典型的に、所望の資源としてASPリソースを特定するHTTPリクエストを処理し、その後、クライアントへのHTTPレスポンスでの結果HTMLコードを生成する、例えばVisual BasicまたはJscriptを含む。さらに、ASP資源は、所与のアプリケーションプログラム労力を軽減するために、予め開発されたまたは第三者のクライアント側ライブラリコンポーネント(例えば、クライアント側ACTIVEX制御)を参照することができる。しかし、現在のサーバ側アプリケーションフレームワークにおいて、サーバ側アプリケーション内でクライアント側ユーザインタフェース要素(例えば、テキストボックス、リストボックス、ボタン、ハイパーリンク、画像、音声など)を動的に管理することを要求されるプログラミングは、依然として高度なプログラミング技術と相当な労力を必要とする。未解決の課題は、ウェブページ開発者がウェブページの他のアスペクトに焦点を当てることができるように、ユーザインタフェース要素を処理することが要求されるプログラミングを適切にカプセル化することについてである。
【0007】
あるクライアント側ユーザインタフェース要素は、データベースのようなサーバ側データ格納部に関連付けられたデータを含む。このような要素の一例は、製品と価格の一覧をサーバ側プロダクトデータベースから表示するクライアント側テーブルである。また別の一例としては、後の利用のために、サーバ側顧客データベースに格納すべきシッピングアドレスを消費者が入力できるテキストボックスも含まれる。従来は、クライアント側ユーザインタフェースは、ページ開発者によってページに書き込まれ、ページとサーバ側データベースとの間でデータ通信を行うために、アプリケーションプログラムはアプリケーション開発者によって書かれていた。問題は、ページ開発もアプリケーションプログラム開発もともに、多大な開発労力を要求し、ならびにデータベース構造およびある程度の複雑なプログラミング(例えば、クライアント側のスクリプティングあるいはサーバ側のアプリケーションプログラミングを介して)についての深い知識を必要とする点である。
【0008】
【課題を解決するための手段】
本発明によると、上述および他の課題は、1つ以上のサーバ側制御オブジェクトと1つ以上のサーバ側データ格納部とを結合する階層データを提供することによって解決される。階層データ結合は、データアレイにおける各データオブジェクトに対し結合コンテナを自動的に作成することによってサポートされる。各結合コンテナは、その子供に対し、関連付けられているサーバ側データ格納部のデータオブジェクトを含むそのパブリックプロパティへのアクセスを提供する。このようにすることで、サーバ側制御オブジェクトのプロパティは、その結合コンテナを介して、サーバ側データ格納部のプロパティに結合され得る。データ結合関係は、サーバ側制御オブジェクトのプロパティからサーバ側データ格納部のプロパティへ、またはその逆方向に、一方向的に確立することができるが、これに限定されない。データ結合関係はまた、サーバ側制御オブジェクトのプロパティとサーバ側データ格納部のプロパティとの間に二方向的に確立することもできるが、これに限定されない。
【0009】
ある本発明にかかる手段において、下層サーバ側制御オブジェクトのプロパティを1つ以上のデータセットを有するサーバ側データテーブルのデータセット(例えば、テーブル行)のプロパティにデータを結合する方法が、クライアントコンピュータシステムに接続しているサーバコンピュータにおいて提供される。この下層サーバ側制御オブジェクトは、クライアント側ユーザインタフェース要素に対応する。繰り返し制御オブジェクトは、サーバ側データテーブルの各データセットごとに繰り返し参照し、各データセットに対応する結合コンテナサーバ側制御オブジェクトを作成する。各結合コンテナサーバ側制御オブジェクトは、サーバ側データテーブルのデータセットに関連づけられている。下層サーバ側制御オブジェクトは、各データセットのプロパティに対し作成される。所与の下層サーバ側制御オブジェクトは、所与のデータセットに対応する結合コンテナサーバ側制御オブジェクトの下層にあり、かつ所与のデータセットのプロパティと関連付けられている。データ結合関係は、下層サーバ側制御オブジェクトのプロパティと、サーバ側データテーブルのデータセットのうちの1つとの間に確立される。
【0010】
本発明にかかる他の手段において、製品はコンピュータプログラムプロダクトとして提供される。コンピュータプログラムプロダクトのある実施形態において、コンピュータシステムによって読み取り可能であり、かつ下層サーバ側制御オブジェクトのプロパティを1つ以上のデータオブジェクトを有するサーバ側データアレイのプロパティにデータ結合させるコンピュータプロセスを実行するためのコンピュータプログラムをコード化するコンピュータプログラム記憶媒体が提供される。コンピュータプログラムプロダクトのまた別の実施形態としては、コンピュータシステムによって搬送波で具体化され、かつコンピュータプログラムをコード化するコンピュータデータ信号において提供することもできる。子サーバ側制御オブジェクトは、クライアント側ユーザインタフェース要素に対応する。サーバ側データアレイは、サーバ側データベースからロードされる。繰り返しサーバ側制御オブジェクトは、サーバ側データテーブルに関連付けられ、かつサーバ側制御オブジェクト階層中に作成される。サーバ側データアレイは、繰り返しサーバ側制御オブジェクトのプロパティとして格納される。データオブジェクトの1つと対応する結合コンテナサーバ側制御オブジェクトは、繰り返しサーバ側制御オブジェクトの子として作成される。結合コンテナサーバ側制御オブジェクトは、サーバ側データアレイのデータオブジェクトのうちの1つに関連付けられる。下層サーバ側制御オブジェクトは、各データオブジェクトの各プロパティに対して作成される。各下層サーバ側制御オブジェクトは、結合コンテナサーバ側制御オブジェクトの下層にある。データ結合関係は、下層サーバ側制御オブジェクトのプロパティとサーバ側データアレイのプロパティとの間に確立される。
【0011】
別の手段においては、1つ以上のデータオブジェクトを有するサーバ側データアレイを含む、クライアント側ユーザインタフェース要素に対応するサーバ側制御オブジェクトの階層を用いてサーバ側データ結合を実行するサーバもまた提供される。各データオブジェクトはプロパティを含んでもよい。サーバ側制御オブジェクト階層中の繰り返しサーバ側制御オブジェクトは、サーバ側データアレイに関連付けられている。1つ以上の結合コンテナサーバ側制御オブジェクトは、サーバ側データアレイにおける多数のデータオブジェクトに基づいて、繰り返しサーバ側制御オブジェクトによって繰り返し作成される。1つ以上の下層サーバ側制御オブジェクトは、サーバ側データアレイの各データオブジェクトのプロパティに対応する。各下層サーバ側制御は、サーバ側データアレイにおける所与のデータオブジェクトの結合制御サーバ側制御オブジェクトの下層に作成される。データ結合関係構造は、下層制御オブジェクトのプロパティとサーバ側データアレイのデータオブジェクトのプロパティとのデータ結合関係を記述する。
【0012】
【発明の実施の形態】
本発明のある実施形態において、ウェブページコンテンツは、ウェブサーバ上に動的に生成され、クライアントに表示される。クライアントは、例えば、標準HTMLあるいは他のオーサリング言語をサポートするいかなるブラウザにもなることができる。ウェブサーバにおけるクライアントは、HTTPリクエストおよびHTTPレスポンスなどを用いることによって、ネットワークを通じて通信する。このように、ウェブサーバは、おそらくHTMLコード形態であろうが、ウェブページコンテンツを生成し、クライアントへそのコンテンツを送信する。これによりブラウザにウェブページを表示することができる。ウェブページの個々のユーザインタフェース要素と論理的に対応し得るサーバ側制御オブジェクトがウェブサーバ上に作成され、ウェブページコンテンツを処理し、レンダリングする。サーバ側制御オブジェクトは、サーバ側制御オブジェクトの階層を作成するページファクトリによって処理されるASP+リソースなどの動的コンテンツ資源で宣言される。階層における制御オブジェクトはクライアントから受信したリクエストを協働して処理し、次いで、結果ウェブページコンテンツを生成し、クライアントへ送信し、階層における制御オブジェクトを終了させる。
【0013】
本発明のある実施形態において、ページオブジェクトは、制御オブジェクト階層の最上位レベルとして例示することができる。制御オブジェクトでもあるページオブジェクトは、典型的に1つ以上の子制御オブジェクトを含み、各子制御オブジェクトは、それ自体1つ以上の子制御オブジェクトを含み、多数レベルの階層に広がる。ページオブジェクトおよび下層制御オブジェクトは、処理シーケンスを実行し、クライアント側ユーザインタフェース要素に対応するウェブコンテンツを処理および生成する。
【0014】
このシーケンスにおける処理の1つは、1つ以上のサーバ側制御オブジェクトとサーバ側データ格納部との通信を制御するデータ結合処理を含む。本発明のある実施形態において、サーバ側データ格納部は、ウェブページのユーザインタフェース要素に関するデータを格納するデータベースである(例えば、図1のデータ格納部131を参照)。特に限定されないが、構成登録、データファイル、データストリームを含む他の非データベース型データ格納部もまた、本発明の範囲内に含まれる。サーバ側制御オブジェクトおよび関連のデータ結合関係を動的コンテンツ資源において宣言することにより、ページ開発者は、サーバ側データ格納部に関連するサーバ側データアレイに対して一方向、および/または二方向データ結合関係を有する制御オブジェクト階層を構成することができる。
【0015】
図1は、本発明のある実施形態におけるクライアントに表示するウェブページコンテンツを動的に生成するウェブサーバを示す。クライアント100は、クライアント100の表示装置上におけるウェブページ104を表示するブラウザ102を実行する。クライアント100は、ビデオモニタのような表示装置を有するクライアントコンピュータシステムを含んでもよい。マイクロソフト社によって販売されている"INTERNET EXPLORER"ブラウザは、本発明のある実施形態におけるブラウザ102の一例である。他のブラウザの例として、"NETSCAPE NAVIGATOR"および"MOSAIC"などがあるが、これに限らない。例示したウェブページ104には、4つのリスト行要素を有するテーブルリスト140が組み込まれている。リスト行要素142は、テーブルリスト要素140が含む子ユーザインタフェース要素である。リスト行要素142は、テンプレート宣言(テンプレート宣言の一例として図6Aを参照)によって定義され、ラベル要素144(例えば、OrderIDを表す)および146(例えば、注文製品の量を表す)を含む2つの列と、テーブルリスト要素148を含む1つの列を有している。要素144、146、および148は、リスト行要素142によって含まれる子ユーザインタフェース要素として宣言される(ラベルおよびテーブルリスト宣言の例として図6Aを参照)。付加リスト行要素150、152および154もまたウェブページ104に示されている。
【0016】
図6Aの宣言に従って、ウェブページ104のユーザインタフェース要素に対応するサーバ側制御オブジェクトが2つのサーバ側データアレイ(例えば、MyOrderSystemオブジェクトを通じてサーバ側データベースアクセスに関連するサーバ側データテーブルMyOrdersおよびMyItems)にデータ結合される。一般には、サーバ側データアレイはサーバ側データ格納部と関連し(例えば、格納部からロードされ、かつ/または格納部に格納される)、制御オブジェクト階層内においてインデックスデータセット(例えば、データ行、またはデータオブジェクト)を含む。このようなデータセットは、例えば、あるテーブルデータ行のデータ値を表すことができるプロパティを有する。コラム148は、2つの列、すなわち、(1)結合されたItemsデータテーブルからの行インデックスの列、及び(2)Itemsデータテーブルからラベル(例えば、項目名)を含む3つのリスト行要素の列、の2つを有するサブテーブルリスト要素を表している。
【0017】
ブラウザ102は、HTTPレスポンス112においてウェブサーバ116からHTMLコードを受信ことができ、HTMLコードにより記述されたウェブページを表示する。ある実施形態を参照してHTMLについて説明するが、特に制限されるものではなく、SGML(Standard Generalized Markup Language)および、XMLベースのマークアップ言語であって、ポケットベルおよび携帯電話などの狭帯域無線装置の内容およびユーザインタフェースを特定するように設計されたWML(Wireless Markup Language)を含む他のオーサリング言語も本発明の範囲内であると考えられている。さらに、標準HTML3.2が、本明細書中に主に開示されているが、HTMLのいかなるバージョンも本発明の範囲内に含まれ得る。
【0018】
クライアント100とウェブサーバ116との通信は、HTTPリクエスト114およびHTTPレスポンス112の一連の処理を用いて行うことができる。ある実施形態を参照してHTTPを説明するが、特に制限されるものではなく、S−HTTPを含めた他のトランスポートプロトコルも本発明の範囲内であると考えられている。ウェブサーバ116において、HTTPパイプラインモジュール118が、HTTPリクエスト114を受信し、URLを解析し、リクエストを処理する適切なハンドラ120を呼び出す。本発明のある実施形態において、異なるタイプの資源を扱う複数のハンドラ120がウェブサーバ116に備わっている。
【0019】
例えば、URLがHTMLファイルのような静的なコンテンツ資源122を特定する場合、ハンドラ120は、静的コンテンツ資源122にアクセスし、HTTPパイプライン118を介して静的コンテンツ資源122をHTTPレスポンス112でクライアント100へ送信する。あるいは、本発明のある実施形態において、URLがASP+リソースのような動的コンテンツ資源124を特定する場合、ハンドラ120は、動的コンテンツ資源124にアクセスし、動的コンテンツ資源124のコンテンツを処理し、ウェブページ104用の結果HTMLコードを生成する。本発明のある実施形態において、結果HTMLコードは、標準HTML3.2コードを含む。一般に、動的コンテンツ資源は、クライアントに表示すべきウェブページを記述するオーサリング言語を動的に生成するのに用いることができるサーバ側宣言データ格納部(例えば、ASP+リソース)である。そして、ウェブページ用のHTMLコードは、HTTPパイプライン118を通過し、HTTPレスポンス112でクライアント100へ送られる。
【0020】
この処理の間、ハンドラ120はまた、開発労力を簡単化にするために予め開発された、あるいは第3者コードのライブラリにアクセスすることができる。このようなライブラリの1つがサーバ側クラス制御ライブラリ126であり、ここから、ハンドラ120は、ユーザインタフェース要素を処理しウェブページに表示する結果HTMLデータを生成するサーバ側制御オブジェクトを例示することができる。本発明のある実施形態において、1つ以上のサーバ側制御オブジェクトは、動的コンテンツファイル124に記述されたウェブページ上に、可視的にまたは隠して、1つ以上のユーザインタフェース要素にマッピングする。
【0021】
これに対し、第2のライブラリは、マイクロソフト社からの"ACTIVEX"コンポーネントを含むライブラリのようなクライアント側制御クラスライブラリ128である。"ACTIVEX"制御は、クライアントおよび他のコンポーネントとの対話の仕方において一定の標準に従うCOM(コンポーネントオブジェクトモデル)オブジェクトである。クライアント側"ACTIVEX"制御は、例えば、クライアントに自動的にダウンロードされ、クライアントのウェブブラウザによって実行処理され得るCOMベースのコンポーネントである。サーバ側ACTIVEXコンポーネント(図示せず)は、株価検索アプリケーションまたはデータベースコンポーネントのサーバ側機能性を提供するような多様なサーバ側機能を果たすためにサーバ上で実行され得るCOMベースのコンポーネントである。ACTIVEXについては、「ACTIVEXおよびOLEの理解」(デビッド・チャペル、マイクロソフトプレス、1996年)により詳細に記載されている。
【0022】
"ACTIVEX"制御とは対照的に、動的コンテンツ資源124に特定される本発明の実施形態のサーバ側制御オブジェクトは、クライアント上のウェブページに組み込まれるユーザインタフェース要素に論理的に対応する。サーバ側制御オブジェクトはまた、例えば、HTMLタグと所与のクライアント側"ACTIVEX"制御をリファレンスするロケータを含み得る有効なHTMLコードを生成することができる。ブラウザが、すでに格納システム内にクライアント側"ACTIVEX"制御用コードを有している場合は、クライアント上のウェブページ内で"ACTIVEX"制御を実行処理する。そうでなれば、ブラウザは、ロケータによって特定された資源から"ACTIVEX"制御用コードをダウンロードし、そして、クライアント上のウェブページ内で"ACTIVEX"制御を実行処理する。本発明の実施形態におけるサーバ側制御オブジェクトはまた、サーバ上で株価検索アプリケーションを実行するのに用いられるサーバ側"ACTIVEX"制御に対しイベントを立ち上げることができる。
【0023】
ハンドラ120はまた、ウェブサーバ116上または別のアクセス可能ウェブサーバ上で実行処理する1つ以上の非ユーザインタフェースサーバコンポーネント130にアクセスする。株価検索アプリケーションまたはデータベースコンポーネントのような非ユーザインタフェースサーバコンポーネント130は、ハンドラ120によって処理される動的コンテンツ資源124において参照され、またはそれに関連付けられる。動的コンテンツ資源124で宣言された制御オブジェクトによって立ち上げられたサーバ側イベントは、非ユーザインタフェースコンポーネント130の適切なメソッドを呼び出すサーバ側コードによって処理され得る。その結果、サーバ側制御オブジェクトによって提供される処理は、ウェブページのユーザインタフェース要素の処理および生成をカプセル化することによって非ユーザインタフェースサーバコンポ−ネント130のプログラミングを簡単にし、これにより、非ユーザインタフェースサーバコンポーネント130の開発者は、ユーザインタフェース問題ではなく、アプリケーション固有の機能の開発に集中することができる。
【0024】
本発明のある実施形態において、サーバ側制御オブジェクトのプロパティは、サーバ側データ格納部131内のプロパティとデータ結合されている。例えば、データ結合によって、ページ開発者はサーバ側制御オブジェクト階層内の制御オブジェクトのプロパティをサーバ側データベース内のデータ項目に関連付けることが可能になる。この処理の間、各制御オブジェクトは、データベース内のデータオブジェクトから関連するプロパティ値を取り出すことによって、そのデータ結合プロパティを更新する(サーバ側データ格納部からの一方向データ結合という)。あるいはまた、各制御オブジェクトは、制御オブジェクト内的プロパティ値を用いて、サーバ側データ格納部のプロパティを更新する(サーバ側データ格納部への一方向データ結合という)。この2つのタイプの一方向データ結合を組み合わせて、サーバ側制御オブジェクトとサーバ側データ格納部との間に二方向データ結合を提供することができる。
【0025】
図2は、本発明のある実施形態におけるサーバ側制御オブジェクトを用いてのクライアント側ユーザインタフェース要素の処理および生成処理のフローチャートを示す。送信処理200において、クライアントは、HTTPリクエストをサーバに送信する。HTTPリクエストは、ASP+リソースなどの資源を特定するURLを含む。受信処理202において、サーバは、HTTPリクエストを受信し、特定された資源を処理する適切なハンドラを呼び出す。ASP+リソースは、構文解析処理203で読み出される。作成処理204は、特定された動的コンテンツ資源(例えば、ASP+リソース)の内容に基づいてサーバ側制御オブジェクト階層を生成する。
【0026】
処理206において、制御オブジェクト階層のサーバ側制御オブジェクトは、ポストバックイベントハンドリング、ポストバックデータハンドリング、状態管理およびデータ結合のうちの1つ以上の処理を行う。ユーザインタフェース要素からのポストバックイベントおよびデータ(まとめて「ポストバック入力」)は、クライアントからサーバへと送られ処理される。ポストバックイベントは、特に制限されるものではなく、例えば、クライアント側ボタン要素からの「マウスクリック」イベントまたはサーバに送られるクライアント側テキストボックス要素からの「データ変化」イベントを含んでもよい。ポストバックデータは、例えば、これに限らないが、テキストボックス要素またはドロップダウンボックスから選ばれた項目のインデックスにユーザによって入力されたテキストを含んでもよい。
【0027】
処理208において、階層内の各サーバ側制御オブジェクトは、クライアント側ユーザインタフェース要素のウェブページでの表示のためのHTMLコードのようなデータを生成(またはレンダリング)するために呼び出される。用語「レンダリング」は、ユーザインタフェース上にグラフィックスを表示する処理を意味することがあるが、本明細書において「レンダリング」は、表示およびクライアント側機能のためのブラウザのようなクライアントアプリケーションによって解釈され得るオーサリング言語データの生成処理をも意味している。処理206およびレンダリング処理208のより詳細な説明は図6との関連で行われている。ある実施形態において、個々の制御オブジェクトにおけるrender()メソッドの呼び出しは、ツリートラバーサルシーケンスを用いて行われる。すなわち、ページオブジェクトのrender()メソッドの呼び出しは、階層内の適切なサーバ側制御オブジェクトにわたる再帰的な参照になる。適切な制御オブジェクトのrender()メソッドを呼び出す別の方法として、イベントシグナリングまたはオブジェクト登録手法などの方法を用いてもよい。括弧は、データ値と比較するなどのメソッドを示す「render()」ラベルを指定する。
【0028】
本発明のある実施形態において、個々のサーバ側制御オブジェクトの実際の作成は、サーバ側制御オブジェクトが処理206または208においてアクセスされる(ポストバック入力のハンドリング、状態のロード、制御オブジェクトからHTMLコードのレンダリングなど)まで遅らせてもよい。サーバ側制御オブジェクトが所与のリクエストのためにアクセスされることがない場合、制御オブジェクトの作成が遅れ、不要な制御オブジェクト作成処理を排除することによって、サーバ処理が最適化される。
【0029】
送信処理210において、HTMLコードをHTTPレスポンスでクライアントに送信する。受信処理214において、クライアントは、表示されるべき新たなウェブページに関連するHTMLコードを受信する。表示処理216において、クライアントシステムは、HTTPレスポンスから受け取ったHTMLコードに応じて新しいページのユーザインタフェース要素を組み入れる(例えば、表示する)。しかし、ユーザインタフェース要素の組み入れは、音声または触覚出力の提供、メモリへの読出しおよび書込み、スクリプト処理の制御などの非表示処理を含んでもよいことを理解すべきである。終了処理212において、サーバ側制御オブジェクト階層を終了する。本発明のある実施形態において、階層内サーバ側制御オブジェクトは、関連付けられたASP+リソースを参照するHTTPリクエストに応答して作成され、オーサリング言語データ(例えば、HTMLデータ)のレンダリングが終わると破壊される。別の実施形態において、処理212は、処理208の後、処理210の前に行ってもよい。
【0030】
図3は、本発明のある実施形態において用いるウェブサーバでのモジュールの一例を示す。ウェブサーバ300は、HTTPパイプライン304にHTTPリクエスト302を受け入れる。HTTPパイプライン304は、ウェブページ統計のロギング、ユーザ照合、ユーザアクセス権およびウェブページの出力キャッシュ化用モジュールなどの種々のモジュールを含んでもよい。ウェブサーバ300によって受信される各入力HTTPリクエスト302は、最終的には、IHTTPハンドラクラス(ハンドラ306として図示)の特定のインスタンスによって処理される。ハンドラ306は、URLリクエストを解析し適切なハンドラファクトリ(例えば、ページファクトリモジュール308)を呼び出す。
【0031】
図3において、ASP+リソース310に関連付けられたページファクトリモジュール308が呼び出され、ASP+リソース310のオブジェクトの例示および構成をハンドリングする。ある実施形態において、ASP+リソースは、ファイルに特定の接尾語(または".aspx"のようなファイル拡張部分)を指定することによって認識され得る。所与のASP+リソースに対するリクエストがまず、ページファクトリモジュール308によって受信されると、ページファクトリモジュール308は、ファイルシステムを検索して適切なファイル(例えば、.aspxファイル310)を得る。このファイルは、リクエストを処理するサーバによって後に解釈またはアクセスされ得るテキスト(例えば、オーサリング言語データ)または別のフォーマットでのデータ(例えば、バイトコードデータまたはコード化されたデータ)を含んでもよい。物理的なファイルが存在する場合、ページファクトリモジュール308は、ファイルを開き、そのファイルをメモリに読み出す。ファイルが見つからない場合、ページファクトリモジュール308は、適切な「ファイルが見つからない」というエラーメッセージを戻す。
【0032】
ASP+リソース310をメモリに読み出した後、ページファクトリモジュール308は、ファイル内容を処理し、ページのデータモデル(例えば、スクリプトブロックのリスト、ディレクティブ、静的テキスト領域、階層サーバ側制御オブジェクト、サーバ側制御プロパティなど)を構築する。データモデルは、ページベースのクラスを拡張させるCOM+(Component Object Model+)クラスのような新たなオブジェクトクラスのソースリストを生成するのに用いられる。ページベースクラスは、基本ページオブジェクトの構造、プロパティおよび機能を定義するコードを含んでいる。本発明のある実施形態において、次いで、ソースリストは、中間言語に動的にコンパイルされ、のちにプラットフォームに固有の命令 (例えば、X86,Alphaなど)に適時に(Just-In-Time)コンパイルされる。中間言語は、COM+ IL コード、Java バイトコード、Modula 3 コード、SmallTalk コードおよびVisual Basicコードなどの汎用またはカスタム指向言語コードを含んでもよい。別の実施形態において、中間言語処理を省き、固有の命令をソースリストまたはソースファイル(例えば、ASP+リソース310)から直接生成してもよい。制御クラスライブラリ312は、制御オブジェクト階層の生成に用いられる予め定義されたサーバ側制御クラスを得るためにページファクトリモジュール308によってアクセスされ得る。
【0033】
ページファクトリモジュール308は、図1のウェブページ104に相当するサーバ側制御オブジェクトであるページオブジェクト314を出力する。ページオブジェクト314およびその子オブジェクトが、制御オブジェクト階層316の一例である。他の制御オブジェクトの例もまた、本発明に従い考えることができ、カスタム制御オブジェクトと同様に、特に制限されるものではなく、表1のHTML制御に対応するオブジェクトも含んでいる。ページオブジェクト314は、図1のウェブページ104に論理的に対応し、サーバ上の他の制御オブジェクトと階層的に関連している。ある実施形態において、ページオブジェクトは、その子制御オブジェクトを階層的に含んでいるコンテナオブジェクトである。別の実施形態では、依存関係などの他の形態の階層関係を用いることができる。多数レベルの子オブジェクトを有するより複雑な制御オブジェクト階層において、1つの子オブジェクトが、他の子オブジェクトのコンテナオブジェクトであってもよい(例えば、テーブルリスト140は、リスト行要素142、150、152および154とその子要素のコンテナである)。これらのサーバ側制御オブジェクトは、協働してHTTPリクエスト302からの入力をハンドリングし、サーバ側制御オブジェクトの状態を管理し、データ結合を行い、クライアントの結果ウェブページのためにオーサリング言語データ(例えば、HTML)をレンダリングする。結果HTMLコードは、制御オブジェクト階層316からの出力であり、HTTPレスポンス324でクライアントに送信される。
【0034】
上記の実施形態において、制御オブジェクト階層316の制御オブジェクトは、サーバ300上で作成および実行され、各サーバ側制御オブジェクトは、クライアント上のユーザインタフェース要素と論理的に対応する。サーバ側制御オブジェクトはまた、協働して、HTTPリクエスト302からのポストバック入力をハンドリングし、サーバ側制御オブジェクトの状態を管理し、サーバ側データベースとのデータ結合を行い、クライアントでの結果ウェブページの表示に用いるオーサリング言語データ(例えば、HTMLコード)を生成する。結果オーサリング言語データは、サーバ側制御オブジェクト階層316から生成(すなわち、レンダリング)され、HTTPレスポンス324でクライアントに送信される。例えば、結果HTMLコードは、いかなる有効なHTML構成も具現化することができ、ACTIVEXタイプの制御、JAVAアプレット、スクリプトおよびその他、ブラウザによって処理されたとき、クライアント側ユーザインタフェース要素(例えば、制御ボタン、テキストボックスなど)を生み出すいかなるウェブ資源も参照することができる。
【0035】
ASP+リソース310でなされた宣言によって、サーバ側制御オブジェクトは、非ユーザインタフェースサーバコンポーネント330とクライアント側ユーザインタフェース要素との対話のために、1つ以上の非ユーザインタフェースサーバコンポーネント330にアクセスすることができる。例えば、ポストバック入力に応答して、サーバ側制御オブジェクトは、サーバ側イベントをそれらのイベント用に登録された非ユーザインタフェースサーバコンポーネントに対し立ち上げることができる。このように、非ユーザインタフェースサーバコンポーネント330は、ユーザとの対話を、ユーザインタフェース要素を介して、これらの要素を表示および処理するのに必要なコードをプログラミングすることなく行うことができる。
【0036】
1つ以上のサーバ側データ格納部331のプロパティは、サーバ側制御オブジェクトのプロパティにデータ結合することができる。データ結合の一形態をサポートするよう構成されたサーバ側制御オブジェクト階層の一例についての詳細な説明は、図7に関連して行われる。このデータ結合関係は、ASP+リソースにおいて宣言され、サーバ側制御オブジェクトをコンパイルし、ランタイム実行する間に確立される。
【0037】
要するに、本発明の実施形態は、クライアントに送信するHTMLコードを生成するためにサーバ上で作成および実行処理されるサーバ側制御オブジェクトを含む。HTMLコードは、例えば、いかなる有効なHTML構成も具現化することができ、ACTIVEXタイプの制御、JAVA アプレット、スクリプトならびにクライアントでのユーザインタフェースボタンおよび他のユーザインタフェース要素を生成する他のいかなるウェブ資源も参照することができる。クライアントでのユーザは、サーバ側制御オブジェクトに論理的に対応するこれらのユーザインタフェース要素と対話し、リクエストをサーバに送り返すことができる。サーバ側制御オブジェクトは、サーバ上で再作成され、クライアントにレスポンスとして送信すべき次のラウンドのHTMLコードを生成するように、ユーザインタフェース要素のデータ、イベントおよび他の特性を処理する。
【0038】
図4を参照すると、本発明の実施形態のコンピュータシステムの一例は、プロセッサユニット402、システムメモリ404およびシステムメモリ404を含む種々のシステムコンポーネントをプロセッサユニット400に接続するシステムバス406を含んでいる従来のコンピュータシステム400という形態の汎用コンピュータ装置を含んでいる。システムバス406は、メモリバスまたはメモリコントローラ、種々のバスアーキテクチャを用いるペリフェラルバスおよびローカルバスを含む幾つかのタイプのバス構造のいずれであってもよい。システムメモリは、再生専用メモリ(ROM)408およびランダムアクセスメモリ(RAM)410を含んでいる。コンピュータシステム400内の要素間での情報の転送を助ける基本ルーチンを含んでいる基本入力/出力システム412(BIOS)は、ROM408に格納されている。
【0039】
コンピュータシステム400は、さらに、ハードディスクの読み出しおよび書き込みを行うハードディスクドライブ412、着脱可能な磁気ディスク416の読出しおよび書込みを行う磁気ディスクドライブ414およびCD ROM、DVDまたは他の光学媒体のような着脱可能な光ディスク419の読出しおよび書込みを行う光ディスクドライブ418を含んでいる。ハードディスクドライブ412、磁気ディスクドライブ414および光学ディスクドライブ418は、それぞれ、ハードディスクドライブインタフェース420、磁気ディスクドライブインタフェース422および光ディスクドライブインタフェース424によってシステムバス406に接続されている。ドライブおよびその関連コンピュータ読み取り可能媒体が、コンピュータシステム400のコンピュータ読み取り可能命令、データ構造、プログラムおよび他のデータの不揮発性記憶部を提供している。
【0040】
本明細書に記載の上記環境例では、ハードディスク、着脱可能な磁気ディスク416および着脱可能な光ディスク419を用いているが、データ保存可能な他のタイプのコンピュータ読み取り可能媒体を上記システム例に用いることができる。上記動作環境例に用いることができるこれらの他のタイプのコンピュータ読み取り可能媒体は、例えば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌイ(Bernoulli)カートリッジ、ランダムアクセスメモリ(RAM)および再生専用メモリ(ROM)などがある。
【0041】
多数のプログラムモジュールが、ハードディスク、磁気ディスク416、光ディスク419、ROM408またはRAM410に格納され得、これらは、オペレーティングシステム426、1つ以上のアプリケーションプログラム428、他のプログラムモジュール430およびプログラムデータ432を含む。ユーザは、コマンドおよび情報をコンピュータシステム400にキーボード434およびマウス436または他のポインティング装置などの入力装置によって入力することができる。他の入力装置としては、例えば、マイクロフォン、ジョイステック、ゲームパッド、サテライトディッシュおよびスキャナなどがある。これらおよび他の入力装置は、システムバス406に接続されているシリアルポートインタフェース440を介して処理装置402に接続されていることが多い。しかし、これらの入力装置はまた、パラレルポート、ゲームポートまたはユニバーサルシリアルバス(USB)などの他のインタフェースによって接続されていてもよい。モニタ442または他のタイプの表示装置もまた、ビデオアダプタ444などのインタフェースを介してシステムバス406と接続している。モニタ442に加えて、コンピュータシステムは、典型的には、スピーカおよびプリンタなどの他の周辺出力装置(図示せず)を含む。
【0042】
コンピュータシステム400は、リモートコンピュータ446のような1つ以上のリモートコンピュータへの論理接続を用いたネットワーク化された環境で動作することができる。リモートコンピュータ446は、コンピュータシステム、サーバ、ルータ、ネットワークPC、ピア(peer)装置、または他の共通ネットワークノードであり得、典型的にコンピュータシステム400との関連で上述した要素の多くまたはすべてを含む。ネットワーク接続は、ローカルエリアネットワーク(LAN)448およびワイドエリアネットワーク(WAN)450を含む。このようなネットワーク環境は、オフィス、企業規模コンピュータネットワーク、イントラネットおよびインターネットにおいて珍しいものではない。
【0043】
LANネットワーク環境で用いるとき、コンピュータシステム400は、ネットワークインタフェースまたはアダプタ452を介してローカルネットワーク448に接続される。WANネットワーク環境で用いるとき、コンピュータシステム400は、典型的に、インターネットのようなワイドエリアネットワーク450による通信を確立するためのモデム454または他の手段を含む。モデム454は内蔵または外付けのいずれでもよく、シリアルポートインタフェース440を介してシステムバス406と接続されている。ネットワーク化された環境において、コンピュータシステム400に関連して述べたプログラムモジュールまたはその一部は、リモートメモリ記憶装置に記憶されてもよい。図示されたネットワーク接続は例であって、コンピュータ間の通信リンク確立のために他の手段を用いることができる。
【0044】
本発明の実施形態において、コンピュータ400は、ウェブサーバを表し、プロセッサ402が、記憶媒体416、412、414、418、419またはメモリ404のうち少なくとも1つに記憶されたASP+リソース上でページファクトリモジュールを実行処理する。HTTPレスポンスおよびリクエストは、クライアントコンピュータ446に接続されたLAN448により通信される。
【0045】
図5は、本発明のある実施形態におけるページオブジェクトおよび他の制御オブジェクトのサーバ側処理を表すプロセスフローチャートである。処理500において、ページオブジェクト構築部が、ページファクトリモジュール308によって呼び出される(図3参照)。その結果、ページオブジェクト(例えば、図3におけるページオブジェクト314を参照)は、クライアント上のウェブページユーザインタフェース要素に論理的に対応するように作成される。処理502において、ページファクトリモジュールは、クライアントから受け取ったHTTPリクエストの段階的な処理を始めるページオブジェクトのProcessRequestメンバ関数を呼び出す。本発明の一実施形態の第1の段階において、サーバ側作成処理(図示せず)は、ページオブジェクトの制御オブジェクト階層に含まれる下層サーバ側制御オブジェクトを作成する。すなわち、子制御オブジェクトの構築部がHTTPリクエスト処理の継続期間中、制御オブジェクトを作成するために繰り返し呼び出される。
【0046】
しかし、別の実施形態において、子制御オブジェクトの作成は、制御オブジェクトが所与の処理ステップ(例えば、ポストバックイベントのハンドリング、ポストバックデータのハンドリング、ビューステートのローディングおよび保存、データ結合の解析または対応するユーザインタフェース要素のHTMLコードのレンダリング)に必要とされるまで遅らせることができる。「制御オブジェクト作成を遅らせる」後者の実施形態は、不必要なCPUおよびメモリの利用を減らすことができるので最適である。例えば、クライアントから受け取ったユーザ入力イベントが、全く異なるウェブページの作成ということになる場合がある。この場合、直ちに制御オブジェクト階層を終了させ、新たなページの新たな異なる制御オブジェクト階層を例示することになるイベントを処理するためだけに、以前のページの制御オブジェクト階層全体を例示する必要はない。
【0047】
ページオブジェクトのProcessRequestメソッドのサーバ呼び出しに応答して、処理504〜520は、所与のHTTPリクエストのデータなどに応じ、ページオブジェクトおよび個々の下層制御オブジェクトによって実行処理することができる。本発明のある実施形態において処理504〜520を図5の順序で各個々のオブジェクトに対し行う。しかし、1つのオブジェクトに対する所与の処理は、HTTPリクエストによっては、別のオブジェクトの所与の処理に関して順番に行われなかったり、全く処理が行われないこともある。例えば、第1のオブジェクトは、初期化処理504およびそのロード処理506を行い、ポストバックデータ処理508を開始し、その後、遅れた制御オブジェクト作成により下層制御オブジェクトが、それ自体の初期化処理504およびロード処理506を行う。ページオブジェクトおよび下層制御オブジェクトによる処理の順番は、これには限らないが、HTTPリクエストにおけるデータの性質、制御オブジェクト階層の構成、制御オブジェクトの現在の状態および制御オブジェクト作成が遅れたか否かに依存する。
【0048】
初期化処理504は、動的コンテンツ資源における初期化に関する任意のサーバ側コードを実行処理することによって制御オブジェクトが作成された後、制御オブジェクトを初期化する。このようにして、各サーバ側制御オブジェクトは、動的コンテンツ資源で宣言された特定のサーバ側機能でカスタマイズされ得る。本発明のある実施形態において、動的コンテンツコードは、サーバ上のASP+リソースでページ開発者によって宣言されたベースページ制御クラスをカスタマイズまたは拡張するものである。ASP+リソースがコンパイルされると、宣言されたコードは、適切な初期コード(例えば、ページオブジェクトおよび下層制御オブジェクトのInit()メソッド)に含まれている。初期化処理504は、このコードを実行処理して、ページベースクラスおよび下層制御オブジェクトのベースクラスをカスタマイズまたは拡張する。
【0049】
本発明のある実施形態において、サーバ側制御オブジェクトの状態管理は、サーバ側制御オブジェクトを以前の状態に戻すことによってクライアント・サーバシステムの無状態モデルを収納するために搬送可能状態構造を用いるロード処理506および保存処理516においてサポートされる。ある実施形態では、状態は、一対のHTTPリクエスト/レスポンスの隠れた1つ以上のHTMLフィールドでまたな別の搬送可能状態構造でサーバを往復するが、他の搬送可能状態構造も本発明の範囲内であると考えられる。
【0050】
クライアントとサーバ間の現在のページに関する所与のリクエストおよびレスポンスによる一連の処理において、1つ以上の制御オブジェクトの状態は、先のリクエストの処理後に保存処理516によって搬送可能状態構造に記録される。本発明のある実施形態において、階層情報またはサーバが適切な制御オブジェクトと所与の状態とを関連付けることを可能にする制御オブジェクト識別子を含む追加の状態情報もまた、搬送可能状態構造に含まれる。次のHTTPリクエストにおいて、状態情報は、搬送可能状態構造でサーバに戻される。サーバは、受信した搬送可能状態構造から状態情報を抽出し、状態データを制御オブジェクト階層内の適切な制御オブジェクトにロードし、各制御オブジェクトを先のHTTPレスポンス以前に存在したような状態に戻す。現在のリクエストに対する処理後、1つ以上のサーバ側制御オブジェクトの状態は、再度保存処理516によって搬送可能状態構造に記録され、次のHTTPレスポンスで搬送可能状態構造をクライアントに戻す。
【0051】
ロード処理506の結果、各サーバ側制御オブジェクトを先のHTTPリクエスト以前の状態と同じ状態にする。例えば、テキストボックス制御オブジェクトが、先のHTTPレスポンス以前に"JDoe"と同等のプロパティ値を含む場合、テキストストリング"JDoe"をそのプロパティ値にロードすることなどによって、ロード処理506は、同じ制御オブジェクトを先の状態に戻す。さらに、所与のオブジェクトの状態が記憶され回復されたかどうかについても構成可能である。
【0052】
本発明のある実施形態を要約すると、1つ以上のサーバ側制御オブジェクトの状態が処理後「保存」される。保存された状態情報は、レスポンスによりクライアントに送信される。クライアントは、次のレスポンスで保存された状態情報をサーバ側に戻す。サーバは、階層の状態が以前の状態に戻るように、新たに例示されたサーバ側制御オブジェクト階層に状態情報をロードする。
【0053】
別の実施形態では、サーバ上、またはサーバからクライアント、そしてサーバへ戻るという往復の間、サーバによってアクセス可能な幾つかの他のウェブロケーションに状態情報を保持できる。クライアントリクエストをサーバが受信した後、この状態情報は、サーバによって取り出され、制御オブジェクト階層内の適切なサーバ側制御オブジェクトにロードされ得る。
【0054】
処理508において、HTTPリクエストから受け取ったポストバックデータが処理される。ポストバックデータは、対になったキー値、階層表示(例えば、XML)またはRDF(Resource Description Framework)のような他のデータ表示でのHTTPリクエストのペイロードに含まれ得る。処理508は、ペイロードを構文解析してターゲットサーバ側制御オブジェクトの一意の識別子を識別する。識別子(例えば、"page:tablelist1:listrow2:label1")を見つけ、ターゲットサーバ側制御オブジェクトが制御オブジェクト階層に存在する場合、対応するポストバックデータがその制御オブジェクトへと渡される。例えば、図1を参照すると、リスト行142および列144のデータ項目に関連する一意の識別子および対応データは、HTTPリクエスト114のペイロードでウェブサーバ116へ送られる。処理508はHTTPリクエスト114のペイロードを構文解析し、テーブルリスト140の一意の識別子とその関連値(すなわち、リスト行142のような子ユーザインタフェース要素のHTMLコード)を得る。それから処理508は、リスト行142の一意の識別子を解析し、対応するサーバ側制御オブジェクトを識別およびトラバースし、処理するターゲット制御オブジェクトにポストバック値を渡す。
【0055】
ロード処理506に関して説明したように、サーバ側制御オブジェクトのプロパティ値は、以前の状態に戻され得る。ポストバックデータを受け取ると、サーバ側制御オブジェクトは、渡されたポストバック値が対応する先のプロパティ値を変化させたかどうかを判断する。変化した場合には、関連制御オブジェクトのデータ変化を示す変化リストにその変化をロギングする。すべてのポストバックデータが制御オブジェクト階層内で処理された後、制御オブジェクトメソッドが呼び出され、サーバ上で起動している株価検索アプリケーションのような1つ以上の非ユーザインタフェースサーバコンポーネントに対し、1つ以上のポストデータ変化イベントを立ち上げ得る。ポストバックデータ変化イベントは、例えば、ポストバックデータがサーバ側制御オブジェクトのプロパティを変化させたということを示しているイベントである。例示的な実施形態において、このようなイベントは、システム提供イベント待ち行列に送られ、イベントを処理するよう登録されたサーバ側コードを呼び出すことができる。次いで、サーバ側コードは、非ユーザインタフェースサーバコンポーネントのメソッドを呼び出すことができる。このように、サーバ側非ユーザインタフェースサーバコンポーネントは、サーバ側制御オブジェクトのデータの変化によってトリガされたイベントに応答することができる。アプリケーション提供イベント待ち行列、ポーリング、および処理割込みを用いることを含む、イベントを実行する別の方法もまた本発明の範囲内と考えることができる。
【0056】
処理510において、ポストバックイベントをハンドリングする。ポストバックイベントは、HTTPリクエストのペイロードで通信される。処理510は、そのイベントが向けられているサーバ側制御オブジェクトを識別する特定のイベントターゲット(例えば、本発明のある実施形態では、"#EVENTTARGET"とラベル付けされている)を構文解析する。さらに、処理510は、探し当てたイベント引数がある場合はそれを構文解析し、イベント引数(例えば、本発明のある実施形態では、"#EVENTARGUMENT"とラベル付けされている)を特定されたサーバ側制御オブジェクトに与える。制御オブジェクトは、動的コンテンツ資源に関連する非ユーザインタフェースサーバコンポーネントによって処理するイベントを立ち上げる。
【0057】
処理512は、サーバ側制御オブジェクトとサーバがアクセス可能な1つ以上のサーバ側データベースとのデータ結合関係を解明し、これにより、データベース値で制御オブジェクトプロパティを更新し、かつ/または、制御オブジェクトプロパティの値でデータベースフィールドを更新する。本発明のある実施形態では、サーバ側制御オブジェクトのプロパティは、サーバ側アプリケーションデータベースの表のような親データ結合コンテナのプロパティと関連付けられ(またはデータ結合され)得る。データ結合処理512の間に、ページフレームワークは、対応する親データ結合コンテナプロパティの値を有するデータ結合された制御オブジェクトプロパティを更新することができる。このように、次のレスポンスにおけるウェブページ上のユーザインタフェース要素は、更新されたプロパティ値を正確に反映する。なぜなら、ユーザインタフェース要素が対応する制御オブジェクトプロパティは、データ結合処理512の間に、自動的に更新されたからである。同様に、制御オブジェクトプロパティはまた、親データ結合コンテナフィールドに更新され得、これにより、サーバ側制御オブジェクトからのポストバック入力でサーバ側アプリケーションデータベースを更新する。
【0058】
所与のサーバ制御オブジェクトと所与のデータソース(例えば、サーバ側データテーブル)とのデータ結合関係は、ASP+リソースにおいて宣言される(例えば、図6Aのライン14を参照)。制御オブジェクト階層において、データ結合関係は、データテーブルおよびサーバ側制御オブジェクトのプロパティが結合されているデータテーブルのプロパティを識別する。データ結合関係はまた二方向であり得るが、これは、(1)サーバ側データテーブルのプロパティ値がサーバ側制御オブジェクトの結合プロパティにロードされ得、かつ(2)サーバ側制御オブジェクトのプロパティ値がサーバ側データテーブルの結合プロパティにロードされ得るということを意味している。データ結合処理512の後、すべてのサーバ側制御オブジェクトは、サーバ側データテーブルから適切に更新されたデータ結合プロパティ値を正確に反映する。
【0059】
処理514は、制御オブジェクト状態が保存され出力がレンダリングされる以前に実行処理され得る多数の更新処理を行う。処理516は、制御オブジェクト階層内の1つ以上の制御オブジェクトから状態情報(すなわち、ビューステート)を要求し、状態情報を格納し、HTTPレスポンスペイロードでクライアントへ送られる搬送可能状態構造に挿入する。例えば、“grid”制御オブジェクトが、次のHTTPリクエスト(すなわち、処理506)の後この状態に戻ることができるように、“grid”制御オブジェクトは、値のリストの現在のインデックスページを保存する。上記のように、ビューステート情報は、クライアントによる次のアクション以前の制御オブジェクト階層の状態を表す。ビューステート情報が戻ってくると、それは、制御オブジェクト階層を、クライアントポストバック入力処理またはデータ結合以前の先の状態にするのに用いられる。
【0060】
レンダリング処理518は、HTTPレスポンスでクライアントへ送信する適切なオーサリング言語出力(例えば、HTMLデータ)を生成する。レンダリングは、すべてのサーバ側制御オブジェクトのトップダウン階層ツリーウォークおよび埋め込まれたレンダリングコードにより行われる。処理520は、任意の最終のクリーンアップ作業(例えば、ファイルを閉じたりデータベースの接続)を行い、制御オブジェクト階層を終了させる。次いで、処理は502に戻り、処理522を行い、そこでページオブジェクトは、その破壊部を呼び出すことによって終了する。
【0061】
図6Aは、本発明の実施形態においてサーバにデータ結合制御オブジェクトを宣言する動的コンテンツ資源(例えば、ASP+リソース)の一例を示す。ライン1は、HTMLファイルの開始タグである<html>をリテラルとして含む。ライン2から8までは、ローカルの"MyOrders"および"MyItems"のデータアレイがポピュレートするコードのコード宣言ブロックを表す。具体的には、ライン2は、"runat=server"属性および値によってサーバ側のコードをサーバ側スクリプトとして宣言する。このスクリプトは、ページオブジェクトの図5のロード処理506を無効にする。ライン3から5は、サーバ側制御オブジェクトのネームスペース内でアクセス可能なパブリックオブジェクトを宣言する。ライン3は、パブリックオブジェクトである"OrderSystem"タイプの"MyOrderSystem"を宣言し、これがライン7で使用され、ライン4においてパブリックデータアレイオブジェクトの"MyOrders"として宣言されたデータアレイをサーバ側データ格納部から取り出す。ライン8において、パブリックオブジェクトの"MyOrderSystem"はまた、ライン5におけるパブリックデータアレイオブジェクトの"MyItems"として宣言されたデータアレイをサーバ側データ格納部から取り出すのにも用いられる。
【0062】
ライン11は、HTMLファイルの本文の開始タグ<body>であるリテラルを含む。ライン12は、ウェブページ上に表示をするヘッダ"H1"を規定するリテラルHTMLコードを含む。ライン13は、サーバ側フォーム制御オブジェクトの宣言を含む。ライン14は、“Page.MyOrders"に等しいデータ結合データソースプロパティを有するサーバ側テーブルリスト制御オブジェクトを宣言する。したがって、MyOrdersデータテーブルは、テーブルリスト制御オブジェクトおよびその下層のデータソースとして宣言されるのである。
【0063】
ライン15から24のインラインテンプレート宣言は、ライン14で宣言されたテーブルリスト制御オブジェクトの1つ以上の子制御オブジェクトを宣言する。テンプレート宣言は、構文解析時に解釈されて、適切なITemplateインタフェースインスタンスを繰り返し制御オブジェクト(例えば、テーブルリスト制御オブジェクト)における同名のプロパティへ動的に結合する。テーブルリスト制御オブジェクト(すなわち、繰り返し制御オブジェクト)は、実行時にITemplateインスタンスを使用して、適切なテンプレート制御クラスの新たな0からNのインスタンスを作成および初期化する。作成された新たなインスタンスの数は、データソースの対応するデータセット(例えば、データ行)の数によって制御することができる。
【0064】
例えば、ライン15から24は、ライン14において宣言されたテーブルリスト制御オブジェクトのリスト行制御オブジェクトに対し、"itemtemplate"というテンプレートを宣言する。テンプレート制御オブジェクトのパラメータはライン16から22において宣言され、OrderIDラベル制御オブジェクト、Quantityラベル制御オブジェクト、およびその他のテーブルリスト制御オブジェクトを含むリスト行制御オブジェクトを示す。ライン14において宣言されたテーブルリスト制御オブジェクトは、データテーブルMyOrdersのデータセットを繰り返し参照し、各データセットに対して下層リスト行制御オブジェクトを作成する。
【0065】
itemtemplateテンプレートに対応するリスト行制御オブジェクトは、制御オブジェクト開発者によってIBindingContainerインスタンスとして開発され、したがって"結合コンテナ"と見なされる。図5のロード処理506の間に、MyOrdersデータテーブルはライン7のコードによってMyOrderSystemからポピュレートされる。例えば、MyOrdersSystemオブジェクトにより提供されたデータは、注文および製品データを含むサーバ側データベースから抽出される。その後、テーブルリスト制御オブジェクトは、データテーブルMyOrdersの各データセットに対し結合コンテナとしてリスト行制御オブジェクトを作成する。
【0066】
ライン16において宣言されたOrderID制御オブジェクトは、MyOrdersデータテーブル内のデータセットのOrderIDプロパティに結合されている。OrderIDラベル制御オブジェクトのPropertyBindingオブジェクトによって定義された、OrderIDラベル制御オブジェクトとリスト行制御オブジェクトとの階層データ結合関係は、ライン20において宣言されたラベル制御オブジェクトのTextプロパティが、"OrderID"として識別されるデータ項目プロパティに結合されているデータであることを確立する。階層データ結合関係はまた、データ項目プロパティは制御オブジェクトの結合コンテナ、すなわちMyOrdersデータテーブルのプロパティであることを特定する。結合されてOrderID制御オブジェクトとなるMyOrdersデータテーブルのプロパティはデータ項目ではあるが、サーバ側データアレイ(例えば、データテーブルあるいは別のタイプのデータオブジェクト)のいかなるパブリックプロパティも、行インデックス、データ値サイズ、データ値タイプなどを含むサーバ側制御オブジェクトのプロパティに結合することができる。
【0067】
ライン17において宣言されたQuantity制御オブジェクトは、MyOrdersデータテーブルにおけるデータセットのQuantityプロパティに結合されている。Quantityラベル制御オブジェクトのPropertyBindingオブジェクトによって定義された、Quantityラベル制御オブジェクトとリスト行制御オブジェクトとの階層データ結合関係は、ライン17において宣言されたラベル制御オブジェクトのTextプロパティが、"Quantity"として識別されるデータ項目プロパティに結合されているデータであることを確立する。階層データ結合関係はまた、データ項目プロパティがQuantityラベル制御オブジェクトの結合コンテナのプロパティ、すなわちMyOrdersデータテーブルのプロパティであることを特定する。結合されてQuantityラベル制御オブジェクトとなるMyOrdersデータテーブルのプロパティはデータ項目ではあるが、サーバ側データアレイ(例えば、データテーブルあるいは別のタイプのデータオブジェクト)のいかなるパブリックプロパティも、データセットインデックス、データ値サイズ、データ値タイプなどを含むサーバ側制御オブジェクトのプロパティに結合されてもよい。
【0068】
ライン18は、"Page.MyItems"に等しいデータ結合データソースプロパティを有するサーバ側テーブルリスト制御オブジェクトの宣言を含む。したがって、MyItemsは、テーブルリスト制御オブジェクトおよびその下層のデータソースとして宣言される。ライン19から22のインラインテンプレート宣言は、ライン18において宣言されたテーブルリスト制御オブジェクトの1つ以上の子制御オブジェクトを宣言する。テーブルリスト制御オブジェクト(すなわち、別の繰り返し制御オブジェクト)は、インラインテンプレート宣言に関連するテンプレートインスタンスを用いて、適切なテンプレート制御クラスの0からMの新たなインスタンスを作成および初期化する。作成された新たなインスタンスの数は、データソースにおける対応するデータセットの数によって制御することができる。
【0069】
テンプレート制御オブジェクトのパラメータは、Indexラベル(すなわち、所与のデータセットの順序インデックスに対応する)およびデータソースからデータ項目プロパティのテキストを表示するItemラベルを含むリスト行制御オブジェクトを示しているライン20から21において定義される。データテーブルMyItemsの各データセットに対し、ライン18で宣言されたテーブルリスト制御オブジェクト下でリスト行制御オブジェクトが作成される。ファイル600における残りのラインは、ファイル内の入れ子の宣言を閉じる終了タグを含む。
【0070】
ASP+リソース600は、本発明のある実施形態において、一方向データ結合(すなわち、サーバ側データテーブルから制御オブジェクト階層へデータを送信すること)を実行するための宣言およびサーバ側スクリプティングを示す。また別の実施形態においては、反対方向の一方向データ結合(すなわち、制御オブジェクト階層からサーバ側データテーブルへデータを送信すること)あるいは二方向データ結合(すなわち、両方向にデータを送信すること)を宣言することができる。
【0071】
第1のタイプの一方向データ結合(すなわち、制御オブジェクト方向へ)を実行するために、ライン7におけるコードはLoad()サブルーチンを無効にし、例えば、MyOrderSystemデータテーブルからの注文のスナップショットデータアレイをローカルのMyOrdersデータアレイ(すなわち、上述の第1のタイプの一方向データ結合)へロードする。その後、データ結合段階の間に、サーバ側制御オブジェクトのプロパティはライン14、16、17、18、20および21のデータ結合ステートメントに従って、ローカルのMyOrdersデータアレイからの値から更新することができる。
【0072】
第2のタイプの一方向データ結合(すなわち、制御オブジェクトから)を実行するために、ページ開発者はページオブジェクトのSave()サブルーチンを無効にすることができる(図5の保存処理516を参照)。それ以前に、データ結合段階において、ローカルのMyOrdersおよびMyItemsデータアレイは、ライン14、16、17、18、20および21のデータ結合ステートメントに従って、サーバ側制御オブジェクトプロパティからの値を用いて更新されている。その後、無効にされたSave()サブルーチンは、ローカルデータアレイの値をMyOrderSystemオブジェクトのデータテーブルにロードする。ページオブジェクトのSave()サブルーチンを無効にするコード宣言ブロックの一例は、図6BのASP+リソース602におけるライン6から9に示されている。このタイプの一方向データ結合は、例えば、注文をサーバ側データベースにロードするのに用いることができる。二方向データ結合を宣言するために、ページ開発者はページオブジェクトのLoad()およびSave()サブルーチンの両方を無効にすることができる。
【0073】
図7は、本発明の一実施形態において、図6Aの動的コンテンツ資源の一例(例えば、ASP+リソース)を処理した結果の制御オブジェクト階層の一部を示したものである。最上レベルのページ制御オブジェクトおよび種々のリテラル制御オブジェクトは、制御オブジェクト階層700から省略されている。図6Aのライン11から開始するフォーム宣言に対応するフォーム制御オブジェクト702はテーブルリスト制御オブジェクト704を含む。テーブルリスト制御オブジェクト704は、図6Aのライン12から開始して宣言され、MyOrdersデータテーブルに等しいデータ結合プロパティを有することになる。
【0074】
テーブルリスト制御オブジェクト704は、リスト行制御オブジェクト706から708(すなわち、ListRow0からListRowNまで)を含む。このレベルでの制御オブジェクト階層におけるリスト行制御オブジェクトの実際の数は、MyOrdersデータテーブル内のデータセットの数に依存している。各リスト行制御オブジェクトの構成は、図6Aのライン13で開始する項目テンプレート宣言によって定義される。各リスト行制御オブジェクトのデータ結合関係は、各リスト行制御オブジェクトの結合コンテナ(すなわち、テーブルリスト制御オブジェクト704)のデータソースに関連して定義される。ある実施形態において、制御オブジェクト結合コンテナは、IBindingContainerインタフェースをサポートする制御オブジェクト階層においてもっとも近いところにあるより高いレベルの制御オブジェクトである。
【0075】
図6Aのライン14および15の宣言に対応しているラベル制御オブジェクト710および712は、結合コンテナリスト行オブジェクト706に含まれている。ラベル制御オブジェクト710および712のデータ結合関係は、MyOrdersデータテーブルのデータセットにデータ結合している結合コンテナリスト行制御オブジェクト706に関連して定義される。
【0076】
図6Aのライン16における宣言に対応するテーブルリスト制御オブジェクト714もまた、結合コンテナリスト行制御オブジェクト706に含まれている。テーブルリスト制御オブジェクト714は、サブデータテーブルのMyOrders. MyIngredients.に結合したデータとして宣言される結合コンテナである。テーブルリスト制御オブジェクト714は、サブデータテーブルMyOrders. MyIngredients.のデータセットに対応しているリスト行制御オブジェクト716から718(ListRow0からListRowNまで)を含む。リスト行制御オブジェクト716から718までの各々は、図6Aのライン19から開始するテンプレート宣言によって定義される。リスト行制御オブジェクト716から718のデータ結合関係は、結合コンテナテーブルリスト制御オブジェクト714に関連して定義される。
【0077】
リスト行制御オブジェクト716から718までの各々は、ラベル制御オブジェクト(例えば、720および722)を含む。例えば、ラベル制御オブジェクト720は、図6Aのライン20においてサブデータテーブルMyOrders. MyIngredientsのデータセットのインデックスフィールドにデータ結合したものとして宣言され、かつラベル制御オブジェクト722は、図6Aのライン21においてサブデータテーブルMyOrders.MyIngredientsのIngredientsデータ項目にデータ結合したものとして宣言される。Ingredientsデータ項目のデータソースを判断するために、ラベル制御オブジェクト720および722のプロパティは、より高いレベルの階層内においてもっとも近い結合コンテナ(すなわち、リスト行制御オブジェクト716のような、IBindingContainerインスタンスである制御オブジェクト)へのリファレンスを戻す。
【0078】
リスト行制御オブジェクト708以下の階層は、同一のテンプレート宣言によって定義されるため、リスト行制御オブジェクト706以下の階層と同じ構成に従う。この階層は、ラベル制御オブジェクト730、ラベル制御オブジェクト734およびテーブルリスト制御オブジェクト732を含む第1のレベルを含んでいる。テーブルリスト制御オブジェクト732より下の、他のレベルの階層には、0からNのリスト行制御オブジェクト736から738が含まれる。リスト行制御オブジェクト736から738の各々は、対応するテンプレート宣言によって定義されるようなラベル制御オブジェクトを含む(ラベル制御オブジェクト742、744、746および748を参照)。
【0079】
図8は、本発明の一実施形態におけるサーバ側制御クラスの一例の表記を表している。サーバ側制御クラスは、本発明のある実施形態におけるすべてのサーバ側制御オブジェクトに共通のメソッド、プロパティおよびイベントを定義している。より具体的な制御クラス(例えば、ウェブページでのクライアント側ボタンに対応するサーバ側ボタン制御オブジェクト)は、この制御クラスから派生している。制御クラス800は、プロパティ802およびメソッド804を格納するメモリを含むものとして示されている。データメンバとメソッドとの組み合わせが異なる他の制御クラスの実施形態もまた、本発明の範囲内で考えられる。
【0080】
示された実施形態において、プロパティ802およびメソッド804はパブリックである。プロパティ"ID"は、制御オブジェクト識別子を示している読み取りおよび書き込み可能なストリング値である。プロパティ"Visible"は、対応しているクライアント側ユーザインタフェース要素のオーサリング言語データをレンダリングすべきかどうかを示す読み取りおよび書き込み可能なブーリアン値である。プロパティ"MaintainState"は、制御オブジェクトが、現在のページリクエストの終了時に(すなわち、図5の保存処理516へのレスポンスで)そのビューステート(およびその子オブジェクトのビューステート)を保存すべきかどうかを示している読み取りおよび書き込み可能なブーリアン値である。プロパティ"Parent"は、制御オブジェクト階層の現在の制御オブジェクトを関連する制御コンテナオブジェクトへの読み取り可能なリファレンスである。プロパティ"Page"は、現在の制御オブジェクトがホストされているルートページオブジェクトへの読み取り可能なリファレンスである。プロパティ"Form"は、現在の制御オブジェクトがホストされているフォーム制御オブジェクトへの読み取り可能なリファレンスである。プロパティ"Trace"は、開発者のトレースログの書きこみを可能にするトレースコンテキストへの読み取り可能なリファレンスである。プロパティ"BindingContainer"は、制御オブジェクトの直接データ結合コンテナへの読み取り可能なリファレンスである。プロパティ"Bindings"は、制御オブジェクトのデータ結合連関の集合へのリファレンスである。
【0081】
メソッド804は、リクエストの処理および制御オブジェクトのデータメンバへのアクセス方法を含む。ある実施形態において、メソッドは、制御オブジェクトのメモリスペースに格納されるポインタによって参照される。この参照技術はまた、コンテナ制御オブジェクト、制御コレクションオブジェクト、およびページオブジェクトを含む他のサーバ側オブジェクトの実施形態においても用いられる。メソッド"Init()"は、子制御オブジェクトが作成された後、これらを初期化するのに用いられる(図5の処理504を参照)。メソッド"Load()"は、先のHTTPリクエストからビューステート情報を回復するのに用いられる(図5の処理506を参照)。メソッド"Save()"は、後のHTTPリクエストで用いるビューステート情報を保存するのに用いられる(図5の処理516を参照)。メソッド"PreRender()"は、ビューステートの保存およびコンテンツのレンダリングに先立って必要なプレレンダリングステップを行うのに用いられる(図5の処理514を参照)。メソッド"Render(TextWriter output)"は、現在の制御オブジェクトに対応するユーザインタフェース要素のオーサリング言語コードを出力するのに用いられる(図5の処理518を参照)。コードは、"Output"パラメータでこのコードに渡されたTextWriter Output Screenに出力される。メソッド"Dispose()"は、制御オブジェクトを終了する前に最終的なクリーンアップ作業を行うのに用いられる(図5の処理520を参照)。
【0082】
メソッド"GetUniqueID()"は、現在の制御オブジェクトの一意の、階層的に認定されたストリング識別子を得る。メソッド"GetControlWithID(String id)"は、与えられた識別子("id")を有する直接の子制御オブジェクトへのリファレンスを戻す。メソッド"GetControlWithUniqueID(String id)"は、一意の階層識別子("id")を有する子制御オブジェクトへのリファレンスを戻す。
【0083】
メソッド"PushControlPropertyTwoBindingContainer(String prop Name)"は、プッシュモジュールの一例であり、ポストバック値がサーバ側制御オブジェクト内で変化すると、ポストバックデータから二方向のデータ結合をする結合コンテナを更新するのに用いられる。メソッド"PushBindingContainer PropertyTwoControl(String prop Name)"は、別のプッシュモジュールの一例であり、現在の結合コンテナ値を有するサーバ側制御オブジェクトプロパティを更新するのに用いられる。メソッド"HasBindings()"は、制御オブジェクトが結合連関を有しているかどうかを示しているブーリアン値を戻す。これらのメソッドは、サーバ側制御オブジェクトのプロパティとサーバ側データ格納部に関連しているサーバ側データアレイにおけるプロパティとの結合関係を解明するのに用いられる(図5のデータ結合処理512を参照)。
【0084】
図9は、本発明のある実施形態における、サーバ側制御オブジェクトのプロパティをサーバ側データアレイのプロパティにデータ結合させる処理のフローチャートを示す。図9に示された処理は、図5に示した1つ以上の処理において実行することができる。例えば、本発明のある実施形態においては、処理900および902は、作成処理または初期化処理504の間に実行し、かつ、処理904はロード処理506の間に実行し、その結果データテーブルは処理906におけるテーブルリスト制御オブジェクトのプロパティとして格納される。ポストバック入力プロセス処理508および510、またはデータ結合処理512を行なっている間にテーブルリスト制御オブジェクトあるいはその子制御オブジェクトがアクセスされる時は、データテーブルの構成に従って、処理908、910、912および914が実行されて結合コンテナおよびその子を含むように階層が拡張される。処理916、918、920および922は、図5のデータ結合処理512の間に実行し、かつ、処理924は図5の保存処理の間に実行する。上述の処理対応関係は、本発明のある実施形態に用いられているが、他の実施形態では、図5および9の処理の順序を入れ替えたり並べ替えたりすることができる。
【0085】
図9の個々の処理については、ページがサーバ側データベースからの一方向データ結合をサポートしている場合、あるいはサーバ側データベースと制御オブジェクト階層との間に二方向データ結合をサポートしている場合、処理900は、COM+リフレクションの機能を用いて、サーバ側データベースの一部からローカルのデータテーブル(すなわち、データアレイ)をロードする。処理902は、データテーブルをテーブルリスト制御オブジェクトのデータソースとして関連付ける。ある実施形態において、この関連付けは、テーブルリスト制御オブジェクトの宣言において特定されたデータ結合プロパティによって遂行される(図6Aのライン14を参照)。処理904は、制御オブジェクト階層中にテーブルリスト制御オブジェクトを作成する。処理906は、データテーブルをテーブルリスト制御オブジェクトのプロパティとして格納する。
【0086】
処理908において、テーブルリスト制御オブジェクトはデータテーブルの各データセットに対し繰り返し参照する。探知した各データセットに対し、関連するテンプレート宣言に基づいて、テーブルリスト制御オブジェクトは結合コンテナ制御オブジェクト(例えば、リスト行制御オブジェクト)を作成する。各結合コンテナ制御オブジェクトは、テーブルリスト制御オブジェクトの子として扱われる。処理910は、データソース(たとえば、"MyOrders.Row(1)")のデータセットと等しくなるように結合コンテナ制御オブジェクトのデータ結合プロパティを設定することにより、各結合コンテナ制御オブジェクトをデータテーブルのデータセットに関連させる。
【0087】
処理912において、各結合コンテナ制御オブジェクトは、データソースの結合コンテナ対応データセットのプロパティに対応する下層制御オブジェクトを作成する。あるいは、各結合コンテナ制御オブジェクトは子制御オブジェクトを作成するが、それは最終的に、データソースの結合コンテナ対応データセットのプロパティに対応する下層制御オブジェクトを作成することになる。処理914は、データソースの対応データセットのプロパティにおいて、下層制御オブジェクトのプロパティ間の結合関係を確立する。この結合関係は、下層制御オブジェクトのプロパティに格納されたPropertyBindingオブジェクトによって定義することができる。
【0088】
決定処理916は、制御オブジェクトプロパティからのデータが、対応する結合コンテナプロパティに送信されるべきかどうかを探知する。送信されるべきと探知した場合、処理918は下層制御オブジェクト内のPushControl PropertyToBindingContainer()メソッドを呼び出して、データを結合コンテナに送信する。その後、手順は決定処理920に進む。あるいはまた、決定処理916が、制御オブジェクトプロパティからのデータは対応する結合コンテナプロパティに送信されるべきと判断しない場合もまた、手順は決定処理916から決定処理920へと進み、決定処理920が、データを結合コンテナプロパティから対応する制御オブジェクトプロパティに送信すべきかどうかを判断する。送信されるべきと探知した場合、処理932は下層制御オブジェクト内のPushBindingContainerPropertyToControl()メソッドを呼び出して、結合コンテナからデータを受信する。その後、処理924に進む。あるいは、決定処理920が、結合コンテナプロパティからのデータは制御オブジェクトプロパティに送信すべきでないと判断した場合もまた、手順は決定処理920から決定処理924へ進む。このページが、サーバ側データベースへの一方向データ結合あるいはサーバ側データベースと制御オブジェクト階層との間の二方向データ結合をサポートする場合、処理924は、COM+リフレクションによって、ローカルのデータテーブルをサーバ側データ格納部の一部へ保存する。次いで、手順は図5のレンダリング処理518へと続く。
【0089】
図10は、本発明のある実施形態における、サーバ側プロパティ結合コレクションクラスの一例の表記を示す。サーバ側プロパティ結合コレクションクラスは、プロパティ結合コレクションオブジェクトのメソッドとプロパティとを定義する(図8のサーバ側制御クラスの結合プロパティを参照)。プロパティ結合コレクションクラス1000は、プロパティ1000およびメソッド1004に格納するメモリを含むものとして示されている。データメンバとメソッドとの組み合わせが異なる他のプロパティ結合コレクションクラスの実施形態もまた、本発明の範囲内であると考えられる。
【0090】
表示された実施形態において、プロパティ1002および方法1004はパブリックである。プロパティ"All"は、プロパティ結合オブジェクトの読み取りおよび書き取り可能なスナップショットアレイであり、インデックスにより順序付けて、コレクションにおけるすべてのプロパティ結合を表す。プロパティ"this[int index]"は、インデックスで順序付けられたコレクション内のプロパティ結合オブジェクトへのリファレンスを戻す読み取り可能なプロパティ結合オブジェクトである。プロパティ"Count"は、コレクション内のプロパティ結合オブジェクトの数を示す読み取り可能な整数値である。
【0091】
メソッド1004は、プロパティ結合コレクションオブジェクトのデータにアクセスするための方法を含む。メソッド"Add(PropertyBinding value)"は、特定のプロパティ結合オブジェクトをコレクションに追加するのに用いられる。メソッド"IndexOf(PropertyBinding value)"は、コレクション内のプロパティ結合オブジェクトの順序インデックスを得るために用いられる。メソッド"GetEnumerator(boolAllowRemove)"は、コレクション内のすべてのプロパティ結合のエニュメレータ(enumerator)を得るのに用いられる。メソッド"Remove(PropertyBinding value)は、特定のプロパティ結合オブジェクトをコレクションから除去するのに用いられる。メソッド"Remove(int index)"は、インデックスにより特定されたプロパティ結合オブジェクトをコレクションから除去するのに用いられる。メソッド"Clear()"は、コレクションからすべてのプロパティ結合オブジェクトを除去するのに用いられる。
【0092】
図11は、本発明のある実施形態における、サーバ側プロパティ結合クラスの一例の表記を示す。サーバ側プロパティ結合クラスは、プロパティ結合オブジェクトのメソッドおよびプロパティを定義し(図11のプロパティ結合コレクションクラスの"All"および"this[int index]"のプロパティを参照)、これにより制御オブジェクトとサーバ側データソースとの間のデータ結合関係を定義する。プロパティ結合クラス1100は、プロパティ1102を格納するメモリを含むものとして示される。データメンバおよびメソッドの組み合わせが異なる他のクラスの実施形態もまた、本発明の範囲内であると考えられる。
【0093】
例示した実施形態において、プロパティ1102はパブリックである。プロパティ"BindingContainer"は、読み取りおよび書き込み可能な結合コンテナインタフェース(すなわち、IBindingContainerオブジェクト)であり、結合コンテナデータソースを識別し、そこへのアクセスを得るのに用いられる。IBindingContainerオブジェクトは、マーカインタフェースであり、自身のパブリックプロパティをその下層の結合に利用させる制御を識別する。したがって、"BindingContainer"プロパティは、結合された制御オブジェクトが結合先のサーバ側データソースを探し出しアクセスを可能にする結合コンテナ識別子を提供する。プロパティ"Property"は、結合コンテナオブジェクト内の結合されたプロパティを識別する読み取りおよび書き込み可能なストリング値(すなわち、プロパティ識別子)である。プロパティ"Control"は、読み取りおよび書き込み可能な制御オブジェクトである(すなわち、データソースプロパティが結合されるターゲットの制御オブジェクトを識別する)。プロパティ"ControlProperty"は、ターゲット制御オブジェクトのターゲットプロパティを識別する読み取りおよび書き込み可能なストリング値(すなわち、プロパティ識別子)である。プロパティ"FormatString"は、読み取りおよび書き込み可能なストリング値であり、オプショナルフォーマット集中ストリングを識別する。
【0094】
本明細書中の本発明の実施形態は、1つ以上のコンピュータシステムの論理ステップとして実行される。本発明の論理処理は、(1)1つ以上のコンピュータシステムで実行処理されるプロセッサ実行ステップシーケンスとして、(2)1つ以上のコンピュータシステム内の相互接続された機械モジュールとして実行される。実行は選択の問題であり、本発明を実行するコンピュータシステムの性能要件に依存する。したがって、本明細書に記載の本発明の実施形態を構成する論理処理は、処理、ステップ、オブジェクトまたはモジュールと様々に表現することができる。
【0095】
上記の明細書、実施例およびデータは、本発明の実施形態の構造および使用の完全な説明を提供している。本発明は、本発明の精神および範囲から逸脱することなく多数の形態で実施することができるので、本発明は添付の請求項にある。
【0096】
【発明の効果】
以上のように本発明によれば、1つ以上のサーバ側制御オブジェクトと1つ以上のサーバ側データ格納部とを結合する階層データを提供し、サーバ側制御オブジェクトのプロパティが、その結合コンテナを介して、サーバ側データ格納部のプロパティに結合されるようにすることで、ユーザインタフェース要素を処理することが要求されるプログラミングを適切にカプセル化することができ、ページ開発のみならずアプリケーションプログラム開発についても、データベース構造やプログラミングに関する深い知識を必要とすることなく、開発労力の軽減を図ることが可能となる。
【図面の簡単な説明】
【図1】 本発明のある実施形態におけるクライアントに表示するウェブページコンテンツを動的に生成するウェブサーバを示す。
【図2】 本発明のある実施形態におけるサーバ側制御オブジェクトを用いてクライアント側ユーザインタフェース要素の処理およびレンダリングのための処理のフローチャートを示す。
【図3】 本発明のある実施形態で用いるウェブサーバのモジュールの一例を示す。
【図4】 本発明のある実施形態を実行するのに有用なシステムの一例を示す。
【図5】 本発明のある実施形態におけるページオブジェクトの処理を表すプロセスフローチャートを示す。
【図6A】 本発明のある実施形態におけるデータ結合制御オブジェクトを宣言する動的コンテンツ資源(例えば、ASP+リソース)の一例を示す。
【図6B】 本発明のある実施形態におけるサーバ側データテーブルへの第2のタイプの一方向データ結合を宣言するコード宣言ブロックの一例を示す。
【図7】 本発明のある実施形態における図6Aの動的コンテンツ資源(例えば、ASP+リソース)例の処理の結果生ずる制御オブジェクト階層の一部を示す。
【図8】 本発明のある実施形態におけるサーバ側制御クラスの一例の表記を示す。
【図9】 本発明のある実施形態におけるサーバ側制御オブジェクトのプロパティとサーバ側データアレイのプロパティとを結合させるデータ処理のフローチャートを示す。
【図10】 本発明のある実施形態におけるサーバ側プロパティ結合コレクションクラスの一例の表記を示す。
【図11】 本発明のある実施形態におけるサーバ側プロパティ結合クラスの一例の表記を示す。
【符号の説明】
100 クライアント
102 ブラウザ
104 ウェブページ
112 HTTPレスポンス
114 HTTPリクエスト
116 ウェブサーバ
118 HTTPパイプライン
120 ハンドラ
122 静的コンテンツ資源
124 動的コンテンツ資源
126 サーバ側制御クラスライブラリ
128 クライアント側制御クラスライブラリ
130 非UIサーバコンポーネント
131 サーバ側データ格納部
300 ウェブサーバ
304 HTTPパイプライン
308 ページファクトリ
310 ASP+リソース
312 制御クラスライブラリ
314 ページオブジェクト
318 テキストボックスオブジェクト
320、322 ボタンオブジェクト
330 アプリケーションコンポーネント
331 サーバ側データ格納部
400 コンピュータ
402 CPU
404 メモリ
412 ハードディスクドライブ
414 磁気ディスクドライブ
416 着脱可能記憶媒体
418 光ディスクドライブ
419 光ディスク
420、422、424 I/F
426 オペレーティングシステム
428 アプリケーションプログラム
430 プログラムモジュール
432 プログラムデータ
434 キーボード
436 マウス
440 シリアルポートインタフェース
442 モニタ
444 ビデオアダプタ
446 リモートコンピュータ
448 LAN
450 WAN
452 ネットワークアダプタ
454 モデム
702 フォーム
704、714、732 テーブルリスト
800 制御クラス
802、1002、1102 プロパティ
804、1004 メソッド
1000 プロパティ結合コレクションクラス
1100 プロパティ結合クラス

Claims (5)

  1. 動的なウェブページを生成するために、クライアントコンピュータシステムに接続されたウェブサーバコンピュータにおいて、サーバ側制御オブジェクトのプロパティを、1つ以上のデータ行を有するサーバ側データテーブル内のデータ行のプロパティとデータ結合する、前記ウェブサーバコンピュータのプロセッサによって処理される方法であって、
    前記サーバ側制御オブジェクトが、前記クライアントコンピュータシステムに表示されるウェブページに組み込まれるクライアント側ユーザインタフェース要素に対応しており、
    前記ウェブサーバコンピュータが、前記クライアントコンピュータシステムからリクエストを受信すると、前記サーバ側データテーブルの各データ行を参照して、各データ行に対応する、複数の下層サーバ側制御オブジェクトを階層的に含むことができる結合コンテナサーバ側制御オブジェクトを作成する工程と、
    各結合コンテナサーバ側制御オブジェクトを前記サーバ側データテーブルのデータ行の1つに関連付ける工程と、
    各データ行のプロパティとして、所与のデータ行に対応する結合コンテナサーバ側制御オブジェクトの下層にあり、かつ前記所与のデータ行のプロパティと関連付ける前記下層サーバ側制御オブジェクトを作成する工程と、
    前記下層サーバ側制御オブジェクトのプロパティと前記サーバ側データテーブルのデータ行のうちの1つのプロパティとの間にデータ結合関係を確立させる工程と、
    前記下層サーバ側制御オブジェクトが、前記クライアントユーザインタフェース要素を前記ウェブページに表示するためのオーサリング言語データを生成する工程と、
    前記ウェブサーバコンピュータが、前記オーサリング言語データを前記クライアントコンピュータシステムに送信する工程とを含むデータ結合する方法。
  2. 前記データ結合関係を確立させる工程において、
    前記下層サーバ側制御オブジェクトの制御識別子、前記下層サーバ側制御オブジェクトのプロパティの第1のプロパティ識別子、前記結合コンテナサーバ側制御オブジェクトの結合コンテナ識別子を含む結合オブジェクトを作成する工程を含む請求項1に記載のデータ結合する方法。
  3. 前記データ結合関係に基づいて、前記サーバ側データテーブルのデータ行のプロパティとして格納するために前記下層サーバ側制御オブジェクトのプロパティとして格納されたデータを、前記下層サーバ側制御オブジェクトから前記サーバ側データテーブルへ送信する工程をさらに含む請求項1に記載のデータ結合する方法。
  4. 前記データ結合関係に基づいて、前記下層サーバ側制御オブジェクトのプロパティとして格納するために前記サーバ側データテーブルのプロパティとして格納されたデータを、前記サーバ側データテーブルから前記下層サーバ側制御オブジェクトへ送信する工程をさらに含む請求項1に記載のデータ結合する方法。
  5. 動的なウェブページを生成するために、クライアントコンピュータシステムに接続されたウェブサーバコンピュータにおいて、コンピュータシステムによって読み取り可能であり、サーバ側制御オブジェクトのプロパティを、1つ以上のデータ行を有するサーバ側データテーブル内のデータ行のプロパティとデータ結合するコンピュータプロセスを実行するためのコンピュータプログラムを記録したコンピュータプログラム記憶媒体であって、
    前記サーバ側制御オブジェクトが、前記クライアントコンピュータシステムに表示されるウェブページに組み込まれるクライアント側ユーザインタフェース要素に対応しており、
    前記コンピュータプロセスは、
    前記ウェブサーバコンピュータが、前記クライアントコンピュータシステムからリクエストを受信すると、前記サーバ側データテーブルの各データ行を参照して、各データ行に対応する、複数の下層サーバ側制御オブジェクトを階層的に含むことができる結合コンテナサーバ側制御オブジェクトを作成する工程と、
    各結合コンテナサーバ側制御オブジェクトを前記サーバ側データテーブルのデータ行うちの1つに関連付ける工程と、
    各データ行のプロパティとして、所与のデータ行に対応する結合コンテナサーバ側制御オブジェクトの下層にあり、かつ前記所与のデータ行のプロパティと関連付ける前記下層サーバ側制御オブジェクトを作成する工程と、
    前記下層サーバ側制御オブジェクトのプロパティと前記サーバ側データテーブルのデータ行の1つのプロパティとの間にデータ結合関係を確立する工程と、
    前記下層サーバ側制御オブジェクトが、前記クライアントユーザインタフェース要素を前記ウェブページに表示するためのオーサリング言語データを生成する工程と、
    前記ウェブサーバコンピュータが、前記オーサリング言語データを前記クライアントコンピュータシステムに送信する工程とを含むコンピュータプログラム記憶媒体。
JP2001129926A 2000-05-18 2001-04-26 サーバ側制御オブジェクトを用いるデータ結合 Expired - Fee Related JP4694031B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/573656 2000-05-18
US09/573,656 US6792607B1 (en) 2000-05-18 2000-05-18 Databinding using server-side control objects

Publications (2)

Publication Number Publication Date
JP2002024079A JP2002024079A (ja) 2002-01-25
JP4694031B2 true JP4694031B2 (ja) 2011-06-01

Family

ID=24292861

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001129926A Expired - Fee Related JP4694031B2 (ja) 2000-05-18 2001-04-26 サーバ側制御オブジェクトを用いるデータ結合

Country Status (3)

Country Link
US (1) US6792607B1 (ja)
EP (1) EP1156428A3 (ja)
JP (1) JP4694031B2 (ja)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7966078B2 (en) 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
US20070127645A1 (en) * 2000-01-19 2007-06-07 Sony Ericsson Mobile Communications Ab Technique for providing secondary information to a user equipment
US6977909B2 (en) * 2000-01-19 2005-12-20 Phonepages Of Sweden, Inc. Method and apparatus for exchange of information in a communication network
US20070129074A1 (en) * 2000-01-19 2007-06-07 Bloebaum L S System, Method and Device For Providing Secondary Information To A Communication Device
US6996072B1 (en) * 2000-01-19 2006-02-07 The Phonepages Of Sweden Ab Method and apparatus for exchange of information in a communication network
US20070124481A1 (en) * 2000-01-19 2007-05-31 Sony Ericsson Mobile Communications Ab System and method for sharing event-triggered, location-related information between communication devices
US7248862B2 (en) 2000-01-19 2007-07-24 Sony Ericsson Mobile Communications Ab Method and apparatus for retrieving calling party information in a mobile communications system
US6922721B1 (en) * 2000-10-17 2005-07-26 The Phonepages Of Sweden Ab Exchange of information in a communication system
US8400946B2 (en) 2000-01-19 2013-03-19 Sony Corporation System and method for sharing common location-related information between communication devices
US8397223B2 (en) * 2000-03-17 2013-03-12 Gutenberg Printing Llc Web application generator
AUPQ808700A0 (en) * 2000-06-09 2000-07-06 Honeywell Limited Human-machine interface
DE10031041A1 (de) * 2000-06-26 2002-01-03 Autodesk Inc Bereitstellen einer Zugriffsmöglichkeit auf Anwendungsdatenelemente eines Anwendungsprogramms
US7099958B2 (en) * 2000-08-15 2006-08-29 Fujitsu Limited System for designing and performing web application
US7194743B2 (en) * 2000-12-12 2007-03-20 Citrix Systems, Inc. Methods and apparatus for communicating changes between a user interface and an executing application using property paths
US7155676B2 (en) * 2000-12-19 2006-12-26 Coolernet System and method for multimedia authoring and playback
US20060129933A1 (en) * 2000-12-19 2006-06-15 Sparkpoint Software, Inc. System and method for multimedia authoring and playback
US6950831B2 (en) * 2001-03-23 2005-09-27 Siemens Medical Solutions Health Services Corporation Processing system for use with a user interface display
US20030046385A1 (en) * 2001-04-13 2003-03-06 Netiq Corporation, A Delaware Corporation User-side tracking of multimedia application usage within a web page
US7120897B2 (en) 2001-07-10 2006-10-10 Microsoft Corporation User control objects for providing server-side code generation from a user-defined dynamic web page content file
SE0102729D0 (sv) 2001-08-15 2001-08-15 Phone Pages Sweden Ab Method and apparatus for exchange of information in a communication network
GB2383505B (en) * 2001-12-21 2004-03-31 Searchspace Ltd System and method for monitoring usage patterns
US6612418B2 (en) * 2002-01-14 2003-09-02 General Mills, Inc. System for use in an assembly line
WO2003065242A1 (en) * 2002-01-25 2003-08-07 Tibco Software, Inc. Single applet to communicate with multiple html elements contained inside of multiple categories on a page
US20030217191A1 (en) * 2002-05-20 2003-11-20 Yang Gao System and method for converting the UI logic of a windows software application to run within a web browser
US7076766B2 (en) 2002-06-03 2006-07-11 Steve Wirts Software application development methods and framework
US7149747B1 (en) * 2002-06-27 2006-12-12 Siebel Systems, Inc. Dynamic generation of user interface components
US6691032B1 (en) * 2002-09-09 2004-02-10 Groundspeak, Inc. System and method for executing user-definable events triggered through geolocational data describing zones of influence
US6947955B2 (en) * 2002-09-23 2005-09-20 International Business Machines Corporation Run-time augmentation of object code to facilitate object data caching in an application server
US7461382B2 (en) * 2002-09-30 2008-12-02 Sap Ag Event handling with action instances for event-driven software application
US7392160B2 (en) * 2002-12-18 2008-06-24 Fortent Limited System and method for monitoring usage patterns
US20050108648A1 (en) * 2003-02-28 2005-05-19 Olander Daryl B. Method for propagating look and feel in a graphical user interface
GB2405964A (en) * 2003-09-15 2005-03-16 Siemens Ag Database access
US7200615B2 (en) * 2003-10-16 2007-04-03 Xerox Corporation Viewing tabular data on small handheld displays and mobile phones
US7730501B2 (en) * 2003-11-19 2010-06-01 Intel Corporation Method for parallel processing of events within multiple event contexts maintaining ordered mutual exclusion
US7640497B1 (en) * 2003-12-22 2009-12-29 Apple Inc. Transforming a hierarchical data structure according to requirements specified in a transformation template
US7890604B2 (en) 2004-05-07 2011-02-15 Microsoft Corproation Client-side callbacks to server events
US9026578B2 (en) 2004-05-14 2015-05-05 Microsoft Corporation Systems and methods for persisting data between web pages
US8065600B2 (en) 2004-05-14 2011-11-22 Microsoft Corporation Systems and methods for defining web content navigation
US7464386B2 (en) * 2004-05-17 2008-12-09 Microsoft Corporation Data controls architecture
US8156448B2 (en) 2004-05-28 2012-04-10 Microsoft Corporation Site navigation and site navigation data source
US7593916B2 (en) * 2004-08-19 2009-09-22 Sap Ag Managing data administration
US7379943B2 (en) * 2005-01-28 2008-05-27 Microsoft Corporation Method and system for bidirectionally data binding a control of a template
EP1851903A4 (en) * 2005-02-22 2008-05-14 Nextair Corp USING APPLICATIONS ON AN APPLICATION SERVER THROUGH A WIRELESS COMMUNICATION DEVICE
US8341536B2 (en) 2005-07-08 2012-12-25 International Business Machines Corporation Dynamic interface component control support
US20070088798A1 (en) * 2005-09-09 2007-04-19 Microsoft Corporation Encapsulation of complex business logic
US7606824B2 (en) * 2005-11-14 2009-10-20 Microsoft Corporation Databinding workflow data to a user interface layer
TW200723078A (en) * 2005-12-05 2007-06-16 Inventec Corp Interface display system and method
US8812978B2 (en) * 2005-12-22 2014-08-19 Xerox Corporation System and method for dynamic zoom to view documents on small displays
US20070214408A1 (en) * 2006-03-07 2007-09-13 Optimus Corporation Declarative web application for search and retrieval
US20080189638A1 (en) * 2006-10-16 2008-08-07 Invensys Systems, Inc. Bridging human machine interface technologies in a process automation and information management environment
US8037039B2 (en) * 2007-04-20 2011-10-11 Microsoft Corporation Runtime class database operation
US8255883B2 (en) * 2007-04-20 2012-08-28 Microsoft Corporation Translating late bound LINQ expressions into database queries
WO2009072145A1 (en) * 2007-12-03 2009-06-11 Lucid Infotech Pvt. Ltd. Templating system and method for updating content in real time
US7996093B2 (en) * 2008-01-24 2011-08-09 Rockwell Automation Technologies, Inc. Automatic controller relationship resolution
US20090189892A1 (en) 2008-01-27 2009-07-30 Nitin Desai Methods and systems for detecting a dirty region within a frame encompassing three dimensional graphics
EP2340485A1 (de) 2008-09-25 2011-07-06 Siemens Enterprise Communications GmbH & Co. KG Verfahren zur konfiguration einer applikation
KR101711863B1 (ko) * 2008-11-26 2017-03-13 캘거리 싸이언티픽 인코포레이티드 애플리케이션 프로그램의 상태에 대한 원격 액세스를 제공하기 위한 방법 및 시스템
SG173483A1 (en) * 2009-02-03 2011-09-29 Calgary Scient Inc Method and system for enabling interaction with a plurality of applications using a single user interface
US10055105B2 (en) 2009-02-03 2018-08-21 Calgary Scientific Inc. Method and system for enabling interaction with a plurality of applications using a single user interface
US9507870B2 (en) * 2009-05-05 2016-11-29 Suboti, Llc System, method and computer readable medium for binding authored content to the events used to generate the content
US9479480B2 (en) * 2010-01-29 2016-10-25 Citrix Systems, Inc. Systems and methods of using SSL pools for WAN acceleration
US9741084B2 (en) 2011-01-04 2017-08-22 Calgary Scientific Inc. Method and system for providing remote access to data for display on a mobile device
US20120188584A1 (en) * 2011-01-21 2012-07-26 Swee Huat Sng Document imaging node with internal web server execution environment
CA2734860A1 (en) * 2011-03-21 2012-09-21 Calgary Scientific Inc. Method and system for providing a state model of an application program
WO2013024342A1 (en) 2011-08-15 2013-02-21 Calgary Scientific Inc. Method for flow control and for reliable communication in a collaborative environment
KR20140080483A (ko) 2011-08-15 2014-06-30 캘거리 싸이언티픽 인코포레이티드 애플리케이션 프로그램에 대한 비-침투적 원격 액세스
EP2761808A4 (en) 2011-09-30 2015-05-20 Calgary Scient Inc DECOUPLED APPLICATION WITH EXTENSIONS INTERACTIVE DIGITAL SURFACE LAYER FOR COLLABORATIVE REMOTE COMMON USE OF APPLICATIONS AND ANNOTATION
AU2012342170B2 (en) 2011-11-23 2017-03-09 Calgary Scientific Inc. Methods and systems for collaborative remote application sharing and conferencing
US9602581B2 (en) 2012-03-02 2017-03-21 Calgary Scientific Inc. Remote control of an application using dynamic-linked library (DLL) injection
US20130246977A1 (en) * 2012-03-16 2013-09-19 Microsoft Corporation Multi-context data binding
US20130290830A1 (en) * 2012-04-30 2013-10-31 Salesforce.Com, Inc. System and method for managing a viewstate of a web application
US9141596B2 (en) * 2012-05-02 2015-09-22 Google Inc. System and method for processing markup language templates from partial input data
US9729673B2 (en) 2012-06-21 2017-08-08 Calgary Scientific Inc. Method and system for providing synchronized views of multiple applications for display on a remote computing device
US9442687B2 (en) * 2012-07-23 2016-09-13 Korea Advanced Institute Of Science And Technology Method and apparatus for moving web object based on intent
JP5892444B2 (ja) * 2012-10-16 2016-03-23 株式会社沖データ 情報処理装置
CA2931762C (en) 2013-11-29 2020-09-22 Calgary Scientific Inc. Method for providing a connection of a client to an unmanaged service in a client-server remote access system
US9747010B2 (en) 2014-01-16 2017-08-29 Xerox Corporation Electronic content visual comparison apparatus and method
US10015264B2 (en) 2015-01-30 2018-07-03 Calgary Scientific Inc. Generalized proxy architecture to provide remote access to an application framework
CN107431630B (zh) 2015-01-30 2021-06-25 卡尔加里科学公司 高度可扩展、容错的远程访问架构和与之连接的方法
US9946601B2 (en) 2015-05-21 2018-04-17 Red Hat, Inc. User interface state saving and restoration
CN111796727B (zh) * 2019-03-22 2024-06-11 阿里巴巴集团控股有限公司 一种界面数据处理方法及装置
CN111580830B (zh) * 2020-05-12 2023-09-15 北京飞漫软件技术有限公司 超文本标记语言文档元素的绑定及解析方法
US11882173B1 (en) * 2022-09-12 2024-01-23 Sap Se Capture network communication via client extension

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812996A (en) 1994-07-12 1998-09-22 Sybase, Inc. Database system with methods for optimizing query performance with a buffer manager
EP0762273B1 (en) 1995-09-06 2002-05-15 Seiko Epson Corporation Peripheral device control system using a plurality of objects
US5774670A (en) * 1995-10-06 1998-06-30 Netscape Communications Corporation Persistent client state in a hypertext transfer protocol based client-server system
US5928323A (en) 1996-05-30 1999-07-27 Sun Microsystems, Inc. Apparatus and method for dynamically generating information with server-side software objects
US5961601A (en) * 1996-06-07 1999-10-05 International Business Machines Corporation Preserving state information in a continuing conversation between a client and server networked via a stateless protocol
US5835724A (en) * 1996-07-03 1998-11-10 Electronic Data Systems Corporation System and method for communication information using the internet that receives and maintains information concerning the client and generates and conveys the session data to the client
US6115744A (en) * 1996-07-30 2000-09-05 Bea Systems, Inc. Client object API and gateway to enable OLTP via the internet
US5897622A (en) 1996-10-16 1999-04-27 Microsoft Corporation Electronic shopping and merchandising system
EP0938701B1 (en) 1996-11-14 2003-11-05 Alcatel USA Sourcing, L.P. Generic software state machine and method of constructing dynamic objects for an application program
US5953524A (en) 1996-11-22 1999-09-14 Sybase, Inc. Development system with methods for runtime binding of user-defined classes
US5991802A (en) * 1996-11-27 1999-11-23 Microsoft Corporation Method and system for invoking methods of objects over the internet
US6032207A (en) 1996-12-23 2000-02-29 Bull Hn Information Systems Inc. Search mechanism for a queue system
US5748890A (en) 1996-12-23 1998-05-05 U S West, Inc. Method and system for authenticating and auditing access by a user to non-natively secured applications
US6212192B1 (en) 1997-03-14 2001-04-03 Itxc, Inc. Method and apparatus for synchronizing information browsing among multiple systems
US6253228B1 (en) * 1997-03-31 2001-06-26 Apple Computer, Inc. Method and apparatus for updating and synchronizing information between a client and a server
US5983190A (en) 1997-05-19 1999-11-09 Microsoft Corporation Client server animation system for managing interactive user interface characters
US5983227A (en) 1997-06-12 1999-11-09 Yahoo, Inc. Dynamic page generator
CA2210755C (en) 1997-07-17 2003-12-23 Ibm Canada Limited - Ibm Canada Limitee Creating proxies for distribution of beans and event objects
US5940075A (en) 1997-09-30 1999-08-17 Unisys Corp. Method for extending the hypertext markup language (HTML) to support enterprise application data binding
US6014666A (en) 1997-10-28 2000-01-11 Microsoft Corporation Declarative and programmatic access control of component-based server applications using roles
US6460071B1 (en) * 1997-11-21 2002-10-01 International Business Machines Corporation System and method for managing client application state in a stateless web browser environment
US6442619B1 (en) 1997-12-31 2002-08-27 Alcatel Usa Sourcing, L.P. Software architecture for message processing in a distributed architecture computing system
US6076108A (en) 1998-03-06 2000-06-13 I2 Technologies, Inc. System and method for maintaining a state for a user session using a web system having a global session server
WO1999060504A1 (en) 1998-05-15 1999-11-25 Unicast Communications Corporation A technique for implementing browser-initiated network-distributed advertising and for interstitially displaying an advertisement
US6185608B1 (en) 1998-06-12 2001-02-06 International Business Machines Corporation Caching dynamic web pages
US6373841B1 (en) 1998-06-22 2002-04-16 Agilent Technologies, Inc. Integrated LAN controller and web server chip
US6205480B1 (en) 1998-08-19 2001-03-20 Computer Associates Think, Inc. System and method for web server user authentication
US6397253B1 (en) 1998-10-06 2002-05-28 Bull Hn Information Systems Inc. Method and system for providing high performance Web browser and server communications
US6460141B1 (en) 1998-10-28 2002-10-01 Rsa Security Inc. Security and access management system for web-enabled and non-web-enabled applications and content on a computer network
US8418131B2 (en) * 1998-11-25 2013-04-09 Helmut Emmelmann Interactive server side components
US6487665B1 (en) 1998-11-30 2002-11-26 Microsoft Corporation Object security boundaries
US6178461B1 (en) 1998-12-08 2001-01-23 Lucent Technologies Inc. Cache-based compaction technique for internet browsing using similar objects in client cache as reference objects
US6351767B1 (en) 1999-01-25 2002-02-26 International Business Machines Corporation Method and system for automatically caching dynamic content based on a cacheability determination
US6557038B1 (en) 1999-06-30 2003-04-29 International Business Machines Corporation Method and apparatus for maintaining session states
WO2001071572A2 (en) 2000-03-22 2001-09-27 Sidestep, Inc. Method and apparatus for dynamic information connection engine
US6622168B1 (en) 2000-04-10 2003-09-16 Chutney Technologies, Inc. Dynamic page generation acceleration using component-level caching
US8010702B2 (en) 2001-06-14 2011-08-30 Nokia Corporation Feature-based device description and content annotation
US7162723B2 (en) 2001-06-29 2007-01-09 Microsoft Corporation ASP.NET HTTP runtime
US7120897B2 (en) 2001-07-10 2006-10-10 Microsoft Corporation User control objects for providing server-side code generation from a user-defined dynamic web page content file

Also Published As

Publication number Publication date
EP1156428A3 (en) 2002-05-15
US6792607B1 (en) 2004-09-14
JP2002024079A (ja) 2002-01-25
EP1156428A2 (en) 2001-11-21

Similar Documents

Publication Publication Date Title
JP4694031B2 (ja) サーバ側制御オブジェクトを用いるデータ結合
JP4015375B2 (ja) クライアント側ユーザインタフェース要素を処理するサーバ側制御オブジェクト
JP3954809B2 (ja) サーバ側制御オブジェクトの状態管理方法
JP4467205B2 (ja) サーバ側制御オブジェクトによるポストバック入力のハンドリング
US7120897B2 (en) User control objects for providing server-side code generation from a user-defined dynamic web page content file
US20190138283A1 (en) Methods and systems for providing a user interface
JP4625198B2 (ja) 動的ウェブページコンテンツファイルからのサーバ側コード生成
US20070067418A1 (en) Object oriented web application framework
US20060020883A1 (en) Web page personalization
US8601447B2 (en) Open controls
Butle et al. ASP. NET Database Programming Weekend Crash Course™
Duthie et al. ASP. NET in a Nutshell: A Desktop Quick Reference
Al-Ghourabi A comparison of web development technologies: WebObjects vs. ASP. NET
Nagarajan Master's project website: A comparison of several server-side technologies
Easton et al. Developing Distributed Applications
Jason et al. ASP. NET databases programming
Syme et al. Building Web Applications
Kurniawan Java for the Web with Servlets, JSP and EJB is the one book you need to master Java web programming. It covers all the technologies needed to program web applications in Java using Servlets 2.3, JSP 1.2, EJB 2.0 and client-side programming with JavaScript. These technologies are explained in the context of real-world projects, such as an e-commerce application, a document management program, file upload and
Al-Ghourabi ASP .NET
MacDonald et al. Creating Web Services

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071017

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071109

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20080208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080310

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080325

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

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20080620

RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7431

Effective date: 20100513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110112

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110223

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

Free format text: PAYMENT UNTIL: 20140304

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4694031

Country of ref document: JP

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

LAPS Cancellation because of no payment of annual fees