JP5010551B2 - 動的ウェブページコンテンツファイルからのサーバ側コード生成 - Google Patents

動的ウェブページコンテンツファイルからのサーバ側コード生成 Download PDF

Info

Publication number
JP5010551B2
JP5010551B2 JP2008199892A JP2008199892A JP5010551B2 JP 5010551 B2 JP5010551 B2 JP 5010551B2 JP 2008199892 A JP2008199892 A JP 2008199892A JP 2008199892 A JP2008199892 A JP 2008199892A JP 5010551 B2 JP5010551 B2 JP 5010551B2
Authority
JP
Japan
Prior art keywords
web page
source code
file
class
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.)
Expired - Fee Related
Application number
JP2008199892A
Other languages
English (en)
Other versions
JP2009070372A (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 JP2009070372A publication Critical patent/JP2009070372A/ja
Application granted granted Critical
Publication of JP5010551B2 publication Critical patent/JP5010551B2/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

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 Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、一般にウェブサーバフレームワークに関し、特にウェブページのクライアント側ユーザインタフェース要素を処理する制御(コントロール)オブジェクトを作成するサーバ側コード作成に関する。
典型的なウェブブラウザは、クライアントシステムに表示するウェブページの外観および基本動作を定義するウェブサーバからデータを受け取る。典型的な手順としては、ユーザが、ワールドワイドウェブ上の資源のグローバルアドレスであるユニホームリソース(資源)ロケータ(「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レスポンスで戻し、ブラウザに表示する。
上記の例の"ms.htm"ファイルは、静的なHTML(ハイパーテキストマークアップ言語)コードを含んでいるウェブページファイルと対応する。HTMLは、ワールドワイドウェブ上でのドキュメント(例えば、ウェブページ)作成に用いられるプレイン(平文)テキストオーサリング言語である。このようなものであるので、HTMLファイルは、HTMLコードを実際の視覚的な画像または音声コンポーネントへ変換するクライアントブラウザによってウェブサーバから取り出され、ウェブページとして表示される。クライアントコンピュータシステムにおいて、このプロセスは、渡されたHTMLファイルに定義されたウェブページ内容を表示する。HTMLを用いて、開発者が、例えば、ブラウザに表示するフォーマット化されたテキスト、リスト、フォーム、テーブル、ハイパーテキストリンク、インライン画像および音声、ならびに背景グラフィックスを特定する。しかし、HTMLファイルは、ウェブページコンテンツの動的な生成を本質的にサポートしていない静的ファイルである。ウェブページコンテンツは、表示のためにクライアントに戻されるHTMLコードである。このような動的処理は、単にクライアントブラウザに所定のコードを送信するのではなく、処理ステップの結果、送信に先立ちHTMLコードを生成するサーバ側アプリケーションに関する。
より複雑なクライアント・サーバ間の対話をハンドリングするために、サーバ側アプリケーションプログラムは、動的コンテンツ、例えば、変化している株価または交通情報を与えるような、より複雑なクライアント・サーバ間の対話をハンドリングするように開発されてきた。サーバ側アプリケーションプログラムは、HTTPリクエストを処理し、クライアントにHTTPレスポンスでクライアントへの送信に適切なHTMLコードを生成する。例えば、サーバ側アプリケーションプログラムは、クライアント側へのHTTPレスポンスにおける送信HTMLコードを動的に生成するために、HTTPリクエストにおいてクライアント側によって提供される照会ストリングまたはウェブベースのフォームからのデータを処理することができる。本質的に、サーバ側アプリケーションは、クライアント側からのリクエストにおける情報に基づきカスタマイズされたHTML型ファイルを生成することができる。この場合、サーバ上に格納された静的なHTMLファイルは存在せず、HTMLファイルは、実行時に動的に作成される。サーバ側アプリケーションプログラムの一例として、メモリ機構への1つ以上のフォーマット化されたテキスト書き込み処理のシーケンスを用いて、HTMLコードを生成する場合がある。その後、得られたテキストは、HTTPレスポンスでクライアントシステムに送信され、そこでブラウザに表示される。
サーバ側アプリケーションプログラムの開発は、ウェブページ設計に用いる通常のHTMLコード化に精通しているだけでなく、1つ以上のプログラム言語(例えば、C++, Perl, Visual Basic, または Jscript)を含むプログラムベーシックスに精通していることが要求される複雑な作業である。しかし、残念なことに、ウェブページ設計者は、グラフィックデザイナーまたはエディタであることが多く、人間的な感じを与えるが、プログラミング経験がない場合が多い。したがって、プログラミング経験が少ない人が、サーバ側アプリケーションとそのそれぞれのクライアントとのウェブページインタフェースを開発することができるような、ウェブページファイルを作成するための単純化されたウェブページ開発フレームワークを提供することが必要である。したがって、開発者が最小のプログラミングでウェブページを動的に作成および処理することができる開発フレームワークを提供することが望まれている。
動的ウェブページ生成のプログラム要件を最小にする1つの手段は、マイクロソフト社によって提供されるアクティブサーバページ(ASP)フレームワークである。ASPフレームワークにより、開発者は、典型的に、Visual BasicまたはJscript コードおよびその他のHTMLコードを含む"ASP"ウェブページファイルを作成できる。ASPファイルは、種々の機能を実行する宣言またはタグならびにVBスクリプトまたはJスクリプトコードを含む。一般に、実際のプログラミングコードを書き込むより、これらの宣言を書き込むほうが簡単である。
処理中、HTTPリクエストは、所望の資源としてASPファイルを特定し、その後、ASPファイルを用いてクライアント側へのHTTPレスポンスでの結果HTMLコードを生成する。さらに、ASPファイルは、所与のアプリケーションプログラミング労力を減らすために、予め開発されたまたは第三者のクライアント側ライブラリコンポーネント(例えば、クライアント側"ACTIVEX"制御)およびデータベースまたは他の第3者アプリケーションを参照することができる。
単純化されたASPウェブページファイルは、実行時間でスクリプトエンジンにより解釈され得るスクリプトに変換されなければならない。スクリプトエンジンは、典型的に、所望の結果を達成するために、連続または同期的にASPファイルにおける種々の宣言タイプコマンドを実行する。実行処理可能なファイルとしてコンパイルされ格納されたファイルと比較して、一般に、スクリプトエンジンによって実行されたスクリプトファイルは時間がかかる。これは、スクリプトエンジンが単にファイルを実行するだけではなく、解釈機能を果たさなければならないからである。
スクリプトファイルを実行処理可能なファイルにコンパイルする際のある1つの問題は、スクリプトファイルには、おそらく種々の言語の組み合わせがある、またはその可能性があるということである。例えば、スクリプトファイルは、HTMLで書かれたコンポーネントおよびVisual Basicで書かれた他のコンポーネントを含む場合がある。スクリプトエンジンは、実行時間にこれらの要素を解釈するために種々の処理を用いるが、異なる言語コンポーネントを1つの言語、すなわち、1つのソースコードファイルに翻訳するためのコンパイラが存在しない。さらに、現在のサーバ側アプリケーションフレームワークにおいて、サーバ側アプリケーション内でクライアント側ユーザインタフェース要素(例えば、テキストボックス、リストボックス、ボタン、ハイパーリンク、画像、音声など)を動的に管理することを要求されるプログラミングは、依然として高度なプログラミング技術と相当な努力を必要とする。これらのサーバ側プロセスが、より複雑になるにしたがって、スクリプトエンジンは、持続的にこの要求を満たし続けることができなくなる。
これらおよび他の理由により、本発明がなされた。
本発明は、中間言語またはソースコードファイルをサーバ側資源から作成するためのコード生成方法および装置に関するものであり、ソースコードファイルは、実行処理可能なクラスにコンパイルされる。実行処理可能なクラスにより、クライアントレスポンスのレンダリングを含むサーバ側機能を実行するウェブページ制御オブジェクトの素早い生成が可能になる。本発明のある実施形態において、コード生成スキームは、イベント処理および特定のオブジェクトへの属性の設定を扱うために階層内で接続された制御オブジェクトを作成することができる。さらに、コード生成方法はまた、テンプレートを用いて宣言されたオブジェクトを接続することもできる。
より好ましくは、本発明は、サーバコンピュータシステムメモリにおけるクラスの作成方法に関する。クラスは、ウェブページコンテンツを動的にレンダリングするサーバ側オブジェクトを作成するために、サーバコンピュータシステムによって用いられ、ウェブページコンテンツは、クライアント側コンピュータシステムに送られ、クライアントコンピュータシステム上のウェブページとして表示される。処理において、サーバコンピュータシステムは、ウェブページのためのリクエストをクライアントコンピュータシステムから受信し、このリクエストが動的ウェブページコンテンツファイルを識別する。サーバコンピュータは、動的ウェブページコンテンツファイルの要素を格納するためのデータモデルを作成し、データモデルを評価し、データモデルの評価に基づき動的なウェブページコンテンツファイルに関するソースコードファイルを生成する。ソースコードが作成されると、ソースコードファイルがコンパイルされて、コンパイルされたクラスをメモリに作成する。一般に、プロセスは、サーバコンピュータシステムにクラス参照を戻してサーバコンピュータシステムがクラスを用いることが可能になって終了する。
他の好ましい実施形態によると、方法は、サーバコンピュータシステム上のキャッシュメモリにクラスを格納する。一旦、キャッシュメモリに格納されると、多数のサーバ側ページオブジェクトが1つのコンパイルされたクラスからインスタンスを作成し、元々の資源は再度使用されない。ウェブページに対するリクエストを受信する度に、サーバコンピュータシステムは、その動的ウェブページコンテンツファイルのコンパイルされたクラスがメモリにあるかどうかを判断する。要求されたクラスが、メモリに存在しない場合は、それを作成する。クラスがあれば、サーバコンピュータシステムは、ウェブページコンテンツを動的に生成するために、そのクラスからサーバ側処理オブジェクトのインスタンスを作成する。次に、ウェブページコンテンツはレンダリングされクライアントコンピュータシステムに送られる。
本発明のさらに別の実施形態によれば、データモデルを評価する方法ステップは、複数のパスでデータモデルの反復トラバースを伴う。各パス時にソースコードが生成され、そのパス時のデータモデルの評価に基づきソースコードファイルに書き込まれる。データモデルは、階層的に連結されたデータ構造を用いて構築される。
本発明によるコンピュータプログラムプロダクトの実施形態は、コンピュータシステムによって読み取り可能であり、サーバコンピュータ上にメモリにコンパイルされたクラスを作成するコンピュータプロセスを実行処理するコンピュータプログラムをコード化するコンピュータプログラム記憶媒体を含む。コンパイルされたクラスは、クライアントコンピュータシステム上に表示される要求されたウェブページに対応するレスポンスをレンダリングするためにサーバ側処理オブジェクトのインスタンスを作成するのに用いられる。本発明によるコンピュータプログラムプロダクトの別の実施形態は、コンピュータシステムによる搬送波によって具体化され、サーバにコンパイルされたクラスを作成するためのコンピュータプログラムをコード化するコンピュータデータ信号を含む。
本発明の実施の形態は、動的ウェブページコンテンツ資源またはファイルによって定義された特定のウェブページのためのメモリにコンパイルされたクラスを生成する方法に関するものである。コンパイルされたクラスの作成は、ウェブページファイルからソースコードファイルの作成を伴う。次に、ソースコードファイルがクラスにコンパイルされる。コンパイルされたクラスが、メモリに存在すると、表示するクライアントに送り返されるレスポンスをレンダリングするためにページオブジェクトのインスタンスが作成され得る。一般に、ページオブジェクトは、ウェブページ上に表示されるクライアント側ユーザインタフェース要素の処理および生成のためのサーバ側制御オブジェクトを伴う。さらに、サーバ側制御オブジェクトの階層が、これらのオブジェクトが、クライアント上のウェブページの表示のためのHTMLのような結果オーサリング言語コードを最終的に協働して生成するウェブページファイルに宣言され得る。
図1は、本発明のある実施形態におけるクライアントに表示するウェブページコンテンツを動的に生成するウェブサーバを示す。クライアント100は、クライアント100の表示装置上にウェブページ104を表示するブラウザ102を実行処理する。クライアント100は、ビデオモニタ(図示せず)のような表示装置を有するクライアントコンピュータシステムを含む。マイクロソフト社によって販売されている"INTERNET EXPLORER"ブラウザは、本発明のある実施形態におけるブラウザ102の一例である。他のブラウザの例として、"NETSCAPE NAVIGATOR" および "MOSAIC"などがあるが、これに限らない。例示したウェブページ104には、テキストボックス制御106および2つのボタン制御108、110が組み込まれている。ブラウザ102は、HTTPレスポンス112でウェブサーバ116からHTMLコードを受信し、HTMLコードにより記述されたウェブページを表示する。ある実施形態を参照してHTMLについて説明するが、特に制限されるものではなく、SGML(Standard Generalized Markup Language)およびXML(eXtensible Markup Language)を含む他のオーサリング言語も本発明の範囲内であると考えられている。
クライアント100とウェブサーバ116との通信は、HTTPリクエスト114およびHTTPレスポンス112のシーケンスを用いて行うことができる。ある実施形態を参照してHTTPを説明するが、特に制限されるものではなく、S−HTTPを含めた他のトランスポートプロトコルも本発明の範囲内であると考えられている。ウェブサーバ116において、HTTPパイプラインモジュール118が、HTTPリクエスト114を受け取り、URLを解析し、リクエストを処理する適切なハンドラ120を呼び出す。本発明のある実施形態において、異なるタイプの資源を扱う複数のハンドラ120がウェブサーバ116に備わっている。
例えば、URLがHTMLファイルのような静的なコンテンツファイル122を特定する場合、ハンドラ120は、静的コンテンツファイル122にアクセスし、HTTPパイプライン118を介して静的コンテンツファイル122をHTTPレスポンス112でクライアント100へ送る。あるいは、本発明のある実施形態において、URLがASP+(Active Server Page +)ページのような動的コンテンツ資源またはファイル124を特定する場合、ハンドラ120は、動的コンテンツファイル124にアクセスし、動的コンテンツファイル124のコンテンツを処理し、ウェブページ104用の結果HTMLコードを生成する。一般に、ファイル124のような動的コンテンツ資源は、クライアントに表示すべきウェブページを記述するオーサリング言語を動的に生成するのに用いることができるサーバ側宣言データ格納部である。そして、ウェブページ用のHTMLコードは、HTTPパイプライン118を通って、HTTPレスポンス112でクライアント100へ送られる。
この処理の間、ハンドラ120はまた、開発労力を簡素化するために予め開発された、または第3者コードのライブラリにアクセスすることができる。このようなライブラリの1つがサーバ側クラス制御ライブラリ126であり、ここから、ハンドラ120は、ユーザインタフェース要素を処理しウェブページに表示する結果HTMLデータを生成するサーバ側制御オブジェクトのインスタンスを作成することができる。本発明のある実施形態において、1つ以上のサーバ側制御オブジェクトは、動的コンテンツファイル124に記述されたウェブページ上に、可視的にまたは隠して、1つ以上のユーザインタフェース要素にマッピングする。
ハンドラ120はまた、ウェブサーバ116上または別のアクセス可能ウェブサーバ上で実行処理する1つ以上の非ユーザインタフェースサーバコンポーネント130にアクセスする。株価検索アプリケーションまたはデータベースコンポーネントのような非ユーザインタフェースサーバコンポーネント130は、ハンドラ120によって処理される動的コンテンツファイル124において参照され、またはそれに関連付けられる。非ユーザインタフェースサーバコンポーネント130は、動的コンテンツファイル124で宣言されたサーバ側制御オブジェクトによって立ち上げられたイベントを処理し得る。その結果、サーバ側制御オブジェクトによって提供される処理は、ウェブページのユーザインタフェース要素の処理および生成をカプセル化することによって非ユーザインタフェースサーバコンポーネント130のプログラミングを簡単にし、これにより、非ユーザインタフェースサーバコンポーネント130の開発者は、ユーザインタフェース問題ではなく、アプリケーション固有の機能の開発に集中することができる。
図2は、本発明のある実施形態におけるサーバ側制御オブジェクトを用いてのクライアント側ユーザインタフェース要素の処理および生成処理のフローチャートを示す。処理200において、クライアントは、HTTPリクエストをサーバに送信する。HTTPリクエストは、ASP+ページなどの資源を特定するURLを含む。処理202において、サーバは、HTTPリクエストを受信し、特定された資源を処理する適切なハンドラを呼び出す。ASP+ページは処理203において読み出される。処理204は、特定された動的コンテンツファイル(例えば、ASP+ページ)の内容に基づきサーバ側制御オブジェクト階層を生成する。
処理206において、制御オブジェクト階層のサーバ側制御オブジェクトは、ポストバックイベントハンドリング、ポストバックデータハンドリング、状態管理およびデータ結合のうちの1つ以上の処理を行う。処理208において、階層内の各サーバ側制御オブジェクトが、クライアント側ユーザインタフェース要素のウェブページでの表示のためのHTMLコードのようなデータを生成(またはレンダリング)するために呼び出される。用語「レンダリング」は、ユーザインタフェース上にグラフィックスを表示する処理を意味することがあるが、本明細書において、用語「レンダリング」は、表示およびクライアント側機能のためのブラウザのようなクライアントアプリケーションによって解釈され得るオーサリング言語データの生成処理をも意味している。処理206およびレンダリング処理208のより詳細な説明は図6との関連で行われている。個々の制御オブジェクトにおけるrenderメソッドの呼び出しは、ツリートラバーサルシーケンスを用いて行われる。すなわち、ページオブジェクトのrenderメソッドの呼び出しは、階層内の適切なサーバ側制御オブジェクトにわたる反復トラバースになる。
あるいは、個々のサーバ側制御オブジェクトの実際の作成は、サーバ側制御オブジェクトが処理206または208においてアクセスされる(ポストバック入力のハンドリング、状態のロード、制御オブジェクトからHTMLコードのレンダリングなど)まで遅らせてもよい。サーバ側制御オブジェクトが所与のリクエストのためにアクセスされることがない場合、制御オブジェクトの作成を遅らせ、不要な制御オブジェクト作成処理を排除することによって、サーバ処理が最適化される。
処理210において、HTMLコードをHTTPレスポンスでクライアントに送信する。処理214において、クライアントは、表示されるべき新たなウェブページに関連するHTMLコードを受信する。処理216において、クライアントシステムは、HTTPレスポンスから受け取ったHTMLコードに応じて新しいページのユーザインタフェース要素を表示する。処理212において、サーバ側制御オブジェクト階層を終了する。階層内サーバ側制御オブジェクトは、関連付けられたASP+ページを参照するHTTPリクエストに応答して作成され、オーサリング言語データ(例えば、HTMLデータ)のレンダリングが終わると破壊される。あるいは、処理212は、処理208の後、処理210の前に行ってもよい。
図3は、本発明のある実施形態において用いるウェブサーバでのモジュールの一例を示す。ウェブサーバ300は、HTTPパイプライン304にHTTPリクエスト302を受信する。HTTPパイプライン304は、ウェブページ統計のロギング、ユーザ照合、ユーザアクセス権およびウェブページの出力キャッシュ化用モジュールなどの種々のモジュールを含んでもよい。ウェブサーバ300によって受信される各入力HTTPリクエスト302は、最終的には、インタフェースハンドラ(Interface Handler)、例えばIHTTPハンドラクラス(ハンドラ306として図示)の特定のインスタンスによって処理される。ハンドラ306は、URLリクエストを解析し適切なハンドラファクトリ(例えば、ページファクトリモジュール308)を呼び出す。
図3において、ASP+ページ310に関連付けられたページファクトリ308が呼び出され、ASP+ページ310からのオブジェクトのインスタンスの作成および構成をハンドリングする。ASP+ページ310は、一意のURLによって認識または参照され得、他の接頭辞も用い得るが、例えば、".aspx"という接頭辞によってさらに識別することができる。特定の".aspx"資源に対するリクエストがまず、ページファクトリモジュール308によって受信されると、ページファクトリモジュール308は、ファイルシステムを検索して適切な資源またはファイル(例えば、.aspxページ310)を得る。このファイルは、リクエストを処理するサーバによって後に解釈またはアクセスされ得るテキスト(例えば、オーサリング言語データ)または別のフォーマットでのデータ(例えば、バイトコードデータまたはコード化されたデータ)を含んでもよい。物理的なファイルが存在する場合、ページファクトリモジュール308は、ファイルを開き、そのファイルをメモリに読み出す。あるいは、要求されたファイルは存在するが、予めメモリにロードされている場合は、以下に詳細に述べるように、資源は必ずしもメモリにロードされる必要はないかもしれない。要求されたaspxファイルが見つからない場合、ページファクトリモジュール308は、例えばHTTP"404"メッセージをクライアントに送信することによって、適切な「ファイルが見つからない」というエラーメッセージを戻す。
ASP+ページ310をメモリに読み出した後、ページファクトリモジュール308は、ファイル内容を処理し、ページのデータモデル(例えば、スクリプトブロックのリスト、ディレクティブ、静的テキスト領域、階層サーバ側制御オブジェクト、サーバ側制御プロパティなど)を構築する。データモデルは、ページオブジェクトの構造、プロパティおよび機能を定義するコードであるページベースのクラスを拡張させるCOM+(Component Object Model+)クラスのような新たなオブジェクトクラスのソースコードファイルを生成するのに用いられる。本発明のある実施形態において、ソースリストは、中間言語に動的にコンパイルされる。のちにプラットフォームに固有の命令(例えば、X86、Alphaなど)に適時に(Just-In-Time)コンパイルされる。中間言語は、COM+ IL コード、Java バイトコード、Modula 3 コード、SmallTalk コードおよびVisual Basicコードなどの汎用またはカスタム指向言語コードを含んでもよい。別の実施形態において、中間言語処理を省き、固有の命令をソースリストまたはソースファイル(例えば、ASP+リソース310)から直接生成する。制御クラスライブラリ312は、制御オブジェクト階層の生成に用いられる予め定義されたサーバ側制御クラスを得るためにページファクトリモジュール308によってアクセスされ得る。
ページファクトリモジュール308は、コンパイルされたクラスからページオブジェクトを作成する。ページオブジェクト314は、図1のウェブページ104に相当するサーバ側制御オブジェクトである。ページオブジェクト314およびその子オブジェクト(例えば、テキストボックスオブジェクト318、ボタンオブジェクト320および別のボタンオブジェクト322)が、制御オブジェクト階層316の一例である。他の制御オブジェクトの例は、本発明に従い考えることができ、カスタム制御オブジェクトと同様に、特に制限されるものではなく、表1に示すHTML制御に対応するオブジェクト(後述)も含んでいる。ページオブジェクト314は、図1のウェブページ104に対応する。テキストボックスオブジェクト318は、図1のテキストボックス106に対応する。同様に、ボタンオブジェクト320は、図1の追加ボタン108に対応し、ボタンオブジェクト322は、図1の削除ボタン110に対応する。ページオブジェクト314は、サーバ上の他の制御オブジェクトと階層的に関連している。ある実施形態において、ページオブジェクトは、その子オブジェクトを階層的に含んでいるコンテナオブジェクトである。別の実施形態では、依存関係などの他の形態の階層関係を用いることができる。多数レベルの子オブジェクトを有する、より複雑な制御オブジェクト階層において、1つの子オブジェクトが、他の子オブジェクトのコンテナオブジェクトであってもよい。
上記の実施形態において、制御オブジェクト階層316の制御オブジェクトは、サーバ300上で作成および実行され、各サーバ側制御オブジェクトは、クライアント上の対応するユーザインタフェース要素と論理的に対応する。サーバ側制御オブジェクトはまた、協働して、HTTPリクエスト302からのポストバック入力をハンドリングし、サーバ側制御オブジェクトの状態を管理し、サーバ側データベースとのデータ結合を行い、クライアントでの結果ウェブページの表示に用いるオーサリング言語データ(例えば、HTMLコード)を生成する。結果オーサリング言語データは、サーバ側制御オブジェクト階層316から生成(すなわち、レンダリング)され、HTTPレスポンス324でクライアントに送信される。例えば、結果HTML(または他のオーサリング言語)コードは、ACTIVEXタイプの制御またはその他、ブラウザによって処理されたとき、クライアント側ユーザインタフェース要素(例えば、制御ボタン、テキストボックスなど)を生み出すHTML構成を参照することができる。
ASP+リソース310でなされた宣言によって、サーバ側制御オブジェクトは、非ユーザインタフェースサーバコンポーネント330とクライアント側ユーザインタフェース要素との対話のために、1つ以上の非ユーザインタフェースサーバコンポーネント330にアクセスすることができる。例えば、ポストバック入力に応答して、サーバ側制御オブジェクトは、サーバ側イベントをそれらのイベント用に登録された非ユーザインタフェースサーバコンポーネントに対し立ち上げることができる。このように、非ユーザインタフェースサーバコンポーネント330は、ユーザとの対話を、ユーザインタフェース要素を介して、これらの要素を表示および処理するのに必要なコードをプログラミングすることなく、行うことができる。
図4は、本発明のある実施形態における動的コンテンツ資源の一例の内容を示す。例示された実施例において、ファイル400は、ある動的コンテンツファイルフォーマット(例えば、ASP+)でプレインテキスト宣言を含んでいる。各宣言は、ファイル400を読み出すページファクトリモジュール308に対し命令を与え、クラスを作成し、最終的にHTMLコードまたはその他、クライアントへHTTPレスポンスで送信するオーサリング言語をレンダリングする適切なサーバ側制御オブジェクトを呼び出す。
ファイル400の第1ラインは、以下のフォーマットにおいてデリミッタ"<%@"と" %>"との間にディレクティブを含む:
<%@ directive [attribute=value] %>
ここで、directiveは、特に制限されるものではなく、"page"、"cache"または"import"を含んでもよい。ディレクティブは、バッファリングセマンテックス、セッション状態要件、エラーハンドリングスキーム、スクリプティング言語、トランザクションセマンテックスおよびインポートディレクティブのような特性を決定するために、動的コンテンツファイルを処理するときにページファクトリモジュール308によって用いられる。ディレクティブは、ページファイル内のどこに存在してもよい。
第2ラインの<html>は、直接的な「書き込み」命令以外、結果HTMLコードをレンダリングするための情報において追加の処理が行われないようにリテラルとしてソースコードファイルへ書き込まれる標準HTML開始タグである。HTML構文において、<html>は、HTMLファイルの始まりを示し、これもまたリテラルであるライン21の終了タグ</html>と対になっている。
コード宣言ブロックは、ファイル400のライン3〜10に存在する。一般に、コード宣言ブロックは、ページオブジェクトおよび制御オブジェクトメンバ変数ならびにサーバ上で実行処理されるメソッドを定義する。以下のフォーマットにおいて:
<script runat = "server" [language = "language"][src = "externalfile"]>
....................................
</script>
ここで、言語およびsrcパラメータは任意である。本発明のある実施形態において、コード宣言ブロックは、"サーバ"に設定された値を有する"runat"属性を含む<script>タグを用いて定義される。任意には、"language"属性を内コードの文法を特定するために用いてもよい。デフォルト言語は、ページ全体の言語構成を表すことができるが、コード宣言ブロックの"language"属性により、開発者は、例えば、Jscript およびPERL (Practical Extraction and Report Language)などの同じウェブページ実行内で異なる言語を用いることができる。<script>タグはまた、任意には"src"ファイルを特定することができ、"src"ファイルは、そこからページコンパイラによる処理のための動的コンテンツ資源にコードが挿入される外部のファイルである。開示されている文法が本実施形態において用いられているが、別の実施形態では、本発明の範囲内で異なる文法を用いることができることを理解すべきである。
図4において、2つのサブルーチン、AddButton#ClickおよびDeleteButton#Clickがコード宣言ブロック内においてVisual Basicフォーマットで宣言されている。いずれのサブルーチンも2つの入力パラメータ、"Source"および"E"をとり、クライアント側クリックイベントが対応のボタンに検知されると呼び出される。AddButton#Clickサブルーチンにおいて、ユーザ名テキストボックスでのテキストは、単語"Add"に連結され、メッセージのテキストデータメンバにロードされる。DeleteButton#Clickサブルーチンにおいて、ユーザ名テキストボックスでのテキストは、単語"Delete"に連結され、メッセージのテキストデータメンバにロードされる。図4に示していないが、サーバ側制御オブジェクトのメンバ変数は、ファイル400のコード宣言ブロックで宣言され得る。例えば、Visual Basic文法を用いると、キーワード"DIM"は、サーバ側制御オブジェクトのデータ変数を宣言する。
「コードレンダリングブロック」(図示せず)もまた、動的コンテンツ資源に含まれ得る。コードレンダリングブロックは、ページレンダリング時間で実行処理される任意の量のコードを含むことができる。本発明のある実施形態において、コードレンダリングブロックは、ページレンダリング時に実行処理される1つの「レンダリング」メソッドで実行処理する。コードの他の部分は、そのレンダリングメソッドで実行処理され得る。コードレンダリングブロックは、以下のフォーマット(他のフォーマットも別の実施形態において考えられるが)を満たす。
<% InlineCode %>
ここで"InlineCode"は、ページレンダリング時にサーバ上で実行処理する独立言語型コードブロックまたは制御フローブロックを含んでいる。
インライン表現もまた、以下のような例示的な文法を用いて表現レンダリングブロックデリミッタ"<%@"と"%>"との間で用いることができる。
<%= InlineExpression %>
ここで、"InlineExpression"ブロックに含まれる表現は、"InlineExpression"からの値を宣言内の適切な場所のホールダに書き込むページオブジェクトの"Response.Write(InlineExpression)"への呼び出しによって最終的に包含される。例えば、"InlineExpression"は、以下のようにファイル400に含まれ得る。
<font size = "<%=x%>" > Hi <%=Name%>, you are <%=Age%>! </font>
これは、値"x"に格納されるフォントで挨拶およびある人の年齢についての記述を出力する。その人の名前および年齢は、コード宣言ブロック(図示せず)においてストリングとして定義される。結果HTMLコードは、適切な場所に"InlineExpression"の値を含むようにサーバでレンダリングされHTTPレスポンスでクライアントへ送信される。すなわち、以下のようなものである。
<font size = "12" > Hi Bob, you are 35!
ファイル400のライン11において、<body>は、HTMLドキュメントの本文の始まりを規定するための標準HTMLタグである。フィイル400のライン20において、終了タグ</body>もまた示されている。本発明のある実施形態において、<body>および</body>のいずれもリテラルである。
HTMLフォームブロックの開始タグ<form>が、図4のファイル400の本文セクション内、ライン12に見られる。フォームブロックの終了タグ</form>は、HTMLファイル400のライン19に見られる。任意のパラメータ"id"もまた、所与の識別子をフォームブロックに関連付けるためにHTML制御タグに含むことができ、これによって、1つのHTMLファイルに多数のフォームブロックが含まれることが可能になる。
ファイル400のライン18において、「メッセージ」によって識別されたサーバ側ラベルが宣言される。「メッセージ」ラベルは、ウェブページ上にラベルを表示するために、ファイル400のライン5および8で宣言されたコードで用いられる。
フォームブロック内に、図1のユーザインタフェース要素106、108および110に対応する3つのHTML制御タグ例が示されている。第1のユーザインタフェース要素がテキストボックスに相当するファイル400のライン13で宣言される。テキストリテラル"User Name"は、テキストボックスの左側に位置するラベルを宣言する。type="Text"を有する入力タグは、テキストボックスクライアント側ユーザインタフェース要素をレンダリングするサーバ側制御オブジェクトとして"UserName"という識別子を有するテキストボックスサーバ側制御オブジェクトを宣言する。ファイル400のライン15および16は、それぞれ、図1のボタン108および110として示されるクライアント側ユーザインタフェース要素を宣言する。"OnServerClick"パラメータは、ファイル400のコード宣言ブロックで宣言された適切なサブルーチンを特定する。そして、ファイル400での宣言へのレスポンスで生成されたサーバ側ボタン制御オブジェクトが、クライアント側ボタンのHTMLコードおよびボタンクリックイベントを実行する関連のサーバ側コードをレンダリングする。
ファイル400で宣言されたテキストボックスおよびボタンは、HTMLサーバ制御宣言の例である。初期状態では、ASP+リソース内のすべてのHTMLタグはリテラルテキストコンテンツとして取り扱われ、ページ開発者のプログラミングにおいてアクセスすることができない。しかし、ページ開発者は、"server"に設定された値を有する"runat"属性を用いて指定することによって、HTMLタグが構文解析され、アクセス可能サーバ制御宣言として扱われるべきであることを示すことができる。任意には、各サーバ側制御オブジェクトは、対応する制御オブジェクトのプログラム参照を可能にする一意の"id"属性と関連付けることができる。サーバ側制御オブジェクト上のプロパティ引数およびイベント結合もまた、タグ要素上の宣言名/値属性対を用いて特定することができる(例えば、OnServerClick は"MyButton#Click"対に等しい)。
本発明のある実施形態において、HTML制御オブジェクトを宣言する一般的な文法は以下のとおりである。
<HTMLTag id = "Optional Name" runat = server>
....................................
</HTMLTag>
ここで、"Optional Name"は、サーバ側制御オブジェクトの一意の識別子である。サポートされ得るHTMLタグのリストならびに関連文法およびCOM+クラスを表1に示すが、他のHTMLタグも本発明の範囲内で考えることができる。
Figure 0005010551
標準HTML制御タグに加えて、本発明のある実施形態によって、開発者は、HTMLタグセットの外側に共通のプログラム機能についてカプセル化する再利用可能コンポーネントを作成することが可能になる。これらのカスタムサーバ側制御オブジェクトは、ページファイル内の宣言タグを用いて特定される。カスタムサーバ側制御オブジェクト宣言は、"server"に設定された値を有する"runat"属性を含む。任意には、カスタム制御オブジェクトのプログラム参照を可能するために、一意の"id"属性が特定される。さらに、タグ要素における属性対である宣言名/値は、サーバ側制御オブジェクトのプロパティ引数およびイベント結合を特定する。インラインテンプレートパラメータもまた、適切な「テンプレート」の接頭文字列である子の要素を親サーバ制御オブジェクトに与えることによってサーバ側制御オブジェクトに結合されることがある。カスタムサーバ側制御オブジェクト宣言のフォーマットは、次のようになる。
<servercntrlclassname id="OptionalName" [propertyname="propval"] runat=server/>
ここで、"servercntrlclassname"は、アクセス可能制御クラスであり、"OptionalName"は、サーバ側制御オブジェクトの一意の識別子であり、"propval"は、制御オブジェクトの任意のプロパティ値を表す。
別の宣言文法を用いて、XMLタグ接頭語は、以下のフォーマットを用いることにより、ページ内にサーバ側制御オブジェクトを特定するためのより簡潔な表記法を提供するのに用いることができる。
<tagprefix:classname id = "OptionalName" runat = server/>
ここで、"tagprefix"は、所与の制御名スペースライブラリと関連し、"classname"は、関連名スペースライブラリでの制御の名前を表す。任意の"propertyvalue"もまたサポートされている。
図5を参照すると、本発明の実施形態のコンピュータシステムの一例は、プロセッサユニット502、システムメモリ504およびシステムメモリ504を含む種々のシステムコンポーネントをプロセッサユニット500に接続するシステムバス506を含んでいる従来のコンピュータシステム500という形態の汎用コンピュータ装置を含んでいる。システムバス506は、メモリバスまたはメモリコントローラ、種々のバスアーキテクチャを用いるペリフェラルバスおよびローカルバスを含む幾つかのタイプのバス構造のいずれであってもよい。システムメモリは、再生専用メモリ(ROM)508およびランダムアクセスメモリ(RAM)510を含んでいる。コンピュータシステム500内の要素間での情報の転送を助ける基本ルーチンを含んでいる基本入力/出力システム512(BIOS)は、ROM508に格納されている。
コンピュータシステム500は、さらに、ハードディスクの読み出しおよび書き込みを行うハードディスクドライブ512、着脱可能な磁気ディスク516の読出しおよび書き込みを行う磁気ディスクドライブ514およびCD ROM、DVDまたは他の光学媒体のような着脱可能な光ディスク519の読出しおよび書き込みを行う光ディスクドライブ518を含んでいる。ハードディスクドライブ512、磁気ディスクドライブ514および光ディスクドライブ518は、それぞれ、ハードディスクドライブインタフェース520、磁気ディスクドライブインタフェース522および光ディスクドライブインタフェース524によってシステムバス506接続されている。ドライブおよびその関連コンピュータ読み取り可能媒体が、コンピュータシステム500のコンピュータ読み取り可能命令、データ構造、プログラムおよび他のデータの不揮発性記憶部を提供している。
本明細書に記載の上記環境例では、ハードディスク、着脱可能な磁気ディスク516および着脱可能な光ディスク519を用いているが、データ保存可能な他のタイプのコンピュータ読み取り可能媒体を上記システム例に用いることができる。上記動作環境例に用いることができるこれらの他のタイプのコンピュータ読み取り可能媒体は、例えば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌイ(Bernoulli)カートリッジ、ランダムアクセスメモリ(RAM)および再生専用メモリ(ROM)などがある。
多数のプログラムモジュールが、ハードディスク、磁気ディスク516、光ディスク519、ROM508またはRAM510に格納され、これらは、オペレーティングシステム526、1つ以上のアプリケーションプログラム528、他のプログラムモジュール530およびプログラムデータ532を含む。ユーザは、コマンドおよび情報をコンピュータシステム500にキーボード534およびマウス536または他のポインティング装置などの入力装置によって入力することができる。他の入力装置としては、例えば、マイクロフォン、ジョイステック、ゲームパッド、サテライトディッシュおよびスキャナなどがある。これらおよび他の入力装置は、システムバス506に接続されているシリアルポートインタフェース540を介して処理装置502に接続されていることが多い。しかし、これらの入力装置はまた、パラレルポート、ゲームポートまたはユニバーサルシリアルバス(USB)などの他のインタフェースによって接続されていてもよい。モニタ542または他のタイプの表示装置もまた、ビデオアダプタ544などのインタフェースを介してシステムバス506と接続している。モニタ542に加えて、コンピュータシステムは、典型的には、スピーカおよびプリンタなどの他の周辺出力装置(図示せず)を含む。
コンピュータシステム500は、リモートコンピュータ546のような1つ以上のリモートコンピュータへの論理接続を用いたネットワーク化された環境で動作することができる。リモートコンピュータ546は、コンピュータシステム、サーバ、ルータ、ネットワークPC、ピア(peer)装置、または他の共通ネットワークノードであり得、典型的にコンピュータシステム500との関連で上述した要素の多くまたはすべてを含む。ネットワーク接続は、ローカルエリアネットワーク(LAN)548およびワイドエリアネットワーク(WAN)550を含む。このようなネットワーク環境は、オフィス、企業規模コンピュータネットワーク、イントラネットおよびインターネットにおいて珍しいものではない。
LANネットワーク環境で用いるとき、コンピュータシステム500は、ネットワークインタフェースまたはアダプタ552を介してローカルネットワーク548に接続される。WANネットワーク環境で用いるとき、コンピュータシステム500は、典型的に、インターネットのようなワイドエリアネットワーク550による通信を確立するためのモデム554または他の手段を含む。モデム554は内蔵または外付けのいずれでもよく、シリアルポートインタフェース540を介してシステムバス506と接続されている。ネットワーク化された環境において、コンピュータシステム500に関連して述べたプログラムモジュールまたはその一部は、リモートメモリ記憶装置に記憶されてもよい。図示されたネットワーク接続は例であって、コンピュータ間の通信リンク確立のために他の手段を用いることができる。
本発明の実施形態において、コンピュータ500は、ウェブサーバを表し、CPU502が、記憶媒体516、512、514、518、519またはメモリ504のうち少なくとも1つに記憶されたASP+ファイル上でページファクトリモジュールを実行処理する。HTTPレスポンスおよびリクエストは、クライアントコンピュータ546に接続されたLAN548により通信される。
ページファクトリモジュール308によって行われる処理600を図6のフローチャートに示す。図6では、処理600は、制御オブジェクト階層204の生成処理(図2)にほぼ対応する。処理600は、ASP+ページ(ASP+ファイルともいう)をコンパイルされたオブジェクトコードクラスに変換し、次いで、それは、制御オブジェクト314、318、320および322(図3)のインスタンスを作成するためにメモリにロードされる。
サーバが処理202においてURLに対するリクエストを受信すると(図2)、ページ作成処理600が始まる。リクエストの受信後、構文解析処理602が、要求されたURLの構文解析を行い、どの資源が要求されているかを判断する。資源は、静的なファイル(.htm、.gif、.jpgなど)、ディレクトリブラウジング起動、DAV(デジタルオーディオ/ビデオ)ファイルおよび動的なコンテンツリクエスト(.aspx、.soapなど)を含み、本発明は、これらをハンドリングするように構成されている。サーバ側によって受信された、入ってくるHTTPリクエストは、ハンドラクラス、例えば、IHTTPHandlerクラスの特定のインスタンスによって最終的に処理される。ハンドラファクトリ、例えば、IHTTPHandler"ファクトリ"の使用によって、ハンドラインスタンス、例えば、IHTTPHandlerインスタンスへのURLリクエストの解釈を実際に行う差込可能なアーキテクチャが提供される。この解釈は、入ってくるURLのファイル拡張およびHTTPコマンドを、適切なハンドラインスタンス、例えばIHTTPHandlerインスタンスを最終的に作成することになっているIHTTPHandlerFactoryクラスのようなファクトリクラスへ写像することができるアプリケーション構成設定を用いて容易に行うことができる。構文解析処理において、差込可能アーキテクチャにより種々の資源を識別できるが、以下の記載は、動的ウェブページコンテンツ資源を識別するHTTPリクエストに焦点をあて、特に、.aspxまたはASP+ページもしくはファイルのような動的ウェブページコンテンツファイルに焦点を当てている。
構文解析処理602で実際の資源が識別されると、チェック処理603において、メモリをチェックし、クラスがメモリに存在するかどうかを判断する。クラスがコンパイルされているかどうかを判断するために、チェック処理603において、クラスがコンパイルされるとセットされるフラグを検索することによって、または名前によってメモリ内のクラスを検索する。どちらにしても、チェック処理603において、コンパイルクラスがすでにコンパイルされ格納されていることを示す指標を検索する。クラスがメモリにある場合、フローはYES枝に分岐しインスタンス作成処理612に進む。インスタンス作成処理は、コンパイルされたクラスから制御オブジェクトのインスタンスを作成する。チェック処理603において、クラスがコンパイルされていないと判断されると、フローはNO枝に分岐し位置決定処理604に進む。
チェック処理603が、クラスはメモリに存在しないと判断すると、位置決定処理604において、特定の資源を検索し探し当て、ファイルをメモリに読み出す。"System. ASP WebForms. PageFactory"クラスのようなベースクラスが、ASPおよびASPXページのインスタンス作成および構成をハンドリングするハンドラファクトリインプリメンテーションを提供する。資源、この場合は物理的な動的なウェブページコンテンツファイルが見つからなければ、適切なエラーメッセージが戻される。
位置決定処理604の次に、処理600において、構文解析作成処理606を行い、ここでASP+ファイルのような資源の構文解析を行う。構文解析/作成処理606は、ASP+ファイルを宣言ごとに読み出し、構文解析しながら集めた情報からデータモデルを作成する。データモデルは、ソースコードを引き出すことができるアクティブコンテンツファイルの要素に関連する要素を含むデータ構造である。データモデルは、アクティブコンテンツファイルで参照された構造的要素を含み、これらの要素は、アクティブサーバページの結果制御オブジェクトの構造を表すように連結される。本発明のある実施形態において、データモデルは、階層的なツリー構造で関連付けられたオブジェクトの組み合わせである。
ウェブコンテンツファイルの各宣言は、データモデルの作成方法およびデータモデルに格納される情報を示す所定の要素を有している。例えば、宣言がリテラルテキスト宣言である場合、データモデルは、テキストが適切な位置に挿入されるような情報を含むだけでよい。しかし、宣言が入れ子の制御オブジェクトが存在することを示す場合、ASP+ファイルに宣言されたような入れ子に従ったデータモデルが作成されなければならない。本質的に、データモデルは、各宣言ごとに1つのオブジェクトを含み、各オブジェクトは、各オブジェクトに子オブジェクトが存在するかどうかに関する情報を含む。
ASP+ファイルが構文解析され、データモデルが作成されると、任意である作成処理607を行ってもよい。作成処理607は、以下に記載するように、データモデルを解析し、例えば、作成すべきソースコードファイルのようなソースコードを抽象化したものである中間データ構造を作成する。本質的に、中間データ構造は、コードを記述する包括的なデータ構造である。中間データ構造は、クラスを記述する上位レベルのデータ構造を有する。各クラスごとに、クラス名およびメソッドのリストまたはアレイを有する別のレベルのデータ構造であってもよい。さらに、各メソッド自体、ステートメントおよび宣言のような種々の要素を有するデータ構造である。ステートメントは、表現、データ呼び出しなどのような項目を含み得る。
ASP+ファイルは構文解析され、データモデル(および任意には、中間データ構造)が作成されると、作成ソースコードモジュール608は、典型的には、ASP+ファイルに存在する各宣言のコードの種々のラインを書き込むことにより、各データモデルの解析を通して必要なソースコードを作成する。一般に、このステップは、データモデルにおける公知の宣言および他の情報のコードへの直接的な翻訳を伴う。このような翻訳は、翻訳を行うアプリケーションへハードコード化されるか、または、各翻訳は、検索テーブルに格納され得る。この種の検索テーブルは、ほとんどすべての言語にとって適切な翻訳を提供するよう作成され得るが、オブジェクト指向ソースコード言語の使用により、既存のCOMまたはCOM+ライブラリを利用するためのCOMまたはCOM+クラスへのコンパイルが簡単になる。(例えば、ソースコード言語の一例として、C++またはVbasicなどがある。)さらに、中間データ構造が処理607で作成される場合は、翻訳はさらに直接的になる。このような場合、データ構造は、包括的なソースコード言語ファイルに非常に近くなって、翻訳は、単に、特定のソースコード言語のソースコードファイルを作成するのに適切な辞典および文法の追加になるにすぎない場合がある。
ASP+ファイルは、結果ソースコードファイルに特定のソースコード言語を宣言する。ASP+ファイルに言語が宣言されていない場合、Visual Basicなどのデフォルト言語を用いることができる。データモデルまたは中間データ構造から生成された結果ソースコードファイルは、本質的に、プログラマがサーバ側制御オブジェクト階層を利用する場合で、このコード生成ツールの恩恵を受けないときに書き込むことを要求されることになるタイプの高度なソースコードファイルである。
ソースコードファイルが完成すると、コンパイル処理614において、ソースコードファイルをコンパイルし、オブジェクトコードまたは他の実行処理可能フォームでコンパイルされたクラスを作成する。あるいは、クラスは、バイトコードまたは仮想装置上で起動するできる他の言語にコンパイルすることができる。ソースコードファイルのコンパイルは、ソースコードファイルに存在するソースコード言語をコンパイルするように構成されたコンパイラの使用を伴う。そして、クラスが、インスタンス作成処理616によって呼び出され、ウェブページのためのページオブジェクトおよび結果制御オブジェクトを作成する。URLリクエストに明示的に備わっていないが、インスタンス作成処理は、特定の資源のURLリクエストの一部をなす非明示的処理である。
ASP+ファイルがページクラスにコンパイルされると、クラスは、将来のリクエストで使用可能な状態で維持される。したがって、ASP+ファイルのソースコードの生成処理は、1度行われるだけでよく、後のリクエストはコンパイルされたクラスを利用することができ、必要なオブジェクトを必要に応じてインスタンス作成する。コンパイルされたクラスは、短期間の間キャッシュされ得、かつ/またはコンパイルされたクラスはディスクに格納し得る。実際、ASP+ファイルが一旦コンパイルされると、元々のASP+ファイルを再び触れる必要がない。もちろん、ASP+ファイルが修正される場合は、コンパイル処理を繰り返すことによってページクラスを更新する。適切なフラグまたは他の指標メカニズムを用いてASP+ファイルが更新されたかどうかを判断することができ、したがって自動クラス更新が可能である。あるいは、ウェブページファイルまでASP+を更新した後、キャッシュされたクラスを除去するという責任は開発者に残され得る。
データモデルの作成に関連した詳細を図7に示す。データモデル作成処理700は、テスト処理702でASP+ファイルにおいて宣言があるかどうかを判断することから始まる。純粋なHTMLファイルのようなコンパイルすべき宣言がない場合、フローは、NO枝に分岐し処理714の終了に進む。
テスト処理702でASP+ファイルに少なくとも1つの宣言があると判断されると、フローはYES枝に分岐し、ASP+ファイルで第1の宣言を得る獲得処理704に進む。第1の宣言からの情報は、格納処理706によってデータ構造に格納される。データ構造に格納された実際の宣言のみならず、宣言が子オブジェクトを有するコンテナタイプの制御を宣言するかどうか、または宣言がディレクティブなどを宣言するかどうかなどの第1の宣言に関連した情報もデータ構造に格納され得る。ウェブページは、ASP+ファイルであるので、典型的に第1の宣言としてディレクティブタグを有する。ディレクティブタグは、種々のディレクティブ、例えば図4のライン1に示すようなデリミッタ"<%@"と"%>"との間の情報を含む。図4に示すデリミッタは、単に例示的であり他の選択も可能であることを理解すべきである。ディレクティブは、ソースコードファイル作成に用いられるページファクトリモジュールに情報を供給する。例えば、図4のライン1に示すディレクティブは、用いられるべきデフォルト言語が、この例では、VB(すなわち、Visual Basic)であることを示している。
第1の宣言が取り出されデータ構造に格納されると、処理700は、ファイルに別の宣言があるかどうかを判断するテスト処理708に進む。この処理は、上記の処理702と同様である。もはや宣言がなければ、フローはNO枝に分岐し終了ステップ714に進む。別の宣言があると、フローはYES枝に分岐し、獲得処理710に進み、次の宣言を獲得する。
次の宣言の取り出しの次に、格納処理708は、データモデルの他のデータ構造に関連付けられた異なるデータ構造に次の宣言に関連する情報を格納する。第1の宣言に関して上で述べたように、データ構造に格納された情報は、次の宣言のリテラルテキストのみならず、リテラルテキストから派生した情報をも含み得る。したがって、データ構造は、必要に応じて階層的に第1のデータ構造に関連付けられ得る。
次のデータ構造への情報の格納の次に、フローはテスト処理708に分岐し、資源ファイル、例えば、ASP+ファイルにデータモデルに読み込むべき宣言がまだ存在するかどうかを判断する。存在しない場合は、フローは、NO枝に分岐し処理の終了に進む。しかし。テスト処理708がまだ宣言が存在すると判断すると、フローはYES枝に分岐し、次の宣言を獲得する獲得処理710に進む。獲得処理710の次に、格納処理708において、上記のように、次の宣言に関連した情報を格納する。これらのステップ708、710および712は、すべての宣言が順次取り出され、データ構造に格納されるまで続く。データ構造は、入れ子のオブジェクト、子オブジェクト、ノードまたは親オブジェクトのサブ要素は、それらがサブ要素として識別できるように連結される階層として関連付けられてもよい。
ソースコードモジュール608(図6)の作成には、このデータモデルを用いて、特定のソースコード言語のソースコードファイルを作成する。データモデルからのソースコードファイルの作成処理は、ソースコード言語に依存することに注目することが重要である。すなわち、特定の言語で書き込まれたソースコードファイルは、典型的に、特定のフォーマット要件、例えば、すべての可変宣言がこれらの変数の使用に先立つという要件を有する。したがって、その言語のコンパイラが呼び出されると、適切なプログラム命令がソースコードファイル内の適切な位置に配置されなければならない。この作業をなし遂げるために、ASP+ファイルを評価して、ファイルの中にどんな一意の要素または特徴があるかを判断しなければならないし、またファイルを処理してソースコードファイルを生成しなければならない。ソースコードファイルは、典型的に、第1の一組の要素または宣言が可変宣言のようなファイルの始めにあることを要求するので、データモデル全体が、この情報のために解析されるべきである。同様に、制御オブジェクト情報は、ファイルの中央にあるべきなので、処理の第1フェーズの次の第2フェーズ時にこの情報のためにデータモデル全体を解析すべきである。
これらのフェーズは、ソースコードファイル(または処理607での中間データ構造)に書き込まれるべきコードの別個の部分を判断する機能的処理であり、ここでは、別個の部分は、ソースコードファイル内の結果位置に基づき論理的に組み合わされる。したがって、これらのフェーズは、1つのデータモデルの「パス」またはトラバースであると考えられ、したがって連続的に行われる。しかし、あるいは、これらのフェーズは、別個の並行した処理として行われてもよく、別個の処理の結果は1つのソースコードにまとめられ、処理が単一データモデルまたはデータモデルの別個のコピーのいずれかを評価する。あるいは、コードの別個の部分を判断し書き込む機能的な処理またはフェーズは、単一のトラバース時に行われてもよく、そこで、ソースコードは、ソースコードファイルの別個の部分に選択的に書き込まれたり、その部分が、ソースコードの論理的部分間の適切な連結を提供するようにまとめられるか、関連付けられた別個のファイルに書き込まれたりする。したがって、本明細書中では、別個の解析を、実質的に連続して、すなわち次々に行われるように記載しているが、解析は実質的に同時にスプリットされたり、実行されてもよい。
図8に示す処理またはフローは、データモデルから比較的直接ソースコードファイルを生成する実施形態、すなわち図6に示す省略処理607に関する。本実施形態は、変数が始めに宣言され、オブジェクトおよびメソッドが変数情報に続くVBコードファイルのようなソースコードファイルを生成する。図8に示すソースコード作成処理800は、データモデルの「パス」として別個のフェーズを示し、データモデルのデータ構造を通過する3つのパスになっている。第1のパスの処理において、変数および宣言情報を探している。第2のパスの処理において、オブジェクト作成情報を探し、第3のパス処理800において、コードレンダリング情報を探している。
第1のパスは、変数および他の宣言情報についてデータモデルをトラバースする処理802で始まる。このステップは、処理700で作成されたデータモデルの第1のデータ構造を解析することから始まる。第1のデータ構造の解析処理において、宣言に関するソースコードファイルに書き込まれるべきソースコードの特定ラインがあるかどうか判断する。
第1のデータ構造の解析が終了すると、処理804において、ソースコードファイルに変数および宣言情報に関するソースコードを生成し書き込む。ライタオブジェクトが呼び出され、それに与えられたテキストをソースコードファイルに単に書き込む。したがって、ライタオブジェクトへの呼び出しは、ソースコードファイル名のパラメータと変数または宣言情報に関する特定のプログラミング言語の文法のテキストストリングとの両方を含む。あるいは、テキストは、コピーされるか、または他の公知の手段を用いてソースコードファイルに書き込まれる。
また、処理804において、ライタオブジェクトへ渡すべき適切な文法を決定しなければならない。本質的に、現在のデータ構造が、サーバ側制御を表す場合は、処理804において、それに対するソースコードを生成する。そうでなければ、処理804において、それをソースコードファイルにコピーする。本質的に、処理804は、3つのうちの1つを行い得る。生成処理804において、まず、ASP+ファイルにおける情報がリテラルテキストであるかどうか、したがってソースコードファイルに直接書き込まれるべきかどうかを判断してもよい。これは、HTMLタグがASP+ファイルに挿入される場合であり、この場合、ソースコード宣言は生成されない。その代わりに、情報は単に資源ファイルにコピーされる。処理804において、第2に、テキストが単純な翻訳、特定のソースコード言語の適切な文法フォームで1対1の対応を要求するかどうかを判断してもよい。このような処理804において、1対1対応を探すか、または、ページファクトリモジュールにハードコードされた場合は1対1翻訳を行い、結果情報をライタオブジェクトに供給する。第3に、1対1翻訳ができない場合は、処理804において、より複雑な翻訳が要求され、したがってモジュールまたは次の検索テーブル処理を呼び出し、ライタオブジェクトに渡されるべき適切なソースコード文法の作成処理を行う。典型的に、宣言情報の翻訳は直接的である。
処理804において、第1のデータ構造のソースコードの生成および書き込みを行うと、テスト処理806において、データモデルに解析すべきデータ構造がまだ存在するかどうかを検知する。データモデルのこの第1のパス時に解析すべきデータ構造がまだある場合は、フローはYES枝に分岐して処理800の始めに戻り、802において次のデータ構造に対してトラバースを行う。このような場合、次のデータ構造は、上記のように解析されソースコード文法を生成し、その文法コードを資源ファイルに書き込むライタオブジェクトを呼び出す。
テスト処理806において、この第1のパス時にデータモデルに解析すべきデータ構造がもう存在しないと判断した場合は、フローはNO枝に分岐してトラバース処理808に進み、データ構造を通過する第2のパスを開始する。トラバース処理808は、典型的にオブジェクト製作およびメソッド作成を書き込むコードを書き込むという次のフェーズを開始する。トラバース処理808は、データモデルの上から始まり、データモデルの始めのデータ構造に戻る。
次に、生成および書き込みソースコード処理810において第1のデータ構造を解析し、オブジェクト作成に関する情報がその第1のデータ構造にあるかどうかを判断する。このようなオブジェクト作成情報が第1のデータ構造に存在する場合、特定のプログラミング言語の文法が作成および生成されてソースコードファイルに書き込むライタオブジェクトに送信される。本質的に、処理810は、上記の処理804と同様であり、ここでは、データ構造が特定タイプの情報について解析され、その情報がデータ構造から収集されると、何らかの翻訳を行い、その情報に関するソースコード言語を作成する。情報がリテラルである場合、処理810において、その情報をソースコードファイルに直接送ることができる。同様に、その情報が簡単な翻訳を必要とする場合は、その簡単な翻訳は、プログラムにハードコードされるか、あるいは検索テーブルタイプ処理の一部であってもよい。また、さらに複雑な構造が要求される場合は、検索テーブルまたは他のモジュールを呼び出し、情報を処理し、ソースコードファイルに適切な文法ソースコードを作成する。
処理810の次に、照会ステップ812は、データモデルに解析すべきデータ構造が存在するかどうかをテストする。オブジェクト作成のために解析すべきデータ構造がデータモデルに存在する場合、フローはYES枝に分岐し次のデータ構造をトラバースするトラバース処理808に進む。したがって、処理808において、次のデータ構造に戻り、処理810において、オブジェクト作成に関する情報のデータ構造を解析する。このオブジェクト作成情報は、上記のように、ライタオブジェクトに送信され、ソースコードファイルに追加することができるソースコードラインに翻訳される。ステップ812、808および810は、すべてのソースコードがオブジェクト作成に関し書き込まれるまで繰り返される。
判断ステップ812が、オブジェクト作成のために解析すべきデータ構造がデータモデルにもう存在しないと判断すると、フローはNO枝に分岐し処理814に進み、第2のパスを終了する。この第3のパスは、データモデルのトップの処理814で始まる。処理808および802に関して上で述べたように、このトラバースステップは、まず、データモデル内の第1のデータ構造を取り出す。処理814でのデータモデル内の第1のデータ構造の取り出しの次に、処理816で、コードレンダリング情報のデータ構造を解析する。コードレンダリング情報は、ライタに送信されたり、ソースコードファイルに追加させるプログラミング言語での特定な文法に翻訳される。コードレンダリングメソッドは、ソースコードファイルの終わり近くにあり、したがって、第3のパスがオブジェクト作成パスの次に行われる。あるいは、コードレンダリングメソッドが同時スレッド処理に間に生成され、資源ファイルの終わりに追加される。
処理816は、上記の処理810および804とかなり似ており、このソースコード情報は、データ構造にあるコードレンダリング情報から収集され得る。さらに、上記のように、情報は直接挿入されてもよく、1対1の割合で翻訳されてもいいし、より複雑なモジュールを用いてソースコードファイルの文法を生成することを要求してもよい。処理816の次に、検知処理818において、データモデルにデータ構造が残っていないかどうか判断する。
処理818において、この第3のパス間に解析すべきデータ構造がまだ存在すると検知すると、フローはYES枝に分岐し、次のデータ構造のトラバースのために814に戻る。次のデータ構造が呼び出され、処理818において、次のデータ構造のコードレンダリング情報に関するソースコードの生成および書き込みを行う。
除リ818において、解析すべきデータ構造がもはや存在しないと判断すると、フローはNO枝に分岐し、処理連結820で処理を終了する。
上記の説明により明らかなように、数回のパスがデータモデルに対して行われる。これは、データモデルの各宣言が、ソースコードファイルの種々の場所に置かれるコードの特定のラインを要求することによる。しかし、ソースコードファイルを書き込む際、ライタオブジェクトは、ファイルに連続的に追加して順次書き込むことしかできず、予め書き込まれたコードライン間にソースコードラインを挿入できない。したがって、データモデルは、ソースコードの第1または上部、ソースコードの第2または中間部、およびソースコードファイルの第3または最後の部分に属する適切な情報を収集するために1回以上トラバースしなければならない。パスの数は、種々のコンピュータ言語に対し存在するコードの部分の数によって異なることが予想される。
図9に示す処理またはフローは、データモデルから中間データ構造を生成し、次いで、中間データ構造からソースコードファイルを生成する実施形態、すなわち図6の処理607および608の別の実施形態に関する。本実施形態のフロー900は、処理804、810および816が特定の言語のソースコードを生成し、処理904、910および916が、ソースコードを生成するのではなくて、中間データ構造の部分を生成することを除いて図8のフローと同様である。したがって、処理904、910および916が、データモデルでの情報に関する情報を生成する際に処理804、810および816と同様の処理を行う。しかし、生成された情報は包括的であり、後に異なるソースコード言語のソースコードファイルを作成するのに用いられることがある。
データモデルに解析すべきデータ構造がもはや存在しないと判断されると、中間データ構造が完成し、フローは分岐して作成処理920に進む。作成処理において、中間データ構造からソースコードファイルを作成する。データ構造はソースコードファイルの包括的な記述であるので、処理920において中間データ構造を包括的な記述から特定の言語コードファイルに翻訳する。
図10は、ウェブページ開発者によって製作されたウェブページ資源ファイル、すなわちASP+ファイルの例である。ファイルは、ソースコードファイルを生成するための処理600のサブジェクトである。図10に示すASP+ページは、ライン1にディレクティブライン、ライン3から13にサーバ側スクリプトブロックおよびライン16から21にサーバ側コントロール宣言ブロックを有する。ディレクティブラインは、どのようなタイプのソースコード言語を用い、それに一般的な記述を与える(そうでなければソースコードファイルのどのコードにもならない)かを判断するために処理600において用いられる。コード宣言ブロック"<script runat=server> </script>"内に書かれたすべてのコードは、概念的にページメンバ宣言(変数、プロパティ、メソッド)として扱われ、図11に示すような生成ファイルの資源ファイルに直接挿入される。
図11は、図10に示すASP+ファイルを用いてソースコードを作成する処理によって作成されたソースコードファイルの一例である。図11の第1のラインは、ソースコードファイルによって作成しようとしているページクラスは、コンパイルされたとき、System.ASP.WebForms.Pageから引き継いでいることを示している。このクラスからの引継ぎは、ページクラスの多くの制御機能を提供するので重要なステップである。初期状態として、生成された資源ファイルは"System.ASP.WebForms.Page"ベースクラスのサブクラスである。任意には、開発者は、ディレクティブラインに与えられた"Inherits"属性を用いて代替クラスを特定することができる。
ライン3および4は、第1のパスでデータモデルを通っている間に作成された可変宣言を示している。
第2のパス時にライン6に示された情報が作成され、新しい制御オブジェクト"DataList"を作成し、それをMyDataと名づける。ある実施形態において、ASP+ファイル宣言ブロック"<script runat=server> </script>"内に書き込まれているすべてのコードは、ページメンバ宣言(変数、プロパティ、メソッド)として扱われ、上記のような生成ファイルの資源ファイルに直接挿入される。このように、コード8−13のラインは、リテラルテキストとして直接挿入された。データモデル606の作成の間、リテラルテキストに関連する情報は、多数のパスの間トラバースされないように、本質的にデータモデルの上部または離れて、ストリングまたはアレイで格納された(図8)。データモデルの作成時に、この情報は直接挿入されると判断され、データモデルにリファレンスポインタを有するアレイとしてそれを格納することができる。
ライン15〜39は、制御オブジェクト情報構築に関する第2のパスの間に、コードの1セクションが書き込まれた。ライン15〜20は、トップレベルのオブジェクトの作成において用いられるコードを表す。トップレベルのオブジェクトは、図3に示すようなページオブジェクト314のようなページ全体のコンテナタイプのオブジェクトである。この制御オブジェクトは、作成されたASP+ページはこのタイプの制御オブジェクトを有するので、図10に示す実質的なコードから比較的独立して構築される。
図11のライン22〜27は、MyListと名づけられた子制御オブジェクトの作成に用いられるコードを表す。図10のライン16に示すように、テーブルリスト制御が定義され、識別子"MyList"を与えられた。図10のライン16からの情報は、ステップ810(図8)において図11に示されるライン22〜27に翻訳される。本質的に、処理810において、図10のライン16のコード部分の構文解析すると、"tablelist"タイプの制御を作成すべきであると認識される。認識されると、図11に示されるライン22〜27の情報は、テーブルから検索するか、またはライン22〜27に示されたコードを生成するための"MyList"のような適切な変数を挿入して公知の計算を用いて生成される。システムは、このタイプの制御を認識するように設計されているので、図11に示されたコードを生成することができる。一旦、生成されると、処理810は、そのコードもファイルに書き込む。
同様に、図11のライン29〜34は、別の制御オブジェクト、この場合は、"template"タイプのオブジェクトを表す。テンプレートは、それらもまたコンテナ制御であり、実行時間に実際に生成されるという点で特別なオブジェクトである。いずれにしても、テンプレートの制御オブジェクトの生成に必要なコードがステップ810(モデルにまだデータ構造が存在するかどうかを判断するテスト812に引き続いて)において生成される。上記のように、テンプレート制御オブジェクトが生成されるべきであり、図11に示すコードが生成されファイルに書き込まれているという認識がなされる。重要なことは、図11のライン32および33の"control3"へのリファレンスによって明らかなように、テンプレートのコードは、子制御に関連する情報を必要とする。したがって、データモデルが606(図6)で作成されると、この情報またはこの情報を決定する指標が、テンプレート制御情報とともに格納された。また、コードは、コードの生成が直接的であるようにテンプレート制御オブジェクトに対して予め決められている。
子制御が、図10のライン19のコードおよび図11のライン36〜39でのそれに対応する翻訳されたコードを用いてテンプレート内に作成される。図10のライン19は、識別子"MyLabel"を有する"label"タイプの制御を呼び出す。テーブルリスト制御およびテンプレート制御と同様に、ラベル制御は、処理810が認識する公知のタイプの制御であり、次いで適切なコードを生成し、それを図11のライン36〜39に示すようなファイルへ書き込むことができる。
データモデルの最後のパス時にライン41〜51が作成および生成され、ソースコードファイルに書き込まれた。ライン41〜51におけるコードのラインは、クライアントへのレスポンスの一部になるHTMLコードをレンダリングするために呼び出されるレンダリングメソッドを表している。レンダリングコードは、ステップ816でのこのようなコードを生成すべきであるという認識に基づき生成される。一旦認識されると、コードは単に検索テーブルから判断されるか、または必要に応じて生成される。
図11に示すコードは、特定の動的ウェブページファイル、すなわち図10に示すファイルからのサーバ側生成コードを表している。図11に示すファイルが完成すると、ファイルは、図6に示す処理610に関して上に述べたようにコンパイルされてもよい。コンパイルが、動的ウェブページコンテンツファイルの制御オブジェクト制御を生成するのに用いることができるクラスとなる。クラスは、キャッシュ、または他のメモリに格納され、ページのためのオブジェクトのインスタンスを作成するために所望の回数用いることができる。結果クラスのコンパイルおよびパーシスタンスのいずれも、ディスクへのアクセスが必要でないように「インメモリ」で行われ得、これは、一般にメモリで行うより時間がかかる。
サーバ側ページのセットアップ、起動および実行に必要なすべての処理は、動的にコンパイルされたページクラス内にカプセル化される。その結果、ページセットアップの間にファイルの追加的な構成/構文解析は必要でない。さらに、元々の.aspx"またはASP+ファイルは再び扱われることはなく、「実行時間ホスト環境」、例えば、ASPスクリプトエンジンは、ページ実行処理の間要求されない。
本明細書中の本発明の実施形態は、1つ以上のコンピュータシステムの論理ステップとして実行される。本発明の論理処理は、(1)1つ以上のコンピュータシステムで実行処理されるプロセッサ実行ステップシーケンスとして、(2)1つ以上のコンピュータシステム内の相互接続された機械モジュールとして実行される。実行は選択の問題であり、本発明を実行するコンピュータシステムの性能要件に依存する。したがって、本明細書に記載の本発明の実施形態を構成する論理処理は、処理、ステップ、オブジェクトまたはモジュールと様々に表現することができる。
上記の明細書、実施例およびデータは、本発明の実施形態の構造および使用の完全な説明を提供している。本発明は、本発明の精神および範囲から逸脱することなく多数の形態で実施することができるので、本発明は添付の請求項にある。
本発明のある実施形態におけるクライアントに表示するウェブページコンテンツを動的に生成するウェブサーバを示す。 本発明のある実施形態におけるサーバ側制御オブジェクトを用いてクライアント側ユーザインタフェース要素の処理およびレンダリングのための処理のフローチャートを示す。 本発明のある実施形態で用いるウェブサーバのモジュールの一例を示す。 本発明のある実施形態における動的コンテンツファイル(例えば、ASP+ページ)の一例を示す。 本発明のある実施形態を実行するのに有用なシステムの一例を示す。 本発明のある実施形態におけるページオブジェクトの処理を表すプロセスフローチャートを示す。 データモデルを作成するためのサーバ側アプリケーションの構文解析を表すプロセスフローチャートを示す。 ソースコードファイルを作成するためのデータモデルのトラバースを表すプロセスフローチャートを示す。 本発明の別の実施形態におけるソースコードファイルを作成するためのデータモデルのトラバースを表すプロセスフローチャートを示す。 本発明による構文解析され得るASP+ページの一例を示す。 図10に示す初期ASP+ファイルで本発明を用いて作成されたソースコードファイルの一例を示す。
符号の説明
100 クライアント
102 ブラウザ
104 ウェブページ
106 テキストボックス制御
108、110 ボタン制御
112 HTTPレスポンス
114 HTTPリクエスト
116 ウェブサーバ
118 HTTPパイプライン
120 ハンドラ
122 静的コンテンツ資源
124 動的コンテンツ資源
126 サーバ側制御クラスライブラリ
128 クライアント制御側クラスライブラリ
130 非ユーザインタフェースサーバコンポーネント

Claims (11)

  1. メモリとプロセッサとを有するサーバコンピュータシステムにおいてコンピュータにより実行可能なクラスをメモリ内に作成する方法であって、前記クラスは、前記サーバコンピュータシステムがウェブページコンテンツを動的にレンダリングするためのサーバ側オブジェクトを作成するために用いられるものであり、前記ウェブページコンテンツは、クライアントコンピュータシステムに送信され前記クライアントコンピュータシステム上でウェブページとして表示される方法であ
    前記プロセッサが前記クライアントから動的なウェブページコンテンツファイルを特定するリクエストを受信する工程と、
    前記プロセッサが前記動的なウェブページコンテンツファイルを処理して、前記ウェブページコンテンツファイルにおいて宣言された制御オブジェクトを表すソースコードを含むソースコードファイルを生成する工程と、
    前記プロセッサが前記ソースコードファイルをコンパイルして、表示するウェブページを生成するウェブページオーサリング言語のデータを作成するために1組の階層オブジェクトのインスタンスが作成され得るクラスを生成する工程と
    を含み、
    前記ソースコードファイルを生成する工程において、
    前記動的なウェブページコンテンツファイルの構文を解析して、前記動的なウェブページコンテンツファイルの一部を、階層的に関連付けられた複数のデータオブジェクトを含んでいるデータモデルへ格納する工程と、
    前記データモデルの解析に基づいて宣言情報に関するソースコードを生成する工程と、前記宣言情報に関するソースコードを前記ソースコードファイルへ書き込む工程とを含む第1フェーズと、
    前記データモデルの解析に基づいて制御オブジェクト情報に関するソースコードを生成する工程と、前記制御オブジェクト情報に関するソースコードを前記ソースコードファイルへ書き込む工程とを含む第2フェーズと
    を含むことを特徴とするクラスを作成する方法。
  2. 前記動的なウェブページコンテンツファイルが、サーバ側宣言データ格納部ある請求項1に記載のクラスを作成する方法。
  3. 前記クラスは、前記サーバコンピュータシステムのキャッシュメモリに格納され、前記動的ウェブページコンテンツファイルを特定する別のリクエストへのレスポンスでオブジェクトのインスタンスを作成するために用いることができる請求項1に記載のクラスを作成する方法。
  4. 前記クラスは、磁気記憶媒体に格納され、前記動的なウェブページコンテンツファイルを特定する別のリクエストへのレスポンスでオブジェクトのインスタンスを作成するために用いることができる請求項1に記載のクラスを作成する方法。
  5. 前記方法は、
    前記プロセッサが前記データモデルの解析に基づいてレンダリング情報に関するソースコードを生成する工程と、前記プロセッサが前記レンダリング情報に関するソースコードを前記ソースコードファイルへ書き込む工程とを含む第3フェーズ
    を含む請求項に記載のクラスを作成する方法。
  6. 前記第1フェーズ完了すると前記第2フェーズが生じ、前記第2フェーズ完了すると前記第3フェーズが生じる請求項に記載のクラスを作成する方法。
  7. 前記第1フェーズ、前記第2フェーズおよび前記第3フェーズが同時に生じる請求項に記載のクラスを作成する方法。
  8. 前記プロセッサが前記ソースコードファイルを生成する工程の前に、前記受信したリクエストに関するクラスがコンパイルされメモリに格納されているかどうか判断する工程をさらに含み
    前記クラスがコンパイルされメモリに格納されている場合、前記ソースコードファイルを生成する工程をスキップし、そうでない場合は、前記ソースコードファイルを生成する工程を行請求項1に記載のクラスを作成する方法。
  9. コンピュータにより実行可能なクラスをメモリ内に作成するコンピュータプログラムを記憶したコンピュータ読取可能記憶媒体であって、前記クラスは、前記サーバコンピュータシステムがウェブページコンテンツを動的にレンダリングするためのサーバ側オブジェクトを作成するために用いられるものであり、前記ウェブページコンテンツは、クライアント側コンピュータシステムに送信され、前記クライアントコンピュータシステム上でウェブページとして表示され、前記コンピュータプログラムは
    前記クライアントから動的なウェブページコンテンツファイルを特定するリクエストを受信する工程と、
    前記動的なウェブページコンテンツファイルを処理して前記ウェブページコンテンツファイルにおいて宣言された制御オブジェクトを表すソースコードを含むソースコードファイルを生成する工程と、
    表示するウェブページを生成するウェブページオーサリング言語のデータを作成するために1組の階層オブジェクトのインスタンスが作成され得るクラスを生成するべく前記ソースコードファイルをコンパイルする工程と
    コンピュータに実行させ、
    前記ソースコードファイルを生成する工程において、
    前記動的なウェブページコンテンツファイルの構文を解析して、前記動的なウェブページコンテンツファイルの一部を、階層的に関連付けられた複数のデータオブジェクトを含んでいるデータモデルへ格納する工程と、
    前記データモデルの解析に基づいて宣言情報に関するソースコードを生成する工程と、
    前記宣言情報に関するソースコードを前記ソースコードファイルへ書き込む工程と、
    前記データモデルの解析に基づいて制御オブジェクト情報に関するソースコードを生成する工程と、
    前記制御オブジェクト情報に関するソースコードを前記ソースコードファイルへ書き込む工程と
    をコンピュータに実行させることを特徴とするコンピュータ読取可能記憶媒体
  10. メモリとプロセッサとを有するサーバコンピュータシステムにおいて、動的にレンダリングされたウェブページコンテンツを有し、1つ以上のクライアント側コンピュータシステムに運ばれ、前記クライアントコンピュータシステム上でウェブページとして表示される複数のウェブページレスポンスを作成する方法であって、
    前記プロセッサが動的ウェブページコンテンツファイルを識別するリクエストを、前記ウェブページのための前記クライアントコンピュータシステムから受信する工程と、
    前記プロセッサが前記動的なウェブページコンテンツファイルの要素を格納するためのデータモデルを作成する工程であって、前記動的なウェブページコンテンツファイルの構文を解析して、前記動的なウェブページコンテンツファイルの一部を、階層的に関連付けられた複数のデータオブジェクトを含んでいるデータモデルへ格納する工程を含む、データモデルを作成する工程と、
    前記プロセッサが前記データモデルの評価に基づき、前記動的なウェブページコンテンツファイルに関するソースコードファイルを生成する工程であって、
    前記データモデルの解析に基づいて宣言情報に関するソースコードを生成する工程と、
    前記宣言情報に関するソースコードを前記ソースコードファイルへ書き込む工程と、
    前記データモデルの解析に基づいて制御オブジェクト情報に関するソースコードを生成する工程と、
    に前記制御オブジェクト情報に関するソースコードを前記ソースコードファイルへ書き込む工程と
    を含む、ソースコードファイルを生成する工程と、
    前記プロセッサが前記ソースコードファイルをコンパイルしてメモリにコンパイルされたクラスを作成する工程と、
    前記プロセッサが前記サーバコンピュータシステムにクラスリファレンスを戻す工程であって、これにより、前記サーバコンピュータシステムが当該クラスからサーバ側処理オブジェクトのインスタンスを作成することが可能になり、ウェブページコンテンツを動的に生成する工程と、
    前記プロセッサが前記動的なウェブページコンテンツを前記クライアントコンピュータシステムに送信するウェブページレスポンスへレンダリングする工程と、
    前記プロセッサが前記ウェブページレスポンスを前記要求しているクライアントコンピュータシステムへ導く工程と、
    前記プロセッサが動的ウェブページコンテンツファイルを識別する第2のリクエストを、前記ウェブページのために受信する工程と、
    前記プロセッサが当該動的ウェブページコンテンツファイルのコンパイルされたクラスがメモリに存在するかどうかを判断する工程と、
    前記プロセッサが前記サーバコンピュータシステムにクラスリファレンスを戻す工程であって、これにより、前記サーバコンピュータシステムが当該クラスからサーバ側処理オブジェクトのインスタンスを作成することが可能になり、ウェブページコンテンツを動的に生成する工程と、
    前記プロセッサが前記動的ウェブページコンテンツを第2のウェブページレスポンスへレンダリングする工程と、
    前記プロセッサが前記第2のウェブページレスポンスを前記要求しているクライアントコンピュータシステムへ導く工程と
    を含むウェブページレスポンスを作成する方法。
  11. 動的にレンダリングされたウェブページコンテンツを有し、1つ以上のクライアント側コンピュータシステムに送信され、前記クライアントコンピュータシステム上でウェブページとして表示される、複数のウェブページレスポンスを作成するコンピュータプログラムを記憶したコンピュータプログラム記憶媒体であって、前記コンピュータプログラムは、
    動的ウェブページコンテンツファイルを識別するようなリクエストを、前記ウェブページのための前記クライアントコンピュータシステムから受信する工程と、
    前記動的なウェブページコンテンツファイルの要素を格納するためのデータモデルを作成する工程であって、前記動的なウェブページコンテンツファイルの構文を解析して、前記動的なウェブページコンテンツファイルの一部を、階層的に関連付けられた複数のデータオブジェクトを含んでいるデータモデルへ格納する工程を含む、データモデルを作成する工程と、
    前記データモデルの評価に基づき、前記動的なウェブページコンテンツファイルに関するソースコードファイルを生成する工程であって、
    前記データモデルの解析に基づいて宣言情報に関するソースコードを生成する工程と、
    前記宣言情報に関するソースコードを前記ソースコードファイルへ書き込む工程と、
    第2フェーズ時に前記データモデルの解析に基づいて制御オブジェクト情報に関するソースコードを生成する工程と、
    第2フェーズ時に前記制御オブジェクト情報に関するソースコードを前記ソースコードファイルへ書き込む工程と
    を含む、ソースコードファイルを生成する工程と、
    前記ソースコードファイルをコンパイルしてメモリにコンパイルされたクラスを作成する工程と、
    前記サーバコンピュータシステムにクラスリファレンスを戻す工程であって、これにより、前記サーバコンピュータシステムが当該クラスからサーバ側処理オブジェクトのインスタンスを作成することが可能になり、ウェブページコンテンツを動的に生成する工程と、
    前記動的ウェブページコンテンツを前記クライアントコンピュータシステムに送信するウェブページレスポンスへレンダリングする工程と、
    前記ウェブページレスポンスを前記要求しているクライアント側コンピュータシステムへ導く工程と、
    動的ウェブページコンテンツファイルを識別する第2のリクエストを、前記ウェブページのために受信する工程と、
    当該動的ウェブページコンテンツファイルのコンパイルされたクラスがメモリに存在するかどうか判断する工程と、
    前記サーバコンピュータシステムにクラスリファレンスを戻す工程であって、これにより、前記サーバコンピュータシステムが当該クラスからサーバ側処理オブジェクトのインスタンスを作成することが可能になり、ウェブページコンテンツを動的に生成する工程と、
    前記動的ウェブページコンテンツを第2のウェブページレスポンスへレンダリングする工程と、
    前記第2のウェブページレスポンスを前記要求しているクライアントコンピュータシステムへ導く工程と
    コンピュータに実行させることを特徴とするコンピュータ読取可能記録媒体。
JP2008199892A 2000-05-18 2008-08-01 動的ウェブページコンテンツファイルからのサーバ側コード生成 Expired - Fee Related JP5010551B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/573768 2000-05-18
US09/573,768 US6990653B1 (en) 2000-05-18 2000-05-18 Server-side code generation from a dynamic web page content file

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2001129924A Division JP4625198B2 (ja) 2000-05-18 2001-04-26 動的ウェブページコンテンツファイルからのサーバ側コード生成

Publications (2)

Publication Number Publication Date
JP2009070372A JP2009070372A (ja) 2009-04-02
JP5010551B2 true JP5010551B2 (ja) 2012-08-29

Family

ID=24293318

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2001129924A Expired - Fee Related JP4625198B2 (ja) 2000-05-18 2001-04-26 動的ウェブページコンテンツファイルからのサーバ側コード生成
JP2008199892A Expired - Fee Related JP5010551B2 (ja) 2000-05-18 2008-08-01 動的ウェブページコンテンツファイルからのサーバ側コード生成

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2001129924A Expired - Fee Related JP4625198B2 (ja) 2000-05-18 2001-04-26 動的ウェブページコンテンツファイルからのサーバ側コード生成

Country Status (3)

Country Link
US (1) US6990653B1 (ja)
EP (1) EP1156429A3 (ja)
JP (2) JP4625198B2 (ja)

Families Citing this family (173)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001057663A2 (en) * 2000-02-04 2001-08-09 America Online Incorporated Optimized delivery of web application code
WO2001057720A2 (en) * 2000-02-04 2001-08-09 America Online Incorporated Automated client-server data validation
US7934206B2 (en) * 2000-02-11 2011-04-26 Convergent Networks, Inc. Service level executable environment for integrated PSTN and IP networks and call processing language therefor
US7013340B1 (en) * 2000-05-18 2006-03-14 Microsoft Corporation Postback input handling by server-side control objects
US6912532B2 (en) * 2000-05-22 2005-06-28 Benjamin H. Andersen Multi-level multiplexor system for networked browser
US7437660B1 (en) * 2000-06-23 2008-10-14 Microsoft Corporation Editable dynamically rendered web pages
WO2002023478A2 (en) * 2000-09-15 2002-03-21 Wonderware Corporation A method and system for animating graphical user interface elements via manufacturing/process control portal server
FR2816081B1 (fr) 2000-10-27 2003-09-19 Catherine Brexel Annuaire personnel interactif
US7111057B1 (en) * 2000-10-31 2006-09-19 Akamai Technologies, Inc. Method and system for purging content from a content delivery network
US7389492B2 (en) * 2001-03-12 2008-06-17 International Business Machines Corporation Framework for code generators
US7380250B2 (en) * 2001-03-16 2008-05-27 Microsoft Corporation Method and system for interacting with devices having different capabilities
US7171443B2 (en) * 2001-04-04 2007-01-30 Prodigy Communications, Lp Method, system, and software for transmission of information
US7685229B1 (en) 2001-05-15 2010-03-23 Adobe Systems Incorporated System and method for displaying server side code results in an application program
US7480910B1 (en) * 2001-05-15 2009-01-20 Adobe Systems Incorporated System and method for providing information and associating information
US7493397B1 (en) * 2001-06-06 2009-02-17 Microsoft Corporation Providing remote processing services over a distributed communications network
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
US20090006543A1 (en) * 2001-08-20 2009-01-01 Masterobjects System and method for asynchronous retrieval of information based on incremental user input
US7428725B2 (en) * 2001-11-20 2008-09-23 Microsoft Corporation Inserting devices specific content
US20030135583A1 (en) * 2002-01-11 2003-07-17 Yared Peter A. Dynamic casting of objects while transporting
AU2003217939A1 (en) * 2002-03-04 2003-09-22 Medstory.Com Method, apparatus, and system for data modeling and processing
US20030212833A1 (en) * 2002-05-13 2003-11-13 Dlb Innovations, Inc. Web-based practice management system
JP2003332649A (ja) * 2002-05-14 2003-11-21 Alps Electric Co Ltd 磁気検出素子
US7574653B2 (en) * 2002-10-11 2009-08-11 Microsoft Corporation Adaptive image formatting control
US7447747B2 (en) 2003-02-04 2008-11-04 Aol Llc Method for flexible, safe, robust, and efficient generation and serving of multi-source world-wide web content pages
US7647564B2 (en) * 2003-02-28 2010-01-12 Bea Systems, Inc. System and method for dynamically generating a graphical user interface
US7486294B2 (en) * 2003-03-27 2009-02-03 Microsoft Corporation Vector graphics element-based model, application programming interface, and markup language
JP2006526180A (ja) * 2003-05-16 2006-11-16 マイクロソフト コーポレーション オブジェクトの階層を定義するための宣言的(declative)機構
US7197702B2 (en) * 2003-06-13 2007-03-27 Microsoft Corporation Web page rendering mechanism using external programmatic themes
US20050050456A1 (en) * 2003-08-29 2005-03-03 Dehamer Brian James Method and apparatus for supporting XML-based service consumption in a web presentation architecture
US7444632B2 (en) * 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
US7549145B2 (en) * 2003-09-25 2009-06-16 International Business Machines Corporation Processor dedicated code handling in a multi-processor environment
US7516456B2 (en) * 2003-09-25 2009-04-07 International Business Machines Corporation Asymmetric heterogeneous multi-threaded operating system
US7523157B2 (en) * 2003-09-25 2009-04-21 International Business Machines Corporation Managing a plurality of processors as devices
US7496917B2 (en) * 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
US7389508B2 (en) * 2003-09-25 2008-06-17 International Business Machines Corporation System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
US20050071828A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation System and method for compiling source code for multi-processor environments
US7478390B2 (en) * 2003-09-25 2009-01-13 International Business Machines Corporation Task queue management of virtual devices using a plurality of processors
US7415703B2 (en) * 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7281236B1 (en) * 2003-09-30 2007-10-09 Emc Corporation System and methods for developing and deploying a remote domain system
GB0327665D0 (en) * 2003-11-28 2003-12-31 Ibm System and method for creation of a network server application page
US8381207B2 (en) * 2003-12-02 2013-02-19 International Business Machines Corporation Script generation engine and mapping semantic models for target platform
US7500223B2 (en) * 2004-01-02 2009-03-03 International Business Machines Corporation Automatically creating JavaScript objects to invoke methods on server-side Java beans
US7458019B2 (en) * 2004-01-20 2008-11-25 International Business Machines Corporation System and method for creating and rendering client-side user interfaces via custom tags
US7376739B2 (en) * 2004-02-11 2008-05-20 International Business Machines Corporation Persistence of inter-application communication patterns and behavior under user control
US7890604B2 (en) * 2004-05-07 2011-02-15 Microsoft Corproation Client-side callbacks to server events
US20050251380A1 (en) * 2004-05-10 2005-11-10 Simon Calvert Designer regions and Interactive control designers
US9026578B2 (en) * 2004-05-14 2015-05-05 Microsoft Corporation Systems and methods for persisting data between web pages
US7464386B2 (en) * 2004-05-17 2008-12-09 Microsoft Corporation Data controls architecture
US7325014B1 (en) 2004-09-23 2008-01-29 Cranberry Technologies, Inc. Direct rendering of a web application from a database to a web browser
CN1296824C (zh) * 2004-10-28 2007-01-24 威盛电子股份有限公司 程序编码方法及其系统
US20060122959A1 (en) * 2004-11-08 2006-06-08 Chris Hample Systems and methods for organizing, sharing, and communicating data
US20060224700A1 (en) * 2005-03-15 2006-10-05 Microsoft Corporation Multipart response generation
US7774332B2 (en) * 2005-04-12 2010-08-10 International Business Machines Corporation Enabling interactive integration of network-accessible applications in a content aggregation framework
EP1783604A3 (en) * 2005-11-07 2007-10-03 Slawomir Adam Janczewski Object-oriented, parallel language, method of programming and multi-processor computer
US20070136470A1 (en) * 2005-12-08 2007-06-14 Microsoft Corporation Delivery of localized resource over a network
US7873615B2 (en) * 2005-12-14 2011-01-18 Sap Ag Control object based report generation using a central class
US8863083B2 (en) * 2006-10-10 2014-10-14 Sap Ag Presenting user interfaces based on messages
US8060556B2 (en) * 2006-10-20 2011-11-15 Sap Ag Service enabled tagged user interfaces
US8752006B1 (en) * 2007-07-02 2014-06-10 Cisco Technology, Inc. System and method and apparatus for automatically generating computer code for remote procedure calls
US9058608B2 (en) 2007-09-12 2015-06-16 Google Inc. Placement attribute targeting
US8914774B1 (en) * 2007-11-15 2014-12-16 Appcelerator, Inc. System and method for tagging code to determine where the code runs
US8954989B1 (en) 2007-11-19 2015-02-10 Appcelerator, Inc. Flexible, event-driven JavaScript server architecture
US8260845B1 (en) 2007-11-21 2012-09-04 Appcelerator, Inc. System and method for auto-generating JavaScript proxies and meta-proxies
US8566807B1 (en) 2007-11-23 2013-10-22 Appcelerator, Inc. System and method for accessibility of document object model and JavaScript by other platforms
US8719451B1 (en) 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
US8819539B1 (en) 2007-12-03 2014-08-26 Appcelerator, Inc. On-the-fly rewriting of uniform resource locators in a web-page
US8756579B1 (en) 2007-12-03 2014-06-17 Appcelerator, Inc. Client-side and server-side unified validation
US8806431B1 (en) 2007-12-03 2014-08-12 Appecelerator, Inc. Aspect oriented programming
EP2227760A1 (en) * 2007-12-03 2010-09-15 Lucid Infotech Pvt. Ltd. Templating system and method for updating content in real time
US8938491B1 (en) 2007-12-04 2015-01-20 Appcelerator, Inc. System and method for secure binding of client calls and server functions
US8527860B1 (en) 2007-12-04 2013-09-03 Appcelerator, Inc. System and method for exposing the dynamic web server-side
US8639743B1 (en) 2007-12-05 2014-01-28 Appcelerator, Inc. System and method for on-the-fly rewriting of JavaScript
US8285813B1 (en) 2007-12-05 2012-10-09 Appcelerator, Inc. System and method for emulating different user agents on a server
US8335982B1 (en) 2007-12-05 2012-12-18 Appcelerator, Inc. System and method for binding a document object model through JavaScript callbacks
US8291079B1 (en) 2008-06-04 2012-10-16 Appcelerator, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8880678B1 (en) 2008-06-05 2014-11-04 Appcelerator, Inc. System and method for managing and monitoring a web application using multiple cloud providers
US7596620B1 (en) 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8645916B2 (en) * 2008-12-03 2014-02-04 Microsoft Corporation Crunching dynamically generated script files
US8700803B2 (en) * 2009-06-03 2014-04-15 Netcordant, Inc. Web page optimization
US8707161B2 (en) * 2009-09-30 2014-04-22 Facebook, Inc. Executing server side script code specified using PHP on a server to generate dynamic web pages
US20110082875A1 (en) * 2009-10-02 2011-04-07 Netquote, Inc. System and method for dynamic payload generation on shared sites
US8683431B2 (en) * 2009-12-29 2014-03-25 Microgen Aptitude Limited Applying rules to data
US8972418B2 (en) 2010-04-07 2015-03-03 Microsoft Technology Licensing, Llc Dynamic generation of relevant items
EP2678797A4 (en) * 2011-02-23 2014-08-13 Catch Media Inc ELECTRONIC SYSTEM FOR DIGITAL PLANTS AND REVENUE AFTER THEIR ACCEPTANCE
US9342274B2 (en) 2011-05-19 2016-05-17 Microsoft Technology Licensing, Llc Dynamic code generation and memory management for component object model data constructs
US8881101B2 (en) 2011-05-24 2014-11-04 Microsoft Corporation Binding between a layout engine and a scripting engine
US9753699B2 (en) 2011-06-16 2017-09-05 Microsoft Technology Licensing, Llc Live browser tooling in an integrated development environment
US9563714B2 (en) 2011-06-16 2017-02-07 Microsoft Technology Licensing Llc. Mapping selections between a browser and the original file fetched from a web server
US9460224B2 (en) 2011-06-16 2016-10-04 Microsoft Technology Licensing Llc. Selection mapping between fetched files and source files
FR2978637B1 (fr) * 2011-07-29 2014-02-14 Sagemcom Energy & Telecom Sas Procede de gestion de l'acces a un ensemble de ressources delivrees par un dispositif electronique
US9507871B2 (en) * 2011-08-29 2016-11-29 The Boeing Company Methods and systems for a state-based web framework architecture
US20130067432A1 (en) * 2011-09-12 2013-03-14 Microsoft Corporation Application development toolkit
JP5901267B2 (ja) * 2011-10-21 2016-04-06 キヤノン株式会社 情報処理装置およびその制御方法、並びにプログラム
US9037636B2 (en) * 2012-01-19 2015-05-19 Microsoft Technology Licensing, Llc Managing script file dependencies and load times
US8819477B1 (en) 2012-02-01 2014-08-26 Amazon Technologies, Inc. Error handling in a network page generation environment
US8862984B1 (en) * 2012-02-01 2014-10-14 Amazon Technologies, Inc. Data contracts for network page generation code
US9800455B1 (en) 2012-02-08 2017-10-24 Amazon Technologies, Inc. Log monitoring system
US20130219254A1 (en) * 2012-02-21 2013-08-22 ConneQtive, Inc. 2d code linked to customized web page with user-uploaded content
US9659095B2 (en) * 2012-03-04 2017-05-23 International Business Machines Corporation Managing search-engine-optimization content in web pages
US20130290830A1 (en) * 2012-04-30 2013-10-31 Salesforce.Com, Inc. System and method for managing a viewstate of a web application
US9965744B1 (en) * 2012-06-29 2018-05-08 Google Llc Automatic dynamic vetting of browser extensions and web applications
US9430452B2 (en) 2013-06-06 2016-08-30 Microsoft Technology Licensing, Llc Memory model for a layout engine and scripting engine
US11100554B1 (en) 2014-03-13 2021-08-24 BloomReach Inc. System, method and computer program product for providing thematic landing pages
US10460005B2 (en) * 2014-11-18 2019-10-29 Sap Se Data consumption between heterogeneous web applications
US10534851B1 (en) 2014-12-19 2020-01-14 BloomReach Inc. Dynamic landing pages
US9851953B2 (en) * 2015-06-29 2017-12-26 Oracle International Corporation Cloud based editor for generation of interpreted artifacts for mobile runtime
US11102313B2 (en) 2015-08-10 2021-08-24 Oracle International Corporation Transactional autosave with local and remote lifecycles
US10582001B2 (en) 2015-08-11 2020-03-03 Oracle International Corporation Asynchronous pre-caching of synchronously loaded resources
US9959100B2 (en) 2015-08-12 2018-05-01 Oracle International Corporation Efficient storage and transfer of iOS binary files
US10419514B2 (en) 2015-08-14 2019-09-17 Oracle International Corporation Discovery of federated logins
US10013668B2 (en) 2015-08-14 2018-07-03 Oracle International Corporation Secure storage of enterprise certificates for cloud services
US10452497B2 (en) 2015-08-14 2019-10-22 Oracle International Corporation Restoration of UI state in transactional systems
US10582012B2 (en) 2015-10-16 2020-03-03 Oracle International Corporation Adaptive data transfer optimization
US10454940B2 (en) 2016-05-11 2019-10-22 Oracle International Corporation Identity cloud service authorization model
US10878079B2 (en) 2016-05-11 2020-12-29 Oracle International Corporation Identity cloud service authorization model with dynamic roles and scopes
US10581820B2 (en) 2016-05-11 2020-03-03 Oracle International Corporation Key generation and rollover
US9838377B1 (en) 2016-05-11 2017-12-05 Oracle International Corporation Task segregation in a multi-tenant identity and data security management cloud service
US10425386B2 (en) 2016-05-11 2019-09-24 Oracle International Corporation Policy enforcement point for a multi-tenant identity and data security management cloud service
US10341410B2 (en) 2016-05-11 2019-07-02 Oracle International Corporation Security tokens for a multi-tenant identity and data security management cloud service
US10530578B2 (en) 2016-08-05 2020-01-07 Oracle International Corporation Key store service
US10516672B2 (en) 2016-08-05 2019-12-24 Oracle International Corporation Service discovery for a multi-tenant identity and data security management cloud service
US10735394B2 (en) 2016-08-05 2020-08-04 Oracle International Corporation Caching framework for a multi-tenant identity and data security management cloud service
US10255061B2 (en) 2016-08-05 2019-04-09 Oracle International Corporation Zero down time upgrade for a multi-tenant identity and data security management cloud service
US10585682B2 (en) 2016-08-05 2020-03-10 Oracle International Corporation Tenant self-service troubleshooting for a multi-tenant identity and data security management cloud service
US10721237B2 (en) 2016-08-05 2020-07-21 Oracle International Corporation Hierarchical processing for a virtual directory system for LDAP to SCIM proxy service
US10263947B2 (en) 2016-08-05 2019-04-16 Oracle International Corporation LDAP to SCIM proxy service
US10484382B2 (en) 2016-08-31 2019-11-19 Oracle International Corporation Data management for a multi-tenant identity cloud service
US10846390B2 (en) 2016-09-14 2020-11-24 Oracle International Corporation Single sign-on functionality for a multi-tenant identity and data security management cloud service
US10594684B2 (en) 2016-09-14 2020-03-17 Oracle International Corporation Generating derived credentials for a multi-tenant identity cloud service
US10511589B2 (en) 2016-09-14 2019-12-17 Oracle International Corporation Single logout functionality for a multi-tenant identity and data security management cloud service
US10567364B2 (en) 2016-09-16 2020-02-18 Oracle International Corporation Preserving LDAP hierarchy in a SCIM directory using special marker groups
US10484243B2 (en) 2016-09-16 2019-11-19 Oracle International Corporation Application management for a multi-tenant identity cloud service
US10445395B2 (en) 2016-09-16 2019-10-15 Oracle International Corporation Cookie based state propagation for a multi-tenant identity cloud service
US10791087B2 (en) 2016-09-16 2020-09-29 Oracle International Corporation SCIM to LDAP mapping using subtype attributes
EP3513542B1 (en) 2016-09-16 2021-05-19 Oracle International Corporation Tenant and service management for a multi-tenant identity and data security management cloud service
US10341354B2 (en) 2016-09-16 2019-07-02 Oracle International Corporation Distributed high availability agent architecture
US10904074B2 (en) 2016-09-17 2021-01-26 Oracle International Corporation Composite event handler for a multi-tenant identity cloud service
CN106569824B (zh) * 2016-11-07 2019-08-13 腾讯科技(深圳)有限公司 页面数据编译的方法和装置、页面渲染的方法和装置
US10261836B2 (en) 2017-03-21 2019-04-16 Oracle International Corporation Dynamic dispatching of workloads spanning heterogeneous services
US10454915B2 (en) 2017-05-18 2019-10-22 Oracle International Corporation User authentication using kerberos with identity cloud service
US10348858B2 (en) 2017-09-15 2019-07-09 Oracle International Corporation Dynamic message queues for a microservice based cloud service
US11308132B2 (en) 2017-09-27 2022-04-19 Oracle International Corporation Reference attributes for related stored objects in a multi-tenant cloud service
US10834137B2 (en) 2017-09-28 2020-11-10 Oracle International Corporation Rest-based declarative policy management
US11271969B2 (en) 2017-09-28 2022-03-08 Oracle International Corporation Rest-based declarative policy management
US10705823B2 (en) 2017-09-29 2020-07-07 Oracle International Corporation Application templates and upgrade framework for a multi-tenant identity cloud service
US10715564B2 (en) 2018-01-29 2020-07-14 Oracle International Corporation Dynamic client registration for an identity cloud service
CN108733427B (zh) * 2018-03-13 2020-04-21 Oppo广东移动通信有限公司 输入组件的配置方法、装置、终端及存储介质
US10931656B2 (en) 2018-03-27 2021-02-23 Oracle International Corporation Cross-region trust for a multi-tenant identity cloud service
US10798165B2 (en) 2018-04-02 2020-10-06 Oracle International Corporation Tenant data comparison for a multi-tenant identity cloud service
US11165634B2 (en) 2018-04-02 2021-11-02 Oracle International Corporation Data replication conflict detection and resolution for a multi-tenant identity cloud service
US11258775B2 (en) 2018-04-04 2022-02-22 Oracle International Corporation Local write for a multi-tenant identity cloud service
US11012444B2 (en) 2018-06-25 2021-05-18 Oracle International Corporation Declarative third party identity provider integration for a multi-tenant identity cloud service
US10764273B2 (en) 2018-06-28 2020-09-01 Oracle International Corporation Session synchronization across multiple devices in an identity cloud service
US10915343B2 (en) * 2018-06-29 2021-02-09 Atlassian Pty Ltd. Server computer execution of client executable code
CN110806868B (zh) * 2018-08-06 2023-02-03 上海网梯数码科技有限公司 一种单页面搭建及加载方法
US11693835B2 (en) 2018-10-17 2023-07-04 Oracle International Corporation Dynamic database schema allocation on tenant onboarding for a multi-tenant identity cloud service
US11321187B2 (en) 2018-10-19 2022-05-03 Oracle International Corporation Assured lazy rollback for a multi-tenant identity cloud service
CN111367515B (zh) * 2018-12-25 2023-04-28 阿里巴巴集团控股有限公司 页面卡片的开发方法、装置、计算设备和存储介质
US11651357B2 (en) 2019-02-01 2023-05-16 Oracle International Corporation Multifactor authentication without a user footprint
US11061929B2 (en) 2019-02-08 2021-07-13 Oracle International Corporation Replication of resource type and schema metadata for a multi-tenant identity cloud service
US11321343B2 (en) 2019-02-19 2022-05-03 Oracle International Corporation Tenant replication bootstrap for a multi-tenant identity cloud service
US11669321B2 (en) 2019-02-20 2023-06-06 Oracle International Corporation Automated database upgrade for a multi-tenant identity cloud service
US11423111B2 (en) 2019-02-25 2022-08-23 Oracle International Corporation Client API for rest based endpoints for a multi-tenant identify cloud service
US11792226B2 (en) 2019-02-25 2023-10-17 Oracle International Corporation Automatic api document generation from scim metadata
CN111625830B (zh) * 2019-02-27 2023-04-14 阿里巴巴集团控股有限公司 数据处理方法、数据展示方法、系统及设备
US11687378B2 (en) 2019-09-13 2023-06-27 Oracle International Corporation Multi-tenant identity cloud service with on-premise authentication integration and bridge high availability
US11870770B2 (en) 2019-09-13 2024-01-09 Oracle International Corporation Multi-tenant identity cloud service with on-premise authentication integration
US11611548B2 (en) 2019-11-22 2023-03-21 Oracle International Corporation Bulk multifactor authentication enrollment
CN113485706A (zh) * 2021-07-05 2021-10-08 中国工商银行股份有限公司 基于dsl的多技术栈前端代码生成方法及装置
CN113805874A (zh) * 2021-09-10 2021-12-17 上海得帆信息技术有限公司 适用于多框架语言的前端代码片段动态渲染方法和系统
CN115062255B (zh) * 2022-06-29 2023-03-03 北京飞天经纬科技股份有限公司 网站适配的方法、装置、电子设备及计算机可读存储介质
CN115373683A (zh) * 2022-08-22 2022-11-22 北京字跳网络技术有限公司 页面的展示方法、编译源代码的方法及相关设备

Family Cites Families (38)

* 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
DE69621197T2 (de) 1995-09-06 2002-11-07 Seiko Epson Corp., Tokio/Tokyo Peripheriegerätsteuerungssystem mit einer Mehrheit von Objekten
US5835712A (en) 1996-05-03 1998-11-10 Webmate Technologies, Inc. Client-server system using embedded hypertext tags for application and database development
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
US5897622A (en) 1996-10-16 1999-04-27 Microsoft Corporation Electronic shopping and merchandising system
US5995753A (en) 1996-11-14 1999-11-30 Alcatel Usa Sourcing, L.P. System and method of constructing dynamic objects for an application program
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
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
JPH11282680A (ja) * 1998-03-31 1999-10-15 The Japan Reserch Institute Ltd シンプルなオブジェクト構造,オブジェクト管理システム,汎用プログラム,およびオペレーティングシステムを記録した媒体
JP4064060B2 (ja) * 1998-05-15 2008-03-19 ユニキャスト・コミュニケーションズ・コーポレイション 参照ウェブページに埋め込まれた広告タグをもちいて、ブラウザにより開始される、ユーザには見えないネットワーク分散隙間ウェブ公告を実施するための技術
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
US6591272B1 (en) 1999-02-25 2003-07-08 Tricoron Networks, Inc. Method and apparatus to make and transmit objects from a database on a server computer to a client computer
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
US6813641B2 (en) 2001-07-05 2004-11-02 Sun Microsystems, Inc. Teamware server working over HTTP/HTTPS connections
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
JP4625198B2 (ja) 2011-02-02
EP1156429A2 (en) 2001-11-21
US6990653B1 (en) 2006-01-24
JP2009070372A (ja) 2009-04-02
EP1156429A3 (en) 2002-05-29
JP2002041299A (ja) 2002-02-08

Similar Documents

Publication Publication Date Title
JP5010551B2 (ja) 動的ウェブページコンテンツファイルからのサーバ側コード生成
JP4467205B2 (ja) サーバ側制御オブジェクトによるポストバック入力のハンドリング
JP4015375B2 (ja) クライアント側ユーザインタフェース要素を処理するサーバ側制御オブジェクト
US7120897B2 (en) User control objects for providing server-side code generation from a user-defined dynamic web page content file
US7269792B2 (en) System and method for generating high-function browser widgets with full addressability
JP3954809B2 (ja) サーバ側制御オブジェクトの状態管理方法
US8397223B2 (en) Web application generator
JP4694031B2 (ja) サーバ側制御オブジェクトを用いるデータ結合
US8418131B2 (en) Interactive server side components
US7895570B2 (en) Accessible role and state information in HTML documents
US7096455B2 (en) Method and system for representing and accessing data for computer software applications
KR20040111099A (ko) 코드 세그먼트들을 생성, 관리, 및 사용하는 시스템 및방법
US8601447B2 (en) Open controls
US7472391B2 (en) Resource loader for applications that utilize relative uniform resource identifiers
US20040205587A1 (en) System and method for enumerating arbitrary hyperlinked structures in which links may be dynamically calculable
League MetaOCaml server pages: Web publishing as staged computation
Macdonald Literature Review and Design
Zhu An application to create problem-specific document object models for XML
Hackborn Interactive HTML

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110819

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120501

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120525

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: 20120601

R150 Certificate of patent or registration of utility model

Ref document number: 5010551

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150608

Year of fee payment: 3

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