JP2014211898A - ウィジェットフレームワーク、リアルタイムサービス統合およびリアルタイムリソース集約 - Google Patents

ウィジェットフレームワーク、リアルタイムサービス統合およびリアルタイムリソース集約 Download PDF

Info

Publication number
JP2014211898A
JP2014211898A JP2014137315A JP2014137315A JP2014211898A JP 2014211898 A JP2014211898 A JP 2014211898A JP 2014137315 A JP2014137315 A JP 2014137315A JP 2014137315 A JP2014137315 A JP 2014137315A JP 2014211898 A JP2014211898 A JP 2014211898A
Authority
JP
Japan
Prior art keywords
web service
service call
call
application
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014137315A
Other languages
English (en)
Other versions
JP5809328B2 (ja
Inventor
ニー,ビン
Bin Ni
ラグナス,ディエゴ
Lagunas Diego
ルー,ジュン
Jun Lu
レディ,ヴェーヌ
Reddy Venu
クマール,ラママーシー
Kumar Ramamurthy
ベン ロムダーネ,サミ
Ben Romdhane Sami
ベン ロムダーネ,サミ
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.)
eBay Inc
Original Assignee
eBay 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 eBay Inc filed Critical eBay Inc
Publication of JP2014211898A publication Critical patent/JP2014211898A/ja
Application granted granted Critical
Publication of JP5809328B2 publication Critical patent/JP5809328B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/10Architectures or entities
    • H04L65/1063Application servers providing network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)
  • Human Computer Interaction (AREA)
  • Telephonic Communication Services (AREA)

Abstract

【課題】アプリケーションサーバ上で実行するアプリケーションのコンポーネントによる、サービスに対する呼び出しを最適化する。【解決手段】第一の呼び出しは、アプリケーション104に含まれる複数のコンポーネントのうちの第一のコンポーネントによってサービスに対してなされ、第二の呼び出しは、複数のコンポーネントのうちの第二のコンポーネントによってサービスに対してなされる、ステップと、複数の最適化のうちの一つを選択するステップであって、複数の最適化は、第一の呼び出しおよび第二の呼び出しを、サービスに対する第三の呼び出しへと統合するステップを含む、ステップと、複数の最適化のうちの一つとして、第一の呼び出しおよび第二の呼び出しを第三の呼び出しへと統合するステップを選択するステップに応じて、第一の呼び出しおよび第二の呼び出しを第三の呼び出しへと統合するステップと、を含む。【選択図】図1B

Description

[関連する出願]
本PCT出願は、2010年4月5日に申請された米国特許出願番号第12/754,564号“WIDGET FRAMEWORK, REAL-TIME SERVICE ORCHESTRATION, AND REAL-TIME RESOURCE AGGREGATION”に対する、35 U.S.C.§120もしくは§365(c)のもとで主張される優先権を享受する利益を主張し、その出願は、2010年2月5日に申請された米国仮特許出願番号第61/302,082号“WIDGET FRAMEWORK, REAL-TIME SERVICE ORCHESTRATION, AND REAL-TIME RESOURCE AGGREGATION”に対する優先権を享受する利益を主張し、これらの出願は本明細書にその全体を参照することによって組み込まれる。
本出願は、概して、サーバ性能を最適化する技術分野に関し、具体的な一実施例においては、アプリケーションサーバ上で実行するアプリケーションのコンポーネントによるサービスに対しての呼び出しの効率の最適化に関する。
世界的な市場において競争力を有するために、ユーザの広範かつ世界的なコミュニティを提供するネットワークベースの市場は、以下の目的を満たすことが有益であると見出す可能性がある。その目的とは、(1)急速に変化するユーザのニーズを満たすように、数多くのサーバ側アプリケーションを、迅速に開発し、改変し、テストし、または展開すること、ならびに(2)アプリケーションの展開がリソースおよび性能の制約に相反しないように、サーバ側アプリケーションを最適化すること、である。あるアプローチにおいては、ネットワークベースの市場は、各サーバ側アプリケーションを手動でコーディングするために、大人数の開発者グループを雇うことによってその目的を達成しうる。しかしながら、このようなアプローチは、種々の欠点を有しうる。その欠点とは、一貫性を欠く外観および操作感を有し、開発に長い時間のかかる、または、例えば、コードの再利用の観点から、他のアプローチを利用して生成されたアプリケーションよりも効率的ではないアプリケーションの生成を含む。別のアプローチにおいては、ネットワークベースの市場は、テンプレートに対して厳格に従うアプリケーションをコーディングするため、少人数の開発者グループを雇うことによってその目的を達成しうる。しかしながら、このようなアプローチもまた、種々の欠点を有しうる。その欠点とは、カスタマイズが困難であり、より多くのリソースを消費し、または、他のアプローチを利用して生成されたアプリケーションと比較してより低速な性能を有するアプリケーションの生成を含む。
したがって、ウィジェットを利用する多数のサーバ側アプリケーションを迅速に開発し、改変し、テストし、または展開することをサポートするフレームワークを利用する、各サーバ側アプリケーションを開発する必要性が存在しうる。ウィジェットとは、一つ以上のユーザインターフェイス(UI)を有し、ビジネスロジック(もしくはサービス)によって裏付けされるソフトウェアコンポーネントでありうる。すなわち、ウィジェットは、種々のデータソースもしくはサービスを組み込むように接続されるか、または構成されうる、一つ以上のビューおよび論理層を提示するように接続されるか、または構成されうる、提示層を有する可能性がある。ウィジェットは、提示層を論理層へと接続する接続モジュールもまた有しうる。
幾つかの実施形態は例示の目的のために図示されており、以下に添付される図面内の図に限定されるわけではない。
アプリケーションのコンポーネントとデータソースおよびリソースとの間の例示的な関係を示すブロック図である。 呼び出しオプティマイザとリソースアグリゲータが図1Aのアプリケーションに組み込まれた後の、アプリケーションのコンポーネントとデータソースおよびリソースとの間の例示的な関係を示すブロック図である。 図1Bの呼び出しオプティマイザの、例示的な一実施形態のモジュールを示すブロック図である。 図1Bの呼び出しオプティマイザの、例示的な一実施形態のさらなるモジュールを示すブロック図である。 図1Bのリソースアグリゲータの、例示的な一実施形態のモジュールを示すブロック図である。 図1Aおよび図1Bのウィジェット1の例示的なモジュールを示すブロック図である。 メタモデルフレームワークの例示的なアーキテクチャのブロック図である。 モデル定義のライフサイクルを管理する方法の例示的な一実施形態のフローチャートである。 アプリケーションのコンポーネント(例えば、ヘルプページ)を構成するためにAPIを生成する例示的な方法のフローチャートである。 図4Bのコンポーネントの構成の例示的なスキーマの図を示す。 図4のスキーマ図に対応する例示的なスキーマを示す。 図5の例示的なスキーマに対応する例示的な型(例えばクラス)を示す。 図6の例示的なスキーマもしくは図7の型に基づくコンポーネントを構成するための例示的なAPIを示す。 リソースフレームワークのアーキテクチャの例示的な一実施形態のブロック図である。 例示的なウィジェットフレームワークの構成要素と相互作用する二つのウィジェットのブロック図である。 アプリケーションの様々な各クライアントに関連しうる、アプリケーションの種々のバージョンを開発する開発者ツールの一実施例の間でのインタラクションのブロック図である。 シミュレーティングモジュールに関連する例示的なHTMLページ(例えば、demo.html)のソースコードリストである。 例示的なJavaテストクライアント(例えば、TestClient.java)のソースコードリストである。 ウェブブラウザにおける例示的なHTMLページおよびJavaテストクライアントの実行に関連するJavaコンソールログである。 アプリケーションサーバ上の例示的なHTMLページの展開をシミュレーションするシミュレーティングモジュールの例示的なユーザインターフェイスである。 アプリケーションのコンポーネントからサービスへの呼び出しを最適化する例示的な方法のフローチャートである。 アプリケーションのコンポーネントによって使用されるリソースを集約するための例示的な方法のフローチャートである。 アプリケーションの多数のバージョンを設計、編集、構成、テスト、もしくは展開するための例示的な方法である。 種々の例示的な実施形態が展開されうるクライアントサーバシステムを示すネットワーク図である。 例示的な一実施形態において、ネットワークシステムの一部として提供される、多数のアプリケーションを示すブロック図である。 例示的な一実施形態が実行されうるマシンのブロック図である。
以下の記述においては、例示の目的のために、本発明の主題の種々の実施形態の理解を提供するために、数多くの具体的な詳細が説明される。しかしながら、これらの具体的な詳細なくして、その実施形態を実践してもよいことは当業者にとって明らかである。さらには、既知の命令のインスタンス、プロトコル、構造および技術は詳細には記述されていない。本明細書で使用されるように、“or”という語は、包含的な意味で解釈されてもよいし、排他的な意味で解釈されてもよい。
“Bizmo”という語は、ユーザインターフェイス(UI)プレゼンテーション、入力もしくは構成を含むデータ/サービスアクセスを含みうるビジネスモジュールを含む。“アクション入力”という語は、アクションを起こすためのビジネスモジュールに対する入力パラメータを含む。“BizOp”もしくは“BizOperation”という語は、ビジネスモジュールが、外部のエンティティに対してデリゲートする可能性があるビジネスオペレーション(例えば、サービス呼び出し)を含む。BizOpは、ビジネスモジュールに対する方策として接続されてもよい。“BizMo View”という語は、ビジネスモジュールのUIを含む。“View Builder”という語は、ビジネスモジュールに対する方策として接続することができるUIビルダを含む。“BizMo Manager”という語は、ビジネスモジュールのライフサイクルを駆動するコントローラを含む。“BizOpEngine”という語は、ビジネスオペレーションを最適化し、実行するエンジンを含む。“BizMo”、“ウィジェット”、“ビジネスモジュール”という語は、交換して使用されてもよい。“ユーザ”という語は、人もしくはマシンを含む。アプリケーションのコンポーネントはウィジェットを含んでもよい。ウィジェットは、リアルタイムのリソース集約およびリアルタイムのサービス統合を含む、最適化をサポートしてもよい。リアルタイムのサービス統合は、多数のウィジェットによる同一のサービスに対する呼び出しを検出し、結合することを含む、ランタイム最適化をウィジェットがサポートすることを可能にしうる。リアルタイムのリソース集約は、ウィジェットが、実行時において、ウェブページ用の全リソースをウェブページ用の単一のリソースへと集約する(例えば、JavaScriptの全バージョンもしくはインスタンス、またはカスケーディングスタイルシート(CSS)を、ウェブページ用の単一のリソースへと集約する)ことを可能にしうる。フレームワークは、設計時もしくはリアルタイムのページの生成、改変もしくは削除を(例えば、コンポーネントのドラッグアンドドロップをサポートする開発者ツールを介して)サポートしうる。
例示的な一実施形態においては、アプリケーションサーバ上で実行するアプリケーションのコンポーネントによる、サービスに対する呼び出しを最適化するためのシステムが提供される。本システムはアプリケーションにおける呼び出しオプティマイザを含む。呼び出しオプティマイザは、第一の呼び出しおよび第二の呼び出しを遮断するための遮断モジュールと、第一の呼び出しおよび第二の呼び出しを第三の呼び出しへと統合するための統合モジュールと、を含む。第一の呼び出しは、サービスに対して、コンポーネントのうちの第一のコンポーネントによってなされ、第二の呼び出しは、サービスに対して、コンポーネントのうちの第二のコンポーネントによってなされる。
別の例示的な一実施形態においては、アプリケーションサーバ上で実行するアプリケーションのコンポーネントによる、サービスに対する呼び出しを最適化するためのシステムが提供される。本システムはアプリケーションに関連する呼び出しオプティマイザを含む。呼び出しオプティマイザは、第一の呼び出しおよび第二の呼び出しを遮断する遮断モジュールと、多数の最適化のうちの一つを選択する最適化選択モジュールであって、多数の最適化は、第一の呼び出しおよび第二の呼び出しを第三の呼び出しへの統合を含む、最適化選択モジュールと、多数の最適化のうちの一つとして、第一の呼び出しおよび第二の呼び出しを第三の呼び出しへと統合することを選択するのに応じて、第一の呼び出しおよび第二の呼び出しを第三の呼び出しへと統合する統合モジュールと、を含む。
別の例示的な一実施形態においては、アプリケーションサーバ上で実行するアプリケーションのコンポーネントによるサービスに対する呼び出しを最適化するための方法が提供される。本方法は、第一の呼び出しおよび第二の呼び出しを受信するステップであって、第一の呼び出しは、サービスに対してコンポーネントのうちの第一のコンポーネントによってなされ、第二の呼び出しは、サービスに対してコンポーネントのうちの第二のコンポーネントによってなされるステップと、多数の最適化のうちの一つを選択するステップであって、多数の最適化は、第一の呼び出しおよび第二の呼び出しを、サービスに対する第三の呼び出しへと統合するステップを含む、ステップと、多数の最適化のうちの一つとして、第一の呼び出しおよび第二の呼び出しを第三の呼び出しへと統合するステップを選択するステップに応じて、第一の呼び出しおよび第二の呼び出しを第三の呼び出しへと統合するステップと、を含む。
別の例示的な一実施形態においては、マシンの一つ以上のプロセッサによって実行されるとき、アプリケーションサーバ上で実行するアプリケーションのコンポーネントによるサービスに対する呼び出しを最適化するための方法をそのマシンに実施させる命令を含む、マシンで読み出し可能な記憶媒体が提供される。本方法は、第一の呼び出しおよび第二の呼び出しを受信するステップと、多数の最適化のうちの一つを選択するステップであって、多数の最適化は、第一の呼び出しおよび第二の呼び出しをサービスに対する第三の呼び出しへと統合するステップを含む、ステップと、多数の最適化のうちの一つとして、第一の呼び出しおよび第二の呼び出しを第三の呼び出しへと統合するステップを選択するステップに応じて、第一の呼び出しおよび第二の呼び出しを第三の呼び出しへと統合するステップと、を含む。
図1Aは、アプリケーションのコンポーネントとデータソースおよびリソースとの間の例示的な関係100を示すブロック図である。アプリケーションのコンポーネントは、ウィジェット1、112およびウィジェット2、114を含みうる。データソースは、データソース1、132、データソース2、136もしくはデータソース3、140を含みうる。リソースは、リソース1、134およびリソース2、138を含みうる。図1Aは、データソース1、132、リソース1、134およびデータソース2、136との関係を有するものとして、ウィジェット1、112を示す。図1Aは、データソース2、136、リソース2、138およびデータソース3、140との関係を有するものとして、ウィジェット2、114を示す。
ウィジェット1、112とデータソース1−132との間の関係は、ウィジェット1、112がデータソース1、132のサービスを呼び出すというものであってもよい。同様に、ウィジェット2、114とデータソース2、136との間の関係は、ウィジェット2、114がデータソース2、136のサービスを呼び出すというものであってもよい。ウィジェット1、112とリソース1、134との間の関係は、ウィジェット1、112が含まれうるアプリケーション102のうちの(図示されていない)別のコンポーネントが、リソース1、134を利用するというものであってもよい。例えば、ウィジェット1、112は、マークアップ言語(例えば、HTML,XHTML,XML,SVGもしくはXUL)で記述された文書内に含まれてもよいし、同様に、その文書はアプリケーション102に含まれてもよい。
リソース1、134は、スタイルシート言語(例えば、リソースはワールドワイドウェブコンソーシアム(W3C)によって定義されるCSSもしくは、JavaScriptスタイルシート(JSSS)であってもよい。)の文書の提示(例えば、外観およびフォーマット)を記述するリソースであってもよい。この場合においては、ウィジェット1、112はリソース1、134を使用して、文書の提示を決定する。リソース1、134は、JavaScriptリソース、HTMLリソース、ESFリソース、コンテンツリソース(例えば、テキスト、イメージなど)、プロトタイプリソース、ルールリソース、メタデータリソース、メタモデルリソース、もしくは別のタイプのリソースであってもよい。同様に、ウィジェット2、114とリソース2、138との間の関係は、ウィジェット2,114が含まれうるアプリケーション102の(図示されていない)別のコンポーネントが、リソース2、138を利用するというものであってもよい。
データリソースの各々は、ウェブサービスであってもよい。さらには、各データソースもしくはリソースは、ローカル(例えば、同一のサーバ、同一のシステム、もしくは同一のネットワーク上に)に配置されてもよいし、またはアプリケーション102に関して遠隔(リモート)(例えば、異なるサーバ、異なるシステムもしくは異なるネットワーク上に)に配置されてもよい。
図1Bは、呼び出しオプティマイザ116とリソースアグリゲータ118がアプリケーション104に関連付けられた後の、アプリケーション104のコンポーネントとデータソースおよびリソースとの間の例示的な関係150を示すブロック図である。本実施例においては、呼び出しオプティマイザ116のアプリケーション104に対する組み込みは、データソース2、136との関係を維持する上でのウィジェット2、114の必要性を排除する。さらには、リソースアグリゲータ118の組み込みは、リソース1、134との関係を維持する上でのウィジェット1、112の必要性、ならびに、リソース2、138との関係を維持する上でのウィジェット2、114の必要性を排除する。
さらには、リソースアグリゲータ118の組み込みは、結果として、リソース3、142の追加、ウィジェット1、112とリソース3、142との間の関係の構築、ウィジェット2とリソース3、142との間の関係の構築を引き起こす。リソース3、142は、アプリケーション104が使用するリソース1、134とリソース2、138の構成要素の集約を含む可能性がある。リソース3、142は、お互いに対して重複したリソース1、134もしくはリソース2、138の構成要素は含まなくてもよい。したがって、呼び出しオプティマイザ116のアプリケーション104への組み込みは、アプリケーション104が依存するサービス呼び出し回数を減少させ、リソースアグリゲータ118のアプリケーション104への組み込みは、アプリケーション104が依存するリソースの数を減少させる可能性がある。このサービス呼び出しの最適化およびリソースの集約は、アプリケーション104の効率もしくは性能を改善する可能性がある。
図2Aは、図1Bの呼び出しオプティマイザ116の例示的な一実施形態のモジュールを示すブロック図である。呼び出しオプティマイザ116は、アプリケーション(例えば、アプリケーション102)のコンポーネント(例えば、ウィジェット1、112もしくはウィジェット2、114)からの呼び出し(例えば、第一の呼び出しおよび第二の呼び出し)を遮断するかまたは受信するための遮断モジュール202、または、呼び出しの統合を適用するための統合モジュール206を含みうる。
呼び出しの統合の適用は、第一の呼び出しの複数の要求パラメータを、第三の呼び出しの複数の要求パラメータへと統合するステップ、第二の呼び出しの複数の要求パラメータを、第三の呼び出しの複数の要求パラメータへと統合するステップ、第三の呼び出しを生成するステップ、第三の呼び出しの結果を受信するステップ、第一の呼び出しに対応する、結果のうちの第一部分を識別するステップ、第二の呼び出しに対応する、結果のうちの第二部分を識別するステップ、第一の呼び出しに対する応答として、複数のコンポーネントのうちの第一のコンポーネントへと結果の第一部分を提供するステップ、もしくは第二の呼び出しに対する応答として、複数のコンポーネントのうちの第二のコンポーネントへと結果の第二部分を提供するステップを含みうる。呼び出しを最適化する多数の技術のうちの他の技術は、図2Bに関連して以下に記述される。
図2Bは、図1Bの呼び出しオプティマイザ116の例示的な一実施形態のさらなるモジュールを示すブロック図である。呼び出しオプティマイザ116は、最適化選択モジュール204、バッチ処理モジュール242、キャッシングモジュール244もしくは実行モジュール246を含みうる。最適化選択モジュール204は、呼び出しを最適化する多数の技術から呼び出しを最適化する一技術を選択しうる。呼び出しを最適化する多数の技術は、キャッシュから第一の呼び出しもしくは第二の呼び出しに対する応答を提供するステップ、第一の呼び出しおよび第二の呼び出しを第三の呼び出しへと統合するステップ、バッチ呼び出しを生成するステップ、第一の呼び出しおよび第二の呼び出しをパラレルに実行するステップなどを含みうる。呼び出しを最適化する一技術の選択は、種々の基準に基づくものである。種々の基準は、多数の技術のうちの他の技術が呼び出しを処理するのにかかる時間に対する、ある技術が呼び出しを処理するためかかりうる時間、ある技術の可用性の同定もしくは、多数の技術のうちの他の技術の可用性の欠如、または、多数の技術のうちの他の技術に対する、ある技術の適合性の別の定量を含む。この場合においては、統合モジュール206は、一技術として、統合の選択に応じて、統合を適用してもよい。
バッチ処理モジュール242は、呼び出し最適化の一技術として、バッチ呼び出しの生成を選択するのに応じて、第一の呼び出しもしくは第二の呼び出しの代わりにバッチ呼び出しを生成しうる。バッチ呼び出しは、第一の呼び出しおよび第二の呼び出しが向けられたデータソースのサービスとして提供されてもよい。したがって、バッチ呼び出しの生成の選択は、データソースにおけるバッチ処理サービスの可用性に基づくものでありうる。さらには、バッチ呼び出しの生成の選択は、第一の呼び出しの応答として、バッチ呼び出しの結果の第一部分が使用可能であり、かつ、第二の呼び出しの応答として、バッチ呼び出しの結果の第二部分が使用可能であることの判断に基づくものでありうる。
キャッシングモジュール244は、呼び出し最適化のうちの一技術として、キャッシュから第一の呼び出しもしくは第二の呼び出しに対する応答の提供を選択するのに応じて、各々、第一の呼び出しもしくは第二の呼び出しの生成から受信される応答を提供する代わりに、メモリのキャッシュ内に含まれるデータを利用して、第一の呼び出しもしくは第二の呼び出しへの応答を提供しうる。メモリのキャッシュ内に含まれるデータは、サービスに対して第三の呼び出しを生成することから受信された応答であってもよい。さらには、一技術としての、第一の呼び出しもしくは第二の呼び出しへの応答をキャッシュから提供することの選択が、第三の呼び出しは、第一の呼び出しもしくは第二の呼び出しと実質的に同一であることの同定、また、そうでない場合には、第一の呼び出しもしくは第二の呼び出しの生成が、第三の呼び出しの生成と重複していることの同定に基づくものであってもよい。
実行モジュール246は、概して、呼び出しの実行を処理しうる。実行モジュール246は、一技術として第一の呼び出しおよび第二の呼び出しをパラレルに実行することを選択するのに応じて、第一の呼び出しおよび第二の呼び出しをパラレルに実行しうる。第一の呼び出しおよび第二の呼び出しのパラレルな実行の選択は、第一の呼び出しが第二の呼び出しに依存しないことの同定、または第二の呼び出しが第一の呼び出しに依存しないことの同定に基づくものでありうる。実行モジュール246は、アプリケーションの適切なコンポーネント(例えば、図1Bのウィジェット1、112)に対する呼び出しへの応答の転送を処理してもよい。実行モジュール246は、最適化の結果から呼び出しに対する応答のアセンブリを処理してもよい(例えば、バッチ呼び出しの生成、キャッシュからの第一の呼び出しもしくは第二の呼び出しの結果の提供、または、第一の呼び出しおよび第二の呼び出しの統合)。
簡略化のために、上述の議論は、第一の呼び出しおよび第二の呼び出しに関する単一の最適化技術の適用について言及している。しかしながら、呼び出しオプティマイザ116は、一つ以上のアプリケーションコンポーネントによって生成された一つ以上の呼び出しを遮断してもよいし、一つ以上の呼び出しに関する一つ以上の呼び出し最適化を選択してもよいし、一つ以上の呼び出しに対して一つ以上の呼び出し最適化を適用してもよい。例えば、呼び出しオプティマイザ116は、あらゆる数の呼び出しを処理してもよいし、あらゆる数の呼び出しに対して、あらゆる数の最適化技術を適用してもよい。さらには、呼び出しオプティマイザ116は、パラレルに動作を実施してもよいし、シリアルに動作を実施してもよい。さらに、呼び出しオプティマイザ116は、実行時に自動的に動作を実施してもよい。にもかかわらず、動作の性能の効果は、設計期間にアプリケーションの開発者によって、手動もしくはハンドコーディングで最適化されるように、アプリケーション(例えば、アプリケーション102)のコンポーネント(例えば、ウェブページ)を実施させることであってもよい。さらには、呼び出しオプティマイザ116は、一つ以上のアプリケーションコンポーネントのうちの一つからの一つ以上の呼び出しに対して、一つ以上の最適化を適用してもよい。言い換えると、呼び出しオプティマイザ116は、一つ以上のコンポーネントからの一つ以上の呼び出しに対して一つ以上の最適化を適用することに限定されることはない。
図2Cは、図1Bのリソースアグリゲータ118の例示的な一実施形態のモジュールを示すブロック図である。リソースアグリゲータ118は、識別モジュール222、集約モジュール224、もしくはアップデートモジュール226を含みうる。識別モジュール222は、アプリケーション(例えば、アプリケーション102)に関連する多数のリソースのうちの第一のリソースの少なくとも一部が多数のリソースのうちの第二のリソースの少なくとも一部と重複していることを識別しうる。例えば、識別モジュール222は、第一のリソースが第二のリソースのアップデートされたバージョンであることを識別してもよいし、アプリケーションが、第二のリソースの代わりに第一のリソースのうちの少なくとも一部を使用できることを識別してもよい。
集約モジュール224は、第一のリソースのうちの少なくとも一部が、第二のリソースのうちの少なくとも一部と重複していることを識別するのに応じて、第一のリソースおよび第二のリソースを第三のリソースへと集約しうる。第三のリソースは、アプリケーションの使用する第一のリソースの一部および第二のリソースの一部を含んでもよい。
アップデートモジュール226は、第三のリソースを使用するためにアプリケーションをアップデートしうる。アプリケーションのアップデートは、第一のリソースの重複部分もしくは第二のリソースの重複部分に対する、アプリケーションの依存を除去する可能性がある。例えば、アップデートモジュール226は、第二のリソースの重複部分の代わりに、第一のリソースの一部を第三のリソースが含むようにアプリケーションをアップデートしてもよい。したがって、アップデートモジュール226は、アプリケーションが依存するリソースの全体のサイズを減少させる可能性がある。さらには、アップデートモジュール226は、第三のリソースを表出化して、クライアントが、第一のリソースもしくは第二のリソースの代わりに第三のリソースをキャッシュしてもよい。例えば、クライアントは、第一の時刻におけるアプリケーションに対するアクセスに応じて、第三のリソースをダウンロードしてキャッシュしてもよい。その後、第二の時刻におけるアプリケーションに対するアクセスに応じて、クライアントが第三のリソースを再度ダウンロードする必要はない。リソースアグリゲータ118は、実行時に自動的にリソース集約を実施してもよい。にもかかわらず、リソース集約の効果は、設計時にアプリケーション開発者によって手動もしくはハンドコーディングで最適化されるように、アプリケーション(例えば、アプリケーション102)のコンポーネント(例えば、ウェブページ)を出力させることであってもよい。
図2Dは、図1Aおよび図1Bのウィジェット1、112の例示的なモジュールを示すブロック図である。ウィジェット1、112は、アプリケーションのより複雑なコンポーネント(例えば、ウェブページ)のうちの基本的なコンポーネント(例えば、ヘッダユニット、検索ユニット、カテゴリナビゲーションユニット、認可もしくは認証ユニット、またはメンバーバッジユニット)である可能性がある。ウィジェット1、112は、提示モジュール262、論理実装モジュール264、接続モジュール266、もしくは構成モジュール268を含みうる。提示モジュール262は、ウィジェット1、112に関連する一つ以上のUIを提示しうる。例えば、ウィジェット1、112にアクセスするクライアントが、モバイルデバイスベースのウェブブラウザ(例えば、Apple Safariブラウザ)である場合には、提示モジュール262は、モバイルデバイスベースのウェブブラウザに対して適応されたUI(例えば、パーソナルコンピュータベースのウェブブラウザ用のUIよりも少ないテキストもしくは少ない画像を含むUI)を提示してもよい。ウィジェット1、112にアクセスするクライアントがパーソナルコンピュータベースのウェブブラウザ(例えば、Microsoft Windows Internet Explorer ブラウザ)である場合には、提示モジュール262は、パーソナルコンピュータベースのウェブブラウザに適応されたUI(例えば、モバイルデバイスベースのウェブブラウザ用のUIよりも多いテキストもしくは多い画像を含むUI)を提示してもよい。提示モジュール262は、ウィジェット1、112の論理の実装から、ウィジェット1、112のユーザインターフェイスの提示を分離してもよい。
論理実装モジュール264は、ウィジェット1、112の論理を実装しうる。論理の実装は、一つ以上のデータソース(例えば、データソース1、132もしくはデータソース2、136、ただし、両者は図1Bのものである)へのアクセスを含んでもよい。さらには、一つ以上のデータソースへのアクセスは、一つ以上のデータソースに関連する一つ以上のアプリケーションプログラミングインターフェイス(API)の呼び出しを含んでもよい。論理実装モジュール264は、ウィジェット1、112の論理の実装を、ウィジェット1、112のユーザインターフェイスの提示から分離してもよい。
接続モジュール266は、論理実装モジュール264へと提示モジュール262を接続し、提示モジュール262が、論理実装モジュール264から受信されたデータ(論理実装モジュール264が、一つ以上のデータソースへのアクセスを通して受信するデータを含む)の提示を一つ以上のUIへと統合することができるようにする。
構成モジュール268は、構成APIを通して、ウィジェット1、112の設定可能な属性を公開しうる。構成APIは、ウィジェット1、112に関連する構成データ(例えば、データスキーマ)に対するプログラムによるアクセスを与える可能性がある。構成APIは、ウィジェット1、112を手動で(例えば、XMLファイルに関連するXSDスキーマのハンドコーディングを通して)構成することを要求する代わりに、単純なユーザインターフェイス(例えば、ウィジェット1、112に構成APIを介してアクセスするツールのユーザインターフェイス)を介してウィジェット1、112を構成することを可能しうる。構成APIは、ウィジェット1、112に対して、テーマ(例えば、クリスマスもしくはハロウィンテーマ)を定義するかまたは適用する機能を含んでもよい。テーマの適用は、単一の動作でウィジェット1、112の構成可能な属性のうちの多数を改変することを含んでもよい。ウィジェット1、112が検索ウィジェットである場合には、構成APIは、ウィジェット1、112の構成可能な属性として、デフォルト検索文字列を公開してもよい。構成APIは、その後、呼び出されて、デフォルト検索文字列(例えば、“防水ブーツ”、“MP3プレイヤー”もしくは他の文字列)を設定されてもよい。構成APIは、ウィジェット1、112の地域化を定義するかまたは適用するための機能を含んでもよい。地域化の適用は、ウィジェット1、112にアクセスするユーザの地域性(言語、地域など)に基づいて、ウィジェット1、112に関連するテキストもしくは画像を結果として変更する可能性がある。例えば、ウィジェット1、112にドイツの(例えば、de-DE)地域化を適用することによって、ウィジェット1、112に関連するテキストをドイツ語にさせ、ウィジェット1、112にアメリカ合衆国で使用される英語(例えば、en-US)の地域化を適用することによって、ウィジェット1、112に関連するテキストを英語にさせる可能性がある。
構成モジュール268は、メタモデルのウィジェット1、112の関連付けを管理してもよい。例えば、構成モジュール268は、メタデータ定義フレームワーク(メタモデルフレームワーク、メタデータフレームワーク、もしくはメタモデル定義フレームワークとも呼ばれる)を使用してもよい。メタモデルフレームワークは、ウィジェット1、112の設定可能な属性を記述するために使用されうる型のような、モデル(もしくは型)の記述を管理するためのAPI(例えば、IDataDef API)を含んでもよい。メタモデル定義フレームワークは、(例えば、XMLスキーマに等価な)型の構造的もしくは機能的定義をサポートしてもよいし、単一型の継承もしくは多相性サポートを伴うオブジェクト指向であってもよいし、または、(例えば、JavaScriptと同様に)データ継承もしくは階層化を伴うプロトタイプ指向であってもよい。各々の基本的な型は、スーパータイプ(単一継承型)、制約(型不変節(例えば、列挙型))、アクション(あらゆる戻り値の型を有する方法をデリゲートする)、変換(他の型へと変換することができる方法(例えば、多相性をサポートする方法)をデリゲートする)、または、(例えば、データ継承もしくは階層化サポートを伴う)初期データもしくはデフォルトデータを含むメンバーを有する可能性がある。各々の複雑な型は、基本的な型のメンバーまたは、関連付け(役割、型もしくは多様性)もしくは属性(単純名もしくは値の組)を含む、さらに別のメンバーを含む可能性がある。役割とは、関連付けのインスタンスの名称でありうる。多様性は、単一の多様性(0,0..1,1)リスト多様性(0..n,1..n)もしくは(キーとして文字列もしくは列挙型を有する)マップ多様性であってもよい。
メタデータフレームワークは、ドメイン固有言語(DSL)を使用する型の定義をサポートしてもよい。DSLは、モデル(もしくはデータ)定義(例えば、IDataDefインターフェイス)がモデル(もしくはデータ)インスタンス(例えば、IManagedData インターフェイス)と相関する、プロトタイプベースのアプローチを使用してもよい。IDataDefインターフェイスは、DSL定義階層の頂点に存在しうる。IDataDefインターフェイスは、構造的定義もしくはデータ階層を含む、定義のライフサイクルを管理してもよい。IDataDefインターフェイスは、型の階層、制約、動作、変換の定義を保持してもよい。DSL定義階層は、ある型から別の型へのオブジェクトの変換(例えば、Javaオブジェクトの文字列への変換もしくは文字列からJavaオブジェクトへの変換)を管理する、単一値ユニット定義インターフェイス(例えば、ISimpleValueUnitDef インターフェイス)を含んでもよい。DSL定義階層は、属性もしくは関連付けの定義を保持する、複雑データ定義インターフェイス(例えば、IComplexDataDefインターフェイス)を含んでもよい。複雑データ定義インターフェイスは、関連付けに対応する多数の語義を管理するための実装を含んでもよい。例えば、複雑データ定義インターフェイスは、コード生成プロセスもしくはインターフェイス様選択を通してクラスになる豆様構造(例えば、StructDataDefオブジェクト)、または、コード生成プロセスを介して、インターフェイスもしくは列挙型となる代替物(例えば、ChoiceDataDefオブジェクト)を含んでもよい。
図3は、メタモデルフレームワークの例示的なアーキテクチャ300のブロック図である。メタモデルフレームワークは、ユーザ302を含みうる。ユーザ302は、モデルメタデータに対するフレームワークのメタデータモデリング310コンポーネントと相互作用(例えば、型定義を生成する、APIを生成するなど)してもよい。メタデータモデリング310コンポーネントは、モデルメタデータへとユーザインターフェイスを提供するメタデータツールもしくはアプリケーション306を含みうる。ツールは、メタデータもしくはドメインモデル308を生成してもよい。モデル化されたメタデータは、入力になってもよいし、メタデータシステム320に関連づけられてもよい。メタデータシステム320は、代理もしくは仲介層314を含んでもよい。代理もしくは仲介層314は、インタプリタ312、ジェネレータ316もしくはマッパ318を含みうる。インタプリタ312は、メタデータ定義にアクセスしてもよいし、または、型、ドメイン、もしくは範囲を検証してもよい。ジェネレータ316は、メタデータ定義に関連する具象クラスをマッピングしてもよいし、具象オブジェクトを構築するか、配線してもよい。マッパ318は、メタデータクラスを具象クラスへとマッピングしてもよい。メタデータモデリング310コンポーネントは、持続性層322と相互作用して、メタデータもしくはモデルを格納するか、またはメタデータもしくはモデルにアクセスする。持続性層322は、同様に、メタデータ定義レポジトリ324と相互作用して、メタデータ定義(例えば、型定義)、モデル、もしくは他のメタデータを格納する。メタデータシステム320は、持続性層322とも相互作用してもよい。持続性層322は、同様に、メタデータインスタンスレポジトリ326とも相互作用して、メタデータのインスタンス(例えば、型定義のインスタンス)を格納する。
メタモデルフレームワークは、クラスベースの継承パラダイムではなく、プロトタイプベースのパラダイムをサポートしてもよい。例えば、ヘッダ、コンテンツ、もしくはフッタを有する第一のウェブページは、より詳細なヘッダを有する第二のウェブページ用のプロトタイプでありうる。第二のウェブページは、同様に、さらに詳細なヘッダおよび左側のナビゲーションペインを有する第三のウェブページ用のプロトタイプでありうる。サブクラスのプロトタイプは、不変プロトタイプ(例えば、入力規則)、もしくは値制限(例えば、列挙された文字列、もしくは最小値もしくは最大値)などの制約を加える可能性がある。サブクラスのプロトタイプは、何も除去しない(が、多重性を0に変更する)可能性がある。サブクラスのプロトタイプは、新規の属性もしくは構造的な要素に加えるか、混合する可能性がある(例えば、混入は、名称の競合を回避するために名称空間サポートを加えてもよい)。サブクラスのプロトタイプは、動作の形式(例えば、モデルを読み出す、もしくは書き込むための任意のコード)、または変換(例えば、変換するためのコード、または、ある型から別の型への多形データ)の形式で行動に織り込んでもよい。
メタモデルフレームワークは、モデル(もしくはメタデータ)定義ライフサイクルをサポートしてもよい。すなわち、メタモデルは、(例えば、プロトタイプベースアプローチを使用して)構造定義およびデータ設定動作を結合するモデル定義をサポートしてもよい。データ設定は、構造定義に基づく型のオブジェクトのインスタンスに関連する値の設定を含んでもよい。このようなオブジェクトは、管理されたデータと呼ばれる可能性がある。図4Aは、モデル定義のライフサイクルを管理する方法400の例示的な一実施形態のフローチャートである。方法400は、型を宣言する(例えば、型に対する言及を含む型定義を生成する)ステップ402、その型に基づくオブジェクトもしくは構造をインスタンス化する(例えば、型をインスタンス化する)ステップ404、もしくは構造内のデータを設定する(例えば、インスタンス化型に関連する値を設定する)ステップ406を含みうる。
図4Bは、アプリケーションのコンポーネント(例えば、ヘルプページ)を構成するためのAPIを生成する例示的な方法450のフローチャートである。方法450は、コンポーネントの設定可能な属性(例えば、設定可能な属性を表す、または、(例えば、統一モデリング言語(UML)もしくは(例えば、DSLを介した)スキーマを介した)スキーマ図を利用して設定可能な属性が如何にお互いに関連するか)を同定するステップ452、スキーマから型定義を作成もしくは生成するステップ454、スキーマもしくは型定義からコンポーネントを構成するためのAPIを作成もしくは生成するステップ456、(例えば、実行時に)コンポーネントがAPIを利用して構成できるように、コンポーネントとAPIを関連付けるステップ458、スキーマ図、スキーマ、型定義、APIもしくは(例えば、リソースフレームワークを利用する)他のメタデータを格納するステップ460を含みうる。コンポーネントの構成は、APIをユーザインターフェイスを介して公開する、か、または、ユーザがAPIにアクセスするのを可能にする(または、フロントエンドを提供する)開発ツールなどのクライアントを利用するステップを含みうる。
図5、図6、図7および図8は、アプリケーションのコンポーネントを構成するためにAPIを生成するための方法450(図4B)に関連するソースコードの例示的なスナップショットを提供する。図5は、コンポーネントの構成の例示的なスキーマ図500を示す。図6は、図5のスキーマ図に対応する例示的なスキーマ600を示す。図7は、図6の例示的なスキーマ600に対応する例示的な型(例えば、クラス)700を示す。図8は、例示的なスキーマ600もしくは例示的な型700に基づくコンポーネントを構成するための例示的なAPI800を示す。
メタモデルフレームワークは、モデル定義ファクトリを含みうる。モデル定義ファクトリは、定義もしくはプロトタイプのインスタンスを得るために利用されてもよい。モデル定義ファクトリは、単一のファクトリをサポートしてもよいし、新規の型および適応した(例えば、レガシ)型に対する参照モデルをサポートしてもよい。モデル定義ファクトリは、(例えば、型定義を生成する454ため、もしくはAPIを生成する456ために)コードジェネレータによって利用されてもよい。モデル定義ファクトリは、ツール(例えば、エディタもしくはメタモデル駆動ツール)によって利用されてもよい。モデル定義ファクトリは、メタデータ定義ライフサイクルを管理してもよい。モデル定義ファクトリは、帰納的型もしくはデータ階層をサポートしてもよい。モデル定義ファクトリは、フレームワーク提供、コンテナ提供もしくはアプリケーション固有のメタデータ定義インジェクタをサポートしてもよい。フレームワーク提供、コンテナ提供、もしくはアプリケーション固有のメタデータ定義インジェクタは、コールバックメカニズムを介して実装されてもよい。
したがって、メタモデルフレームワークの例示的なアーキテクチャ300は、Javaベースモデル定義を提供しうる。Javaベースモデル定義は、キー値コーディング(KVC)サポートを伴うタイプセーフプレーンオールドJavaオブジェクト(POJO)モデル生成と、XMLマーシャラもしくはアンマーシャラの生成、ツール用定義検索のためのランタイムJavaAPIの提供、文書化もしくはツール化目的のためのXSDもしくはXMI(UML)生成を可能にする。メタモデルフレームワークの利点は、定義およびデータ消費の双方に対する一貫したインターフェイス、異なるパーティもしくはレガシシステム間での定義の再利用、ツール化サポート(発見可能性、もしくは定義、もしくはツール化ヘルパ)、継承プロセスを介した混合型定義もしくは値設定を可能にするプロトタイプベース定義、多数の定義もしくはAOP定義インジェクタの混入を介した関係の分離、行動の織り込み(例えば、参照用トランスフォーマもしくはタイプセーフアクセサ)を介した関係の分離、または、(各リソースに格納されるべき)“互換性キー”の記述をサポートするための定義バージョン化、互換性のないバージョンを移行するためのバージョンコンバータの提供を含みうる。
図2Dの構成モジュール268は、ウィジェット1、112に関連するリソースの格納および検索を管理してもよい。例えば、構成モジュール268は、リソースフレームワークを利用して、リソースを格納および検索する。図9は、リソースフレームワークのアーキテクチャ900の例示的な一実施形態のブロック図である。リソースフレームワークは、アプリケーション層902、型固有アクセス層922、レポジトリ層942、格納持続性インターフェイス962、または格納レポジトリもしくはシステムの種々の実装982を含みうる。アプリケーション層902は、アプリケーション(例えば、ePages904、サービスフレームワークランタイム906コンポーネント、サービスフレームワークランタイム908コンポーネントもしくはコンテンツレポジトリランタイム912コンポーネント)を、(例えば、アプリケーションレベルAPIを介して)実行時におけるリソースに対するアクセスとともに提供しうる。
型固有アクセス層922は、アプリケーション層902APIとレポジトリ層942APIとの間の翻訳に役立つ可能性がある。例えば、型固有アクセス層922は、種々のリソース型に関連するヘルパ(例えば、HTMLリソースアクセスヘルパ924、JavaScriptリソースアクセスヘルパ926、CSSリソースアクセスヘルパ928、プロトタイプリソースアクセスヘルパ930、コンテンツリソースアクセスヘルパ932など)を含みうる。
レポジトリ層942は、レポジトリレベルAPI(例えば、Iresourceレポジトリ944)を含み、メモリ(例えば、揮発性メモリ)におけるリソースの格納を管理する。レポジトリレベルAPIは、レガシリソース、シリアライザもしくはコンバータに対するアダプタの登録をサポートするリソースレポジトリ実装946に関連する可能性がある。この方法においては、レポジトリレベルAPIは多数のオーナーもしくはレガシシステム間で、同一の参照モデルを利用してサポートしてもよい。レポジトリレベルAPIは、レポジトリ構造の定義(例えば、リソースの論理キー)をサポートしてもよい。レポジトリレベルAPIは、種々のフォーマット間(例えば、揮発性メモリフォーマットと不揮発性メモリフォーマットの間、レガシシステムフォーマットと現行システムフォーマットとの間もしくは他のフォーマット間)でリソースの変換もしくはシリアル化をサポートしてもよい。レポジトリレベルAPIは、下層のリソースレポジトリのJavaベースタイプセーフラッパであってもよい。レポジトリレベルAPIは、リゾルバを含み、論理キーおよび物理キーの間のマッピングをサポートする。リゾルバは、リソースパターンを認識してもよい。例えば、リゾルバは、順列(例えば、サイトもしくはロケール)、バージョン化(例えば、“列”番号を解放する)、ライフサイクル状態(例えば、レビュー状態もしくは生産状態)、もしくは互換性管理をサポートしてもよい。レポジトリレベルAPIは、インフォセットベースの持続性をサポートして、迅速もしくは小型のバイナリXMLシリアル化;グラニュラーターゲット、オーバーライド、バインディングもしくは階層化属性のためのサポート;または、接続可能なシリアライザもしくはデシリアライザを活用する。接続可能なシリアライザもしくはデシリアライザは、メタモデルフレームワークには結合されえない。レポジトリレベルAPIは、リソース利用をトレースするトレーサをサポートしてもよい。レポジトリレベルAPIは、データ型(例えば、管理されたデータ)のインスタンスの管理をサポートしてもよい。レポジトリレベルAPI944は、一般的オブジェクトと同様にタイプセーフKVCオブジェクトに対してリソースを適用してもよい。レポジトリレベルAPIは、(例えば、ツールを介して)編集されるべきオブジェクトの定義(例えば、型宣言)を公開してもよい。
レポジトリ層942は、格納持続性インターフェイス962と関連付けられてもよい。格納持続性インターフェイス962は、持続性マネージャAPI(例えば、IResource持続性マネージャ964)を含み、下層にある持続性格納(例えば、不揮発性)実装982に対して共通のAPIを提供し、持続性格納実装982は、サービスとしてのストレージ(StaaS)ベース実装984、プロキシサービス実装986、ファイルシステムベース実装988、もしくはサービス指向アーキテクチャ(SOA)クライアントベース実装990を含みうる。Staasベース実装984は、ホットデプロイおよび迅速なロールアウトもしくはロールバック(例えば、データセンター複製)もしくはランタイムソースオブトゥルース(例えば、UGC)およびオーバーライドサポートをサポートしてもよい。プロキシサーバは、フェッチャもしくはローカルディスクキャッシュを(例えば、高性能にするために)含んでもよい。SOAクライアントベース実装990は、同様に、(図示されていない)一つ以上のSOAサービスもしくは(図示されていない)さらなるStaaSベース実装に基づくものであってもよい。リソースの格納および検索の管理は、実行時に実施されてもよい。
したがって、リソースフレームワークのアーキテクチャ900の例示的な一実施形態は、リソースレポジトリを含み、リソースレポジトリは、リソースにアクセスするための均一なAPIを提供するが、型固有API、接続可能な持続性メカニズムを提供するリソース持続性サービス、もしくは、設計時間から実行時間へのアウトオブザボックスソリューションとしてのプロトタイプリソースレポジトリの付加を許可する。この方法においては、アーキテクチャ900の例示的な実施形態は、最良の実践および特性をほとんどのリソースタイプへと拡張する可能性があり、また、維持、トラブルシューティング、もしくは、ほとんどの構成表出化の必要性に対して、イージーゴートゥーソリューションを提供するために容易、もしくは安価である可能性がある。
図10は、例示的なウィジェットフレームワーク1000の構成要素と相互作用する二つのウィジェットのブロック図である。二つのウィジェットのうちの第一のウィジェット、ウィジェット1、1012は、ステップA1、1002、ステップA2、1004もしくはステップA3、1006を含みうる。ステップA1、1002は、動作1(OP1)1008、動作2(OP2)1010もしくはコールバック1012を含みうる。ステップA2、1004は、動作3(OP3)1014およびコールバック(CB)1018を含みうる。ステップA3、1006は、動作4(OP4)1016およびコールバック1020を含みうる。OP2、1010は第二のサービスに対する呼び出しを含みうる。OP1、1008、OP2、1010、OP3、1014およびOP4、1016は、各々、第一のサービス、第二のサービス、第三のサービスおよび第四のサービスに対する呼び出しを含みうる。コールバック1011は、ウィジェットマネージャ1040が第一の呼び出しもしくは第二の呼び出しの実行に応じて呼び出す機能でありうる。コールバック1018は、ウィジェットマネージャ1040が第三の呼び出しの実行に応じて呼び出すコールバック機能でありうる。コールバック1020は、ウィジェットマネージャ1040が、第四の呼び出しの実行に応じて呼び出す機能でありうる。二つのウィジェットのうちの第二のウィジェット、ウィジェット2−1024は、ステップB1、1022を含みうる。ステップB1は、動作5(OP5)1026、動作6(OP6)1028およびコールバック1030を含みうる。OP5、1026およびOP6、1028は、各々、第五のサービスおよび第六のサービスに対する呼び出しを含みうる。
ウィジェットマネージャ1040は、ウィジェット1、1012およびウィジェット2、1024を管理し、ウィジェット1、1012およびウィジェット2、1024は、それらのライフサイクルもしくはランタイム動作を含む。ウィジェットマネージャ1040は、ウィジェット1、1012に対する参照1042もしくはウィジェット2、1024に対する参照1044を含みうる。さらには、ウィジェットマネージャ1040は、各ウィジェット内のステップに対する参照を含みうる。例えば、ウィジェットマネージャ1040は、ステップA1―1002に対する参照1046もしくはステップB1、1022に対する参照1052を含みうる。ウィジェットマネージャ1040は、ウィジェットからサービスへの呼び出しを遮断し、かつ、ウィジェットエンジン1060への呼び出しを転送してもよい。
ウィジェットエンジン1060は、ウィジェットによる一つ以上の呼び出しの処理を取り扱ってもよい。例えば、ウィジェットエンジン1060は、(例えば、ウィジェット1、1012によるOP1、1008に対する呼び出し、もしくはウィジェット2、1024によるOP5、1026に対する呼び出しのウィジェットマネージャ1040による遮断に応じて)ウィジェットマネージャ1040からのOP1、1008に対する参照1062もしくはOP5、1026に対する参照1064を受信してもよい。ウィジェットエンジン1060は、オプティマイザ1066、エグゼキュータ1068もしくはキャッシュ1070を含みうる。オプティマイザ1066は、図2Aおよび図2Bに関連して上述されたように、呼び出しを最適化しうる。エグゼキュータ1068は、図2Bに関連して上述されたように、一つ以上の呼び出しをシリアルにもしくはパラレルに実行しうる。キャッシュ1070は、図2Bに関連して上述されたように、ウィジェットエンジン1060が呼び出しの結果をキャッシュするメモリ(例えば、他のシステムメモリよりも高速の揮発性メモリ)であってもよい。ウィジェットエンジン1060は、(図示されていない)モジュールを含み、処理すべき呼び出しに関する情報を受信し、処理された呼び出しに関する情報(例えば、応答もしくは返答データ)を送信する。ウィジェットエンジン1060は、図2Aおよび図2Bに関連して上述されたように、最適化された呼び出しの結果の処理に基づいて、一つ以上の呼び出しに対する応答を提供してもよい。
図11は、アプリケーションの種々の各クライアント(例えば、モバイルウェブブラウザ1152、ウェブブラウザ1154、電子メールクライアント1156もしくは他のクライアント1158)に関連しうる、アプリケーション(例えば、図1Bのアプリケーション104)の種々のバージョン(例えば、バージョン1、1162、バージョン2、1164、バージョン3、1166もしくはバージョン4、1168)を開発するための例示的な開発者ツール1122の間のインタラクション1100のブロック図である。開発者ツール1122は、アプリケーションサーバ1112に連通された開発者マシン1102上で実行しうる。アプリケーションの種々のバージョンは、アプリケーションサーバ1112上で実行しうる。モバイルウェブブラウザ1152は、モバイルデバイス1104上で実行し、ウェブブラウザ1154は、パーソナルコンピュータ1106上で実行し、電子メールクライアント1156は、ユーザマシン1108上で実行し、他のクライアント1158は、他のデバイス1110上で実行しうる。種々のクライアントは、アプリケーションサーバ1112に対して連通してもよい。
開発者ツール1122は、編集モジュール1132、シミュレーティングモジュール1136、もしくは展開モジュール1138を含みうる。編集モジュール1132は、編集用にコンポーネントの設定可能な属性(例えば、図2Dのウィジェット1、112)を公開することができる可能性がある。すなわち、編集モジュール1132は、(上述された)図2Dの構成モジュール268のインターフェイスとなることが可能であり、編集用に、設定可能な属性もしくは設定可能な属性に関連するメタデータ(例えば、メタデータ定義)を発見する。編集モジュール1132は、(例えば、展開モジュール1138を利用する迅速な展開を介して)実行時にコンポーネントを構成することが可能でありうる。
開発者ツール1122は、シミュレーティングモジュール1136を含み、シミュレーティングモジュール1136は、アプリケーションの展開を要求することなく、アプリケーション(もしくは、アプリケーションの特定のコンポーネント、もしくは、アプリケーションの特定のバージョン)のシミュレーションを可能にする。例えば、シミュレーティングモジュール1136は、アプリケーションがウェブブラウザで実行することを可能にするウェブブラウザ(例えば、Firefox)拡張であってもよい。JVMは、ウェブブラウザ拡張と同一のマシン上で実行する必要がない(例えば、対照的に、アプレットは、アプレットが実行しているマシン上でJVMを必要とする)ために、拡張は、Java仮想マシン(JVM)から分離されてもよい。アプリケーションは、ウェブページおよび制御ブラウザメニューと相互作用してもよい。シミュレーティングモジュール1136は、アプレットは利用しなくてもよい。シミュレーティングモジュール1136は、ブラウザメニューおよびウェブページタブに対する可視性を有しうる。シミュレーティングモジュール1136のセキュリティモデルは、アプレット(ファイル入力もしくは出力、クロスドメインなど)ほど拘束性がない。シミュレーティングモジュール1136は、よりインタラクテイブなウェブページアプリケーション用に設計されてもよい。シミュレーティングモジュール1136は、Javaベースの文書オブジェクトモデル(DOM)を有するウェブページの操作、JavaにおけるDOMイベントの処理(例えば、DOMイベントはJavaに到達する前に正規化されてもよい。したがって、イベント(もしくはイベントデータ)のブラウザ固有の動作は減少する可能性がある)、ブラウザ開始、終了、ページロードもしくはアンロードもしくはタブイベントの処理、ツールおよび右クリックメニューの変更、メニューからのイベント受信、ブラウザおよびシミュレーティングモジュール1136レベルにおけるデータの持続もしくはアクセス、任意のJavaScriptのウェブページへの送信、任意のJavaScriptの送信に関連する戻り値の受信、アプリケーションマネージャを有するアプリケーション(例えば、アプリケーションは、標準HTTP URLを介して配布されてもよい)の発見、インストールもしくは管理、または、簡便なUI特性のビルトインライブラリへのアクセスをサポートしてもよい。アプリケーションマネージャは、OSGiフレームワークを利用してもよいし、OSGi提供manifest.fmオプションに関連してもよい。したがって、アプリケーションは、.jabファイル(例えば、OSGi manifest.fmファイルを伴う.jarファイル、およびカスタムinstall.rdfファイル)であってもよい。Javaとシミュレーティングモジュール1136との間の通信は、プラットフォーム非依存メッセージング規格(例えば、DLC)でなされてもよい。開発者ツール1122が、アプリケーションサーバ1112の代わりに開発者マシン1102上で展開されたコンポーネント(例えば、アプリケーションサーバの構成要素)と通信しうるように、アプリケーションサーバ1112のコンポーネントは、開発者マシン1102上で展開されてもよいし、アプリケーションサーバ1112よりも、開発者マシン1102に対してより近傍に連通されたマシン上で展開されてもよい。したがって、シミュレーティングモジュール1136は、開発者ツール1122とアプリケーションサーバ1112との間のより低速な通信チャネルを介して通信することなく、アプリケーションの展開を近傍でシミュレートしうる。
図12Aは、シミュレーティングモジュール1136に関連する例示的なHTMLページ(例えば、demo.html)のソースコードリスト1200である。図12Bは、例示的なJavaテストクライアント(例えば、TestClient.java)のソースコードリスト1220である。図12Cは、ウェブブラウザにおける例示的なHTMLページおよびJavaテストクライアントの実行に関連するJavaコンソールログ1240である。図12Dは、アプリケーションサーバ上の例示的なHTMLページの展開をシミュレーションするシミュレーティングモジュール1136の例示的なユーザインターフェイス1260である。
図13Aは、アプリケーションのコンポーネントからサービスへの呼び出しを最適化する例示的な方法1300のフローチャートである。方法1300は、サービスへの第一の呼び出しおよびサービスへの第二の呼び出しを遮断するステップ1302、第一の呼び出しおよび第二の呼び出しを最適化する技術を選択するステップ1304、もしくは、第一の呼び出しおよび第二の呼び出しを最適化する選択された技術を適用するステップを含みうる。技術は、キャッシュから第一の呼び出しおよび第二の呼び出しへと応答を提供するステップ1310、第一の呼び出しおよび第二の呼び出しを第三の呼び出しへと統合するステップ1312、バッチ呼び出しを生成するステップ1314、第一の呼び出しおよび第二の呼び出しをパラレルに実行するステップ1316、もしくは別の技術を適用するステップ(例えば、議論された技術の組み合わせを適用するステップ)1318を含みうる。
図13Bは、アプリケーションのコンポーネントによって利用されるリソースを集約するための例示的な方法1350のフローチャートである。本方法1350は、第一のウィジェットによる第一のリソースの利用が、第二のウィジェットによる第二のリソースの利用と重複していることを検出するステップ1352、第一のリソースおよび第二のリソースを集約する第三のリソースを生成するステップ1354、第三のリソースを利用するために第一のウィジェットおよび第二のウィジェットを構成するステップ1356、もしくは、クライアントが第三のリソースをキャッシュできるように、第三のリソースを表出化するステップ1358を含みうる。
図14は、アプリケーションの多数のバージョンを設計、編集、構成、テストするか、または展開するための例示的な方法1400である。方法1400は、アプリケーションを受信するステップ1402、アプリケーションを生成するステップ1404、アプリケーションにウィジェットを発見するステップ1406、ウィジェットをアプリケーションに添加するステップ1408、ウィジェットを構成するステップ1410、アプリケーションの展開をシミュレーションするステップ1412、もしくは、アプリケーションの多数のバージョンを展開するステップ1414を含みうる。
[アーキテクチャ]
図15は、種々の例示的な実施形態が展開される可能性がある、クライアントサーバシステム1500を示すネットワーク図である。ネットワークシステム1502は、ネットワークベースの市場もしくは他の出版システムの例示的な形式において、一つ以上のクライアントに対して、ネットワーク1504(例えば、インターネットもしくはワイドエリアネットワーク(WAN))を介してサーバ側の機能を提供する。図15は、例えば、ウェブクライアント1506(例えば、Microsoft Corporation of Redmondによって開発されたInternet Explorerブラウザなどのブラウザ)および其々のクライアントマシン1510および1512上で実行するプログラマティッククライアント1508を示す。
アプリケーションプログラムインターフェイス(API)サーバ1514およびウェブサーバ1516は、一つ以上のアプリケーションサーバ1518に結合され、一つ以上のアプリケーションサーバ1518に対して、其々、プログラマティックなウェブインターフェイスを提供する。アプリケーションサーバ1518は、一つ以上の市場アプリケーション1520および支払アプリケーション1522を提供する。アプリケーションサーバ1518は、同様に、一つ以上のデータベース1526に対するアクセスを容易にする一つ以上のデータベースサーバ1524に対して結合されるように示される。
市場アプリケーション1520は、ネットワークシステム1502にアクセスするユーザに対して、多数の市場機能およびサービスを提供しうる。支払アプリケーション1522は、同様に、ユーザに対して、多数の支払サービスおよび機能を提供しうる。支払アプリケーション1522は、ユーザが口座に値(例えば、米国ドルなどの市場通貨もしくは“ポイント”のような専用通貨)を蓄積することを可能にし、その後、市場アプリケーション1520を介して入手可能な製品(例えば、商品もしくはサービス)と、累積値を変換してもよい。市場アプリケーション1520および支払アプリケーション1522は、図15においては、両者がネットワークシステム1502の一部を形成するように示されているが、別の実施形態においては、支払アプリケーション1522は、ネットワークシステム1502から分離された別個の支払サービスの一部を形成してもよいことを理解されたい。
さらには、図15に示されるシステム1500は、クライアントサーバアーキテクチャを使用しているが、本開示は、無論、このようなアーキテクチャに限定されることはなく、例えば、分散型、もしくはピアツーピアアーキテクチャシステムにも同様にアプリケーションを見出すことができる。種々の市場アプリケーション1520および支払アプリケーション1522は、スタンドアローンソフトウェアプログラムとしても実装することができ、スタンドアローンソフトウェアプログラムは、必ずしもネットワーク特性を有しない。
ウェブクライアント1506は、ウェブサーバ1516によってサポートされるウェブインターフェイスを介して、種々の市場アプリケーション1520および支払アプリケーション1522にアクセスする。同様に、プログラマティッククライアント1508は、APIサーバ1514によって提供されるプログラマティックインターフェイスを介して、市場アプリケーション1520および支払アプリケーション1522によって提供される種々のサービスおよび機能にアクセスする。プログラマティッククライアント1508は、例えば、販売者がオフラインでネットワークシステム1502上のリストを作成し管理することを可能にする、かつ、プログラマティッククライアント1508とネットワークシステム1502との間のバッチモード通信を実施するための、販売者アプリケーション(例えば、San Jose, CaliforniaのeBay Inc.によって開発されたTurboListerアプリケーション)であってもよい。
図15は、APIサーバ1514によって提供されるプログラマティックインターフェイスを介して、ネットワークシステム1502に対するプログラマティックアクセスを有する、第三者サーバマシン1530上で実行する、第三者アプリケーション1528をも示す。例えば、第三者アプリケーション1528は、ネットワークシステム1502から検索された情報を利用して、第三者によって提供されるウェブサイト上の一つ以上の特性もしくは機能をサポートしてもよい。第三者ウェブサイトは、例えば、ネットワークシステム1502の関連するアプリケーションによってサポートされる一つ以上の、販売促進、市場もしくは支払い機能を提供してもよい。
図16は、例示的な一実施形態において、ネットワークシステム1502の一部として提供される、多数のアプリケーション1520および1522を示すブロック図である。アプリケーション1520および1522は、サーバマシン間での通信を可能にするように連通した(図示されていない)専用の、もしくは共有されたサーバマシン上で提供されてもよい。アプリケーション1520および1522は、それ自体が(例えば、適切なインターフェイスを介して)お互いに、かつ種々のデータソースに対して連通し、アプリケーション1520および1522の間で情報を伝達することを可能にするか、または、アプリケーション1520および1522が共通のデータを共有して、アクセスするのを可能にする。アプリケーション1520および1522は、図15のデータベースサーバ1524を介して、一つ以上のデータベース1526にさらにアクセスしてもよい。
ネットワークシステム1502(図15)は、多数の発行、リスト化、および価格設定メカニズムを提供し、それによって、販売者は、販売用に商品もしくはサービスをリスト化(または、商品もしくはサービスに関する情報を発行)し、購入者は、そのような商品もしくはサービスを購入するために関心を示すか、または欲求を示すことが可能となり、価格は、商品もしくはサービスに関係する取引用に設定することができる。これを終了するために、図16においては、市場アプリケーション1520および支払アプリケーション1522は、少なくとも一つの発行アプリケーション1600および一つ以上のオークションアプリケーション1602を含むように示される。オークションアプリケーション1602は、オークション形式のリスト化および価格設定メカニズム(例えば、英語、オランダ語、Vickrey、中国語、ダブル、リバースオークション)をサポートする。種々のオークションアプリケーション1602は、このようなオークション形式のリスト化のサポートにおいて、それによって販売者がリストに関連する最低競売価格を明示する、最低競売価格特性、ならびに、それによって入札者が自動的な代理入札を実施する代理入札特性などの多数の特性を提供する可能性がある。
多数の定価アプリケーション1604は、定価リスト化形式(例えば、伝統的に分類された広告型リストもしくはカタログリスト)および買占め型リスト化をサポートする。具体的には、買占め型リスト化(例えば、San Jose, CaliforniaのeBay Inc.によって開発されたBuy-It-Now(BIN)技術を含む)は、オークション形式リスト化と合わせて提供され、オークションを介して売りに出されている商品もしくはサービスを、オークションの開始価格よりも典型的には高い定価で購入者が購入することを可能にしうる。
店舗アプリケーション1606は、販売者が“仮想”店舗内でのリストをグループ化することを可能にする。“仮想”店舗は、商標で示されてもよいし、さもなければ販売者によって販売者のために個人用にされてもよい。このような仮想店舗は、関連する販売者に対して特有かつ個人化された販売促進、奨励策および特性を提供してもよい。
評価アプリケーション1608は、ネットワークシステム1502を利用して取引するユーザが評価を創設し、構築し、維持することを可能にする。評価は、可能性のある取引相手に対して使用可能であり、その取引相手に対して発行される可能性がある。例えば、ネットワークシステム1502が個人対個人の取引をサポートしている場合を考えると、ユーザは、履歴を有しないか、または、それによって可能性のある取引相手の信頼性および信用が評価されうる他の参照情報を有してもよい。評価アプリケーション1608は、(例えば、他の取引相手によって提供されたフィードバックを介して)ユーザがネットワークシステム1502内の評価を時間外に創設することを可能にする。他の可能性のある取引相手は、その後、信用および信頼性を評価する目的でこのような評価を参照する可能性がある。
個人化アプリケーション1610は、ネットワークシステム1502のユーザが、ネットワークシステム1502を介する、彼らのインタラクションの種々の態様を個人化することを可能にする。例えば、ユーザは、適切な個人化アプリケーション1610を利用して、個人化された参照ページを生成し、その参照ページにおいて、ユーザが当事者である(もしくは当事者であった)取引に関する情報を閲覧してもよい。さらには、個人化アプリケーション1610は、ユーザがネットワークシステム1502および他の当事者を伴うインタラクションのリストおよび他の態様を個人化することを可能にしうる。
ネットワークシステム1502は、例えば、具体的な地理的地域に対してカスタマイズされた多数の市場をサポートしてもよい。ネットワークシステム1502のあるバージョンは、英国用にカスタマイズされ、別のバージョンのネットワークシステム1502は、米国用にカスタマイズされてもよい。これらのバージョンの各々は、独立した市場として動作してもよいし、または、共通する基礎を有する市場のカスタマイズされた(もしくは国際化された)提示であってもよい。ネットワークシステム1502は、したがって、既定の基準(例えば、地理的、人口統計学的もしくは市場基準)に従って、ネットワークシステム1502によって情報(および/もしくは情報の提示)をカスタマイズする、多数の国際化アプリケーション1612を含みうる。例えば、国際化アプリケーション1612は、ネットワークシステム1502によって操作され、かつ、其々のウェブサーバ1516(図15)を介してアクセス可能な、多数の地域的ウェブサイト用の情報のカスタマイズをサポートするために利用されてもよい。
ネットワークシステム1502のナビゲーションは、一つ以上のナビゲーションアプリケーション1614によって容易にされてもよい。できるだけ視覚的な情報を与え、魅力的になるように、ネットワークシステム1502を介して使用可能なリストを作成するために、市場アプリケーション1520および支払アプリケーション1522は、ユーザがリスト内に含める画像をアップロードするために利用しうる、一つ以上のイメージングアプリケーション1616を含みうる。イメージングアプリケーション1616は、可能性のある購入者に対して提示される画像ギャラリーなどの、一つ以上の販売促進特性をサポートしてもよい。例えば、販売者は、販売促進された品目用に、画像ギャラリー内に含まれる画像を有するために、追加料金を支払う可能性がある。
リスト生成アプリケーション1618は、販売者が、ネットワークシステム1502を介して取引を望んでいる商品もしくはサービスに関連するリストを簡便に作成することを可能にし、リスト管理アプリケーション1620は、販売者がこのようなリストを管理するのを可能にする。特に、特定の販売者が多数のリストを作成する、ならびに/または、発行する場合には、このようなリストの管理は課題を有する。リスト管理アプリケーション1620は、多数の特性(例えば、自動再リスト化、在庫レベルモニタなど)を提供し、このようなリストを管理する上で販売者を援助する。一つ以上のリスト化後管理アプリケーション1622は、リスト化後に典型的に生じる多数のアクティビティで販売者を援助する。例えば、一つ以上のオークションアプリケーション1602によって容易にされたオークションの完了によって、販売者は、特定の購入者に関するフィードバックを残すことを望む可能性がある。これを終了させるために、リスト化後管理アプリケーション1622は、一つ以上の評価アプリケーション1608に対するインターフェイスを提供し、販売者が、評価アプリケーション1608に対して多数の購入者に関するフィードバックを簡便に提供することを可能にする。
紛争解決アプリケーション1624は、取引の当事者間に生じる紛争が解決されうるメカニズムを提供する。例えば、紛争解決アプリケーション1624は、誘導手順を提供して、それによって当事者は、紛争を解決するために多数の動作を経るように誘導される。紛争が誘導された手順を介しても解決できなかった場合には、その紛争は、第三者調停者もしくは仲裁人へと段階的に引き上げられてもよい。
多数の詐欺防止アプリケーション1626は、ネットワークシステム1502内で詐欺の発生を減少させるために、詐欺検出および防止メカニズムを実施する。
メッセージングアプリケーション1628は、ネットワークシステム1502のユーザに対して、メッセージの生成および伝達を担当する。これらのメッセージは、例えば、ネットワークシステム1502において、リストの状態に関してユーザに忠告しうる(例えば、オークション過程の間、入札者に対して“アウトビッド”通告を提供する、または、ユーザに対して販売促進および広告宣伝情報を提供する)。其々のメッセージングアプリケーション1628は、ユーザに対してメッセージを伝達するため、多数のメッセージ伝達ネットワークおよびプラットフォームのうちのいかなるものでも利用してよい。例えば、メッセージングアプリケーション1628は、電子メール(eメール)、インスタントメッセージ(IM)、ショートメッセージサービス(SMS)、テキスト、ファクシミリ、もしくは回線(例えばインターネット)を介した音声(例えば、Voice over IP(VoIP))メッセージ、従来型電話サービス(POTS)、もしくはワイヤレス(例えば、モバイル、携帯電話、WiFi、WiMAX)ネットワークを伝達してもよい。
広告宣伝アプリケーション1630は、販売者がネットワークシステム1502を介した販売を増加させることを可能にするため、販売者が使用可能である種々の広告宣伝機能をサポートする。広告宣伝アプリケーション1630は、販売者によって呼び出され、販売者によって使用された広告宣伝戦術の成功を監視かつ追跡しうる種々の広告宣伝特性をも動作させる。
ネットワークシステム1502それ自体、もしくはネットワークシステム1502を介して取引する一つ以上の当事者は、一つ以上のロイヤルティ/販売促進アプリケーション1632によってサポートされる、ロイヤルティプログラムを動作させてもよい。例えば、購入者は、特定の販売者と確立した、ならびに/または完結した各取引のために、ロイヤルティもしくは販売促進ポイントを受け取り、累積したロイヤルティポイントが交換できることによって報酬を提供されてもよい。
[モジュール、コンポーネントおよび論理]
論理もしくは多数のコンポーネント、モジュールもしくはメカニズムを含むものとして、ここではある実施形態が記述される。モジュールは、ソフトウェアモジュール(例えば、マシンで読み出し可能な記憶媒体上で、もしくは伝達信号において具現化されるコード)もしくはハードウェアモジュールのいずれかを構成しうる。 ハードウェアモジュールは、ある動作を実施することが可能な具体的ユニットであって、ある方法で構成されるか、または配置されてもよい。例示的な実施形態においては、一つ以上のコンピュータシステム(例えば、スタンドアローン、クライアントもしくはサーバコンピュータシステム)もしくは、コンピュータシステム(例えば、プロセッサもしくはプロセッサの集合)の一つ以上のハードウェアモジュールは、本明細書で記述されるようなある動作を実施するために動作するハードウェアモジュールとして、ソフトウェアモジュールによって構成されてもよい。
種々の実施形態においては、ハードウェアモジュールは、機械的もしくは電子的に実装されてもよい。例えば、ハードウェアモジュールは、ある動作を実施するために(例えば、フィールドプログラマブルゲートアレイ(FPGA)もしくは特定用途向け集積回路(ASIC)などの専用プロセッサとして)恒久的に構成される専用回路もしくは論理を含みうる。ハードウェアモジュールは、ある動作を実施するためにソフトウェアによって一時的に構成される、プログラマブル論理もしくは回路(例えば、汎用プロセッサもしくは他のプログラマブルプロセッサ内に包含されたものとして)を含んでもよい。恒久的に構成される専用回路、もしくは一時的に構成される(例えば、ソフトウェアによって構成される)回路として、ハードウェアモジュールを機械的に実装するための判断は、コストおよび時間を考慮してなされてもよいことを理解されたい。
したがって、“ハードウェアモジュール“という語は、具体的なエンティティを包含し、本明細書で記述されたある方法で動作する、および/もしくはある動作を実施するために、物理的に構成されるか、恒久的に構成される(例えば、ハードワイヤードされる)か、一時的に構成される(例えば、プログラムされる)エンティティであると理解されるべきである。ハードウェアモジュールが一時的に構成される(例えば、プログラムされる)実施形態を考えると、ハードウェアモジュールの各々は、時間内のあらゆるインスタンスにおいて、構成されるか、またはインスタンス形成される必要がない。例えば、ハードウェアモジュールがソフトウェアを利用して構成された汎用プロセッサを含む場合、汎用プロセッサは、異なる時間において、其々異なるハードウェアモジュールとして構成されてもよい。ソフトウェアは、したがって、プロセッサを構成し、期間のうちのあるインスタンスにおいては、特定のハードウェアモジュールを構成し、期間のうちの異なるインスタンスにおいては、異なるハードウェアモジュールを構成する。
ハードウェアモジュールは、他のハードウェアモジュールへと情報を提供でき、かつ、他のハードウェアモジュールから情報を受信できる。したがって、記述されるハードウェアモジュールは、連通しているものとみなされてもよい。このような多数のハードウェアモジュールが同期間に存在する場合、通信は、ハードウェアモジュールを接続する信号伝達を介して(例えば、適切な回路およびバスを介して)達成されうる。多数のハードウェアモジュールが異なる時間に構成されるかまたは、インスタンス形成される実施形態においては、このようなハードウェアモジュール間の通信は、例えば、多数のハードウェアモジュールがアクセスを有するメモリ構造における情報の格納および検索を介して達成されてもよい。例えば、あるハードウェアモジュールは、ある動作を実施して、連通されたメモリデバイスにその動作の出力を格納しうる。さらに別のハードウェアモジュールは、その後、もっと遅い時刻に、格納された出力を検索して処理するためにメモリデバイスにアクセスしてもよい。ハードウェアモジュールは、入力もしくは出力デバイスとの通信を開始してもよいし、リソース(例えば、情報の集合)上で動作できる。
本明細書で記述される例示的な方法の種々の動作は、関連動作を実施するために、一時的に構成される(例えばソフトウェアによって)か、または恒久的に構成される一つ以上のプロセッサによって、少なくとも部分的に実施されてもよい。一時的に構成されようが、または恒久的に構成されようが、このようなプロセッサは、一つ以上の動作もしくは機能を実施するために動作する、プロセッサ実装されたモジュールを構成してもよい。本明細書で言及されるモジュールは、例示的な幾つかの実施形態においては、プロセッサ実装されたモジュールを含みうる。
同様に、本明細書で記述される方法は、少なくても部分的にプロセッサ実装されてもよい。例えば、方法の動作のうち少なくとも幾つかは、一つ以上のプロセッサもしくはプロセッサ実装されたモジュールによって実施されてもよい。ある動作の性能は、一つ以上のプロセッサ間で分散され、単一のマシン内に存在するだけではなく、多数のマシンに配置されてもよい。例示的な幾つかの実施形態においては、プロセッサもしくは複数のプロセッサは、単一の位置(例えば、家庭環境、オフィス環境もしくはサーバーファームとして)に配置されてもよいし、他の実施形態においては、プロセッサは、多数の位置に分散されてもよい。
一つ以上のプロセッサは、“クラウドコンピューティング”環境もしくは“サービスとしてのソフトウェア”(SaaS)として、関連する動作の性能をサポートするように動作してもよい。例えば、少なくとも幾つかの動作は、コンピュータのグループ(プロセッサを含むマシンの実施例として)によって実施されてもよく、これらの動作は、ネットワーク(例えば、インターネット)を介して、ならびに、一つ以上の適切なインターフェイス(例えば、API)を介してアクセスすることが可能である。
[電子装置およびシステム]
例示的な実施形態は、デジタル電子回路もしくはコンピュータハードウェア、ファームウェア、ソフトウェア、もしくはそれらの組み合わせとして実装されてもよい。例示的な実施形態は、データ処理装置(例えば、プログラマブルプロセッサ、コンピュータもしくは多数のコンピュータ)による実行のため、またはその動作の制御のために、例えば、マシンで読み出し可能な記憶媒体内のコンピュータプログラムプロダクト(例えば、情報キャリア内で具体的に具現化されたコンピュータプログラム)を利用して実装されてもよい。
コンピュータプログラムは、コンパイルされたか、もしくは翻訳された言語を含む、プログラミング言語のうちのあらゆる形式で記述することが可能であり、スタンドアローンプログラムもしくはモジュール、サブルーチン、もしくはコンピューティング環境における利用に適切な他のユニットを含むあらゆる形式で展開することができる。コンピュータプログラムは、一つのコンピュータもしくは多数のコンピュータ上で展開し、実行することができる。多数のコンピュータは、単一位置にあるか、または多数の位置に分散され、通信ネットワークで相互接続される。
例示的な実施形態においては、動作は、コンピュータプログラムを実行する一つ以上のプログラマブルプロセッサによって実施され、入力データを操作し、出力を生成することによって機能を実施する。方法の動作もまた、例えば、フィールドプログラマブルゲートアレイ(FPGA)もしくは特定用途向け集積回路(ASIC)などの専用論理回路によって実施することができ、例示的な実施形態の装置は、専用論理回路として実装されてもよい。
コンピューティングシステムは、クライアントおよびサーバを含みうる。クライアントおよびサーバは、概して、お互いから遠隔の位置にあり、典型的には通信ネットワークを介して相互作用する。クライアントおよびサーバの関係は、其々のコンピュータ上で実行し、かつ、クライアントサーバ関係をお互いに有するコンピュータプログラムによって生じる。プログラマブルコンピューティングシステムを展開する実施形態においては、ハードウェアおよびソフトウェアアーキテクチャの双方の考慮が必要であることを理解されたい。特に、ある機能を恒久的に構成されたハードウェア(例えば、ASIC)で実装するか、一時的に構成されたハードウェア(例えば、ソフトウェアおよびプログラマブルプロセッサの組み合わせ)で実装するか、または、恒久的に構成されたハードウェアと一時的に構成されたハードウェアの組み合わせ(例えば、ソフトウェアおよびプログラマブルプロセッサの組み合わせ)で実装するかは、設計上の選択であってもよいことを理解されたい。以下に記述されるのは、種々の例示的な実施形態において展開されうる、ハードウェア(例えば、マシン)およびソフトウェアアーキテクチャである。
[例示的なマシンアーキテクチャおよびマシンで読み出し可能な記憶媒体]
図17は、本明細書で議論された方法論のうちの如何なる一つ以上をマシンに実施させるための命令が実行されうるコンピュータシステム1700の例示的な形式におけるマシンのブロック図である。別の実施形態においては、マシンは、スタンドアローンデバイスとして動作するか、または他のマシンに対して接続され(ネットワークを介して接続され)てもよい。ネットワーク接続された配置においては、マシンは、サーバクライアントネットワーク環境におけるサーバもしくはクライアントマシンの容量で動作してもよいし、または、ピアツーピア(もしくは分散)ネットワーク環境におけるピアマシンとして動作してもよい。マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、携帯電話、ウェブ設備、ネットワークルータ、スイッチもしくはブリッジ、または、そのマシンによってなされる動作を指定する命令を(シーケンシャルか或いはその逆に)実行することが可能なあらゆるマシンでありうる。さらには、単一のマシンのみが図示されているが、“マシン”という語は、本明細書で議論された方法論のうちのあらゆる一つ以上を実施するための一組(もしくは複数組)の命令を個々に、または共同して実行する、あらゆるマシンの集合として解釈されるべきである。
例示的なコンピュータシステム1700は、プロセッサ1702(例えば、中央処理装置(CPU)、グラフィック処理ユニット(GPU)もしくはその両方)、メインメモリ1704、スタティックメモリ1706を含み、それらはお互いにバス1708を介して通信する。コンピュータシステム1700は、ビデオディスプレイユニット1710(例えば、液晶ディスプレイ(LCD)もしくはブラウン管(CRT))をさらに含んでもよい。コンピュータシステム1700は、英数字入力デバイス1712(例えば、キーボード)、ユーザインターフェイス(UI)ナビゲーション(もしくはカーソル制御)デバイス1714(例えば、マウス)、ディスクドライブユニット1716、信号生成デバイス1718(例えば、スピーカ)およびネットワークインターフェイスデバイス1720をも含む。
[マシンで読み出し可能な記憶媒体]
ディスクドライブユニット1716は、本明細書で記述された方法論もしくは機能のうちの如何なる一つ以上を具現化するか、またはそれによって利用される、一つ以上の組の命令1724およびデータ構造(例えば、ソフトウェア)が格納された、マシンで読み出し可能な記憶媒体1722を含む。命令1724は、コンピュータシステム1700によるそれらの実行中に、メインメモリ1704および/もしくはプロセッサ1702内に完全に、または少なくとも部分的に存在し、メインメモリ1704およびプロセッサ1702もまた、マシンで読み出し可能な記憶媒体を構成する。命令1724は、スタティックメモリ1706内にもまた、完全に、または少なくとも部分的に存在してもよい。
マシンで読み出し可能な記憶媒体1722は、例示的な一実施形態においては、単一の記憶媒体として示されているが、“マシンで読み出し可能な記憶媒体”という語は、一つ以上の命令1724もしくはデータ構造を格納する単一の記憶媒体もしくは複数の記憶媒体(例えば、集中型もしくは分散型データベース、ならびに/または、キャッシュおよびサーバ)を含んでもよい。“マシンで読み出し可能な記憶媒体”という語は、マシンによって実行するための、本実施形態の方法論のうちのあらゆる一つ以上をマシンに実施させる命令を格納し、エンコードし、伝達することが可能な具体的なあらゆる媒体、または、このような命令に関連するか、このような命令によって利用されるデータ構造を格納し、エンコードし、伝達することが可能な具体的なあらゆる媒体を含むものとして解釈されるべきである。“マシンで読み出し可能な記憶媒体”という語は、したがって、ソリッドステートメモリ、光学および磁気記憶媒体を含むものとして解釈されるべきであるが、そのいずれにも限定はされない。マシンで読み出し可能な記憶媒体の具体的な実施例は、不揮発性メモリを含む。例えば、不揮発性メモリは、例示の目的のため、消去可能プログラマブルリードオンリーメモリ(EPROM)、電子的に消去可能なプログラマブルリードオンリーメモリ(EEPROM)、およびフラッシュメモリデバイスなどの半導体メモリデバイス;内部ハードディスクおよびリムーバブルディスクなどの磁気ディスク;光磁気ディスク;ならびにコンパクトディスクリードオンリーメモリ(CD-ROM)、デジタル多目的ディスク(もしくはデジタルビデオディスク)リードオンリーメモリ(DVD-ROM)ディスクを含む。
[伝送媒体]
命令1724は、伝送媒体を利用する通信ネットワーク1726を介してさらに伝送されるか、または受信されてもよい。命令1724は、ネットワークインターフェイスデバイス1720および多数の既知の転送プロトコル(例えば、ハイパーテキスト転送プロトコルもしくはHTTP)のうちのいずれかを利用して伝送されてもよい。通信ネットワークの実施例は、ローカルエリアネットワーク(“LAN”)、ワイドエリアネットワーク(“WAN”)、インターネット、携帯電話ネットワーク、従来型電話サービス(POTS)ネットワーク、およびワイヤレスデータネットワーク(例えば、WiFi、WiMaxネットワーク)を含む。“伝送媒体”という語は、マシンによる実行のための命令を格納、エンコード、または伝達することが可能なあらゆる無形媒体を含むものとして解釈されるべきであり、このようなソフトウェアの通信を容易にするためのデジタルもしくはアナログ通信信号もしくは他の無形媒体を含む。
一実施形態は、具体的な例示的実施形態を参照して記述されてきたが、本開示の広範な趣旨および範囲を逸脱することなく、これらの実施形態に対して種々の改変および変更がなされてもよいことは明らかである。したがって、明細書および図面は、限定する意味ではなく、例示的な意味としてみなされるべきである。本明細書の一部を形成する付随の図面は、本発明の主題が実施される可能性のある具体的な実施形態を、限定する目的ではなく例示する目的で、示すものである。示された実施形態は、当業者が本明細書で開示された教示を実践することが可能なほど、十分詳細に記述される。示された実施形態から他の実施形態が利用され、派生する可能性があり、構造的および論理的置換ならびに変更が本開示の範囲から逸脱することなく加えられてもよい。したがって、この詳細な説明は、限定する意味で解釈されるべきではなく、種々の実施形態の範囲は、添付の請求項およびその請求項が権利を有する均等物の全範囲によってのみ定義される。
本発明の主題のこのような実施形態が、個々に、および/もしくは集合的に、簡便のため、単に“発明”という用語によって、本明細書で言及されているが、実際に一つ以上の発明が開示される場合には、如何なる単一の発明もしくは発明の概念へと、本出願の範囲を故意に限定することを意図するものではない。したがって、本明細書では具体的な実施形態が示され、かつ記述されてきたが、同一の目的を達すると推定されるあらゆる配置が、示された具体的実施形態に対して置換されてもよいことを理解されたい。本開示は、種々の実施形態のあらゆる、および全ての適応もしくは変形を包含することを意図される。上述された実施形態および他の実施形態の組み合わせは、本明細書では特に記述されていないが、上記の説明を検討することによって当業者にとって明らかであろう。

Claims (20)

  1. アプリケーションサーバ上で実行されるアプリケーションに関連する呼び出しオプティマイザを含むシステムにおいて、
    前記アプリケーションは、複数のコンポーネントを含み、
    前記呼び出しオプティマイザは、
    第一のウェブサービス呼び出しおよび第二のウェブサービス呼び出しを遮断する遮断モジュールであって、前記第一のウェブサービス呼び出しは、前記複数のコンポーネントのうちの第一のコンポーネントによってウェブサービスに対してなされ、前記第二のウェブサービス呼び出しは、前記複数のコンポーネントのうちの第二のコンポーネントによって前記ウェブサービスに対してなされる、遮断モジュールと、
    前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しを第三のウェブサービス呼び出しへと統合する統合モジュールと、
    を含む、
    ことを特徴とするシステム。
  2. 前記統合モジュールは、
    前記第一のウェブサービス呼び出しの複数の要求パラメータを、前記第三のウェブサービス呼び出しの複数の要求パラメータへと統合し、
    前記第ニのウェブサービス呼び出しの複数の要求パラメータを、前記第三のウェブサービス呼び出しの前記複数の要求パラメータへと統合し、
    前記第三のウェブサービス呼び出しを実行する、
    ように構成される、
    ことを特徴とする請求項1に記載のシステム。
  3. 前記統合モジュールは、
    前記第三のウェブサービス呼び出しの結果を受信し、
    前記第一のウェブサービス呼び出しに対応するものとして、前記結果の第一部分を識別し、
    前記第二のウェブサービス呼び出しに対応するものとして、前記結果の第二部分を識別し、
    前記第一のウェブサービス呼び出しに対する応答として、前記複数のコンポーネントのうちの前記第一のコンポーネントへと、前記結果の前記第一部分を提供し、
    前記第二のウェブサービス呼び出しに対する応答として、前記複数のコンポーネントのうちの前記第二のコンポーネントへと、前記結果の前記第二部分を提供する、
    ようにさらに構成される、
    ことを特徴とする請求項2に記載のシステム。
  4. 前記アプリケーションに関連するリソースアグリゲータをさらに含み、前記リソースアグリゲータは、
    第一のリソースが第二のリソースと重複することを識別する識別モジュールであって、前記第一のリソースは、前記複数のコンポーネントのうちの前記第一のコンポーネントによって利用され、前記第二のリソースは、前記複数のコンポーネントのうちの前記第二のコンポーネントによって利用される、識別モジュールと、
    前記識別に応じて、前記第一のリソースおよび前記第二のリソースを第三のリソースへと集約する集約モジュールと、
    前記集約に応じて、前記第三のリソースを利用するために、前記アプリケーションをアップデートするアップデートモジュールと、
    を含む、
    ことを特徴とする請求項1に記載のシステム。
  5. 前記第一のリソースは、カスケーディングスタイルシートの第一バージョンであり、前記第二のリソースは、前記カスケーディングスタイルシートの第二バージョンである、
    ことを特徴とする請求項4に記載のシステム。
  6. 前記アプリケーションサーバの第一のクライアントをさらに含み、前記第一のクライアントは、前記アプリケーションサーバ上の前記アプリケーションの展開を前記第一のクライアント上でシミュレーションするシミュレーティングモジュールを含み、前記シミュレーティングモジュールは、前記アプリケーションサーバと通信する代わりに、前記クライアントにインストールされた構成要素と通信することが可能である、
    ことを特徴とする請求項1に記載のシステム。
  7. 前記第一のクライアントは、前記アプリケーションサーバ上の前記アプリケーションの複数のバージョンを実行可能とする際に、前記複数のバージョンのうちの第一のバージョンは、第二のクライアントに対して適応され、前記複数のバージョンのうちの第二のバージョンは、第三のクライアントに対して適応され、前記第二のクライアントは、モバイルデバイス上で実行され、前記第三のクライアントは、パーソナルコンピュータ上で実行される、
    ことを特徴とする請求項6に記載のシステム。
  8. アプリケーションサーバ上で実行されるアプリケーションに関連する呼び出しオプティマイザを含むシステムにおいて、
    前記アプリケーションは、複数のコンポーネントを含み、
    前記呼び出しオプティマイザは、
    第一のウェブサービス呼び出しおよび第二のウェブサービス呼び出しを遮断する遮断モジュールであって、前記第一のウェブサービス呼び出しは、前記複数のコンポーネントのうちの第一のコンポーネントによってウェブサービスに対してなされ、前記第二のウェブサービス呼び出しは、前記複数のコンポーネントのうちの第二のコンポーネントによって前記ウェブサービスに対してなされる、遮断モジュールと、
    複数の最適化のうちの一つを選択する最適化選択モジュールであって、前記複数の最適化は、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しの前記ウェブサービスに対する、バッチ呼び出しとしての第三のウェブサービス呼び出しへの統合を含む、最適化選択モジュールと、
    前記複数の最適化のうちの前記一つとしての、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しの前記第三のウェブサービス呼び出しへの前記統合の前記選択に応じて、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しを前記第三のウェブサービス呼び出しへと、バッチ呼び出しとして統合する統合モジュールと、
    を含む、
    ことを特徴とするシステム。
  9. 前記複数の最適化は、前記ウェブサービスに対する第四のウェブサービス呼び出しの実行を含み、前記第四のウェブサービス呼び出しは、バッチ呼び出しであり、前記バッチ呼び出しの結果の第一部分は、前記第一のウェブサービス呼び出しに対する応答として利用可能であり、前記バッチ呼び出しの前記結果の第二部分は、前記第二のウェブサービス呼び出しに対する応答として利用可能であり、
    前記システムは、前記複数の最適化のうちの前記一つとしての前記第四のウェブサービス呼び出しの前記実行の選択に応じて、
    前記第四のウェブサービス呼び出しを実行し、
    前記第一のウェブサービス呼び出しに対する前記応答として、前記複数のコンポーネントのうちの前記第一のコンポーネントへと、前記結果の前記第一部分を提供し、
    前記第二のウェブサービス呼び出しに対する前記応答として、前記複数のコンポーネントのうちの前記第二のコンポーネントへと、前記結果の前記第二部分を提供する
    バッチ処理モジュールをさらに含む、
    ことを特徴とする請求項8に記載のシステム。
  10. 前記複数の最適化のうちの前記一つとしての前記第四のウェブサービス呼び出しの前記実行の前記選択は、前記ウェブサービスが前記第四のウェブサービス呼び出しに対応するインターフェイスを提供したという判断に基づく、
    ことを特徴とする請求項9に記載のシステム。
  11. 前記複数の最適化のうちの前記一つとしての前記第四のウェブサービス呼び出しの前記実行の前記選択は、前記第四のウェブサービス呼び出しの前記実行が、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しの前記第三のウェブサービス呼び出しへの前記統合よりも時間がかからないという判断に基づく、
    ことを特徴とする請求項9に記載のシステム。
  12. 前記複数の最適化は、前記第一のウェブサービス呼び出しが実行される必要がないように、キャッシュからの前記第一のウェブサービス呼び出しに対する応答を提供することを含み、
    前記システムは、前記複数の最適化のうちの前記一つとして、前記キャッシュからの前記第一のウェブサービス呼び出しに対する前記応答を前記提供することの選択に応じて、前記キャッシュからの前記第一のウェブサービス呼び出しに対する前記応答を提供するキャッシングモジュールをさらに含む、
    ことを特徴とする請求項8に記載のシステム。
  13. 前記複数の最適化のうちの前記一つとして、前記キャッシュからの前記第一のウェブサービス呼び出しに対する前記応答を前記提供することを前記選択することは、前記第一のウェブサービス呼び出しが第のウェブサービス呼び出しと同一であるという判断に基づいており、前記第のウェブサービス呼び出しの実行は、結果として前記応答の受信をもたらす、
    ことを特徴とする請求項12に記載のシステム。
  14. 前記複数の最適化は、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しをパラレルに実行することを含み、
    前記システムは、前記複数の最適化のうちの前記一つとして、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しをパラレルに前記実行することを選択するのに応じて、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しをパラレルに実行する実行モジュールをさらに含む、
    ことを特徴とする請求項8に記載のシステム。
  15. 前記複数の最適化のうちの前記一つとして、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しをパラレルに前記実行することを前記選択することは、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しを前記第三のウェブサービス呼び出しへと前記統合するよりも、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しをパラレルに実行することは時間がかからないという判断に基づく、
    ことを特徴とする請求項14に記載のシステム。
  16. アプリケーションサーバ上で実行されるアプリケーションに関連する呼び出しオプティマイザが行なう方法であって、
    前記呼び出しオプティマイザが行なう方法は、
    第一のウェブサービス呼び出しおよび第二のウェブサービス呼び出しを受信するステップであって、前記第一のウェブサービス呼び出しは、アプリケーションサーバ上で実行されるアプリケーションに含まれる複数のコンポーネントのうちの第一のコンポーネントによってウェブサービスに対してなされ、前記第二のウェブサービス呼び出しは、前記複数のコンポーネントのうちの第二のコンポーネントによって前記ウェブサービスに対してなされる、ステップと、
    複数の最適化のうちの一つを選択するステップであって、前記複数の最適化は、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しを、前記ウェブサービスに対する第三のウェブサービス呼び出しへと統合するステップを含む、ステップと、
    前記複数の最適化のうちの前記一つとして、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しを前記第三のウェブサービス呼び出しへと前記統合するステップを前記選択するステップに応じて、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しを前記第三のウェブサービス呼び出しへと統合するステップと、
    を含む、
    ことを特徴とする方法。
  17. 前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しを前記第三のウェブサービス呼び出しへと前記統合するステップは、
    前記第一のウェブサービス呼び出しの複数の要求パラメータを、前記第三のウェブサービス呼び出しの複数の要求パラメータへと統合するステップと、
    前記第二のウェブサービス呼び出しの複数の要求パラメータを、前記第三のウェブサービス呼び出しの前記複数の要求パラメータへと統合するステップと、
    前記第三のウェブサービス呼び出しを実行するステップと、
    を含む、
    ことを特徴とする請求項16に記載の方法。
  18. 前記複数の最適化は、前記ウェブサービスに対して第四のウェブサービス呼び出しを実行するステップを含み、前記第四のウェブサービス呼び出しはバッチ呼び出しであり、前記バッチ呼び出しの結果の第一部分は、前記第一のウェブサービス呼び出しに対する応答として利用可能であり、前記バッチ呼び出しの前記結果の第二部分は、前記第二のウェブサービス呼び出しに対する応答として利用可能であり、
    前記方法は、前記複数の最適化のうちの前記一つとしての前記第四のウェブサービス呼び出しの前記実行を選択するステップに応じて、
    前記第四のウェブサービス呼び出しを実行するステップと、
    前記第一のウェブサービス呼び出しに対する前記応答として、前記複数のコンポーネントのうちの前記第一のコンポーネントへと、前記結果の前記第一部分を提供するステップと、
    前記第二のウェブサービス呼び出しに対する前記応答として、前記複数のコンポーネントのうちの前記第二のコンポーネントへと、前記結果の前記第二部分を提供するステップと、
    をさらに含む、
    ことを特徴とする請求項16に記載の方法。
  19. 第一のウェブサービス呼び出しおよび第二のウェブサービス呼び出しを受信するステップであって、前記第一のウェブサービス呼び出しは、アプリケーションサーバ上で実行されるアプリケーションに含まれる複数のコンポーネントのうちの第一のコンポーネントによってウェブサービスに対してなされ、前記第二のウェブサービス呼び出しは、前記複数のコンポーネントのうちの第二のコンポーネントによって前記ウェブサービスに対してなされる、ステップと、
    複数の最適化のうちの一つを選択するステップであって、前記複数の最適化は、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しを前記ウェブサービスに対する第三のウェブサービス呼び出しへと統合するステップを含む、ステップと、
    前記複数の最適化のうちの前記一つとして、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しを前記第三のウェブサービス呼び出しへと前記統合するステップを前記選択するステップに応じて、前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しを前記第三のウェブサービス呼び出しへと統合するステップと、
    を含む方法を、マシンの一つ以上のプロセッサによって実行されたとき、前記マシンに実施させる命令を含む、
    ことを特徴とするマシンで読み出し可能な記憶媒体。
  20. 前記第一のウェブサービス呼び出しおよび前記第二のウェブサービス呼び出しを前記第三のウェブサービス呼び出しへと前記統合するステップは、
    前記第一のウェブサービス呼び出しの複数の要求パラメータを、前記第三のウェブサービス呼び出しの複数の要求パラメータへと統合するステップと、
    前記第二のウェブサービス呼び出しの複数の要求パラメータを、前記第三のウェブサービス呼び出しの前記複数の要求パラメータへと統合するステップと、
    前記第三のウェブサービス呼び出しを実行するステップと、
    を含む、
    ことを特徴とする請求項19に記載のマシンで読み出し可能な記憶媒体。
JP2014137315A 2010-02-05 2014-07-03 ウィジェットフレームワーク、リアルタイムサービス統合およびリアルタイムリソース集約 Active JP5809328B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US30208210P 2010-02-05 2010-02-05
US61/302,082 2010-02-05
US12/754,564 US9367371B2 (en) 2010-02-05 2010-04-05 Widget framework, real-time service orchestration, and real-time resource aggregation
US12/754,564 2010-04-05

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012551993A Division JP5582428B2 (ja) 2010-02-05 2011-01-21 ウィジェットフレームワーク、リアルタイムサービス統合およびリアルタイムリソース集約

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015178085A Division JP2016026348A (ja) 2010-02-05 2015-09-10 ウィジェットフレームワーク、リアルタイムサービス統合およびリアルタイムリソース集約

Publications (2)

Publication Number Publication Date
JP2014211898A true JP2014211898A (ja) 2014-11-13
JP5809328B2 JP5809328B2 (ja) 2015-11-10

Family

ID=44354666

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2012551993A Active JP5582428B2 (ja) 2010-02-05 2011-01-21 ウィジェットフレームワーク、リアルタイムサービス統合およびリアルタイムリソース集約
JP2014137315A Active JP5809328B2 (ja) 2010-02-05 2014-07-03 ウィジェットフレームワーク、リアルタイムサービス統合およびリアルタイムリソース集約
JP2015178085A Pending JP2016026348A (ja) 2010-02-05 2015-09-10 ウィジェットフレームワーク、リアルタイムサービス統合およびリアルタイムリソース集約

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2012551993A Active JP5582428B2 (ja) 2010-02-05 2011-01-21 ウィジェットフレームワーク、リアルタイムサービス統合およびリアルタイムリソース集約

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2015178085A Pending JP2016026348A (ja) 2010-02-05 2015-09-10 ウィジェットフレームワーク、リアルタイムサービス統合およびリアルタイムリソース集約

Country Status (7)

Country Link
US (2) US9367371B2 (ja)
EP (1) EP2531926A4 (ja)
JP (3) JP5582428B2 (ja)
KR (3) KR101628433B1 (ja)
AU (1) AU2011213189B2 (ja)
CA (1) CA2788899C (ja)
WO (1) WO2011097078A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9367371B2 (en) 2010-02-05 2016-06-14 Paypal, Inc. Widget framework, real-time service orchestration, and real-time resource aggregation
US9781049B2 (en) * 2010-05-07 2017-10-03 Salesforce.Com, Inc. Resolving information in a database environment
US9069905B2 (en) 2012-07-16 2015-06-30 Microsoft Technology Licensing, Llc Tool-based testing for composited systems
US9621635B1 (en) * 2012-07-31 2017-04-11 Niantic, Inc. Using side channels in remote procedure calls to return information in an interactive environment
US9189619B2 (en) 2012-11-13 2015-11-17 International Business Machines Corporation Runtime based application security and regulatory compliance in cloud environment
US9195294B2 (en) 2012-11-13 2015-11-24 International Business Machines Corporation Cooperatively managing enforcement of energy related policies between virtual machine and application runtime
CN104252412B (zh) * 2013-06-28 2017-12-29 国际商业机器公司 用于css冲突的自动检测的方法和系统
US9760345B2 (en) * 2014-07-26 2017-09-12 Alfonso Diez Recursive ontology-based systems engineering
US9398081B2 (en) * 2014-08-20 2016-07-19 Futurewei Technologies, Inc. Automating client development for network APIs
US10579354B2 (en) * 2015-03-10 2020-03-03 Kordata, Llc Method and system for rapid deployment and execution of customized functionality across multiple distinct platforms
US9900380B2 (en) 2015-07-14 2018-02-20 Bank Of America Corporation Common function modules for use with multiple applications
US10802660B1 (en) * 2015-07-29 2020-10-13 Intuit Inc. Metadata-driven binding of platform-agnostic content to platform-specific user-interface elements
US9672140B1 (en) * 2015-12-28 2017-06-06 Sap Se Processing special requests at dedicated application containers
US11010024B2 (en) 2018-03-29 2021-05-18 Cerner Innovation, Inc. Intelligent user interface and application rendering
US11379497B2 (en) * 2018-06-21 2022-07-05 At&T Intellectual Property I, L.P. Data model database
WO2021101546A1 (en) * 2019-11-21 2021-05-27 Schlumberger Technology Corporation Widget delivery workflow system and method
US10977059B1 (en) * 2020-03-25 2021-04-13 Red Hat, Inc. Implementing object validation, web request handling, object relational mapping, or messaging via direct bytecode generation
CN114237413A (zh) * 2020-09-09 2022-03-25 华为技术有限公司 处理交互事件的方法和装置
US11816456B2 (en) * 2020-11-16 2023-11-14 Microsoft Technology Licensing, Llc Notebook for navigating code using machine learning and flow analysis

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070240041A1 (en) * 2006-04-05 2007-10-11 Larry Pearson Methods and apparatus for generating an aggregated cascading style sheet
JP2008511928A (ja) * 2004-08-31 2008-04-17 インターナショナル・ビジネス・マシーンズ・コーポレーション メタデータの管理
US20080313659A1 (en) * 2007-06-15 2008-12-18 Microsoft Corporation Page and device-optimized cascading style sheets
WO2009120440A1 (en) * 2008-03-27 2009-10-01 Amazon Technogies, Inc. Dynamic image composition
JP2009290729A (ja) * 2008-05-30 2009-12-10 Ricoh Co Ltd 画像形成装置、情報処理方法、及びプログラム

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325524A (en) * 1989-04-06 1994-06-28 Digital Equipment Corporation Locating mobile objects in a distributed computer system
US5649103A (en) 1995-07-13 1997-07-15 Cabletron Systems, Inc. Method and apparatus for managing multiple server requests and collating reponses
US6321274B1 (en) * 1996-06-28 2001-11-20 Microsoft Corporation Multiple procedure calls in a single request
US6427234B1 (en) * 1998-06-11 2002-07-30 University Of Washington System and method for performing selective dynamic compilation using run-time information
JP2000099332A (ja) * 1998-09-25 2000-04-07 Hitachi Ltd 遠隔手続き呼び出し最適化方法とこれを用いたプログラム実行方法
US7281268B2 (en) 1999-11-14 2007-10-09 Mcafee, Inc. System, method and computer program product for detection of unwanted processes
US20020078103A1 (en) 2000-12-20 2002-06-20 Gorman William Phillip Wizard development kit
US7110525B1 (en) * 2001-06-25 2006-09-19 Toby Heller Agent training sensitive call routing system
US8069225B2 (en) 2003-04-14 2011-11-29 Riverbed Technology, Inc. Transparent client-server transaction accelerator
CN1799026A (zh) * 2003-06-05 2006-07-05 瑞士再保险公司 用于产生一致的设备无关图形用户界面的方法和终端
WO2005009412A1 (en) * 2003-07-24 2005-02-03 Wockhardt Limited Oral compositions for treatment of diseases
US20050080930A1 (en) 2003-10-14 2005-04-14 International Business Machines Corporation Method and apparatus for processing service requests in a service-oriented architecture
US7421700B2 (en) * 2004-03-15 2008-09-02 Microsoft Corporation Interprocess buffer management using a buffer delay time
JP4163670B2 (ja) 2004-05-10 2008-10-08 株式会社ソニー・コンピュータエンタテインメント ディスク装置
JP4280703B2 (ja) 2004-11-09 2009-06-17 日立オムロンターミナルソリューションズ株式会社 プロセス間通信
US7706895B2 (en) * 2005-02-25 2010-04-27 Rockwell Automation Technologies, Inc. Reliable messaging instruction
US7457797B2 (en) * 2005-03-30 2008-11-25 International Business Machines Corporation Method and apparatus for associating logical conditions with the re-use of a database query execution strategy
US7912810B2 (en) * 2005-06-28 2011-03-22 Sap Ag Methods, systems and computer program products for integrating carrier services into an enterprise
US20070291776A1 (en) * 2005-07-28 2007-12-20 Dilithium Networks, Inc. Method and apparatus for billing for media during communications in channel-based media telecommunication protocols
US7890955B2 (en) * 2006-04-03 2011-02-15 Microsoft Corporation Policy based message aggregation framework
CN101064960B (zh) * 2006-04-27 2010-12-08 华为技术有限公司 一种对语音呼叫连续锚定进行优化的方法、系统及装置
US9074364B2 (en) * 2006-06-17 2015-07-07 Rotating High Towers S.A. Rotatable building structure
US20080228920A1 (en) * 2007-03-16 2008-09-18 Souders Steven K System and method for resource aggregation and distribution
US8341595B2 (en) * 2007-05-30 2012-12-25 Roam Data Inc System and method for developing rich internet applications for remote computing devices
US8156164B2 (en) * 2007-07-11 2012-04-10 International Business Machines Corporation Concurrent directory update in a cluster file system
DE602007007941D1 (de) * 2007-08-13 2010-09-02 Accenture Global Services Gmbh Architektur für Dienstanfrageausführung für einen Kommunikationsdienstanbieter
US8285813B1 (en) * 2007-12-05 2012-10-09 Appcelerator, Inc. System and method for emulating different user agents on a server
US8176205B2 (en) 2008-02-14 2012-05-08 Research In Motion Limited Method, server and system for optimizing HTML-based content
JP2009205264A (ja) 2008-02-26 2009-09-10 Nippon Telegr & Teleph Corp <Ntt> ウェブサービス要求処理装置、ウェブサービス要求処理方法、及びウェブサービス要求処理システム
NZ566291A (en) * 2008-02-27 2008-12-24 Actionthis Ltd Methods and devices for post processing rendered web pages and handling requests of post processed web pages
US9110685B2 (en) 2008-03-25 2015-08-18 Qualcomm, Incorporated Apparatus and methods for managing widgets in a wireless communication environment
US8234622B2 (en) 2008-03-31 2012-07-31 Microsoft Corporation Cross platform compositional widgets
CN101572598B (zh) 2008-04-28 2013-03-06 国际商业机器公司 用于可靠的快速集成的方法和装置
US8990289B2 (en) * 2009-02-27 2015-03-24 Oracle America, Inc. Server based framework for improving Ajax performance
US8572554B2 (en) * 2009-07-17 2013-10-29 Ebay Inc. Method and system for integrating Java and JavaScript technologies
US9367371B2 (en) 2010-02-05 2016-06-14 Paypal, Inc. Widget framework, real-time service orchestration, and real-time resource aggregation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008511928A (ja) * 2004-08-31 2008-04-17 インターナショナル・ビジネス・マシーンズ・コーポレーション メタデータの管理
US20070240041A1 (en) * 2006-04-05 2007-10-11 Larry Pearson Methods and apparatus for generating an aggregated cascading style sheet
US20080313659A1 (en) * 2007-06-15 2008-12-18 Microsoft Corporation Page and device-optimized cascading style sheets
WO2009120440A1 (en) * 2008-03-27 2009-10-01 Amazon Technogies, Inc. Dynamic image composition
JP2009290729A (ja) * 2008-05-30 2009-12-10 Ricoh Co Ltd 画像形成装置、情報処理方法、及びプログラム

Also Published As

Publication number Publication date
KR20120128661A (ko) 2012-11-27
KR101660148B1 (ko) 2016-09-26
JP5809328B2 (ja) 2015-11-10
WO2011097078A1 (en) 2011-08-11
AU2011213189B2 (en) 2014-11-06
US20160266949A1 (en) 2016-09-15
JP2013519158A (ja) 2013-05-23
KR20140130532A (ko) 2014-11-10
US20110197197A1 (en) 2011-08-11
CA2788899C (en) 2016-12-13
KR101703196B1 (ko) 2017-02-06
CA2788899A1 (en) 2011-08-11
JP2016026348A (ja) 2016-02-12
AU2011213189A1 (en) 2012-08-30
JP5582428B2 (ja) 2014-09-03
KR101628433B1 (ko) 2016-06-08
US9367371B2 (en) 2016-06-14
EP2531926A1 (en) 2012-12-12
KR20150048903A (ko) 2015-05-07
EP2531926A4 (en) 2015-08-26

Similar Documents

Publication Publication Date Title
JP5809328B2 (ja) ウィジェットフレームワーク、リアルタイムサービス統合およびリアルタイムリソース集約
CN105787123B (zh) 提供最小下载和模拟页面导航特征的服务器计算机和方法
US7756905B2 (en) System and method for building mixed mode execution environment for component applications
US8584082B2 (en) System for dynamic discovery, configuration, and development of process-bound widgets
US8898285B2 (en) Service oriented architecture version and dependency control
US20100153150A1 (en) Software for business adaptation catalog modeling
US11520575B2 (en) Semantic and standard user interface (UI) interoperability in dynamically generated cross-platform applications
US11797273B2 (en) System and method for enhancing component based development models with auto-wiring
US20060248467A1 (en) Framework for declarative expression of data processing
US20100153149A1 (en) Software for model-based configuration constraint generation
CN103608799A (zh) 自动用户界面对象变换和代码生成
US20110022943A1 (en) Document object model (dom) application framework
US8201147B2 (en) Generic XAD processing model
WO2006103264A2 (en) Managing development of an enterprise application
AU2016203934B2 (en) Widget framework, real-time service orchestration, and real-time resource aggregation
AU2015200369B2 (en) Widget framework, real-time service orchestration, and real-time resource aggregation
Chmielewski et al. Declarative GUI descriptions for device-independent applications
Tan Implementing a Web-Based Computerized Restaurant System
CN114756234A (zh) 基于传统应用和动态配置策略的app开发方法
Heller et al. Enabling USDL by tools
Beckner et al. Microsoft Dynamics CRM API Development for Online and On-Premise Environments: Covering On-Premise and Online Solutions
Janjua et al. Brandlink Business-to-Business E-commerce web Solution
den Haak Dynamic configurable web visualization of complex data relations
ARIF MUHAMMAD ALI NASIR JANJUA

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150715

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150910

R150 Certificate of patent or registration of utility model

Ref document number: 5809328

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250