JP6750054B2 - ウェブページを構築しモデル化するためのシステム - Google Patents

ウェブページを構築しモデル化するためのシステム Download PDF

Info

Publication number
JP6750054B2
JP6750054B2 JP2019030310A JP2019030310A JP6750054B2 JP 6750054 B2 JP6750054 B2 JP 6750054B2 JP 2019030310 A JP2019030310 A JP 2019030310A JP 2019030310 A JP2019030310 A JP 2019030310A JP 6750054 B2 JP6750054 B2 JP 6750054B2
Authority
JP
Japan
Prior art keywords
component
web page
page
web
components
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.)
Active
Application number
JP2019030310A
Other languages
English (en)
Other versions
JP2019149160A (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.)
ServiceNow Inc
Original Assignee
ServiceNow Inc
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 ServiceNow Inc filed Critical ServiceNow Inc
Publication of JP2019149160A publication Critical patent/JP2019149160A/ja
Application granted granted Critical
Publication of JP6750054B2 publication Critical patent/JP6750054B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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/951Indexing; Web crawling techniques
    • 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
    • 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/986Document structures and storage, e.g. HTML extensions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

<関連出願の参照>
本特許出願は、2018年02月26日出願の米国仮特許出願62/635、161に対して優先権を主張し、この出願は、参照によりその全体が本明細書に組み込まれる。
<背景技術>
ウェブ開発者がウェブページを開発するとき、開発者はそのページのコンポーネントを駆動するために基本論理に依存するフレームワークを使用することができる。代表的なフレームワークは、ウェブページの構造及び動作の側面を定義するために、特別なアプリケーションプログラミングインターフェイス(API)を定義するJavaScriptライブラリを公開することができる。実際には、ウェブ開発者がウェブページのためのハイパーテキストマークアップ言語(HTML)ドキュメントを作成するとき、開発者はそのような公開されているJavaScriptライブラリへの参照をドキュメントに配置することができ、そして、そのページがブラウザによってレンダリングされるときに所望の方法でそのページの構造及び動作を制御するためのJavaScript APIを呼び出すであろうコードのセットをドキュメントに書き込んで含めることができる。
しかし残念ながら、そのようなウェブ開発フレームワークのプロバイダはフレームワークを時々変更したり、特定のフレームワークやフレームワークのバージョンのサポートを中止したりする可能性がある。これが発生すると、ウェブ開発者は、より新しいサポートされたフレームワークを利用するために、新しく命令的な(命令文を用いた)コードを書き又はその他の変更を行って、廃止されたフレームワークを使用していたウェブページを書き換えることを余儀なくされる可能性がある。しかし、問題のウェブページが高度に複雑な場合は特に、この処理は実用的ではない。従って、改善が望まれている。
この問題に対処するための システムが開示され、これにより、ウェブ開発者が、カスタムのウェブコンポーネントの使用を通じて、また、必要に応じてシステムのプロバイダによって更新又は変更されるようにすることができる基本スクリプトライブラリへの参照を通じて、ページの書換えを必要とせずにウェブページを作成することを可能にする。本システムは、ウェブ開発者が、その開発者がこれらの結果を達成するための方法を定義するために命令的なコーディングに従事する必要なしに、そのページの所望の構造及び動作を宣言するマークアップを用いて、そのようなページを宣言的に(宣言文を用いて)作成することを可能にする。更に、本システムのウェブコンポーネントは、コンポーネント間のデータバインディングをサポートするように構成されるようにすることができ、そして、本システムは、ウェブ開発者が、ページ上のコンポーネントのプロパティをそのページ上の他のコンポーネントによって発行されたアクションに宣言的にバインドすることを可能にする。
これを容易にするために、本システムは更に、ウェブページ記述を効率的に表現及び記憶し、ブラウザによるレンダリングのための関連するHTMLドキュメントを動的に構築するページビルダサブシステムを含むことができる。
特に、本ページビルダシステムは、ウェブページの記述を、リレーショナルデータベース内に、そのページ内のコンポーネントの階層的配置とそれらの間のデータバインディングを定義する相互に関連する様々なテーブルを用いて、メタデータとして記憶することができる。例えば、本システムは、ウェブ開発者がコンポーネント階層及びデータバインデ
ィングを指定して上述のようにカスタムのウェブコンポーネントを組み込んだウェブページをデザイン又は作成することができるインタフェースを提供することができ、そして、本システムは、上記カスタムのコンポーネントを駆動させるであろう基本スクリプトライブラリへの参照を含むページ構造を表現することに関連するデータベースレコードを生成し記憶することにより、開発者の仕様書に応えることができる。
そして、本ページビルダシステムは、上記データベースに問い合わせて上記関連するページ構造を確立することによってブラウザのウェブページリクエストに応答することができ、そして、上記問合せの結果に基づいて、適切なコンポーネント宣言と基本スクリプトライブラリへの参照を含むHTMLドキュメントを動的に構築することができる。そして、本ページビルダシステムは、基本スクリプトファイルとできる限りともに、上記構築されたHTMLドキュメントをリクエストしているブラウザにレンダリングのために返すことができる。これらのHTMLドキュメントはリクエストに応じて動的に構築されるため、新しく提供されたスクリプトが開発者が宣言した階層、データバインディング、及びその他のパラメータを引き続きサポートするであろうことが提供される場合には、基本スクリプトライブラリ及び関連する参照は、ページ書換えを必要とすることなく、必要に応じて変更されるようにすることができる。
従って、第1の例示的実施形態は、そのような動作を実行又はサポートするように構成されたコンピューティングシステムを含むようにすることができる。例えば、コンピューティングシステムは、ウェブページの構造を宣言する入力であって、そのウェブページのコンポーネント間のコンポーネント階層構造及びデータバインディングの宣言を含むものを受信し、そして、すぐに応答して、上記コンポーネントの構造及び動作を解釈実行可能に定義するための基本スクリプトへの参照を含む上記ウェブページの表現を、データベースの複数のテーブルに協調的に生成して記憶するように構成されるようにすることができる。更に、そのコンピューティングシステムはその後に、クライアント装置からそのようなページのためのリクエストを受信し、そして、そのリクエストに応答して、(i)上記ページのコンポーネントツリー構造を確認するために上記データベースに問い合わせ、(ii)その確認されたコンポーネントツリー構造に基づいて、上記確認されたコンポーネントツリー構造を表現し、上記基本スクリプトを動作するようにロードするためのコンポーネントローダを含むマークアップドキュメントを構築し、そして、(iii)その構築されたマークアップドキュメントを上記クライアント装置上で実行されるウェブブラウザによるレンダリングのために出力する、ように構成されるようにすることができる。
第2の例示的実施形態では、製造品は、コンピューティングシステムによる実行時に前記コンピューティングシステムに、第1の例示的実施形態に従った動作を実行させるプログラム命令を記憶した、非一過性コンピュータ読取り可能媒体を含むようにすることができる。
第3の例示的実施形態では、コンピューティングシステムは、少なくとも1つのプロセッサ、並びにメモリ及びプログラム命令を含むようにすることができる。そのプログラム命令は、メモリに記憶されるようにすることができ、上記少なくとも1つのプロセッサによる実行時に上記コンピューティングシステムに第1の例示的実施形態に従った動作を実行させることができるようにすることができる。
第4の例示的実施形態は、そのような動作を実行し又は支援するように構成されたシステムを含むようにすることができる。このシステムは、ウェブページのコンポーネントの階層的配置を協調的に定義する複数の相互に関係するレコードであって、そのウェブページの上記コンポーネントの構造及び動作を解釈実行可能に定義するための基本スクリプトへの参照を含むものと、そのウェブページの上記コンポーネント間のデータバインディン
グを協調的に定義する複数の相互に関係するレコードと、を含むデータベースを含むことができる。更に、本システムは、コンピューティング装置上で実行されるウェブサーバアプリケーションであって、クライアント装置から上記ウェブページのためのリクエストを受信し、(i)上記ウェブページの上記コンポーネントの上記階層的配置を表現するコンポーネントツリー構造を確認し、上記ウェブページの上記コンポーネント間のデータバインディングを確認するために上記データベースに問い合わせ、(ii)上記確認されたコンポーネントツリー構造及びデータバインディングに基づいて、上記確認されたコンポーネントツリー構造及びデータバインディングを表現し、上記基本スクリプトを動作するようにロードするためのコンポーネントローダを含むマークアップドキュメントを構築し、そして、(iii)上記構築されたマークアップドキュメントを上記クライアント装置上で実行されるウェブブラウザによるレンダリングのために出力することによって上記リクエストに応答する、ように構成されるものを含むことができる。
第5の例示的実施形態では、システムは、他の例示的な実施形態の各動作を実行するための種々の手段を含むようにすることができる。
これら及び他の実施形態、態様、利点、及び変形例は、添付の図面を適宜参照しながら以下の詳細な説明を読むことによって、当業者には明らかになるであろう。更に、本明細書に提供されたこの概要並びに他の説明及び図は、実施例としてのみ実施形態を説明することを意図しており、従って、多数の変形形態が可能であることを意図している。例えば、特許請求されるような実施形態の範囲内に留まりながら、構造要素及び処理ステップが、再構成され、組み合わせられ、分散され、排除され、又は他の方法で変更されるようにすることができる。
例示的実施形態による、コンピューティング装置の概略図を示す。 例示的実施形態による、サーバ装置クラスタの概略図を示す。 例示的な実施形態による、リモートネットワーク管理アーキテクチャを示す。 例示的実施形態による、リモートネットワーク管理アーキテクチャを含む通信環境を示す。 例示的実施形態による、リモートネットワーク管理アーキテクチャを含む他の通信環境を示す。 例示的実施形態によるフローチャートである。 例示的実施形態を使用してレンダリングされたウェブページを示す。 図6に示されるようなページを表すHTMLドキュメントの一部を示すスクリーンショットを示す。 図7のHTMLをレンダリングするブラウザによって確立され得る、結果として生じるHTMLのページ詳細を示す。 例示的実施形態におけるページビルダインタフェースの属性部分を示す。 例示的実施形態におけるページビルダインタフェースのプロパティ部分を示す。 例示的実施形態におけるページビルダインタフェースのアクション部分を示す。 例示的実施形態で使用するためのデータベーススキーマの一部を示す。 例示的実施形態で使用するためのデータベーススキーマの別の部分を示す。 ページリクエストに応答してHTMLドキュメントを配信することを構築するための実施例の処理フローを示す。 例示的実施形態で動作可能なシステムの簡略ブロック図である。 例示的実施形態によるフローチャートである。
方法、装置、及びシステムの実施例が、本明細書に記載されている。「例」及び「好例の」という言葉は、本明細書では、「例、実施例、例示として役に立つ」ということを意味するために使われることを理解すべきである。本明細書において「例」又は「好例の」として表現される任意の実施形態又は特徴は、そのように明言されていない限り、必ずしも他の実施形態又は特徴よりも好ましい又は有利であると解釈される必要はない。従って、本明細書で示されている主題の範囲から逸脱することなく、他の実施形態を使用することができ、及び他の変更をなすことができる。
従って、本明細書に記載の例示的実施形態は、限定することを意図するものではない。本明細書に一般的に記載され、そして図に示されるような本開示の態様は、多種多様な異なる構成で配置され、置換され、組み合わされ、分離され、及び設計されるようにすることができることが、容易に理解されるであろう。例えば、機能を「クライアント」コンポーネントと「サーバ」コンポーネントに分離することは、さまざまな方法で発生する可能性がある。
更に、文脈が他に示唆しない限り、各図に示される特徴は互いに組み合わせて使用されるようにすることができる。従って、図は一般的に、例示された特徴の全てが各実施形態に必要というわけではないことを理解して、1つ以上の全体的な実施形態の構成態様として見なされるべきである。
更に、本明細書又は特許請求の範囲における要素、ブロック、又はステップの任意の列挙は、明確にすることの目的のためである。従って、そのような列挙は、これらの要素、ブロック、又はステップが、特定の構成に囚われること、又は特定の順序で実行されることを、要求又は示唆すると解釈されるべきではない。
I.序説
大企業は、相互に関連する多数の業務を含む複雑な実体である。これらのうちのいくつかは、人事(HR)、サプライチェーン、情報技術(IT)、及び財務などのように、企業をまたいで見られるものもある。しかしながら、それぞれの企業は、欠くことのできない機能を提供したり、競争上の優位性を生み出したりする、それ独自の業務も有する。
広く実施されている業務をサポートするために、企業は通常、顧客関係管理(CRM)及び人的資本管理(HCM)パッケージのような、既製のソフトウェアアプリケーションを使用する。しかしながら、独自の要件を満たすためにカスタムソフトウェアアプリケーションも必要になる場合がある。大企業は、多くの場合、数十から数百のカスタムソフトウェアアプリケーションを有する。それでもなお、本明細書の実施形態によって提供される利点は、大企業に限定されず、任意の規模の企業、又は任意の他の種類の組織に適用されるようにすることができる。
多くのそのようなソフトウェアアプリケーションは、企業内のそれぞれの部門によって開発されている。これらは簡単なスプレッドシートからカスタムメイドのソフトウェアツール及びデータベースまである。しかし、サイロ化されたカスタムソフトウェアアプリケーションの急増は、多くの欠点を有している。それは、業務を運営し成長させ革新し法的規制を満たすという、企業の能力に悪影響を及ぼす。企業は、サブシステムとデータを統合する単一のシステムがないために、その業務を統合し合理化し強化することが難しいことを見いだすかもしれない。
カスタムアプリケーションを効率的に作成するために、企業は、不必要な開発の複雑さを排除する、遠隔にホストされるアプリケーションプラットフォームの恩恵を受けるであろう。このようなプラットフォームの目標は、ソフトウェアエンジニアや他の役割を担う個人が独自の価値の高い機能の開発に集中できるように、時間を消費し繰返しのあるアプリケーション開発作業を減らすことである。
この目標を達成するために、企業全体のワークフローをインテリジェントに自動化するために、サービスとしてのアプリケーションプラットフォーム(aPaaS)の概念が導入される。aPaaSシステムは、企業から遠隔にホストされるが、安全な接続を介して企業内のデータ、アプリケーション、及びサービスにアクセスすることができる。そのようなaPaaSシステムは、いくつかの有利な能力及び特性を有することができる。これらの利点と特性は、IT、人事、CRM、顧客サービス、アプリケーション開発、及びセキュリティに関する、企業の運用とワークフローを向上させることができる。
aPaaSシステムは、モデル−ビュー−コントローラ(MVC)アプリケーションの開発及び実行をサポートすることができる。MVCアプリケーションは、情報の表示をその情報がユーザに提示される方法から分離するために、それらの機能を3つの相互接続された部分(モデル、ビュー、及びコントローラ)に分割し、それによって効率的なコード再利用及び並列開発を可能にする。これらのアプリケーションはウェブベースとすることができ、そして、生成、読取り、更新、削除(CRUD)の能力を提供することができる。これにより、新しいアプリケーションを、共通のアプリケーションインフラストラクチャ上に構築することができる。
aPaaSシステムは、グラフィカルユーザインタフェース(GUI)開発用の標準化されたウィジェットのセットなどの、標準化されたアプリケーションコンポーネントをサポートすることができる。このように、aPaaSシステムを使用して構築されたアプリケーションは共通のルックアンドフィールを有する。他のソフトウェア構成要素及びモジュールも同様に標準化されるようにすることができる。場合によっては、このルックアンドフィールは、企業のカスタムロゴ及び/又は配色を用いて、ブランド設定又はスキン設定することができる。
aPaaSシステムは、メタデータを使用してアプリケーションの動作を設定する機能をサポートすることができる。これにより、アプリケーションの動作を特定のニーズを満たすように迅速に適応させることができる。このようなアプローチは開発時間を短縮し、柔軟性を高める。更に、aPaaSシステムは、メタデータの作成及び管理を容易にするGUIツールをサポートすることができ、従ってメタデータ内のエラーを減らすことができる。
aPaaSシステムは、アプリケーション間の明確に定義されたインタフェースをサポートするので、ソフトウェア開発者は望ましくないアプリケーション間の依存関係を避けることができる。従って、aPaaSシステムは、持続的状態情報及び他のデータが記憶されているサービス層を実装することができる。
aPaaSシステムは、その上のアプリケーションがレガシアプリケーション及びサードパーティアプリケーションと対話することができるように、豊富な統合機能のセットをサポートすることができる。例えば、aPaaSシステムは、従来の人事、IT、及び経理システムと統合する、カスタムの従業員オンボーディングシステムをサポートすることができる。
aPaaSシステムは、エンタプライズレベルのセキュリティをサポートすることがで
きる。更に、aPaaSシステムは遠隔でホストされる可能性があるため、企業内のシステム又は企業外でホストされるサードパーティのネットワークやサービスと対話するときには、セキュリティ手順もまた利用すべきである。例えば、aPaaSシステムは、一般的なセキュリティの脅威を検出し識別するために、企業内及び他の関係者の間でデータを共有するように構成されるようにすることができる。
aPaaSシステムの他の機能(feature)、機能(functionality)、及び利点が存在する可能性がある。この説明は例示目的であり、限定的であることを意図しない。
aPaaS開発プロセスの一例として、ソフトウェア開発者は、aPaaSシステムを使用して新しいアプリケーションを作成するように任命されるようにすることができる。最初に、開発者はデータモデルを定義することができ、それはアプリケーションが使用するデータのタイプ及びそれらの間の関係を指定する。そして、aPaaSシステムのGUIを介して、開発者はデータモデルを入力する(例えばアップロードする)。aPaaSシステムは、対応する全てのデータベーステーブル、フィールド、及びリレーションシップを自動的に作成し、これらは、オブジェクト指向サービスレイヤを介してその後アクセスできる。
更に、aPaaSシステムは、クライアントサイドのインタフェースとサーバサイドのCRUDロジックを備えた、完全機能のMVCアプリケーションを構築することもできる。この生成されたアプリケーションは、ユーザにとっての更なる開発の基盤として機能し得る。有利なことには、開発者は基本的なアプリケーション機能に多大な時間を費やす必要がない。更に、アプリケーションはウェブベースでもよいので、任意のインターネット対応クライアント装置からアクセスすることができる。代替的又は追加的に、例えばインターネットサービスが利用できないときに、アプリケーションのローカルコピーにアクセスすることができるようにすることができる。
aPaaSシステムは、アプリケーションに追加できる豊富な一連の定義済み機能もサポートすることができる。これらの機能は、検索、電子メール、テンプレート作成、ワークフロー設計、レポート作成、分析、ソーシャルメディア、スクリプト作成、モバイル対応の出力、及びカスタマイズされたGUIのサポートを含む。
以下の実施形態は、例示的なaPaaSシステムの構造的及び機能的態様、並びにそれらの特徴及び利点を説明する。
II.コンピューティング装置とクラウドベースのコンピューティング環境の実施例
図1は、本明細書の実施形態に従って動作するように構成されたコンピューティング装置に含まれ得るいくつかのコンポーネントを示す、コンピューティング装置100を例示する簡略ブロック図である。コンピューティング装置100は、クライアント装置(例えば、ユーザによって能動的に動作される装置)、サーバ装置(例えば、クライアント装置に計算サービスを提供する装置)、又は他の何らかのタイプの計算プラットフォームとすることができる。特定の動作を実行するために時としてクライアント装置として動作するサーバ装置もあれば、サーバ機能を組み込んだクライアント装置もある。
この実施例では、コンピューティング装置100は、プロセッサ102、メモリ104、ネットワークインタフェース106、及び入出力ユニット108を含み、それらは全てシステムバス110又は同様の機構によって結合されるようにすることができる。いくつかの実施形態では、コンピューティング装置100は、他のコンポーネント及び/又は周辺装置(例えば、取外し可能ストレージ、プリンタなど)を含むことができる。
プロセッサ102は、中央処理装置(CPU)、コプロセッサ(例えば、数学、グラフィック、又は暗号化コプロセッサ)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、及び/又はプロセッサ動作を実行する集積回路もしくはコントローラの形態などの、任意の種類のコンピュータ処理要素のうちの1つ以上とすることができる。場合によっては、プロセッサ102は、1つ以上のシングルコアプロセッサとすることができる。他のケースでは、プロセッサ102は、複数の独立した処理ユニットを有する1つ以上のマルチコアプロセッサであってもよい。プロセッサ102はまた、実行中の命令及び関連データを一時的に記憶するためのレジスタメモリ、並びに最近使用された命令及びデータを一時的に記憶するためのキャッシュメモリを含むことができる。
メモリ104は、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、及び不揮発性メモリ(例えば、フラッシュメモリ、ハードディスクドライブ、ソリッドステートドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、及び/又はテープストレージ)を含むがこれらに限定されない、任意の形態のコンピュータ使用可能メモリとすることができる。従って、メモリ104は、主記憶装置と長期記憶装置の両方を表す。他の種類のメモリは、生物学的メモリを含むことができる。
メモリ104は、プログラム命令及び/又はプログラム命令が動作するようにすることができるデータを記憶することができる。例として、メモリ104は、これらのプログラム命令を非一過性コンピュータ読取り可能記録媒体上に記憶してもよく、その結果、命令は、本明細書又は添付の図面において開示される方法、処理、又は動作の任意のものを実行するために、プロセッサ102によって実行可能である。
図1に示されるように、メモリ104は、ファームウェア104A、カーネル104B、及び/又はアプリケーション104Cを含むことができる。ファームウェア104Aは、ブートあるいはさもなくばコンピューティング装置100の一部又は全部を起動するために使用される、プログラムコードとすることができる。カーネル104Bは、メモリ管理、プロセスのスケジューリング及び管理、入出力、並びに通信のためのモジュールを含むオペレーティングシステムとすることができる。カーネル104Bはまた、オペレーティングシステムがコンピューティング装置100のハードウェアモジュール(例えば、メモリユニット、ネットワーキングインタフェース、ポート、及びバス)と通信することを可能にするデバイスドライバを含むことができる。アプリケーション104Cは、Webブラウザ又は電子メールクライアント、並びにこれらのプログラムによって使用される任意のソフトウェアライブラリなどの、1つ以上のユーザ空間ソフトウェアプログラムとすることができる。メモリ104はまた、これら並びに他のプログラム及びアプリケーションによって使用されるデータを記憶することができる。
ネットワークインタフェース106は、イーサネット(例えば、ファストイーサネット、ギガビットイーサネットなど)などの1つ以上の有線インタフェースの形態を取ることができる。ネットワークインタフェース106は、同軸ケーブル又は電力線などの1つ以上の非イーサネット媒体を介した通信、あるいは同期光ネットワーク(SONET)又はデジタル加入者線(DSL)技術などの広域媒体を介した通信もサポートすることができる。ネットワークインタフェース106は更に、IEEE802.11(Wifi)、B
LUETOOTH(米国登録商標)、全地球測位システム(GPS)、又は広域無線インタフェースなどの1つ以上の無線インタフェースの形態をとることができる。しかしながら、他の形態の物理層インタフェース及び他の種類の標準又は独自の通信プロトコルが、ネットワークインタフェース106を介して使用されてもよい。更に、ネットワークインタフェース106は、複数の物理インタフェースを含んでもよい。例えば、コンピューティング装置100のいくつかの実施形態は、イーサネット、BLUETOOTH(米国登録商標)、及びWifiインタフェースを含むことができる。
入出力ユニット108は、例示的コンピューティング装置100を用いて、ユーザと周辺機器との対話を容易にすることができる。入出力ユニット108は、キーボード、マウス、タッチスクリーンなどのような、1つ以上の種類の入力装置を含むことができる。同様に、入出力ユニット108は、スクリーン、モニタ、プリンタ、及び/又は1つ以上の発光ダイオード(LED)などのような、1つ以上の種類の出力装置を含むことができる。追加的又は代替的に、コンピューティング装置100は、例えばユニバーサルシリアルバス(USB)又は高品位マルチメディアインタフェース(HDMI)ポートインタフェースを使用して、他の装置と通信することができる。
いくつかの実施形態では、コンピューティング装置100の1つ以上のインスタンスは、aPaaSアーキテクチャをサポートするためにデプロイされるようにすることができる。これらのコンピューティング装置の正確な物理的位置、接続性、及び構成は、未知であってよく、及び/又はクライアント装置にとって重要ではなくともよい。従って、コンピューティング装置は、さまざまなリモートデータセンタの場所に収容されるようにすることができる「クラウドベースの」装置と呼ばれることがある。
図2は、例示的実施形態による、クラウドベースのサーバクラスタ200を示す。図2では、コンピューティング装置(例えば、コンピューティング装置100)の動作は、サーバ装置202、データ記憶装置204、及びルータ206間に分散させることができ、それらは全てローカルクラスタネットワーク208によって接続することができる。サーバクラスタ200内のサーバ装置202、データ記憶装置204、及びルータ206の数は、サーバクラスタ200に割り当てられたコンピューティングタスク及び/又はアプリケーションに依存するようにすることができる。
例えば、サーバ装置202は、コンピューティング装置100の様々なコンピューティングタスクを実行するように構成されるようにすることができる。従って、コンピューティングタスクは、1つ以上のサーバ装置202の間で分散されるようにすることができる。これらのコンピューティングタスクが並列に実行され得る限り、このようなタスクの分散は、これらのタスクを完了して結果を返すまでの合計時間を短縮できる。簡略の目的のために、サーバクラスタ200及び個々のサーバ装置202の両方が「サーバ装置」と呼ばれてよい。この命名法は、1つ以上の別個のサーバ装置、データ記憶装置、及びクラスタルータがサーバ装置動作に含まれることを暗に意味していると理解されるべきである。
データ記憶装置204は、ハードディスクドライブ及び/又はソリッドステートドライブのグループへの読出し及び書込みアクセスを管理するように構成されたドライブアレイコントローラを含むデータストレージアレイとすることができる。ドライブアレイコントローラはまた、単独で又はサーバ装置202と共に、データ記憶装置204に記憶されたデータのバックアップ又は冗長コピーを管理して、ドライブの障害又は1つ以上のサーバ装置202がクラスタデータ記憶装置204のユニットにアクセスすることを妨げる他の種類の障害から保護するように構成されるようにすることもできる。ドライブ以外の他の種類のメモリが使用されてもよい。
ルータ206は、サーバクラスタ200のために内部及び外部通信を提供するように構成されたネットワーキング機器を含むことができる。例えば、ルータ206は、(i)クラスタネットワーク208を介したサーバ装置202とデータ記憶装置204との間のネットワーク通信、及び/又は(ii)ネットワーク212への通信リンク210を介したサーバクラスタ200と他の装置との間のネットワーク通信を提供するように構成された1つ以上のパケット交換及び/又はルーティング装置(スイッチ及び/又はゲートウェイを含む)を含むことができる。
更に、クラスタルータ206の設定は、サーバ装置202とデータ記憶装置204のデータ通信要件、ローカルクラスタネットワーク208のレイテンシとスループット、通信リンク210のレイテンシとスループットとコスト、及び/又は、コストや速度やフォールトトレランス(耐故障性)や回復力や効率やシステムアーキテクチャの他の設計目標に寄与できる他の要因に、少なくとも部分的に基づくことができる。
可能な実施例として、データ記憶装置204は、構造化照会言語(SQL)データベースなどの、任意の形態のデータベースを含むことができる。テーブル、アレイ、リスト、ツリー、及びタプルを含むがこれらに限定されない様々な種類のデータ構造が、そのようなデータベースにおいて情報を記憶することができる。更に、データ記憶装置204内の任意のデータベースは、モノリシック(一体構造)でもよく、又は複数の物理装置にわたって分散されてもよい。
サーバ装置202は、クラスタデータ記憶装置204との間でデータを送受信するように構成することができる。この送信及び読出しは、それぞれ、SQLクエリ又は他の種類のデータベースクエリ、及びそのようなクエリの出力の形をとることができる。追加のテキスト、画像、ビデオ、及び/又はオーディオも同様に含まれるようにすることができる。更に、サーバ装置202は、受信したデータをウェブページ表現に編成することができる。そのような表現は、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)、又は他の何らかの標準化された若しくは独自のフォーマットなどのマークアップ言語の形態をとることができる。更に、サーバ装置202は、限定はしないが、Perl、Python、PHPハイパーテキストプリプロセッサ(PHP)、アクティブサーバページ(ASP)、JavaScriptなどの様々なタイプのコンピュータ化スクリプト言語を実行する機能を有することができる。これらの言語で書かれたコンピュータプログラムコードは、クライアント装置へのウェブページの提供、並びにウェブページとのクライアント装置の対話を容易にすることができる。
III.リモートネットワーク管理アーキテクチャの実施例
図3は、例示的実施形態による、リモートネットワーク管理アーキテクチャを示す。このアーキテクチャは、全てインターネット350を介して接続された3つの主要コンポーネント、管理対象ネットワーク300、リモートネットワーク管理プラットフォーム320、及びサードパーティネットワーク340を含む。
管理対象ネットワーク300は、例えば、コンピューティング及び通信タスク、並びにデータの記憶のために企業によって使用される企業ネットワークとすることができる。従って、管理対象ネットワーク300は、様々なクライアント装置302、サーバ装置304、ルータ306、仮想マシン308、ファイアウォール310、及び/又はプロキシサーバ312を含むことができる。クライアント装置302はコンピューティング装置100によって具現化されるようにすることができ、サーバ装置304はコンピューティング装置100又はサーバクラスタ200によって具現化されるようにすることがき、ルータ306は任意のタイプのルータ、スイッチ、又はゲートウェイとすることができる。
仮想マシン308は、コンピューティング装置100又はサーバクラスタ200のうちの1つ以上によって具現化されるようにすることができる。一般に、仮想マシンは、コンピューティングシステムのエミュレーションであり、物理コンピュータの機能(例えば、プロセッサ、メモリ、及び通信リソース)を模倣する。サーバクラスタ200などの1つの物理的コンピューティングシステムは、最大数千までの個別の仮想マシンをサポートすることができる。いくつかの実施形態では、仮想マシン308は、個別の仮想マシンへの物理的コンピューティングリソースの割当て、並びにパフォーマンス及びエラーの報告を
容易にする、集中型サーバ装置又はアプリケーションによって管理されるようにすることができる。企業は、必要に応じて効率的にコンピューティングリソースを割り当てるために、仮想マシンを使用することがよくある。仮想化コンピューティングシステムのプロバイダは、VMWARE(米国登録商標)及びMICROSOFT(米国登録商標)を含む。
ファイアウォール310は、管理対象ネットワーク300から開始される権限のある通信を許可しながら、管理対象ネットワーク300をその中の装置、アプリケーション、及びサービスにアクセスする権限のない攻撃から保護する1つ以上の専用ルータ又はサーバ装置とすることができる。ファイアウォール310はまた、侵入検知、Webフィルタリング、ウイルススキャン、アプリケーション層ゲートウェイ、及びその他のアプリケーションやサービスを提供することができる。図3に示されていないいくつかの実施形態では、管理対象ネットワーク300は、リモートネットワーク管理プラットフォーム320と通信するための1つ以上の仮想プライベートネットワーク(VPN)ゲートウェイを含むことができる(下記参照)。
管理対象ネットワーク300はまた、1つ以上のプロキシサーバ312も含むことができる。プロキシサーバ312の一実施形態は、管理対象ネットワーク300、リモートネットワーク管理プラットフォーム320、及びサードパーティネットワーク340間のデータの通信及び移動を容易にするサーバ装置とすることができる。特に、プロキシサーバ312は、リモートネットワーク管理プラットフォーム320の1つ以上の計算インスタンスとの安全な通信セッションを確立し維持できるようにすることができる。そのようなセッションを通じて、リモートネットワーク管理プラットフォーム320は、管理対象ネットワーク300及びそのコンポーネントのアーキテクチャおよび構成の態様を発見し管理できるようにすることができる。場合によっては、プロキシサーバ312の助けを借りて、リモートネットワーク管理プラットフォーム320はまた、管理対象ネットワーク300によって使用されるサードパーティネットワーク340の態様を発見し管理できるようにすることができる。
ファイアウォール310などのファイアウォールは、通常、そのようなセッションがファイアウォールの背後から(即ち管理対象ネットワーク300上の装置から)開始されたか、ファイアウォールがそのセッションをサポートするために明示的に設定されていない限り、インターネット350を介して着信する全ての通信セッションを拒否する。プロキシサーバ312をファイアウォール310の背後に(例えば、管理対象ネットワーク300内にあり、ファイアウォール310によって保護されるように)配置することによって、プロキシサーバ312は、ファイアウォール310を介してこれらの通信セッションを開始できるようにすることができる。これにより、ファイアウォール310はリモートネットワーク管理プラットフォーム320からの着信セッションに対応するために特に設定される必要がなく、それによって管理対象ネットワーク300に対する潜在的なセキュリティリスクが回避されるであろう。
場合によっては、管理対象ネットワーク300は、いくつかの装置と少数のネットワークとから構成されてもよい。他の展開(deployment)では、管理対象ネットワーク300は複数の物理的場所にまたがることができ、数百のネットワーク及び数十万の装置を含むことができる。従って、図3に示すアーキテクチャは、桁違いに拡大又は縮小することができる。
更に、管理対象ネットワーク300のサイズ、アーキテクチャ、及び接続性に依存して、さまざまな数のプロキシサーバ312をその中に展開(deploy)することができる。例えば、プロキシサーバ312のそれぞれは、管理対象ネットワーク300の一部に関して
リモートネットワーク管理プラットフォーム320と通信することを担当するようにすることができる。代替的又は追加的に、2つ以上のプロキシサーバのセットが、負荷分散、冗長性、及び/又は高可用性の目的で、管理対象ネットワーク300のそのような一部に割り当てられるようにすることができる。
リモートネットワーク管理プラットフォーム320は、aPaaSサービスをユーザ特に管理対象ネットワーク300の事業者に提供するホスト型環境である。これらのサービスは、例えば、ウェブベースのポータルの形をとることができる。従って、ユーザは、例えばクライアント装置302から又は潜在的には管理対象ネットワーク300の外部のクライアント装置から、リモートネットワーク管理プラットフォーム320に安全にアクセスすることができる。ウェブベースのポータルを介して、ユーザは、アプリケーション、レポートの生成、分析の表示、及びその他のタスクの実行を、設計、テスト、及びデプロイすることができる。
図3に示されるように、リモートネットワーク管理プラットフォーム320は、4つの計算インスタンス322、324、326、及び328を含む。これらのインスタンスのそれぞれは、特定の顧客が利用できる一組のウェブポータル、サービス、及びアプリケーション(例えば、全機能aPaaSシステム)を表すことができる。場合によっては、1人の顧客が複数の計算インスタンスを使用するようにすることができる。例えば、管理対象ネットワーク300は、リモートネットワーク管理プラットフォーム320の企業顧客であるようにすることができ、計算インスタンス322、324、及び326を使用するようにすることができる。1人の顧客に複数のインスタンスを提供する理由は、顧客が独立してそのアプリケーションとサービスを開発しテストしデプロイしたいと希望し得るからである。従って、計算インスタンス322は管理対象ネットワーク300に関連するアプリケーション開発専用とすることができ、計算インスタンス324はこれらのアプリケーションのテスト専用とすることができ、計算インスタンス326は被試験アプリケーション及びサービスのライブ運用専用とすることができる。計算インスタンスはまた、ホストインスタンス、リモートインスタンス、顧客インスタンス、又はいくつかの他の名称で呼ばれるようにすることもできる。
リモートネットワーク管理プラットフォーム320のマルチインスタンスアーキテクチャは、従来のマルチテナントアーキテクチャとは対照的で、それに対してマルチインスタンスアーキテクチャはいくつかの利点を有する。マルチテナントアーキテクチャでは、異なる顧客(例えば、企業)からのデータが、単一のデータベースにまとめられる。これらの顧客のデータは互いに分離されているが、その分離は単一のデータベースを動作するソフトウェアによって実施される。結果として、このシステムのセキュリティ違反は全ての顧客のデータに影響を及ぼし、特に政府、医療、及び/又は金融規制の対象となる事業体にとって、追加のリスクを生み出す可能性がある。更に、1人の顧客に影響を与えるデータベース動作は、そのデータベースを共有する全ての顧客に影響を与えることが予想される。従って、ハードウェア又はソフトウェアのエラーによる機能停止がある場合、この機能停止はそのような全ての顧客に影響する。同様に、データベースを1人の顧客のニーズに合わせてアップグレードする場合、アップグレードプロセス中に全ての顧客がそのデータベースを利用することはできない。しばしば、そのようなメンテナンス期間(maintenance window)は、共有されるデータベースのサイズにより、長くなる。
対照的に、マルチインスタンスアーキテクチャは、各顧客に、専用のコンピューティングインスタンス内でその独自のデータベースを提供する。これにより、顧客データの混入を防ぎ、各インスタンスを独立に管理することができる。例えば、ある顧客のインスタンスがエラー又はアップグレードによる停止を経験しても、他の計算インスタンスは影響を受けない。データベースには1つの顧客のデータしか含まれていないため、メンテナンス
の停止時間は限定される。更に、マルチインスタンスアーキテクチャのよりシンプルな設計が、各顧客データベース及びインスタンスの冗長コピーが地理的に多様な方法でデプロイされるようにすることを可能にする。このことは、障害が検出されたときやメンテナンスが実行されているときに、顧客のインスタンスのライブ(運転中の)バージョンが移動されるようにすることができる、高可用性を促進する。
複数の計算インスタンスを効率的な方法でサポートするために、リモートネットワーク管理プラットフォーム320は、単一のハードウェアプラットフォーム上でこれらの複数のインスタンスを実装することができる。例えば、aPaaSシステムがサーバクラスタ200のようなサーバクラスタ上で実装されるとき、それは様々な量の計算、記憶、及び通信リソースをインスタンス専用にする仮想マシンを動作させることができる。しかし、サーバクラスタ200の完全仮想化は必要ではないかもしれず、他の機構がインスタンスを分離するために使用されるようにすることができる。いくつかの例では、各インスタンスは、サーバクラスタ200上に専用アカウント及び1つ以上の専用データベースを有することができる。或いは、計算インスタンス322は、複数の物理装置にまたがることができる。
いくつかのケースでは、リモートネットワーク管理プラットフォーム320の単一のサーバクラスタは、複数の独立した企業をサポートすることができる。更に、後述するように、リモートネットワーク管理プラットフォーム320は、ロードバランシング、冗長性、及び/又は高可用性を容易にするために、地理的に多様なデータセンタにデプロイされた複数のサーバクラスタを含むことができる。
サードパーティネットワーク340は、アウトソーシングされた計算、データ記憶、通信、及びサービスホスティングの動作のために使用することができるリモートサーバ装置(例えば、サーバクラスタ200のような複数のサーバクラスタ)であるようにすることができる。これらのサーバは仮想化されてもよい(即ち、サーバは仮想マシンでもよい)。サードパーティネットワーク340の実施例は、AMAZON WEB SERVICES(米国登録商標)及びMICROSOFT(米国登録商標)Azureを含むことができる。リモートネットワーク管理プラットフォーム320と同様に、サードパーティネットワーク340をサポートする複数のサーバクラスタは、負荷分散、冗長性、及び/又は高可用性を目的として、地理的に多様な場所にデプロイされるようにすることができる。
管理対象ネットワーク300は、アプリケーション及びサービスをそのクライアント及び顧客にデプロイするサードパーティネットワーク340の一つ以上を使用することができる。例えば、管理対象ネットワーク300がオンライン音楽ストリーミングサービスを提供する場合、サードパーティネットワーク340は音楽ファイルを記憶し、ウェブインタフェース及びストリーミング機能を提供することができる。この方法では、管理対象ネットワーク300の企業は、これらの動作のためにそれ自身のサーバを構築し維持する必要がない。
リモートネットワーク管理プラットフォーム320は、サードパーティネットワーク340と統合してその内部の仮想マシン及び管理対象サービスを管理対象ネットワーク300に見えるようにするモジュールを含むことができる。そのモジュールは、ユーザが、仮想リソースを要求し、サードパーティネットワーク340のための柔軟なレポートを提供することを可能にするようにすることができる。この機能を確立するために、管理対象ネットワーク300からのユーザは最初にサードパーティネットワーク340とのアカウントを確立し、そして一組の関連するリソースを要求することになるだろう。次に、ユーザは、そのアカウント情報をリモートネットワーク管理プラットフォーム320の適切なモ
ジュールに入力することができる。これらのモジュールは、その後、アカウント内の管理可能なリソースを自動的に発見し、そしてまた、使用、実績、及び課金に関する報告を提供することもできる。
インターネット350は、グローバルインターネットの一部を表すことができる。しかしながら、インターネット350は、代替的に、プライベートワイドエリア又はローカルエリアパケット交換ネットワークのような異なる種類のネットワークを表すことができる。
図4は更に、管理対象ネットワーク300と計算インスタンス322との間の通信環境を示し、そして、追加の特徴及び代替の実施形態を紹介する。図4では、計算インスタンス322は、データセンタ400A及び400Bにわたって複製されている。これらのデータセンタは、互いに地理的に離れている、おそらく異なる都市や異なる国にあるようにすることができる。各データセンタは、管理対象ネットワーク300並びにリモートユーザとの通信を容易にする支援機器を含む。
データセンタ400Aにおいて、外部装置への及び外部装置からのネットワークトラフィックは、VPNゲートウェイ402A又はファイアウォール404Aのいずれかを通じて流れる。VPNゲートウェイ402Aは、インターネットプロトコルセキュリティ(IPSEC)又はトランスポート層セキュリティ(TLS)のようなセキュリティプロトコルを介して、管理対象ネットワーク300のVPNゲートウェイ412とピア(対等)接続することができる。ファイアウォール404Aは、ユーザ414及びリモートユーザ416のような権限のあるユーザからのアクセスを許可し、権限のないユーザへのアクセスを拒否するように構成されるようにすることができる。ファイアウォール404Aを介して、これらのユーザは計算インスタンス322、そしておそらく他の計算インスタンスにアクセスすることができる。ロードバランサ406Aは、計算インスタンス322をホストする1つ以上の物理又は仮想サーバ装置の間でトラフィックを分散するために使用されるようにすることができる。ロードバランサ406Aは、データセンタ400Aの内部構成(例えば、計算インスタンス322)をクライアント装置から隠すことによって、ユーザアクセスを単純化することができる。例えば、計算インスタンス322が複数のデータベースへのアクセスを共有する複数の物理又は仮想コンピューティング装置を含む場合、ロードバランサ406Aは、どの1つのコンピューティング装置又はデータベースも他よりも著しくビジーにならないように、ネットワークトラフィック及び処理中タスクをこれらのコンピューティング装置及びデータベースにわたって分散させることができる。いくつかの実施形態では、計算インスタンス322は、VPNゲートウェイ402A、ファイアウォール404A、及びロードバランサ406Aを含むことができる。
データセンタ400Bは、データセンタ400A内の構成要素の独自のバージョンを含むことができる。従って、VPNゲートウェイ402B、ファイアウォール404B、及びロードバランサ406Bは、それぞれ、VPNゲートウェイ402A、ファイアウォール404A、及びロードバランサ406Aと同じ又は類似の動作を実行することができる。更に、リアルタイム又はほぼリアルタイムのデータベース複製及び/又は他の動作によって、計算インスタンス322はデータセンタ400A及び400B内に同時に存在することができる。
データセンタ400Aと400Bは、図4に示されるように、冗長性と高可用性を容易にすることができる。図4の構成では、データセンタ400Aはアクティブであり、データセンタ400Bはパッシブである。従って、データセンタ400B内の計算インスタンス322のバージョンがほぼリアルタイムで更新されている間に、データセンタ400Aは管理対象ネットワーク300との間の全てのトラフィックを処理している。両方のデー
タセンタがアクティブであるような他の構成もサポートされるようにすることができる。
データセンタ400Aがいくつかのやり方で失敗するかさもなければユーザに利用不可となった場合、データセンタ400Bは、アクティブなデータセンタとして引き継ぐことができる。例えば、計算インスタンス322のドメイン名をデータセンタ400Aの1つ以上のインターネットプロトコル(IP)アドレスと関連付けるドメインネームシステム(DNS)サーバは、そのドメイン名をデータセンタ400Bの1つ以上のIPアドレスと再関連付けすることができる。この再関連付けが完了した後(1秒未満又は数秒かかる)、ユーザはデータセンタ400Bを介して計算インスタンス322にアクセスすることができる。
図4はまた、管理対象ネットワーク300の可能な構成を示している。上述したように、図4は、プロキシサーバ312及びユーザ414は、ファイアウォール310を介して、計算インスタンス322にアクセスすることができる。プロキシサーバ312はまた、構成項目410にアクセスすることもできる。図4において、構成項目410は、クライアント装置302、サーバ装置304、ルータ306、及び仮想マシン308、その上で実行される任意のアプリケーション又はサービス、並びに、装置、アプリケーション、及びサービス間の関係の何れか又は全てを、指すことができる。従って、「構成項目」という用語は、任意の物理若しくは仮想装置、又は遠隔に発見可能な若しくは計算インスタンス322によって管理される任意のアプリケーション若しくはサービス、又は発見された装置、アプリケーション、及びサービス間の関係の、省略形とすることができる。構成項目は、計算インスタンス322の構成管理データベース(CMDB)内で表すことができる。
上記のように、VPNゲートウェイ412は、VPNゲートウェイ402Aに専用VPNを提供することができる。そのようなVPNは、管理対象ネットワーク300と計算インスタンス322との間に著しい量のトラフィックがある場合、又はさもなくば、セキュリティポリシーがこれらのサイト間のVPNの使用を示唆又は要求する場合に、有用とすることができる。いくつかの実施形態では、VPNを介して直接通信する管理対象ネットワーク300及び/又は計算インスタンス322内の任意の装置には、パブリックIPアドレスが割り当てられる。管理対象ネットワーク300及び/又は計算インスタンス322内の他の装置には、プライベートIPアドレス(例えば、それぞれサブネット10.0.0.0/8及び192.168.0.0/16と略記される10.0.0.0〜10.255.255.255又は192.168.0.0〜192.168.255.255の範囲から選択されるIPアドレス)を割り当てることができる。
IV.装置、アプリケーション、及びサービス発見の実施例
リモートネットワーク管理プラットフォーム320が管理対象ネットワーク300の装置、アプリケーション、及びサービスを管理する場合には、リモートネットワーク管理プラットフォーム320は、まず始めに、管理対象ネットワーク300内にどのような装置が存在するか、これらの装置の構成と動作状態、及びそれらの装置によって提供されるアプリケーションとサービス、並びに発見された装置、アプリケーション、及びサービス間の関係を決定することができる。上記のように、各装置、アプリケーション、サービス、及び関係は構成項目と呼ばれるようにすることができる。管理対象ネットワーク300内の構成項目を定義するプロセスは、発見(discovery)と呼ばれ、プロキシサーバ312
によって少なくとも部分的に容易にされるようにすることができる。
本明細書の実施形態の目的のために、「アプリケーション」は、1つ以上のプロセス、
スレッド、プログラム、クライアントモジュール、サーバモジュール、又は装置若しくは装置のグループ上で実行される任意のその他のソフトウェアを指すことができる。「サー
ビス」は、互いに連携して動作する1つ以上の装置上で実行される複数のアプリケーションによって提供される高水準機能を指すことができる。例えば、高レベルWebサービスは、1つの装置上で実行され別の装置上で実行されているデータベースアプリケーションからの情報にアクセスする複数のWebアプリケーションサーバスレッドを含むようにすることができる。
図5Aは、構成項目がどのように発見されることができるか、並びに、発見された構成項目に関連する情報がどのように記憶されるかの論理的な表現を提供する。簡単のために、リモートネットワーク管理プラットフォーム320、サードパーティネットワーク340、及びインターネット350は示されていない。
図5Aにおいて、CMDB500及びタスクリスト502は計算インスタンス322の内部に記憶されている。計算インスタンス322は、プロキシサーバ312に発見コマンドを送信することができる。これに応答して、プロキシサーバ312は、管理対象ネットワーク300内の様々な装置、アプリケーション、及びサービスに、プローブ(精査)を送信することができる。これらの装置、アプリケーション、及びサービスは、プロキシサーバ312に応答を送信することができ、次いでプロキシサーバ312は、CMDB500に、その中への記憶のために、発見された構成項目に関する情報を提供することができる。CMDB500に記憶されている構成項目は、管理対象ネットワーク300の環境を表す。
タスクリスト502は、プロキシサーバ312が計算インスタンス322に代わって実行するアクティビティのリストを表す。発見が行われると、タスクリスト502が設定される。プロキシサーバ312は、タスクリスト502を繰り返し照会して、その中の次のタスクを取得し、そして、タスクリスト502が空であるか又は別の停止条件に達するまでこのタスクを実行する。
発見を容易にするために、プロキシサーバ312は、プロキシサーバ312を経由して到達可能な管理対象ネットワーク300内の1つ以上のサブネットに関する情報で構成されるようにすることができる。例えば、プロキシサーバ312は、サブネットとして192.168.0/24のIPアドレス範囲を与えられてもよい。次に、計算インスタンス322は、この情報をCMDB500に記憶し、これらの各アドレスでの装置の発見のために、タスクリスト502にタスクを配置することができる。
図5Aはまた、構成項目504、506、508、510、及び512として、管理対象ネットワーク300内の装置、アプリケーション、及びサービスを示してもいる。上述したように、これらの構成項目は、物理及び/又は仮想装置(例えば、クライアント装置、サーバ装置、ルータ、又は仮想マシン)、それらの上で実行されるアプリケーション(例えば、ウェブサーバ、電子メールサーバ、データベース、またはストレージアレイ)、それらの間の関係、並びに、複数の個別の構成項目を含むサービスの、セットを表す。
タスクリスト502にタスクを配置することが、プロキシサーバ312にトリガーをかけて発見を開始するか、またはさもなくば、プロキシサーバ312に発見を開始させるようにすることができる。代替的又は追加的に、発見は、手動でトリガされてもよく、又はトリガイベントに基づいて自動的にトリガされてもよい(例えば、発見は特定の時間に1日1回自動的に開始されてもよい)。
一般に、発見は、スキャン、分類、識別、および探索という4つの論理的なフェーズで進行するようにすることができる。発見の各フェーズは、プロキシサーバ312によって管理対象ネットワーク300内の1つ以上の装置に送信される様々な種類のプローブメッ
セージを含む。これらのプローブに対する応答は、プロキシサーバ312によって受信及び処理されるようにすることができ、それらの表示はCMDB500に送信されるようにすることができる。従って、各フェーズは、より多くの構成項目が発見されてCMDB500に記憶されることをもたらするようにすることができる。
スキャンフェーズでは、プロキシサーバ312は、オープン伝送制御プロトコル(TCP)及び/又はユーザデータグラムプロトコル(UDP)ポートについて、指定された範囲のIPアドレス内の各IPアドレスを探索して、装置の一般的なタイプを判断する。IPアドレスにそのようなオープンポートが存在することは、特定のアプリケーションがそのIPアドレスを割り当てられた装置上で動作していることを示すことができ、それは次にその装置によって使用されるオペレーティングシステムを識別することができる。例えば、TCPポート135が開いている場合、装置はWINDOWS(米国登録商標)オペレーティングシステムを実行している可能性がある。同様に、TCPポート22が開いている場合、装置はLINUX(米国登録商標)などのUNIX(米国登録商標)オペレーティングシステムを実行している可能性がある。UDPポート161が開いている場合、装置は簡易ネットワーク管理プロトコル(SNMP)を介して更に識別することができる可能性がある。他の可能性もある。ひとたび、特定のIPアドレスにある装置とそのオープンポートが発見(discover)されると、これらの構成項目はCMDB500に保存される。
分類フェーズでは、プロキシサーバ312は更に、発見された各装置をプローブ(精査)してそのオペレーティングシステムのバージョンを判断することができる。特定の装置に使用されるプローブは、スキャンフェーズでその装置について収集された情報に基づいている。例えば、TCPポート22が開いている装置が見つかった場合は、UNIX(米国登録商標)固有のプローブのセットが使用されるようにすることができる。同様に、TCPポート135が開いている装置が見つかった場合は、WINDOWS(米国登録商標)固有のプローブのセットが使用されるようにすることができる。いずれの場合でも、プロキシサーバ312が実行するためのタスクの適切なセットがタスクリスト502に置かれるようにすることができる。これらのタスクは、プロキシサーバ312にログオンすること、又はそうでなければ特定の装置から情報にアクセスする結果をもたらするようにすることができる。例えば、TCPポート22が開いていると、プロキシサーバ312は、特定の装置へのセキュアシェル(SSH)接続を開始し、ファイルシステム内の特定の場所からその上のオペレーティングシステムに関する情報を取得するように指示されるようにすることができる。この情報に基づいて、オペレーティングシステムが決定されるようにすることができる。例として、TCPポート22が開いているUNIX(米国登録商標)装置は、AIX(米国登録商標)、HPUX、LINUX(米国登録商標)、MACOS(米国登録商標)、又はSOLARIS(米国登録商標)として分類されるようにすることができる。この分類情報は、CMDB500内に1つ以上の構成項目として記憶されるようにすることができる。
識別フェーズにおいて、プロキシサーバ312は、分類された装置に関する特定の詳細を決定することができる。このフェーズの間で使用されるプローブは、分類フェーズで特定の装置について収集された情報に基づくようにすることができる。例えば、装置がLINUX(米国登録商標)として分類された場合、LINUX(米国登録商標)特有のプローブのセットが使用されるようにすることができる。同様に、装置がWINDOWS(米国登録商標)2012として分類されている場合は、WINDOWS(米国登録商標)2012固有のプローブのセットが使用されるようにすることができる。分類フェーズの場合と同様に、プロキシサーバ312が実行するためのタスクの適切なセットがタスクリスト502に置かれるようにすることができる。これらのタスクは、プロキシサーバ312が、基本入出力システム(BIOS)情報、シリアル番号、ネットワークインタフェース
情報、これらのネットワークインタフェースに割り当てられたメディアアクセス制御アドレス、その特定の装置で使用されているIPアドレスなどの情報を、その特定の装置から読み取る結果をもたらすことができる。この識別情報は、CMDB500内に1つ以上の構成項目として記憶されるようにすることができる。
探査フェーズでは、プロキシサーバ312は、分類された装置の動作状態に関する詳細を決定することができる。このフェーズの間に使用されるプローブは、分類フェーズ及び/又は識別フェーズの間に特定の装置について収集された情報に基づくようにすることができる。再び、プロキシサーバ312が実行するためのタスクの適切なセットがタスクリスト502に置かれるようにすることができる。これらのタスクは、プロキシサーバ312が、プロセッサ情報、メモリ情報、実行中のプロセス(アプリケーション)のリストなどの追加の情報を、その特定の装置から読み取る結果をもたらすことができる。もう一度、発見された情報は、1つ以上の構成項目としてCMDB500に記憶されるようにすることができる。
ルータなどのネットワーク装置上で発見が実行されるときには、SNMPを利用することができる。発見は、実行中のプロセスまたは他のアプリケーション関連情報のリストを決定する代わりに又はそれに加えて、ルータに認識されている追加サブネットと、ルータのネットワークインタフェースの動作状態(例えば、アクティブ、非アクティブ、キュー
の長さ、廃棄されたパケットの数など)を決定することができる。追加のサブネットのI
Pアドレスは、更なる発見手順の候補とすることができる。従って、発見は、反復的又は再帰的に進行するようにすることができる。
ひとたび発見が完了すると、それぞれの発見された装置、アプリケーション、及びサービスのスナップショット表現が、CMDB500で利用可能である。例えば、発見の後に、管理対象ネットワーク300内のクライアント装置、サーバ装置、及びルータのための、オペレーティングシステムのバージョン、ハードウェア構成及びネットワーク構成の詳細、並びに、それらの上で実行されているアプリケーションが、記憶されるようにすることができる。この収集された情報は、ユーザが装置のハードウェア構成及び動作状態、並びに複数の装置及びアプリケーションにわたるサービスの特性を見ることを可能にするために、様々な方法でユーザに提示されるようにすることができる。
更に、CMDB500は、構成項目間の依存性及び関係についてのエントリを含むことができる。より具体的には、特定のサーバ装置上で実行されているアプリケーション、並びにこのアプリケーションに依存するサービスは、CMDB500においてそのように表されるようにすることができる。例えば、データベースアプリケーションがサーバ装置上で実行されており、このデータベースアプリケーションが新入社員オンボーディングサービス並びに給与計算サービスによって使用されていると仮定する。従って、もしそのサーバ装置がメンテナンスのために運用から外された場合、従業員オンボーディングサービス及び給与計算サービスが影響を受けることは明らかである。同様に、構成項目間の依存性及び関係は、特定のルータに障害が発生したときに影響を受けるサービスを表現することができるようにすることができる。
一般的に、構成項目間の依存性及び関係は、ウェブベースのインタフェース上に表示され、階層的な形で表わされるようにすることができる。従って、そのような依存性及び関係を追加、変更、又は削除することは、このインタフェースによって達成されるようにすることができる。
更に、管理対象ネットワーク300からのユーザは、特定の連携アクティビティが複数の発見された装置にわたって行われることを可能にするワークフローを開発することがで
きる。例えば、ITワークフローは、ユーザが共通の管理者パスワードを発見された全てのLINUX(米国登録商標)装置に対して1回の動作で変更することを可能にすることができるかもしれない。
発見が上述の方法で行われるようにするために、プロキシサーバ312、CMDB500、及び/又は1つ以上の資格証明ストア(資格証明記憶機構)が、1つ以上の装置が発見されるようにするための資格証明を用いて設定されるようにすることができる。資格証明は、その装置にアクセスするために必要な任意の種類の情報を含むことができる。これらは、ユーザIDとパスワードの組、証明書などを含むことができる。いくつかの実施形態では、これらの資格証明は、CMDB500の暗号化されたフィールドに記憶されるようにすることができる。プロキシサーバ312は、プロキシサーバ312がこれらの資格証明を使用して発見される装置にログオンしたりその他のアクセスを行うことができるように、資格証明の復号鍵を含むことができる。
発見処理は、図5Bのフローチャートとして示されている。ブロック520で、計算インスタンス内のタスクリストに、例えばIPアドレスの範囲が設定される。ブロック522で、スキャンフェーズが行われる。従って、プロキシサーバは、これらのIPアドレス群を使用して装置のIPアドレスをプローブし、これらの装置で実行されているオペレーティングシステムを特定しようとする。ブロック524で、分類フェーズが行われる。プロキシサーバは、発見された装置のオペレーティングシステムのバージョンを判断しようとする。ブロック526で、識別フェーズが行われる。プロキシサーバは、発見された装置のハードウェア構成及び/又はソフトウェア構成を特定しようとする。ブロック528で、探査フェーズが行われる。プロキシサーバは、発見された装置上で動作状態と実行中のアプリケーションを判断しようとする。ブロック530において、発見された装置及びアプリケーションを表す構成項目の更なる編集が行われるようにすることができる。この編集は本質的に自動化及び/又は手動とすることができる。
図5Bに示されるブロックは、実施例の目的のためのものである。発見は、より多くの又はより少ないフェーズを有することができる高度に構成可能な手順であるようにすることができ、各フェーズの動作は異なってもよい。場合によっては、1つ以上のフェーズをカスタマイズされるようにすることができ、或いはそうでなければ上記の例示的な説明から逸脱してもよい。
V.ウェブページのモデリング及び構築
A.概要
上述のように、ソフトウェアアプリケーションは、企業内の個々の部門によって開発されるようにすることができる。このようなアプリケーションは、エンドユーザとの動的な対話を容易にするために、クライアント装置上で実行されるウェブブラウザによってレンダリングされる1つ以上のウェブページを含む、ウェブアプリケーションの形式を含めるか、または取ることができる。例えば、企業から遠隔でホストされているaPaaSシステムは、ウェブページをクライアントのブラウザに提供できる。aPaaSシステム又は他のシステムとの対話を通じて、ソフトウェア開発者はそのようなウェブページを構成し、それらの構造及び動作を定義し、次いでシステムは検索及びレンダリングのためにウェブページを記憶することができる。
更に上述したように、そのような開発者は、ウェブページのコンポーネントを駆動させるために、基本論理に依存するフレームワークを使用することができるが、これらのフレームワークは廃止される可能性があり、その結果、ウェブページを書き換える必要性が生じる。
本明細書に開示されている代表的なシステムは、この及び他の問題を克服するのに役立ち、ウェブページの効率的なモデリングと構築を可能にする。
本システムは、動的ウェブページの機能を容易にするために、コンポーネント間のデータバインディングをサポートする再利用可能なカスタムのウェブコンポーネントを提供する。即ち、コンポーネントは、ページ上の他のコンポーネントによる参照のために(例えば、それらの状態変化に基づいて)アクションを発行し、そして、そのページ上の他のコンポーネントによって発行されたアクションに応答してそれら自身のプロパティを動的に設定するように構成可能である。
このような各コンポーネントは、コンポーネントの構造及び動作を定義し、ウェブ開発者による使用のためにAPIを公開する、基本スクリプト(例えば、JavaScript)を有している。従って、開発者は、そのようなコンポーネントの階層的な配置を定義し、それらのデータバインディングとその他の要求されたパラメータを定義する、単純なマークアップ(例えば、HTML又はXML)を宣言文的に構成することにより、ウェブアプリケーションを設計することができる。更に、コンポーネントのプロバイダは、基本スクリプトがそのコンポーネントの予想される構造及びAPIをサポートする限り、そのコンポーネントを利用するウェブアプリケーションの書換えを必要とせずに、スクリプトのフレームワークが変更になるときに上記基本スクリプトを交換することができる。
そのシステムは、上述のaPaaSの説明で議論したように、サーバ又はサーバクラスタによって提供され得る。そのようなシステムは、カスタムのコンポーネントをサポートするように構成できる。本システムは、それぞれの基本スクリプトファイルを含む上記コンポーネントの定義を記憶することができ、かつリクエストに応じてクライアントのブラウザにそれらのコンポーネントの定義を提供するように構成することができる。従って、ウェブ開発者は、カスタムのコンポーネントのインスタンスの階層配置及びインスタンス間のデータバインディングを定義し、サーバ上のコンポーネント定義を参照するコンポーネントローダを含むマークアップドキュメントを作成できる。ブラウザがマークアップドキュメントをレンダリングするとき、ブラウザはコンポーネントローダに従ってシステムからカスタムのコンポーネント定義を取得し、使用するコンポーネントを登録することができる。コンポーネントの定義ごとに、ブラウザはその後マークアップをレンダリングすることができ、基本スクリプトに基づいてシャドウドキュメントオブジェクトモデル(DOMs)を事前設定し、それに応じて定義済みのコンポーネント間データバインディングを実装する。
実装例の実装では、本システムは更に、コンポーネントを使用するマークアップドキュメントの効率的な生成を容易にするため、そのようなサーバ上のデータベースモデルで表現されるべきコンポーネントを使って定義されたウェブページを可能にするページビルダサブシステムを含む。例えば、コンピューティング装置上で実行されているデータベースサーバアプリケーションは、データベースレコードのセットが協調的にウェブページを記述し、ページレイアウト、コンポーネント階層とデータバインディング、コンポーネントスクリプトへの参照、その他情報などを含み、様々なユニフォームリソースロケータ(URL)の各々をそのようなページ表現に関連付けるスキーマを使って、リレーショナルデータベース(例えば、上述したようなSQLデータベースなど)を保守することができる。更に、コンピューティング装置上で実行されるウェブサーバアプリケーションは、ブラウザから特定のURLのページに対するリクエストを受信したときに、ウェブサーバアプリケーションはすぐに応答してデータベースに問い合わせて関連ページを協調的に記述するデータベースレコードを取得し、ウェブサーバアプリケーションはそのページ記述に従ってマークアップドキュメントを生成し、そして、ウェブサーバアプリケーションはその生成されたマークアップドキュメントをレンダリングのためにブラウザに送信するように
構成されるようにすることができる。
更に、ページビルダサブシステムは、ウェブ開発者がそのようなページをデザインすることを可能にするインタフェースを提供することができる。例えば、そのインタフェースは、ウェブ開発者に利用可能なカスタムのウェブコンポーネントのメニューを提供することができ、ウェブ開発者が、ページに含めるための所望のコンポーネントを選択し、所望の階層構造及び所望のデータバインディング及び他のパラメータを指定できるようにすることができる。ウェブ開発者がそのような選択及び指定を行うと、ページビルダサブシステムは、それに対応して、その後、デザインされたページを協調的に記述し、のちにそのページを表現するマークアップドキュメントを生成及び配信することを容易にするデータベースレコードを生成することができる。
B.実装の実施例
本システムは、ウェブページの構造が、そのページが表現されメタデータと相互に関連され付けられるようにして、宣言的に記述されるようにすることを可能にし、その結果、そのページ上のどのコンポーネントがレンダリングされるべきで、そしてそのコンポーネントがどのように構成されるべきかが、そのコンポーネントがどのように相互に通信するであろうかを含めて、確立される。そのようなシステムは、新しく有用な方法で互いに通信する可能性がある複雑な制御を有する非常に動的なウェブアプリケーションの効率的な開発を容易にすることができる。
本システムは、HTMLの背後で構築され、様々なウェブページコンポーネントが相互に通信する方法を定義するAPIであるため、本システムは、ウェブ開発者が、命令的に(命令文を用いて)ではなく宣言的に(宣言文を用いて)、ウェブページをデザインすることを可能にする。更に、上述したように、本システムによって定義されたコンポーネントは、パッケージ化され、表現され、メタデータとしてデータベースに記憶されるようにすることができ、この結果、本システムが、リクエストされたページの構造を容易に決定し、クライアントブラウザによるレンダリングのための関連するHTMLドキュメントを即座に生成し配信することを可能にする。
更に、本システムはより高レベルの宣言型APIを提供するため、本システムは、ウェブ開発者にとってそれらのフレームワークを学習したりコーディングしたりする必要なく、様々な基本フレームワークの使用をサポートできる。上記より高レベルの宣言型APIは、そのより高レベルの宣言を実装するための任意の様々な基本スクリプトやフレームワークを利用することができる。従って、この構成は、ウェブ開発者が特定のフレームワーク(ANGULAR又は類似のようなもの)を使用してウェブページを作成し、その後そのフレームワークが廃止され、開発者に新しいフレームワークを使用してページ全体を書き直すことを要求する、という共通の問題を克服するのに役立つことができる。本システムは、代わりに、ウェブ開発者が基本スクリプトに晒されることなく、(可能ならフロントエンド設計インタフェースを使用して)ウェブページを宣言的に構成することを可能にする。その結果、本システムのプロバイダは、ウェブコンポーネントの再利用を継続して可能にしながら、テクノロジの変更時など、必要に応じて基本スクリプトを交換することができる。
図6は、本システムを使用してレンダリングされたウェブページの一例である。図6に示すウェブページは様々なコンポーネントで構成されている。例えば、このページにはヘッダのコンポーネント、左側のリストのコンポーネント、通話統合のコンポーネント、チャットのコンポーネント、その他などが含まれる。
図7は、図6に示されるようなページを表現するHTMLドキュメントの一部を示すス
クリーンショットを図示している。上記議論と調和して、図7におけるマークアップは、比較的単純なHTMLを使用して宣言的なページを定義する。この実施例のHTMLには、最上位レベルの「sn−workspace−layout」コンポーネントと、そのレイアウトコンポーネント内に「sn−workspace−header」コンポーネント、「sn−workspace−toolbar」コンポーネント、「sn−workspace−nav」コンポーネント、「sn−workspace−tabs」コンポーネント、「sn−workspace−main」コンポーネント、及び「sn−component−openframe」コンポーネントが含まれ、これらの中には他のサブコンポーネントを更に含むものもある。
これらのコンポーネントはそれぞれ、様々な属性とプロパティを有している。例えば、各コンポーネントは、そのコンポーネントを一意に識別するcomponent−idを有する。更に、コンポーネントは、そのコンポーネントのシャドウDOMレイアウト内に、他のコンポーネントがその中にバインドされるようにすることができるスペースを定義する「slot」を含めることができる。また、コンポーネントは、1つ以上の他のコンポーネントによって発行されたアクションをリッスンする(注意して聞く)ための通信メカニズムを定義する「listen to」プロパティを含めることができる。
例えば、「sn−workspace−header」コンポーネントの実施例は、「sn−component−global−search−typehead」コンポーネント(そのグローバルに一意な識別子(GUID)によって参照される)によって発行される「GLOBAL_SEARCH_ACTION」をリッスンするように設定されている「listen to」プロパティを含む。従って、実施例のページのヘッダコンポーネントは、そのページのglobal−search−typeheadコンポーネントによって発行されたアクションをリッスンする。それ故、global−search−typeheadコンポーネントで何かが発生すると、global−search−typeheadコンポーネントは、その状態を示す又はその状態に対応するGLOBAL_SEARCH_ACTIONを発行することができ、そしてそのアクションは上記ヘッダコンポーネントの「searchAction」プロパティにバインドされるようにすることができ、そのヘッダコンポーネントがそのsearchActionプロパティ値を設定し、及び/又は、呼応して1つ以上のアクションを実行することができる。
図7が示すように、このHTMLは開発者の観点からは比較的単純である。開発者は、ウェブページコンポーネント間の階層的関係並びにコンポーネント間のデータバインディングを定義するために示されるようにHTMLを書くことができる。代替的に又は追加的に、本システムは、開発者がそのようなコンポーネントを選択してページ上に配置し、それらの階層、データバインディング、及び他のパラメータを定義することができる、デザインインターフェースを提供することができる。
それぞれのそのようなコンポーネントは、任意の様々なスクリプト又はコーディング言語又は他のフレームワークを用いて事前に定義されるようにすることができ、その結果、そのコンポーネントの特定の構造又は機能性を確立し、そのコンポーネントがブラウザによるレンダリングのために所望のHTMLに変換されることができるようになる。ブラウザがそのようなページをレンダリングするとき、ブラウザは、上記のようにして、そのコンポーネントを定義するために使用されたそのフレームワークのためにプラグ接続可能なレンダラを呼び出すことによってそれぞれの上記のようなコンポーネントをレンダリングして、1つ以上のシャドウDOMを事前設定し、そのブラウザがレンダリングするための関連するHTML要素を取得することができる。
これを容易にするために、そのウェブページは、カスタム要素、シャドウDOM、HT
MLインポート、及びHTMLテンプレートを含むウェブコンポーネントを有するウェブコンポーネント標準を活用することができる。(カスタム要素は、カスタム要素APIを使用して構築された新しく定義されたHTML要素、又はネイティブのHTML要素に基づいて構築することができ、シャドウDOMは基本スクリプトを通してDOM要素を定義でき、そして、HTMLインポート及びテンプレートはページまたはコンポーネントがレンダリングされるときに基本コンポーネントスクリプトを組み込むために使用されるようにすることができる。)
従って、図7の実施例では、ウェブページは、そのページに示される様々なカスタムのマークアップのためのブラウザへの宣言として、カスタム要素を定義することができる。例えば、コンポーネント名「sn−workspace−layout」に対しては、そのページは、ブラウザに指定されたスクリプト(JavaScriptスクリプトなど)であって、そしてそのスクリプトによって「sn−workspace−layout」コンポーネントをレンダリングする方法をブラウザに伝えるものを添付するように指示するカスタム要素宣言を含むことができる。また、そのページは、他のカスタムマークアップのためのカスタム要素宣言もまた同様に含むことができる。
そのように指定された各スクリプトは、その名前、構成、及び挙動などのカスタム要素の態様を定義できる。例えば、上記スクリプトは、関連タグ名と、関連APIを実装する関連JavaScriptクラスとを、指定することができる。更に、上記スクリプトは、どの基本フレームワークがそのコンポーネントをレンダリングするために使用されるであろうかと、どのデータソースがそのコンポーネントによって使用されるであろうかと、そしてどの属性及びアクションがそのコンポーネントに対して定義されているかとを、指定することができる。そして、この基本コンポーネント論理の一部又は大部分はエンドユーザウェブ開発者からは隠されるが、その使用可能なアクション等のAPIなどの特定の態様は、ウェブ開発においてそのコンポーネントの利用を容易にするために、ユーザに公開されるようにすることができる。
ページのマークアップは、そのページがレンダリングされる時に、カスタム要素の定義をロードするためのコンポーネントローダを含むことができる。例えば、このコンポーネントローダは、様々な利用可能なコンポーネントと符号するカスタム要素の定義の定義済みバンドルを、サーバデータ記憶装置から取得するためのJavaScript呼出しとすることができる。代表的な実装では、これらのカスタム要素の定義はノードパッケージマネージャ(NPM)モジュールとして構築され、次いでレンダリング時にブラウザによる取得のためにバンドルに(例えば、小さな配布可能バンドルに、そして一緒に合併させられてより大きなバンドルに)一緒にパッケージされるようにすることができる。
そのような各カスタム要素は、ブラウザにおいてカスタム要素レジストリに登録されている可能性があるため、スタイル設定及び挙動が公開されることを防止するのに役立つカプセル化境界を提供するために、ブラウザに対してシャドウDOM内の各コンポーネントの内容をレンダリングするように指示することができる。(これは、開発者が他のコンポーネントに望ましくない方法で影響を与えるコンポーネントを作成するのを防ぎ、サードパーティのコンポーネント開発者がページを壊す可能性のあるコンポーネントを開発するのを防ぐのに役立つ。)
更に、そのようなコンポーネントは、ウェブ開発者がそのコンポーネントの基本スクリプトにさらされる必要なく、ウェブページを構築する際に、ウェブ開発者によって再利用されることができるようにすることができる。ウェブ開発者は、必要に応じて様々なコンポーネントの階層構造、データバインディング、及びその他のパラメータを簡単に宣言でき、そして、図7に示した実施例のように、それらの宣言は、そのコンポーネントのレン
ダリングを容易にするために使用されるであろう基本スクリプトを参照する必要はない。
図8は次に、ブラウザによって図7のHTMLを処理して確立されるようにすることができる、結果として得られるHTMLのページの詳細を示す。図8に示されるように、様々なページコンポーネントの実際の構造及び動作は、シャドウDOMに記載されている。そして、シャドウDOMのレンダリングは、システムがそのシャドウDOMをレンダリングするために呼び出すどのレンダラーによっても制御されるようにすることができる。
この構成では、基本レンダラ(例えば、そのスクリプトをレンダリングするために使用される基本スクリプト及びフレームワーク)は、必要に応じてシステムのプロバイダによって交換されるようにすることができる。コンポーネント間のデータバインディングを確立するlisten−to機能は、基本コンポーネントスクリプトの作成者に公開される可能性があるAPIポイントを定義することができる。このように、コンポーネント間のやり取りを容易にするためにウェブ開発者に公開されるAPIポイントを基本スクリプトがサポートする限り、たとえそれぞれの基本スクリプト技術が異なっても又は変更されても、ページ上のコンポーネントは相互に対話できる。このため、このことは、基本コンポーネントフレームワークがそのページのDOM階層構造に自分自身をバインドする必要性を、回避することができる。むしろ、そのフレームワークは、より一般的に、必要に応じてアクションにバインドされるようにすることができる。
上述したように、本システムは、ウェブページを開発するためのウェブ開発者による使用のために利用することができるようなコンポーネントのライブラリを提供することができ、また、利用可能なコンポーネントのメニューをウェブ開発者に提供することができる。上述したページビルダインタフェースの利用を通じて、又はより機械的な(rote)HTMLプログラミングを通じて、ウェブ開発者は、上述のようにして必要なコンポーネントを選択することができ、コンポーネント定義に則して、上記コンポーネントの階層関係、必要なデータバインディング、及び1つ以上の他の特性を指定するウェブページを作成することができる。この処理で問題となるページコンポーネントは、ウェブコンポーネント標準に準拠したウェブコンポーネントであるようにすることができ、或いは、他の形式をとることもできる。
典型的な実装では例えば、ウェブページを設計する際におけるウェブ開発者による使用のために、本システムは、上述したようなページビルダサブシステムを含むことができる。ページビルダサブシステムは、確立されたウェブコンポーネントのメニューをウェブ開発者に提示し、ウェブ開発者が、ウェブページに含めるコンポーネントを選択し、選択されたコンポーネント間の階層関係を定義し、そしてコンポーネント間のデータバインディングを確立することを可能にするインターフェースを提供することができる。次に、ページビルダサブシステムは、そのページがリクエストされたときに関連付けられたHTMLドキュメントの効率的な生成を可能にするために、上述したように、関連付けられたページ記述をメタデータとしてデータベーステーブルに記憶することができる。(或いは、ウェブ開発者は、そのようなページビルダシステムを使用せずに、そのHTMLをより直接的に記述してもよいかもしれない。)
図9〜図11は、ウェブ開発者が代表的なウェブコンポーネントのパラメータを設定するために使用するかもしれないようなページビルダインタフェースの実施例の一部を示し、ここでは「タブ」コンポーネントの例を示している。「画面表示通り出力される」(ウィジウィグ)インタフェースを含む代替のデザインインタフェースが、代わりに又は追加して提供されるようにすることができる。
図9に示されるように、ページビルダインタフェースは、データメニュー及びデータタ
ブ設定の属性(ComponentAttributesタブからアクセス可能)を指定し、それは、メニュー及びタブがどのようにレンダリングされるかを記述するペイロードを取る。更に、図10に示されるように、上記インタフェースは、ウェブ開発者が静的に設定することができ又はそのコンポーネントに対して定義されているlisten−to機能を用いて動的に設定されるように構成されるようにすることができるプロパティ(Component Propertiesタブからアクセス可能)を指定する。
更に、図11に示されるように、上記インタフェースは、アクションをリッスンするように設定されている他のコンポーネントによる受信のために上記コンポーネントが発行又は発する情報を定義する様々なアクション(Component Actionsタブからアクセス可能)を指定する。例えば、本実施例は、TAB_SELECTEDアクショ
ンを示しており、これはユーザがタブをクリックしたときに呼び出され、コンポーネントにTAB_SELECTEDアクションを発行させるであろうアクションとされるように
することができる。実際には、そのウェブページ上の別のコンポーネントは次に、Tabsコンポーネントのそのアクションをリッスンし、関連するプロパティ値を設定することによってそのアクションに応答するように、設定されるようにして、そのアクションを取るなどすることができる。
そのようなページビルダインタフェースなどを使用することにより、ウェブ開発者は、ページに含まれるように(例えば、利用可能なコンポーネントのメニューから)ウェブコンポーネントを選択し、そのコンポーネントの階層的配置を(例えば機械的配置又はコンポーネントの親子関係の他の指定により)指示し、コンポーネント間のデータバインディングを(例えば、コンポーネントのlisten−toプロパティの宣言により)確立し、そして、コンポーネントの1つ以上の他のパラメータを設定することにより、ウェブページを開発することができる。ページビルダインタフェースは基本的に、ウェブ開発者がそのようなパラメータを設定することを可能にするために、そのような各コンポーネントの利用可能なAPIポイントをウェブ開発者に、公開することができる。
実施例として、ウェブ開発者がウェブページをデザインするときに、ウェブ開発者は、上述のTabsコンポーネントを選択し、上記ページのTabsコンポーネントの特定の階層構造及び配置を宣言し、任意の静的属性値を宣言し、そして、上記ページ上の1つ以上の他のコンポーネントのアクションに基づいて実行時に動的に設定されるようにすることができる任意のlisten−toプロパティを宣言することができるかもしれない。(例えば、ページビルダインタフェースを介して、開発者はselectedItem、data−menu、及びTabsコンポーネントのインスタンスの他の態様を定義することができる。)
上述の議論に沿って、ページビルダサブシステムは、(例えば、記憶されたコンポーネント定義を通じて)、各コンポーネントを、そのコンポーネントの詳細を定義する特定のJavaScriptファイルなどの基本スクリプトと、関連付けることができる。ページビルダサブシステムがブラウザに配信のために結果として得られるHTMLドキュメントを出力するとき、ページビルダサブシステムはまたコンポーネントのカスタム要素の定義をブラウザに配信することができ、そして同時に、ブラウザにそのコンポーネントをどのようにレンダリングするかを定義するJavaScriptファイルを配信することもできる。この構成により、ウェブ開発者は単にページ上のコンポーネントのインスタンスを宣言するだけでよく、そして、本システムは即座に応答して、カスタム要素の使用及び従ってコンポーネントの使用を容易にするカスタム要素のスクリプト及び関連するマークアップを提供することによって、コンポーネントのレンダリングを可能にすることができる。
更に上述したように、本システムがページリクエストに容易に応答できるようにするために、本システムは、リレーショナルデータベースのテーブルとして、ウェブコンポーネントベースのページの記述を記憶するように構成されるようにすることができる。例えば、ページビルダサブシステムは、ウェブ開発者がそのようなページをデザインすることができるインタフェースを提供することができ、ウェブ開発者がそのページをデザイン(例えば、コンポーネントの選択と配置、それらの階層の定義、データバインディングなど)する際に、ページビルダサブシステムは、協調的にページを記述するデータベースレコードを生成し格納することができる。
図12及び図13は、データベーススキーマの実施例を示しており、ページビルダサブシステムが、複数の相互に関係するレコードを定義する相互に関係するデータベーステーブルのグループを使用して、ウェブページをどのように表現できるかを示している。図示のスキーマでは、特定のページの定義に関連するテーブルは接頭辞「sys_ux_page」でラベル付けされ、ページ構築ブロックのライブラリに関連するテーブルは接頭辞「sys_ux_lib」でラベル付けされている。
図12の左側に示されているものは、ページのルート要素を確立するため、及び1つ以上のURL等をページのオーダーメイドの構成に関連付けるための、ページ登録の実施例を記述することに関わるテーブルである。そして、図12の右側に示されているものは、ページのコンポーネントの階層的配置を協調的に定義する複数の相互に関係するレコードであって、コンポーネントの構造及び動作を解釈実行可能に定義するための基本スクリプトへの参照を含むものを通して、ページ構造を記述することに関わるテーブルである。
表示される配置例では、「sys_ux_page」はコンテナレコードとして機能し、ページ構造内のルート要素を指している。次に、「sys_ux_page_regis
try」は、ページレコード(構造体)を、URLパス/サイト名及びオーダーメイドの構成レコードと関連付ける。図12は、実施例として、このことを「admin_panel」データベースレコードの実施例に符号するドキュメントフィールドとして示している。しかし、そのページは、他のURLやパスに関連付けられるように登録されるようにすることができても差し支えない。
より一般的には、本システムは、URLに対する関連するウェブページ構成を確立するために、それぞれ各sys_ux_pageレコードにデータベース上で関連付けられたURL又は他のパスを登録することができ、そして、各URL登録レコードは、それに関連付けられ、sys_ux_pageレコードによって指定されそのsys_ux_pageレコードに固有のオーダーメイドのスキーマに準拠した、設定レコードを有することができる。これにより、複数のURLが、与えられた1つのウェブページの構造/設定を利用す
ることが可能になり、それらのURLに関連するそれらの基本となる各構成データに関してそれぞれ互いに異なるページがあることになる。
そして、(sys_ux_pageテーブルの)各ルート要素ウェブページは、ページ要素(sys_ux_page_elementレコード)の階層と、データベースのリレー
ションシップ(関係)を有する。各ページ要素は参照フィールドを介してその親要素を指し示し、それによって構造的階層を表し、その結果、データベースクエリは所与の要素の子である各要素を容易に見つけることができ、従って効率的な検索が可能になって、そのページの完全なツリー表現を確立する。このようにして、上記リレーショナルデータベースレコードは、そのページのDOMツリー表現を協調的に記述する。
更に、各ページ要素は、コンポーネントノードのインスタンスであり、基本ソースファイル、タグ名、スロット、属性、及び階層構造内の他のノードとの通信を可能にするアク
ション(イベント)を指定する。例えば、各コンポーネントは、シャドウDOM内で子コンポーネントを関連付けることができる1つ以上のスロットを指定することができる。そして、各コンポーネントは1つ以上の属性と1つ以上のプロパティを指定することができる。
より具体的には、図示の実施例では、各ページ要素レコードはコンポーネント定義レコード(「sys_ux_lib_component」)への参照を含み、今度はコンポー
ネント定義レコードはその基本スクリプトソースファイル並びにプロパティ及びコンポーネントの他の態様を定義するためのフィールドへの参照を含む。各ページ要素レコードは、1つ以上の属性レコードを参照することによって、様々な属性を含むことができる。更に、コンポーネントはその内部構造を明示するためにシャドウDOMを使用することができるので、コンポーネント定義は、子要素がシャドウDOM内のどこでレンダリングされるべきかを指し示すことを助けるためのスロットのセットを、指定することができる。ページ要素が作成されてページ構造に配置されると、システムはそのページ要素に、スロット定義レコードを参照するスロットフィールド(「sys_ux_lib_comp_slot」)として、それがバインドされるべきその親コンポーネントの定義のスロットへの参照を記録することができる。
図13は次に、ページビルダサブシステムが、複数の相互に関連するデータベースレコードを用いて、様々なコンポーネント対コンポーネントのデータバインディングをどのように表現できるかを示している。上述のように、各コンポーネントの基本定義は、それが発行するアクションを定義するAPIを指定することができる。これらのアクションは、コンポーネント間の通信を容易にするためにフロントエンドフレームワークによって送り渡されるであろうデータコンテナである。図8では、これらのアクションは「sys_u
x_lib_component_action」レコードによって定義される。
コンポーネントインスタンスが(「sys_ux_page_element」レコード
として)ページに配置されると、ページビルダサブシステムは、そのコンポーネントのアクションを(コンポーネント定義毎に)、他のコンポーネントにとってリッスンすることができるアクションとして、そのアクションを「sys_ux_page_action」
レコードに記録することによって、ページアクションのカタログに追加することができる。更に、ページ上の各コンポーネントは、ページビルダサブシステムがsys_ux_lib_comp_propレコードで表現することができる、コンポーネントプロパティを有することができる。ウェブ開発者が申込み元のコンポーネントと発行されたアクションの間のバインディングを指定すると、ページビルダのサブシステムはその後、(sys_u
x_page_actionテーブルへの参照によって)そのアクションと、(sys_u
x_page_elementテーブルへの参照によって)その申込み元の要素と、(sys_ux_page_elementテーブルへの参照によって)その発行要素と、そして
、(sys_ux_lib_comp_propテーブルへの参照によって)その申込み元の要素の対象プロパティと、を指定するそのバインディングを、「sys_ux_page_
action_binding」レコードに記録することができる。
このデータベーススキーマの実施例では、ページビルダインタフェースは、ページに配置するコンポーネントを選択するウェブ開発者入力を受け取ることができ、そして、コンポーネントが発行できるアクションを定義するコンポーネントのAPIのメニューをウェブ開発者に提供することができる。更に、上記インタフェースはその後、そのようなアクションのいずれがそのページ空間に利用可能とされてそのページの他のコンポーネントにとって申し込めるようにすべきかを指定する、ウェブ開発者入力を受信することができる。そして、上記インタフェースは、そのページに他のコンポーネントを追加し、そしてそれと発行元コンポーネントとの間のデータバインディングのアクションを確立する、追加
のウェブ開発者入力を受信することができる。ページビルダサブシステムはそれで即座に応答して、申し込まれたアクションと、申込み元のコンポーネントと、発行元/発信元コンポーネントと、(もしページ上の複数のコンポーネントが指し示されたアクションを発行できるであろう場合には、或いはワイルドカードと、)を指定して、上述のようにこのコンポーネント間のデータバインディングをテーブルに記憶することができる。
上述の説明に沿って、このデータベーススキーマは、ウェブコンポーネントの再利用を可能にし、コンポーネント間の動的データバインディングを確立して、ウェブページの効率的なレンダリングを容易にすることができる。
システムがブラウザからURLやサイト名で指定されたウェブページのリクエストを受信すると、上記システムは様々なホストプロバイダの拡張機能を照会することができ、それにより、(例えば、そのURLが特定のsys_ux_pageに登録されているということを見付けることによって)そのリクエストがページビルダサブシステムに属するということを決定し、そして上記システムはそのためにそのリクエストをページビルダサブシステムにハンドリングのためにルーティングすることができる。ページビルダサブシステムのホストプロバイダはそれで、UX(ユーザエクスペリエンス)ページリクエストを組み立て、そのリクエストをUXページプロセッサクラスに渡すことができる。これにより次に、マークアップを作成し、そのマークアップをリクエストを出しているクライアント/ブラウザにレンダリングのために送信することができる。
即ち、UXページリクエストを受信すると、UXページプロセッサを実装するサーバは、上述したように、ページのツリー表現を構築するためのデータベースクエリを容易に実行することができ、その後、そのツリー表現をHTMLマークアップに変換することができる。更に、サーバは、そのマークアップを、カスタムのコンポーネントのレンダリングを容易にするためのコンポーネントローダを含む他の適用可能なコンテンツと共に、HTMLドキュメント内に含めることができる。そして、サーバは、そのページをレンダリングする際におけるブラウザによる使用のための参照スクリプトファイルを、バンドルすることができる。サーバはそれで、レンダリングのために、ブラウザに応答を配信して、おそらく基本スクリプトファイルと共にブラウザにHTMLドキュメントを提供することができる。
図14は、実施例としての、「Workspace」サイトの例のページに対するこの処理フローを示す。図示の構成では、実施例として、様々なクラスがJavaクラスとされるようにすることができる。UXPageHostProviderクラスは、所与のサイト名のリクエストがページビルダサブシステムで処理されるべきか否かを判定し、サイト名をページレコード(構造)及びオプションの設定レコードに関連付けるエントリのキャッシュを管理することを担当する。示されているように、そのリクエストが「Workspace」サイトのページに対するものであると判定すると、UXPageHostProviderは、UXPageProcessorクラスによって実行されるUxPageRequestを生成する。このリクエストに応答して、UxPageProcessorクラスは次に、リクエストしているクライアントに応答して、様々な他のクラスを利用して、配信用の関連HTMLドキュメントを生成することができる。更に、UXPageProcessorは、ページ上のコンポーネントを駆動するためにどのJavaScriptソースファイルが必要かを判定し、必要に応じてソースコードをバンドルし、上記HTMLドキュメントに関連するリソースタグを提供することを担当する。
例示的な実施形態では、UxPageProcessorクラスを実行しているサーバは、データベースに問い合わせてページのコンポーネントの階層的配置を表現するコンポーネントツリー構造を確認し、そして上記ページの上記コンポーネント間のデータバイン
ディングを確認することができる。例えば、ページのルート要素から開始して、サーバは親フィールドに基づいてデータベースに反復的又は再帰的に問い合わせてページのコンポーネント階層構造を決定することができ、その問合せ結果をページのコンポーネントツリー構造を協調的に定義するJavaデータオブジェクトに記憶することができる。更に、サーバは、データベースに照会して、上記ページの上記コンポーネント間に定義されている任意のデータバインディングを決定することができ、そして、これらのデータバインディングの詳細を、おそらくコンポーネントのツリー構造を定義するJavaデータオブジェクトに記憶することができる。
このようにしてページのコンポーネントツリー構造とデータバインディングを確認したら、サーバは次に、その確認されたコンポーネントツリー構造及びデータバインディングを表現し、基本スクリプトを動作するようにロードするためのコンポーネントローダを含むマークアップドキュメントを構築することができる。例えば、サーバは、スロットやlisten−toプロパティなどの特性と共にページコンポーネントの階層宣言を含む、前述の図7に示されるようなマークアップドキュメントを構築することができる。そして、ページのそれぞれのコンポーネントごとの基本スクリプトのデータベース表示に基づいて、サーバは、それらのスクリプトを動作するようにロードするための(例えば、スクリプトをコンピューティング装置によって解釈実行可能なようにロードするための)コンポーネントローダ宣言をマークアップドキュメントに含めることができる。サーバは次に、この構築されたマークアップドキュメントを、リクエストしているウェブブラウザによるレンダリングのために、出力することができる。例えば、サーバは、マークアップドキュメントをブラウザに送信することができる。
マークアップドキュメントを受信すると、ブラウザは次に、コンポーネントローダを実行して、サーバデータ記憶装置からコンポーネントの構造及び動作を定義する基本スクリプトを取得することができる。ブラウザはこのようにしてページの完全なDOMを構築し、そのページをレンダリングすることができる。
実際には、もし代表的なシステムが(例えば、aPaaSアーキテクチャにおいて)多くのクライアントを提供する場合、そのシステムは、ウェブページに対するクライアントの要求に応答して、データベースの大規模なリアルタイムの問合せを行う場合がある。結果として生じるネットワークと処理の負担を管理するのを助けるために、システムはこれらの問合せの特定の結果をキャッシュし、同じページに対する後のリクエストに対して効率的に応答することを容易にするようにすることができる。例えば、システムがページのコンポーネントツリー構造及びデータバインディングをひとたび確認すると、そのシステムは、おそらく定義されたキャッシュ期間の間、そのツリー構造及びデータバインディングを表すJavaデータオブジェクトをデータ記憶装置にキャッシュすることができる。この方法では、システムが後で同じページに対するリクエストを受信すると、システムはデータ記憶装置から以前に確認されたツリー構造及びデータバインディングを容易に取得でき、リクエストしているクライアントによる出力及びレンダリングのために関連マークアップドキュメントを容易に構築することができる。
上記のように、ウェブ開発者はウェブコンポーネントの基本となる内部コード又はスクリプトにアクセスを持つ必要がないため(実際にそうではないようにすることができるため)、このシステムのプロバイダは、基本ロジックがコンポーネントの高水準なコンポーネントの定義及びコンポーネント間の通信モデルのAPIを依然としてサポートする限り、もし望むならおそらく最新のスクリプト言語又は他のフレームワークを使用するように切り替えて、基本コード又はスクリプトをほとんど透過的に交換できる。プロバイダは単にバックエンドスクリプトを修正する必要があるだけなので、これにより、システムプロバイダは、ウェブページ、そして場合によっては非常に複雑なウェブアプリケーションを
書き換える必要なく、最新のテクノロジを常に利用することができるようになる。その結果、本システムを使用するウェブ開発者は、たとえ基本スクリプトの技術が変わっても、将来でも彼らのウェブページに信頼を置いて使用可能にするようにすることができる。これは、ウェブページ自体がフレームワークを使用して作成され、その後廃止され、ウェブページ全体を完全に書き直す必要があるという処理とは対照的である。
更に、他のウェブ開発フレームワークが動作することができる方法とは対照的に、本システムの代表的な実装は、どのようなアプリケーションレベルのコントローラ又はブートストラップも含む必要はない。ウェブ開発者は、ページにタグを付けたり、必要な属性を指定したりなどすることで、個々のコンポーネントを単に取り込むにすぎないようにすることができる。本システムは最終的に個々のコンポーネントに合わせられる(必要に応じて、追加又は削除すること、及び相互に関連付けることができる)ようになっているため、ウェブ開発者はフレームワークがどのようにブートストラップし又は振る舞うかを定義することに関係する必要はない。
更に、本システムはウェブコンポーネントの標準をうまく利用して新しいウェブコンポーネントを定義するため、本システムは、ページ上のコンポーネントに対して、有用な方法で相互に対話するための機能を提供する。即ち、上述したlisten−to機能により、ウェブ開発者はページ上のコンポーネントを(例えば、兄弟関係にあるコンポーネントでさえも)互いに対話させることが可能になる。例えば、2つのカスタムデザインされたコンポーネントは、ウェブ開発者が1つのコンポーネントからのデータ出力をどう処理するか又はそれをどのように組み込んだり使用したりするか或いはそうでなければ他のコンポーネントに影響を与えるかを定義するJavaScriptコードを書く必要なく、構造化された方法で互いにメッセージを交換できる。従って、このシステムによって、ウェブ開発者は基本コードを書く必要なしに、動的ウェブページを開発することができる。
例えば、ページのデザイン目標が、左側にリストを置き、右側に詳細フォームを置くという、単純な実施例を考える。
本システムがなければ、開発者は、リストウィジットを提供するためにいくつかのJavaScriptを書くかもしれず、フォームウィジェットを提供するためにいくつかのJavaScriptを書くかもしれず、そして、開発者は、フォームコントロールが更新されてそのリスト内でユーザが何をクリックしたかを表示するために、リストウィジェット上でアクション「item−clicked」をリッスンするいくつかのJavaScriptコードを更に書くかもしれず、そのアクションを見たときに右側のフォームにいくつかのコンテンツを書くかもしれない。従って、このプロセスは、いくつかのJavaScriptコードの書込みと、おそらくブートストラップ処理などを必要とする。
一方、本システムを用いた場合、ウェブ開発者の処理は、どのような命令的スクリプトにも関与する必要なく、完全に宣言的とすることができる。ウェブ開発者は、単純に、リストコンポーネントとフォームコンポーネントの宣言を含め、フォームコンポーネントにリストコンポーネントのitem−selected(項目選択)アクションをリッスンさせるlisten−toタグをフォームコンポーネントに提供するようにすることができる。フォームコンポーネントの基本スクリプトはそれで、必要に応じてそのフィールドにデータを設定することを引き受けるようにすることができる。
C.システムの実施例
図15は、本開示に従って動作可能なシステムを示す簡略化したブロック図である。上記のように、このシステムは、上述のaPaaSの場合のように、サーバ又はサーバクラスタによって実装することができる。図15に示されるように、本システムは、データベ
ース1500とウェブサーバアプリケーション1502とを含み、これらはネットワーク又は他の接続機構1504によって統合され又は相互接続されるようにすることができる。
図15の実施形態は、そこに示されている特徴のうちの任意の1つ以上の除去によって簡略化することができる。更に、これらの実施形態は、これまでの任意の図の特徴、態様、及び/又は実装、又はさもなければ本明細書における説明と、組み合わせられるようにすることができる。
図示のように、データベース1500は、ウェブページのコンポーネントの階層的配置を協調的に定義する複数の相互に関係するレコード1506であって、上記ウェブページのコンポーネントの構造及び動作を解釈実行可能に定義するための基本スクリプトへの参照を含むものと、上記ウェブページのコンポーネント間のデータバインディングを協調的に定義する複数の相互に関係するレコード1507と、を含む。
ウェブサーバアプリケーション1502は、コンピューティング装置上で実行され、様々なウェブサーバの動作を実行するように(例えば、コンピューティング装置に動作を実行させるように)構成されている。例えば、ウェブサーバアプリケーションは、クライアント装置からウェブページのためのリクエストを受信するように構成されている。そして、ウェブサーバアプリケーションは、(i)データベースに問い合わせてウェブページのコンポーネントの階層的配置を表現するコンポーネントツリー構造を確認し、そして上記ウェブページのコンポーネント間のデータバインディングを確認し、(ii)その確認されたコンポーネントツリー構造及びデータバインディングに基づいて、その確認されたコンポーネントツリー構造及びデータバインディングを表現し、基本スクリプトを動作するようにロードするためのコンポーネントローダを含むマークアップドキュメントを構築し、そして、(iii)その構築されたマークアップドキュメントをクライアント装置上で実行されるウェブブラウザによるレンダリングのために出力する、ことによって、そのリクエストに応答するように構成される。
上述の説明に沿って、ウェブサーバアプリケーションは更に、ウェブページの構造及び動作を宣言するユーザ入力であって、上記ウェブページのコンポーネントの階層的配置と、上記ウェブページのコンポーネント間のデータバインディングの宣言を含むものを受信するように構成されようにすることができる。そして、ウェブサーバアプリケーションは、前述の問合せ及び構築を容易にするために、上記ウェブページのコンポーネントの階層的配置を協調的に定義する前述した複数の相互に関係するレコードと、上記ウェブページのコンポーネント間のデータバインディングを協調的に定義する前述した複数の相互に関係するレコードとを生成して、上記データベースの複数のテーブルに協調的に記憶する、ことにより、上記ユーザ入力に応答するように構成されるようにすることができる。
更に、ウェブサーバアプリケーションは、そこを通してウェブページの構造及び動作を宣言するユーザ入力を受信するためのユーザインタフェースを提供するように、構成されるようにすることができる。例えば、そのユーザインタフェースは、コンポーネントのメニューを定義することができ、コンポーネントのメニューから、ウェブページに含まれるべきコンポーネントのユーザ選択、及びコンポーネント間の階層構造及びデータバインディングのユーザ指定を可能にすることができる。代表的な実施形態では、コンポーネントの構造及び動作を解釈実行可能に定義するための基本スクリプトを含む各コンポーネントは、ユーザ入力を受信する前に定義されるようにすることができる。この配置により、基本スクリプトはコンポーネントのAPIを公開することができ、そして、前述の宣言は公開されたAPIを利用することができる。更に、基本スクリプトは、公開されたAPIを維持しながらスワップ可能にすることができる。
また、上述の説明に沿って、データベースの前述した相互に関係するレコードは、ルート要素レコード、複数のページ要素レコード、複数のコンポーネントレコード、及び複数のデータバインディングレコードを含むことができる。上記ルート要素レコードは、上記ウェブページのトップレベルを定義することができる。上記複数のページ要素レコードは、上記ウェブページのコンポーネントのコンポーネントツリー構造を協調的に定義し、各ページ要素レコードは、コンポーネントレコードのそれぞれ1つを参照するコンポーネント参照を含み、及びツリー構造の関連する親ノードを参照する親参照を含むことができる。
各コンポーネントレコードは、上記ウェブページのそれぞれのコンポーネントを定義することができ、及びウェブブラウザにより解釈実行可能にコンポーネントの構造及び動作を定義するための関連する基本スクリプトを参照するスクリプト参照を含むことができる。上述のデータバインディングレコードは、(i)コンポーネントの状態変化に基づいて上記ウェブページの特定のコンポーネントによって発行されるアクションと、(ii)上記ウェブページの他のコンポーネントのプロパティとの間のデータバインディングを定義することができる。
このような配置により、データベースに問い合わせて上記ウェブページのコンポーネントの階層的配置を定義するコンポーネントツリー構造を確認する振舞いは、上記データベースに問い合わせて上記ウェブページのルート要素レコードを識別し、そして、ページ要素レコード内の親参照に基づいて上記データベースに再帰的に問い合せ、その結果、上記ウェブページのコンポーネントの階層的配置を定義する上記コンポーネントツリー構造を確立することを含むようにすることができる。
更に、図13に示すように、データバインディングレコードは、(i)上記ウェブページのコンポーネントによって発行されるべきアクションを定義するアクションレコードと、(ii)上記ウェブページのコンポーネントのプロパティを定義するプロパティレコードと、(iii)上記アクションレコードによって定義されるアクションと上記プロパティレコードによって定義されるプロパティとの間のデータバインディングを定義するアクションバインディングレコードと、を含むようにすることができる。この配置により、上記データベースに問い合わせて上記ウェブページのコンポーネント間のデータバインディングを確認する振舞いは、前述のアクションバインディングレコードに問い合わせて定義されたデータバインディングを決定することを含むようにすることができる。
加えて、確認されたコンポーネントツリー構造及びデータバインディングを表すマークアップドキュメントを構築する振舞いは、上記確認されたコンポーネントツリー構造に対応する宣言の階層的セットを含み、及び上記確認されたデータバインディングを定義する関連タグを含むように、上記マークアップドキュメントを構造化することを含むようにすることができる。更に、基本スクリプトを動作するようにロードするためのコンポーネントローダを含むマークアップドキュメントを構築する振舞いは、コンポーネントレコードのスクリプト参照から、解釈実行可能に上記ウェブページのコンポーネントの構造及び動作を定義する基本スクリプトを確認し、そして、上記コンポーネントローダにその確認された基本スクリプトを参照させるように、マークアップドキュメントを構造化する、ことを含むようにすることができる。
加えて、上述したように、本システムは、確認されたコンポーネントツリー構造及びデータバインディングを、効率化のためにキャッシュすることができる。例えば、ウェブページに対するリクエストを第1のリクエストと見なすことができ、ウェブサーバアプリケーションは、同じページに対する後の第2のリクエストに対する効率的な応答を容易にす
るために、そのリクエストに関してキャッシングオペレーションを実行するように更に構成することができる。
実施例の実装では、例えば、ウェブサーバアプリケーションが上記ウェブページのコンポーネント間のコンポーネントツリー構造及びデータバインディングを確認した後、ウェブサーバアプリケーションは、その確認されたコンポーネントツリー構造及びデータバインディングを後の検索のためにデータ記憶装置(内部又は外部)にキャッシュするようにすることができる。例えば、ウェブサーバアプリケーションは、上述の確認されたコンポーネントツリー構造及びデータバインディングを、データ記憶装置内のJavaデータオブジェクトに記憶することができる。
その後、ウェブサーバアプリケーションは、上記ウェブページに対する第2のリクエストを受け取ることができる。そして、その第2のリクエストに応答して、ウェブサーバアプリケーションは、(i)上記データ記憶装置からキャッシュされたコンポーネントツリー構造及びデータバインディングを検索し、(ii)その検索されたコンポーネントツリー構造及びデータバインディングに基づいて、データバインディングと共に検索されたコンポーネントツリー構造を表し、基本スクリプトを動作するようにロードするためのコンポーネントローダを含む第2のマークアップドキュメントを構築し、及び(iii)その構築された第2のマークアップドキュメントをレンダリングのために出力するようにすることができる。
D.操作の実施例
図16は、例示的実施形態を説明するフローチャートである。図16によって説明される処理は、コンピューティング装置100のようなコンピューティング装置、及び/又はサーバクラスタ200のようなコンピューティング装置のクラスタによって実行されるようにすることができる。しかしながら、その処理は、他のタイプの装置又は装置サブシステムによって実行されるようにすることができる。例えば、その処理は、ラップトップ又はタブレット装置のようなポータブルコンピュータによって実行されるようにすることができる。
図16の実施形態は、そこに示されている機能のうちの任意の1つ以上を除去することによって、簡略化されるようにすることができる。更に、これらの実施形態は、これまでの任意の図の特徴、態様、及び/又は実装、又はさもなければ本明細書における説明と、組み合わせられるようにすることができる。
図16に従って、ブロック1600において、その処理は、ウェブページの構造を宣言する入力であって、上記ウェブページのコンポーネント間のコンポーネント階層構造及びデータバインディングの宣言を含むものを受信する(例えば、コンピューティング装置上で実行される)ウェブサーバアプリケーションを含む。更に、ブロック1602において、その処理は、上記入力に応答して、上記コンポーネントの構造及び動作を解釈実行可能に定義するための基本スクリプトへの参照を含む上記ウェブページの表現を生成して、データベースの複数のテーブルに協調的に記憶することを含む。
ブロック1604では、その処理はそれで、その後にクライアント装置から上記ウェブページのためのリクエストを受信する前述のウェブサーバアプリケーションを含む。そして、ブロック1606において、その処理は、上記リクエストに応答して、(i)上記データベースに問い合わせて上記ウェブページのコンポーネントツリー構造を確認し、(ii)その確認されたコンポーネントツリー構造に基づいて、その確認されたコンポーネントツリー構造を表現し、基本スクリプトを動作するようにロードするためのコンポーネントローダを含むマークアップドキュメントを構築し、そして、(iii)その構築された
マークアップドキュメントをクライアント装置上で実行されるウェブブラウザによるレンダリングのために出力する、ことを含む。
上記の説明に沿って、上記ウェブページの表現を生成して上記データベースの複数のテーブルに協調的に記憶することは、コンポーネント階層構造を協調的に定義する複数の相互に関係するレコードとデータバインディングを協調的に定義する複数の相互に関係するレコードとを生成して記憶することを含むことができる。
例えば、相互に関係するレコードは、上述したようにして定義されるようにすることができる、ルート要素レコード、複数のページ要素レコード、複数のコンポーネントレコード、及び複数のデータバインディングレコードを含むようにすることができる。そして、上記データベースに問い合わせて上記ウェブページのコンポーネントツリー構造を確認する振舞いは、上記データベースに問い合わせて上記ウェブページのルート要素レコードを識別し、そして、ページ要素レコード内の親参照に基づいて上記データベースに再帰的に問い合せ、その結果、上記ウェブページのコンポーネントツリー構造を確立する、ことを含むようにすることができる。
VI.結論
本開示は、本願に記載された特定の実施形態の観点から限定されるものではなく、種々の態様の例証として意図されている。多くの変更及び変形は、当業者にとって明らかなものとなろうから、その範囲から逸脱することなく行うことができる。本明細書に記載されているものに加えて、本開示の範囲内で機能的に同等の方法及び装置は、前述の記載から当業者には明らかであろう。このような変更及びバリエーションは、添付された特許請求の範囲の範囲内に含まれることを意図している。
上記の詳細な説明は、付属の図面に関連して開示されたシステム、装置、及び方法の様々な機能及び動作を説明したものである。ここに説明されている及び図面中の例示的実施形態は、制限を意図したものではない。ここに提供されている主題の範囲から逸脱することなく、他の実施形態が利用可能であり、その他の変更を行うことができる。本開示の態様としては、ここで一般的に説明され図中に例示されているように、多種多様な異なる構成で配置され、置換され、結合され、分離され、及び設計され得ることが容易に理解される。
図面中で及びここで説明されているメッセージフロー図、シナリオ、及びフローチャートのいずれか又は全てに関連して、例示的実施形態に基づいて、各ステップ、ブロック、及び/又は通信は、情報の処理及び/又は情報の送信を表すことができる。代替となる実施形態は、これらの例示的実施形態の範囲内に含まれる。これらの代替となる実施形態において、例えば、ステップ、ブロック、送信、通信、リクエスト、応答、及び/又はメッセージとして説明される動作は、図示され又は説明されるものから順番が異なって実行されるようにすることができ、これらは実質的に同時または逆の順序を含むことができ、関係する機能に依存するようにすることができる。更に、ここで説明したいずれのメッセージフロー図、シナリオ、及びフローチャートでも、より多くの又はより少ないブロック及び/又は動作を使用することができ、これらのメッセージフロー図、シナリオ、及びフローチャートは、一部または全体で相互に組み合わせることができる。
情報の処理を表すステップ又はブロックは、本明細書に記載された方法又は技法の特定の論理機能を実行するように構成できる回路に対応することができる。代わりに又は加えて、情報の処理を表すステップ又はブロックは、モジュール、セグメント、又はプログラムコードの一部(関連データを含む)に対応することができる。プログラムコードは、上記方法又は技法における特定の論理動作又はアクションを実装するためにプロセッサによ
って実行可能な、1つ以上の命令を含むことができる。そのプログラムコード及び/又は関連データは、RAM、ディスクドライブ、ソリッドステートドライブ、又は他の記憶媒体を含む記憶装置のような任意のタイプのコンピュータ読取り可能記録媒体に記憶されるようにできる。
上記コンピュータ読取り可能記録媒体はまた、レジスタメモリ及びプロセッサキャッシュのように短期間だけデータを記憶するコンピュータ読取り可能記録媒体のような非一過性のコンピュータ読取り可能記録媒体を含むことができる。上記コンピュータ読取り可能記録媒体は更に、プログラムコード及び/又はデータをより長期間記憶する非一過性のコンピュータ読取り可能記録媒体を含むことができる。従って、上記コンピュータ読取り可能記録媒体は、例えば、ROM、光又は磁気ディスク、ソリッドステートドライブ、コンパクトディスク読取り専用メモリ(CD−ROM)のような、セカンダリ又は永続的な長期記憶装置を含むことができる。上記コンピュータ読取り可能記録媒体はまた、任意の他の揮発性又は不揮発性の記憶システムとすることもできる。コンピュータ読取り可能記録媒体(computer readable medium)は、例えば、コンピュータ読み取り可能記録媒体(computer readable storage medium)、又は有形な記憶装置であると考えることができる。
そのうえ、1つ以上の情報伝達を表すステップ又はブロックは、同じ物理装置内のソフトウェア及び/又はハードウェアモジュール間の情報伝達に対応することができる。ただし、その他の情報伝達は、異なる物理装置のソフトウェアモジュール及び/又はハードウェアモジュール間とすることができる。
図中の特定の配置は、制限するものとして見るべきではない。他の実施形態は、与えられた図面に示される各要素のより多い又はより少ないものを含むことができると理解すべきである。更に、例示された要素のいくつかは、結合され、又は省略されるようにすることができる。また更に、例示的実施形態は、図に例示されていない要素を含むことができる。
様々な態様や実施形態が本明細書に開示されたが、その他の態様及び実施形態は、当業者には明らかである。本明細書に開示される種々の態様及び実施形態は、例示の目的のためであり、制限するものではなく、真の範囲は以下の特許請求の範囲により示されるものである。

Claims (18)

  1. ウェブページのコンポーネントの階層的配置を協調的に定義する複数の相互関係レコードであって、前記ウェブページの前記コンポーネントの構造及び動作を解釈実行可能に定義するための複数の個別の基本スクリプトへの参照を含む前記複数の相互関係レコードと、前記ウェブページの前記コンポーネント間のデータバインディングを協調的に定義する複数の相互関係レコードと、を含むデータベースであって、前記基本スクリプトは、前記ウェブページの前記コンポーネントのアプリケーションプログラミングインタフェース(API)を公開し、前記基本スクリプトは、前記公開されたAPIを維持しながら更新可能である、前記データベースと、そして、
    コンピューティング装置上で実行されるウェブサーバアプリケーションであって、
    クライアント装置から前記ウェブページのためのリクエストを受信し、
    前記ウェブページの前記コンポーネントの前記基本スクリプトを更新し、
    前記リクエストに応答して、(i)前記データベースに問い合わせて前記ウェブページの前記コンポーネントの前記階層的配置を表現するコンポーネントツリー構造を確認し、そして上記ウェブページのコンポーネント間のデータバインディングを確認し、(ii)前記確認されたコンポーネントツリー構造及びデータバインディングに基づいて、前記確認されたコンポーネントツリー構造及びデータバインディングを表現し、前記更新された基本スクリプトを動作するようにロードするためのコンポーネントローダを含むマークアップドキュメントを構築し、そして、(iii)前記構築されたマークアップドキュメントを前記クライアント装置上で実行されるウェブブラウザによるレンダリングのために出力する、
    ように構成される前記ウェブサーバアプリケーションと、
    を備えるシステム。
  2. 請求項1に記載のシステムであって、前記ウェブサーバアプリケーションは更に、
    前記ウェブページの前記構造及び動作を宣言するユーザ入力であって、前記ウェブページの前記コンポーネントの前記階層的配置と、前記ウェブページの前記コンポーネント間の前記データバインディングの宣言を含む前記ユーザ入力を受信し、
    前記ユーザ入力に応答して、前記ウェブページの前記コンポーネントの前記階層的配置を協調的に定義する前記複数の相互関係レコードと、前記ウェブページの前記コンポーネント間の前記データバインディングを協調的に定義する前記複数の相互関係レコードとを生成して、前記データベースの複数のテーブルに協調的に記憶し、前記問合せ及び構築を容易にする、
    ように構成される、システム
  3. 請求項2に記載のシステムであって、前記ウェブサーバアプリケーションは、そこを通して前記ウェブページの前記構造及び動作を宣言する前記ユーザ入力を受信するためのユーザインタフェースを提供するように、更に構成される、システム
  4. 請求項3に記載のシステムであって、前記ユーザインタフェースは、コンポーネントのメニューを定義し、前記コンポーネントのメニューから、前記ウェブページに含まれるべきコンポーネントのユーザ選択、及び前記コンポーネント間の階層構造及びデータバインディングのユーザ指定を可能にする、システム
  5. 請求項4に記載のシステムであって、前記コンポーネントの前記構造及び動作を解釈実行可能に定義するための前記基本スクリプトを含む各コンポーネントは、前記ユーザ入力を受信する前に定義される、システム
  6. 請求項1に記載のシステムであって、前記データベースの前記相互関係レコードは、ルート要素レコード、複数のページ要素レコード、複数のコンポーネントレコード、及び複数のデータバインディングレコードを備え、
    前記ルート要素レコードは前記ウェブページのトップレベルを定義し、
    前記複数のページ要素レコードは、前記ウェブページの前記コンポーネントの前記コンポーネントツリー構造を協調的に定義し、各ページ要素レコードは、前記コンポーネントレコードのそれぞれ1つを参照するコンポーネント参照を含み、及び前記ツリー構造の関連する親ノードを参照する親参照を含み、
    各コンポーネントレコードは、前記ウェブページのそれぞれのコンポーネントを定義し、及び前記ウェブブラウザにより解釈実行可能に前記各コンポーネントの構造及び動作を定義するための関連する基本スクリプトを参照するスクリプト参照を含み、
    前記データバインディングレコードは、(i)前記コンポーネントの状態変化に基づいて前記ウェブページの特定のコンポーネントによって発行されるアクションと、(ii)前記ウェブページの他のコンポーネントのプロパティとの間のデータバインディングを
    定義する、システム
  7. 請求項に記載のシステムであって、前記データベースに問い合わせて前記ウェブページの前記コンポーネントの前記階層的配置を定義する前記コンポーネントツリー構造を確認することは、
    前記データベースに問い合わせて前記ウェブページの前記ルート要素レコードを識別し、そして、
    前記ページ要素レコード内の前記親参照に基づいて前記データベースに再帰的に問い合せ、その結果、前記ウェブページの前記コンポーネントの前記階層的配置を定義する前記コンポーネントツリー構造を確立する、
    ことを備える、システム
  8. 請求項に記載のシステムであって、前記データバインディングレコードは、(i)前記ウェブページの前記コンポーネントによって発行されるべき前記アクションを定義するアクションレコードと、(ii)前記ウェブページの前記コンポーネントのプロパティを定義するプロパティレコードと、(iii)前記アクションレコードによって定義される前記アクションと前記プロパティレコードによって定義される前記プロパティとの間のデータバインディングを定義するアクションバインディングレコードと、を備える、システム
  9. 請求項に記載のシステムであって、前記データベースに問い合わせて前記ウェブページの前記コンポーネント間の前記データバインディングを確認することは、前記アクションバインディングレコードに問い合わせて前記定義されたデータバインディングを決定することを備える、システム
  10. 請求項に記載のシステムであって、前記確認されたコンポーネントツリー構造及びデータバインディングを表す前記マークアップドキュメントを構築することは、
    前記確認されたコンポーネントツリー構造に対応する宣言の階層的セットを含み、及び前記確認されたデータバインディングを定義する関連タグを含むように、前記マークアップドキュメントを構造化することを備える、システム
  11. 請求項10に記載のシステムであって、前記基本スクリプトを動作するようにロードするための前記コンポーネントローダを含む前記マークアップドキュメントを構築することは、
    前記コンポーネントレコードの前記スクリプト参照から、解釈実行可能に前記ウェブページの前記コンポーネントの前記構造及び動作を定義するための前記基本スクリプトを確認し、そして、
    前記コンポーネントローダに前記確認された基本スクリプトを参照させるように、前記マークアップドキュメントを構造化する、
    ことを備える、システム
  12. 請求項1に記載のシステムであって、前記ウェブページのための前記リクエストが最初のリクエストであり、前記ウェブサーバアプリケーションは、
    前記ウェブページの前記コンポーネント間の前記コンポーネントツリー構造及びデータバインディングを確認した後、前記確認されたコンポーネントツリー構造及びデータバインディングを後の検索のためにデータ記憶装置にキャッシュし、
    その後、前記ウェブページに対する第2のリクエストを受け取り、そして、
    前記第2のリクエストに応答して、(i)前記データ記憶装置から前記キャッシュされたコンポーネントツリー構造及びデータバインディングを検索し、(ii)前記検索されたコンポーネントツリー構造及びデータバインディングに基づいて、データバインディングと共に前記検索されたコンポーネントツリー構造を表し、前記基本スクリプトを動作するようにロードするための前記コンポーネントローダを含む第2のマークアップドキュメントを構築し、及び(iii)前記構築された第2のマークアップドキュメントをレンダリングのために出力する、
    ように更に構成される、システム
  13. 請求項12に記載のシステムであって、前記確認されたコンポーネントツリー構造及びデータバインディングを後の検索のために前記データ記憶装置にキャッシュすることは、前記確認されたコンポーネントツリー構造及びデータバインディングを前記データ記憶装置内のJavaデータオブジェクトに格納することを備える、システム
  14. ウェブサーバアプリケーションによって、ウェブページの構造を宣言する入力であって、前記ウェブページのコンポーネント間のコンポーネント階層構造及びデータバインディングの宣言を含む前記入力を受信し、
    前記入力に応答して、前記コンポーネントの構造及び動作を解釈実行可能に定義するための複数の個別の基本スクリプトへの参照を含む前記ウェブページの表現を生成して、データベースの複数のテーブルに協調的に記憶し、前記基本スクリプトは、前記ウェブページの前記コンポーネントのアプリケーションプログラミングインタフェース(API)を公開し、前記基本スクリプトは、前記公開されたAPIを維持しながら更新可能であり
    その後、クライアント装置から前記ウェブサーバアプリケーションによって、前記ウェブページのためのリクエストを受信し、
    前記リクエストに応答して、前記ウェブページの前記コンポーネントの前記基本スクリプトを更新し、
    前記リクエストに応答して、(i)前記データベースに問い合わせて前記ウェブページのコンポーネントツリー構造を確認し、(ii)前記確認されたコンポーネントツリー構造に基づいて、前記確認されたコンポーネントツリー構造を表現し、前記更新された基本スクリプトを動作するようにロードするためのコンポーネントローダを含むマークアップドキュメントを構築し、そして、(iii)前記構築されたマークアップドキュメントを前記クライアント装置上で実行されるウェブブラウザによるレンダリングのために出力する、
    ことを備える方法。
  15. 請求項14に記載の方法であって、前記ウェブページの前記表現を生成して前記データベースの前記複数のテーブルに協調的に記憶することは、前記コンポーネント階層構造を協調的に定義する複数の相互関係レコードとデータバインディングを協調的に定義する複数の相互関係レコードとを生成して記憶することを備える、方法
  16. 請求項15に記載の方法であって、前記相互関係レコードは、ルート要素レコード、複数のページ要素レコード、複数のコンポーネントレコード、及び複数のデータバインディングレコードを備え、
    前記ルート要素レコードは前記ウェブページのトップレベルを定義し、
    前記複数のページ要素レコードは、前記ウェブページの前記コンポーネントツリー構造を協調的に定義し、各ページ要素レコードは、前記コンポーネントレコードのそれぞれ1つを参照するコンポーネント参照を含み、及び前記ツリー構造の関連する親ノードを参照する親参照を含み、
    各コンポーネントレコードは、前記ウェブページのそれぞれのコンポーネントを定義し、及び前記ウェブブラウザにより解釈実行可能に前記各コンポーネントの構造及び動作を定義するための関連する基本スクリプトを参照するスクリプト参照を含み、
    前記データバインディングレコードは、(i)前記コンポーネントの状態変化に基づいて前記ウェブページの特定のコンポーネントによって発行されるアクションと、(ii)前記ウェブページの他のコンポーネントの特性との間のデータバインディングを定義する、方法
  17. 請求項16に記載の方法であって、前記データベースに問い合わせて前記ウェブページの前記コンポーネントツリー構造を確認することは、
    前記データベースに問い合わせて前記ウェブページの前記ルート要素レコードを識別し、そして、
    前記ページ要素レコード内の前記親参照に基づいて前記データベースに再帰的に問い合せ、その結果、前記ウェブページの前記コンポーネントツリー構造を確立する、
    ことを備える、方法
  18. コンピューティングシステムによる実行時に前記コンピューティングシステムにウェブサーバ動作を実行させるプログラム命令を記憶した非一過性コンピュータ読取り可能媒体を含む製造品であって、
    ウェブページの構造を宣言する入力であって、前記ウェブページのコンポーネント間のコンポーネント階層構造及びデータバインディングの宣言を含む前記入力を受信し、
    前記入力に応答して、前記コンポーネントの構造及び動作を解釈実行可能に定義するための複数の個別の基本スクリプトへの参照を含む前記ウェブページの表現を生成して、データベースの複数のテーブルに協調的に記憶し、前記基本スクリプトは、前記ウェブページの前記コンポーネントのアプリケーションプログラミングインタフェース(API)を公開し、前記基本スクリプトは、前記公開されたAPIを維持しながら更新可能であり
    クライアント装置から前記ウェブページのためのリクエストを受信し、
    前記ウェブページの前記コンポーネントの前記基本スクリプトを更新し、
    前記リクエストに応答して、(i)前記データベースに問い合わせて前記ウェブページのコンポーネントツリー構造を確認し、(ii)前記確認されたコンポーネントツリー構造に基づいて、前記確認されたコンポーネントツリー構造を表現し、前記更新された基本スクリプトを動作するようにロードするためのコンポーネントローダを含むマークアップドキュメントを構築し、そして、(iii)前記構築されたマークアップドキュメントを前記クライアント装置上で実行されるウェブブラウザによるレンダリングのために出力する、
    ことを含む前記ウェブサーバ動作を前記コンピューティングシステムに実行させる前記プログラム命令を記憶した前記非一過性コンピュータ読取り可能媒体を含む、製造品
JP2019030310A 2018-02-26 2019-02-22 ウェブページを構築しモデル化するためのシステム Active JP6750054B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862635161P 2018-02-26 2018-02-26
US62/635,161 2018-02-26
US15/969,489 2018-05-02
US15/969,489 US10824791B2 (en) 2018-02-26 2018-05-02 System for building and modeling web pages

Publications (2)

Publication Number Publication Date
JP2019149160A JP2019149160A (ja) 2019-09-05
JP6750054B2 true JP6750054B2 (ja) 2020-09-02

Family

ID=65520192

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019030310A Active JP6750054B2 (ja) 2018-02-26 2019-02-22 ウェブページを構築しモデル化するためのシステム

Country Status (5)

Country Link
US (1) US10824791B2 (ja)
EP (1) EP3531306B1 (ja)
JP (1) JP6750054B2 (ja)
AU (1) AU2019201345B2 (ja)
CA (1) CA3034400C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11416573B2 (en) 2018-02-26 2022-08-16 Servicenow, Inc. Bundled scripts for web content delivery

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11397970B2 (en) * 2013-01-24 2022-07-26 Roy Peleg Visual designation of a zone in rendered code
US10904105B2 (en) 2019-04-30 2021-01-26 Salesforce.Com, Inc. Declarative and reactive data layer for component-based user interfaces
US20200186623A1 (en) * 2018-12-11 2020-06-11 Microsoft Technology Licensing, Llc Performant retrieval and presentation of content
US11157241B2 (en) * 2019-09-18 2021-10-26 Servicenow, Inc. Codeless specification of software as a service integrations
CN112925573B (zh) * 2019-11-20 2023-09-26 北京沃东天骏信息技术有限公司 网页加载的方法、装置、设备和计算机可读介质
CN110941779B (zh) * 2019-11-20 2023-06-30 东软集团股份有限公司 加载页面的方法、装置、存储介质及电子设备
CN111221613B (zh) * 2020-01-03 2023-04-18 北京小米移动软件有限公司 程序调用方法及装置、存储介质
US11144431B2 (en) * 2020-01-30 2021-10-12 EMC IP Holding Company LLC Configuration-based code construct for restriction checks in component of a web application
US11586770B2 (en) * 2020-01-30 2023-02-21 EMC IP Holding Company LLC Access restriction for portions of a web application
CN112000331A (zh) * 2020-08-07 2020-11-27 北京三快在线科技有限公司 页面渲染方法、装置、电子设备及存储介质
CN112947984B (zh) * 2020-09-29 2024-05-14 深圳市明源云科技有限公司 应用程序开发方法及装置
CN112416335B (zh) * 2020-11-11 2024-08-20 上海非码网络科技有限公司 实现前端页面自动化布局的方法和装置
CN112882782B (zh) * 2021-02-08 2023-12-12 广州三七网络科技有限公司 页面生成方法、装置、计算机设备和存储介质
US11379225B1 (en) * 2021-03-09 2022-07-05 Wells Fargo Bank, N.A. System and methods for application programming interface reference documentation updater
US20230103896A1 (en) * 2021-09-29 2023-04-06 Salesforce.Com, Inc. Configuring dynamic interactions between application elements
US20230267163A1 (en) * 2022-02-22 2023-08-24 Oracle International Corporation Runtime completion of web component metadata
CN114594939A (zh) * 2022-03-22 2022-06-07 康键信息技术(深圳)有限公司 可视化页面构建方法、装置、计算机设备和存储介质
US11727084B1 (en) * 2022-05-23 2023-08-15 Salesforce, Inc. Techniques for automatically configuring web components
CN115686678B (zh) * 2022-11-11 2023-08-22 北京安怀信科技股份有限公司 一种基于对象的界面信息展示与交互定义系统及方法
CN117435836B (zh) * 2023-10-25 2024-08-13 上海宽睿信息科技有限责任公司 一种基于数据库集中管理的前端页面拼接方法及系统

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014138A (en) * 1994-01-21 2000-01-11 Inprise Corporation Development system with methods for improved visual programming with hierarchical object explorer
US5761673A (en) * 1996-01-31 1998-06-02 Oracle Corporation Method and apparatus for generating dynamic web pages by invoking a predefined procedural package stored in a database
US6321229B1 (en) 1999-02-26 2001-11-20 Hewlett-Packard Company Method and apparatus for using an information model to organize an information repository into a hierarchy of information
WO2001052090A2 (en) * 2000-01-14 2001-07-19 Saba Software, Inc. Method and apparatus for a web content platform
US6678887B1 (en) 2000-07-11 2004-01-13 Networks Associates Technology, Inc. Customizing business logic and data sources by modifying methods defined within an API
GB0021513D0 (en) * 2000-09-01 2000-10-18 E2 One Uk Ltd Method and system for dynamic web-page generation and computer-readable storage medium storing a program for performing the method
US6973483B2 (en) * 2000-09-30 2005-12-06 Microsoft Corporation System and method for using dynamic web components to automatically customize web pages
US6951014B1 (en) * 2000-11-15 2005-09-27 Sun Microsystems, Inc. Method and apparatus for representation of a JavaScript program for execution by a JavaScript interpreter
WO2003009177A1 (en) * 2001-07-16 2003-01-30 Dh Labs, Inc. Web site application development method using object model for managing web-based content
US7131063B2 (en) 2001-09-13 2006-10-31 International Business Machines Corporation Method and system for delivering dynamic information in a network
US7069562B2 (en) * 2001-12-12 2006-06-27 Sun Microsystems, Inc. Application programming interface for connecting a platform independent plug-in to a web browser
US7194728B1 (en) 2002-11-18 2007-03-20 Bmc Software, Inc. System and method for packaging updates
US20050273758A1 (en) 2003-03-05 2005-12-08 Long Michael V System and method for building a component base architecture
US7480921B1 (en) * 2003-03-12 2009-01-20 Microsoft Corporation Method, system, and apparatus for customizing web parts
GB0420673D0 (en) * 2004-09-17 2004-10-20 Ibm Data sharing system, method and software tool
US9665833B2 (en) 2005-03-24 2017-05-30 Oracle International Corporation System and method for providing collaboration communities in a computer portal environment
JP2006285714A (ja) 2005-04-01 2006-10-19 4D Networks Inc ウェブコンテンツ閲覧・編集システム、ウェブコンテンツ閲覧・編集方法およびウェブコンテンツ閲覧・編集用プログラム
US7779091B2 (en) 2005-12-19 2010-08-17 Vmware, Inc. Method and system for providing virtualized application workspaces
US9087034B2 (en) 2006-02-24 2015-07-21 International Business Machines Corporation Form multiplexer for a portal environment
CN101165685A (zh) * 2006-10-19 2008-04-23 国际商业机器公司 用于生成动态网页的方法及装置
US20090013245A1 (en) * 2007-04-27 2009-01-08 Bea Systems, Inc. Enterprise web application constructor xml editor framework
US8150939B1 (en) * 2007-05-11 2012-04-03 Oracle America, Inc. Method and system for wrapping and componentizing javascript centric widgets using java components
JP5389902B2 (ja) 2008-04-28 2014-01-15 セールスフォース ドット コム インコーポレイティッド ウェブサイト及びそのコンテンツの作成及び管理のためのオブジェクト指向のシステム
US8646093B2 (en) 2009-03-31 2014-02-04 Bmc Software, Inc. Method and system for configuration management database software license compliance
US20110055683A1 (en) 2009-09-02 2011-03-03 Facebook Inc. Page caching for rendering dynamic web pages
US8745639B2 (en) * 2009-12-31 2014-06-03 Cbs Interactive Inc. Controller and method to build a combined web page using data retrieved from multiple APIS
US9513882B2 (en) 2010-04-15 2016-12-06 Microsoft Technology Licensing, Llc Platform independent presentation composition
US9064029B2 (en) 2010-06-07 2015-06-23 Quora, Inc. Dynamically identifying and evaluating component hierarchy for rendering content components on a webpage
US20120204093A1 (en) 2011-02-08 2012-08-09 Microsoft Corporation Providing web-based content to local device
US20120317486A1 (en) * 2011-06-07 2012-12-13 Microsoft Corporation Embedded web viewer for presentation applications
US8914768B2 (en) 2012-03-28 2014-12-16 Bmc Software, Inc. Automated blueprint assembly for assembling an application
US9342323B2 (en) 2012-08-09 2016-05-17 Google Inc. Browser-level background page for providing multiple views
CA3024078C (en) * 2016-05-29 2024-04-09 Wix.Com Ltd. Creation and update of hierarchical websites based on collected business knowledge
US10372785B2 (en) 2016-07-29 2019-08-06 Microsoft Technology Licensing, Llc Client-side modularization of a requested webpage
US20180052809A1 (en) 2016-08-16 2018-02-22 Microsoft Technology Licensing, Llc Inferring user interaction with an iframe
US20180183815A1 (en) 2016-10-17 2018-06-28 Kerry Wayne Enfinger System and method for detecting malware
US10638301B2 (en) 2017-04-10 2020-04-28 Bdna Corporation Classification of objects

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11416573B2 (en) 2018-02-26 2022-08-16 Servicenow, Inc. Bundled scripts for web content delivery

Also Published As

Publication number Publication date
EP3531306A1 (en) 2019-08-28
US20190266225A1 (en) 2019-08-29
EP3531306B1 (en) 2021-02-17
AU2019201345A1 (en) 2019-09-12
JP2019149160A (ja) 2019-09-05
CA3034400C (en) 2023-01-10
CA3034400A1 (en) 2019-08-26
AU2019201345B2 (en) 2020-06-18
US10824791B2 (en) 2020-11-03

Similar Documents

Publication Publication Date Title
JP6750054B2 (ja) ウェブページを構築しモデル化するためのシステム
EP3531305B1 (en) Web page acquisition and rendering with inter-component data binding
US11416573B2 (en) Bundled scripts for web content delivery
US11061696B2 (en) Extension points for web-based applications and services
CA2999698C (en) Automatic grouping of similar applications and devices on a network map
US11240304B2 (en) Selective server-side execution of client-side scripts
US11431824B2 (en) Server-side control over navigation mode in web application
CA3049219C (en) External data management in a remote network management platform
US10983770B2 (en) Efficient bundling and delivery of client-side scripts
US20200201935A1 (en) Centralized rendering service for a remote network management platform
US20230195826A1 (en) Viewports and Sub-Pages for Web-Based User Interfaces

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190327

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190425

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200612

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20200612

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200812

R150 Certificate of patent or registration of utility model

Ref document number: 6750054

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