(57)【特許請求の範囲】
【請求項１】
アプリケーション・プログラミング・インタフェースのエンドポイント管理を提供するためのシステムであって、
アプリケーション・プログラミング・インタフェース（「ＡＰＩ」）・マッピング定義を格納するように構成される電子データ・ストア、及び
特定のコンピュータ実行可能命令を実行する１つ以上のハードウェア・コンピューティング・デバイスを含むエンドポイント・システム、
を備え、
前記エンドポイント・システムは、前記電子データ・ストアと通信し、少なくとも、
複数のＡＰＩマッピング定義を受信し、各ＡＰＩマッピング定義は、プロキシＡＰＩを少なくとも１つのエンドポイントＡＰＩと関連付け、
特定のプロキシＡＰＩによりプログラム・コードを実行する呼び出しシステムからの要求を受信し、
前記エンドポイント・システムで、前記要求の処理を進行することが可能であること判定し、
前記要求の処理を進行するとの判定により、前記受信した要求、及び前記特定のプロキシＡＰＩに少なくとも部分的に基づき、前記特定のプロキシＡＰＩと関連するＡＰＩマッピング定義を決定し、
エンドポイントＡＰＩシステムにより処理するために前記要求をエンドポイント要求へ変換し、前記要求は、前記ＡＰＩマッピング定義に少なくとも部分的に基づき変換され、前記エンドポイント要求は、前記エンドポイントＡＰＩシステム上で前記プログラム・コードを実行する命令を含み、
前記エンドポイント要求を前記エンドポイントＡＰＩシステムに送信し、前記エンドポイントＡＰＩシステム上での前記プログラム・コードの実行を引き起こし、
前記エンドポイントＡＰＩシステムからエンドポイント結果を受信し、前記エンドポイント結果は、前記エンドポイントＡＰＩシステム上での前記プログラム・コードの前記実行から生成され、
前記エンドポイント結果をプロキシ結果に変換し、前記エンドポイント結果は、前記ＡＰＩマッピング定義に少なくとも部分的に基づき変換され、
前記特定のプロキシＡＰＩと関連する前記ＡＰＩマッピング定義によって特定された構成設定に従い、前記エンドポイント結果又は前記プロキシ結果の一方又は両方をキャッシュし、
前記呼び出しシステムへ返信応答を提供し、前記返信応答は、少なくとも前記プロキシ結果を有する、
ように構成される、前記システム。
【請求項２】
前記エンドポイント・システムは、それぞれのエンドポイントＡＰＩシステムから受信するキャッシュされた結果を格納するように構成される第二電子データ・ストアに前記エンドポイント結果のコピーを格納する、ようにさらに構成される、請求項１に記載の前記システム。
【請求項３】
前記エンドポイント・システムは、それぞれのエンドポイントＡＰＩシステムから受信するキャッシュされた結果を格納するように構成される第二電子データ・ストアから前記エンドポイント結果のキャッシュされたコピーにアクセスする、ようにさらに構成される、請求項１に記載の前記システム。
【請求項４】
特定のコンピュータ実行可能命令を実行するように適合される１つ以上のハードウェア・コンピューティング・デバイスを備え、アプリケーション・プログラミング・インタフェース（「ＡＰＩ」）・マッピング定義を格納するように構成される電子データ・ストアと通信するエンドポイント・プロキシ・システム、
を備え、
前記エンドポイント・プロキシ・システムは、少なくとも、
プロキシＡＰＩを実行するユーザ・コンピューティング・デバイスからの要求を受信し、
前記エンドポイント・プロキシ・システムで、前記要求の処理を進行することが可能であること判定し、
前記要求の処理を進行するとの判定により、前記受信した要求、及び前記プロキシＡＰＩに少なくとも部分的に基づき、前記プロキシＡＰＩと関連するＡＰＩマッピング定義を決定し、
バックエンドシステムにより処理するために前記要求をバックエンド要求に変換し、前記要求は、前記ＡＰＩマッピング定義に少なくとも部分的に基づき変換され、前記バックエンド要求は、前記バックエンドシステム上でバックエンドＡＰＩを実行する命令を含み、
前記バックエンド要求を前記バックエンドシステムへ送信し、前記バックエンド要求は、前記バックエンドシステム上での前記バックエンドＡＰＩの実行を引き起こすように適合され、
前記バックエンドシステムからバックエンド結果を受信し、前記バックエンド結果は、前記バックエンドシステム上での前記バックエンドＡＰＩの実行により生成され、
前記バックエンド結果を出力結果に変換し、前記バックエンド結果は、前記ＡＰＩマッピング定義に少なくとも部分的に基づき変換され、
前記プロキシＡＰＩと関連する前記ＡＰＩマッピング定義によって特定された構成設定に従い、前記バックエンド結果又は前記出力結果の一方又は両方をキャッシュし、
前記出力結果を前記ユーザ・コンピューティング・デバイスへ提供する、
ように構成される、システム。
【請求項５】
前記エンドポイント・プロキシ・システムは、それぞれのバックエンドシステムから受信するキャッシュされた結果を格納するように構成される第二電子データ・ストアに前記バックエンド結果のコピーを格納するように、さらに構成される、請求項４に記載の前記システム。
【請求項６】
前記エンドポイント・プロキシ・システムは、前記ＡＰＩマッピング定義と関連するキャッシュ有効期限設定にしたがって、前記第二電子データ・ストアに前記バックエンド結果の前記コピーを格納する、ようにさらに構成される、請求項５に記載の前記システム。
【請求項７】
前記エンドポイント・プロキシ・システムは、それぞれのバックエンドシステムから受信するキャッシュされた結果を格納するように構成される第二電子データ・ストアから前記バックエンド結果のキャッシュされたコピーにアクセスする、ようにさらに構成される、請求項４に記載の前記システム。
【請求項８】
前記ＡＰＩマッピング定義は、前記プロキシＡＰＩについて少なくとも関連した構成設定、及び前記バックエンドＡＰＩについて関連した構成設定を備える、請求項４に記載の前記システム。
【請求項９】
前記プロキシＡＰＩについての前記関連した構成設定は、プロキシＡＰＩ名、プロキシＡＰＩ入力パラメータ、及びプロキシＡＰＩ出力結果タイプを備える、請求項８に記載の前記システム。
【請求項１０】
前記バックエンドＡＰＩについての前記関連した構成設定は、バックエンドＡＰＩ名、バックエンドＡＰＩ入力パラメータ、及びバックエンドＡＰＩ出力結果タイプを備える、請求項８に記載の前記システム。
【請求項１１】
プロキシＡＰＩを実行する前記要求は、第一ネットワーク経由で前記ユーザ・コンピューティング・デバイスから受信され、前記バックエンド結果は、第二ネットワーク経由で前記バックエンドシステムから受信され、前記第二ネットワークは、前記第一ネットワークと別個である、請求項４に記載の前記システム。
【請求項１２】
前記エンドポイント・プロキシ・システム、及び前記バックエンドシステムは、前記第二ネットワーク上に併置される、請求項１１に記載の前記システム。
【請求項１３】
特定の実行可能命令で構成される１つ以上のコンピューティング・デバイスにより実装されるように、
プロキシＡＰＩを実行する呼び出しシステムからの要求を受信すること、
前記呼び出しシステムで、前記要求の処理を進行することが可能であること判定すること、
前記要求の処理を進行するとの判定により、前記受信した要求、及び前記プロキシＡＰＩに少なくとも部分的に基づき、前記プロキシＡＰＩと関連するＡＰＩマッピング定義を決定すること、
バックエンドシステムにより処理するために前記要求をバックエンド要求に変換することであって、前記要求は、前記ＡＰＩマッピング定義に少なくとも部分的に基づき変換され、前記バックエンド要求は、前記バックエンドシステム上でバックエンドＡＰＩを実行する命令を含む、前記変換すること、
前記バックエンド要求を前記バックエンドシステムへ送信することであって、前記バックエンド要求は、前記バックエンドシステム上での前記バックエンドＡＰＩの実行を引き起こすように適合される、前記送信すること、
前記バックエンドシステムからバックエンド結果を受信することであって、前記バックエンド結果は、前記バックエンドシステム上での前記バックエンドＡＰＩの実行により生成される、前記受信すること、
前記バックエンド結果を出力結果に変換することであって、前記バックエンド結果は、前記ＡＰＩマッピング定義に少なくとも部分的に基づき変換される、前記変換すること、
前記プロキシＡＰＩと関連する前記ＡＰＩマッピング定義によって特定された構成設定に従い、前記バックエンド結果又は前記出力結果の一方又は両方をキャッシュすること、
前記出力結果を前記呼び出しシステムへ提供すること、
を備える、コンピュータ実装方法。
【請求項１４】
それぞれのバックエンドシステムから受信するキャッシュされた結果を格納するように構成される第二電子データ・ストアに、前記バックエンド結果のコピーを格納すること、
をさらに備える、請求項１３に記載の前記コンピュータ実装方法。
【請求項１５】
第二プロキシＡＰＩを実行する第二要求を受信すること、
前記受信した第二要求、及び前記第二プロキシＡＰＩに少なくとも部分的に基づき、前記第二プロキシＡＰＩと関連する第二ＡＰＩマッピング定義を決定すること、
前記キャッシュされたコピーの変換された出力結果を、前記呼び出しシステムへ提供すること、
をさらに備える、請求項１３に記載の前記コンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願の出願人により、２０１４年９月３０日に先に出願された、「ＴＨＲＥＡＤＩＮＧ  ＡＳ  Ａ  ＳＥＲＶＩＣＥ」と題する、米国特許出願第１４／５０２，９９２号に関連する。
【０００２】
さらに、本出願の出願人により、２０１５年４月８日に同時に出願されている、「ＥＮＤＰＯＩＮＴ  ＭＡＮＡＧＥＭＥＮＴ  ＳＹＳＴＥＭ  ＡＮＤ  ＶＩＲＴＵＡＬ  ＣＯＭＰＵＴＥ  ＳＹＳＴＥＭ」と題する、代理人整理番号ＳＥＡＺＮ．１０９９Ａの米国特許出願に関連する。
【０００３】
上記の関連出願の開示は、それらの全体が参照により本明細書に援用される。
【背景技術】
【０００４】
一般的に説明されるように、コンピューティング・デバイスは、通信ネットワーク、または一連の通信ネットワークを利用し、データを交換する。企業及び組織は、複数のコンピューティング・デバイスを相互接続し、操作を支援する、または第三者らにサービスを提供するように、コンピュータ・ネットワークを操作する。これらのコンピューティング・システムは、単一の地理的位置に設置される、または複数の、別々の地理的位置（たとえば、プライベートまたはパブリック通信ネットワークを介して相互接続される）に設置されることが可能である。具体的に、複数のデータ・センター、またはデータ処理センターは、本明細書で一般に単数の「データ・センター」と言われ、複数の相互接続されたコンピューティング・システムを含み、コンピューティング・リソースをデータ・センターのユーザへ提供することができる。データ・センターは、組織のために運営されるプライベート・データ・センター、または一般大衆のために、もしくは一般大衆の利益のために運営されるパブリック・データ・センターであってもよい。
【０００５】
データ・センター・リソースの利用率を高めるために、仮想化技術により、単一の物理コンピューティング・デバイスは、データ・センターのユーザへ独立したコンピューティング・デバイスとして出現して動作する仮想マシンの１つ以上のインスタンスをホストすることが可能となる。仮想化に関して、単一の物理コンピューティング・デバイスは、動的方式で仮想マシンを作成する、維持する、削除する、またはその他の方法で管理することが可能である。そして、ユーザは、単一のコンピューティング・デバイス、またはネットワーク化されたコンピューティング・デバイスの構成を含む、データ・センターからコンピュータ・リソースを要求し、さまざまな数の仮想マシン・リソースを提供されることが可能である。
【０００６】
本開示の前述の態様、及び多くの不随する利点は、添付の図面と併せて用いられるときに、同一のものが以下の発明を実施するための形態へ参照によりより良く理解されるようになるにつれ、より容易に理解されるようになるであろう。
【図面の簡単な説明】
【０００７】
【図１】例示的な態様により、エンドポイント管理システムを使用してアプリケーション・プログラミング・インタフェース・プロキシ・サービスを提供するための例示的な環境を描写するブロック図である。
【図２】例示的な態様により、エンドポイント管理システムのさまざまなサブシステム及びユニットについてのさまざまな機能を可能にするために実装されることができるコンピューティング・デバイスの一般的なアーキテクチャを描写する。
【図３】例示的な態様により、さまざまなエンドポイント管理構成オプションをユーザに提供する例示的なユーザ・インタフェースを描写する。
【図４Ａ】例示的な態様により、エンドポイント管理システムにより実装されるようにアプリケーション・プログラミング・インタフェース・プロキシ・ルーチンを図示する流れ図である。
【図４Ｂ】例示的な態様により、エンドポイント管理システムにより実装されるようにアプリケーション・プログラミング・インタフェース・プロキシ・ルーチンを図示する流れ図である。
【図５】クライアント・コンピューティング・デバイス、及びサービス・プロバイダ・コンピュータ・ネットワークを含むネットワーク化されたコンピューティング環境の実施形態を図示するブロック図である。
【発明を実施するための形態】
【０００８】
一般的に説明されるように、本開示の態様は、エンドポイント管理システムを記述し、これによりアプリケーション開発者などの、ユーザは、リモートまたは第三者システム上でのプログラム・コードの実行を引き起こすために使用可能なアプリケーション・プログラミング・インタフェース（「ＡＰＩ」）の公開を管理し、有効にすることが可能である。具体的に、リモートまたは第三者システム上で特定のタスクを実行するユーザ要求のハンドリングを容易にする、システム及び方法を開示する。エンドポイント管理システムにより、アプリケーション開発者は、リモートまたは第三者システムと関連する第二「バックエンド」ＡＰＩへマッピングする第一プロキシＡＰＩを定義し、指定することが可能である。リモートまたは第三者システムは、たとえば、ローカル・ネットワーク上のシステム、オープン、または公的にアクセス可能なネットワーク上のシステム、仮想計算環境などの１つ以上のサービスをホストするシステム、及びその他のものを含むことができる。エンドポイント管理システムは、プロキシＡＰＩを実行する要求をユーザ・コンピューティング・システムから受信し、さまざまな構成オプションのユーザ提供の仕様に基づきＡＰＩマッピングを決定する。エンドポイント管理システムは、関連したリモートまたはバックエンド・システムによりプログラム・コードを実行する１つ以上のバックエンドＡＰＩ要求を順に生成し、送信する。エンドポイント管理システムは、リモートまたはバックエンド・システムからの応答を受信し、つぎにこの応答と関連する結果を解析し、パースし、及び／または変換し、応答のために出力結果を生成し、ユーザ・コンピューティング・システムへ返すことが可能である。
【０００９】
したがって、本明細書に記述される実施形態で、開発者は、公開されたＡＰＩ（たとえば、プロキシＡＰＩ）を記述し、ロジック及び１つ以上のエンドポイント（たとえば、バックエンドＡＰＩ）を定義することが可能である。たとえば、クラウド・ベースの「プロキシ」ＡＰＩは、クライアント・デバイスによりエンドポイント管理システムへ呼び出されることができ、エンドポイント管理システムは、プロキシＡＰＩのために選択するエンドポイントがわかる。エンドポイントは、異種（たとえば、ウェブ・サービス、モノのインターネット（「ＩｏＴ」）・デバイス、他のクラウド・ベースのサービス・プロバイダ機能、データ・センター機能性、及びその他のもの）であることが可能であり、他のＡＰＩを含むことも可能である。たとえば、レガシーＳＯＡＰベースＡＰＩへマッピングする、表現状態転送（「ＲＥＳＴ」）ＡＰＩを公開することができる。いくつかの実施形態で、プロキシ・フリートは、エンドポイント管理システムの部分として実装され、パフォーマンス、効率、及びスケーラビリティを向上させることができる。本明細書に記述される追加の機能は、単一のプロキシＡＰＩ呼び出しに基づき複数の機能性、またはバックエンドＡＰＩ呼び出し（依存の、または独立の）をチェーンする、またはリンクする能力と、バックエンドＡＰＩ及びサービスの公開を管理するためにエンドポイント管理システムのユーザのための追加のセキュリティ・メカニズムと、効率を改善し、リモート及びバックエンド・システムが複数のプロキシＡＰＩにより使用可能な結果をもたらすことができる繰り返しタスクを実行することを軽減するためにバックエンド・システムから返される結果の動的でインテリジェントなキャッシングと、着信する要求（たとえば、所与の期間に一定数へ要求にサービスを提供することを制限する）、及び受信した要求のメータリングにスロットリングを行うためにユーザ構成可能設定を含む、大量のＡＰＩ要求によるリモート及び／またはバックエンド・システムの過負荷を防止するパフォーマンス管理とを含む。
【００１０】
エンドポイント管理システムは、限定されないがハイパーテキスト・トランスファ・プロトコル（「ＨＴＴＰ」）、ＨＴＴＰセキュア（「ＨＴＴＰＳ」）、ＨＴＴＰ２、ＲＥＳＴ  ＡＰＩ、リモート・プロシージャ・コール（「ＲＰＣ」）、バイナリＡＰＩ、ＷｅｂＳｏｃｋｅｔ、メッセージ・キュー・テレメトリ・トランスポート（「ＭＱＴＴ」）、制約されたアプリケーション・プロトコル（「ＣｏＡＰ」）、Ｊａｖａメッセージ・サービス（「ＪＭＳ」）、高度なメッセージ・キューイング・プロトコル（「ＡＭＱＰ」）、シンプル（またはストリーミング）・テキスト指向メッセージ・プロトコル（「ＳＴＯＭＰ」）、電子データ交換（「ＥＤＩ」）、簡易メール転送プロトコル（「ＳＭＴＰ」）、インターネット・メッセージ・アクセス・プロトコル（「ＩＭＡＰ」）、ポスト・オフィス・プロトコル（「ＰＯＰ」）、ファイル転送プロトコル（「ＦＴＰ」）、オープン・データベース・コネクティビティ（「ＯＤＢＣ」）、Ｔｈｒｉｆｔ、プロトコル・バッファ、Ａｖｒｏ、Ｃａｐ’ｎ  Ｐｒｏｔｏ、ＦｌａｔＢｕｆｆｅｒｓ、及び他のタイプのプロトコルを含む、さまざまなプロトコル・フォーマットでプロキシ・インタフェースの構成を可能にすることができる。これらのプロトコルのうちのいくつかは、ネットワーク及びデータ・フォーマットを記述し、いくつかは、他のフォーマットについてのコンテナとして機能することができる。上記で記載されたプロトコルへ黙示ではない他のデータ・フォーマットは、たとえば、ＪａｖａＳｃｒｉｐｔオブジェクト記法（「ＪＳＯＮ」）、拡張可能マークアップ言語（「ＸＭＬ」）、シンプル・オブジェクト・アクセス・プロトコル（「ＳＯＡＰ」）、ハイパーテキスト・マークアップ言語（「ＨＴＭＬ」）、コンマ区切り値（「ＣＳＶ」）、タブ区切り値（「ＴＳＶ」）、ＩＮＩファイル、ＹＡＭＬはマークアップ言語ではない（「ＹＡＭＬ」）、バイナリＪＳＯＮ（「ＢＳＯＮ」）、ＭｅｓｓａｇｅＰａｃｋ、Ｓｅｒｅａｌ、及びＢｅｎｃｏｄｅを含むことができる。これらのいずれかのプロトコル及びデータ・フォーマットは、任意の組み合わせでのＡＰＩプロキシ・マッピングのどちらのエンドポイントにも使用されることができる。たとえば、ＲＥＳＴ  ＡＰＩをバイナリＡＰＩへマッピングすることができ、ＨＴＴＰ  ＡＰＩをリモート・プロシージャ・コールへマッピングすることができ、第一バイナリＡＰＩを第二バイナリＡＰＩへマッピングすることができる、などである。
【００１１】
本開示の特定の実施形態、及び例示的なアプリケーションは、図面を参照してここで記述される。これらの実施形態、及び例示的なアプリケーションは、限定しないが、本開示を図示することを意図される。
【００１２】
図１を参照して、コンピューティング環境１００の実施形態を図示するブロック図を記述する。図１で示される実施例は、コンピューティング環境１００を含み、この環境で、ユーザ・コンピューティング・デバイス１０２のユーザは、ネットワーク１０４Ａ、及び／またはネットワーク１０４Ｂを介して、エンドポイント管理システム１０６、エンドポイント・プロキシ・システム１３２、及びバックエンド・システム１１４により提供される、さまざまなサービスにアクセスすることができる。
【００１３】
図１の実施例で、デスクトップ・コンピュータ、ラップトップ、携帯電話、及びタブレットを含む、さまざまな例示的なユーザ・コンピューティング・デバイス１０２を示す。一般に、ユーザ・コンピューティング・デバイス１０２は、パーソナル・コンピューティング・デバイス、ラップトップ・コンピューティング・デバイス、ハンドヘルド・コンピューティング・デバイス、端末コンピューティング・デバイス、モバイル・デバイス（たとえば、携帯電話、スマートフォン、タブレット・コンピューティング・デバイス、電子ブック・リーダなど）、無線デバイス、さまざまな電子機器及び電化製品、ならびに同様のものを含む、多種多様なコンピューティング・デバイスであることが可能である。加えて、ユーザ・コンピューティング・デバイス１０２は、同一の、または異なるデータ・センター上で実行するウェブ・サービスを含むことができ、そこで、たとえば、異なるウェブ・サービスは、プログラムで相互に通信し、本明細書に記述される１つ以上の技術を実行することができる。さらに、ユーザ・コンピューティング・デバイス１０２は、インターネット機器、及び接続機器などの、モノのインターネット（ＩｏＴ）・デバイスを含むことができる。コンピューティング環境１００（たとえば、エンドポイント管理システム１０６）の他のコンポーネントは、それぞれのコンポーネントにより提示される１つ以上のサービスを利用するために、１つ以上のユーザ・インタフェース、コマンド・ライン・インタフェース（ＣＬＩ）、アプリケーション・プログラミング・インタフェース（ＡＰＩ）、及び／または他のプログラマティック・インタフェースを備える、ユーザ・コンピューティング・デバイス１０２を提供することができる。これらのようなサービスは、ユーザ・コードを生成してアップロードすること、ユーザ・コードを呼び出すこと（たとえば、ユーザ・コード（たとえば、エンドポイント・プロキシ・システム１３２を介して）を実行する要求を提示すること）、１つ以上のＡＰＩを構成する（たとえば、エンドポイント管理システム１０６を介して）こと、ユーザ・コード及びＡＰＩの実行の結果をキャッシュすること、及び／またはセキュリティ、パフォーマンス、メータリング、及び他の要因のためのＡＰＩ呼び出しの使用状況を監視することを備えることができる。１つ以上の実施形態がユーザ・インタフェースを使用するように本明細書で記述されることができるが、このような実施形態が任意のＣＬＩ、ＡＰＩ、または他のプログラマティック・インタフェースを、追加で、または代替に使用することができることを理解するであろう。
【００１４】
ユーザ・コンピューティング・デバイス１０２は、ネットワーク１０４Ａ経由でエンドポイント・プロキシ・システム１３２、及び／またはエンドポイント管理システム１０６にアクセスする。エンドポイント・プロキシ・システム１３２は、エンドポイントまたはバックエンドＡＰＩの実行（たとえば、バックエンド・システム１１４上で実行されるような）を管理するように構成されることができる、１つ以上のサーバまたはシステム（たとえば、プロキシ・フリート）を含むことができる。エンドポイント・プロキシ・システム１３２は、ネットワーク１０４Ｂ経由でバックエンド・システム１１４、及びエンドポイント結果キャッシュ１３０などの、コンピューティング環境１００の他のコンポーネントにアクセスすることができる。ネットワーク１０４Ａ及び／または１０４Ｂは、いずれかの有線ネットワーク、無線ネットワーク、またはそれらの組み合わせであってもよい。加えて、ネットワーク１０４Ａ及び／または１０４Ｂは、パーソナル・エリア・ネットワーク、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、オーバージエア・ブロードキャスト・ネットワーク（たとえば、ラジオまたはテレビ用の）、ケーブル・ネットワーク、衛星ネットワーク、携帯電話網、またはそれらの組み合わせであってもよい。たとえば、ネットワーク１０４Ａは、インターネットのような、できる限りさまざまな別個の当事者らにより運営される、リンクされたネットワークのうちの公的にアクセス可能なネットワークであってもよい。いくつかの実施形態で、ネットワーク１０４Ｂは、企業もしくは大学のイントラネットなどのプライベート、もしくはセミプライベート・ネットワーク、またはインターネットなどの公的にアクセス可能なネットワークであってもよい。１つの実施形態で、ネットワーク１０４Ｂは、エンドポイント・プロキシ・システム１３２へ近接して併置される、または設置されることができるため、エンドポイント・プロキシ・システム１３２、及びバックエンド・システム（複数可）１１４間でネットワーク１０４Ｂ経由の通信は、パフォーマンスの向上（たとえば、より高速の、及び／またはより効率的な通信）から恩恵を受けることができる。ネットワーク１０４Ａ及び／または１０４Ｂは、モバイル通信用グローバル・システム（ＧＳＭ）・ネットワーク、符号分割多元接続（ＣＤＭＡ）ネットワーク、ロング・ターム・エボリューション（ＬＴＥ）・ネットワーク、または任意の他のタイプの無線ネットワークなどの、１つ以上の無線ネットワークを含むことができる。ネットワーク１０４Ａ及び／または１０４Ｂは、インターネット、または他の前述のタイプのネットワークのいずれかを介して通信するためのプロトコル及びコンポーネントを使用することが可能である。たとえば、ネットワーク１０４Ａ及び／または１０４Ｂにより使用されるプロトコルは、ハイパーテキスト・トランスファ・プロトコル（ＨＴＴＰ）、ＨＴＴＰセキュア（ＨＴＴＰＳ）、メッセージ・キュー・テレメトリ・トランスポート（ＭＱＴＴ）、制約されたアプリケーション・プロトコル（ＣｏＡＰ）、及び同様のものを含むことができる。インターネット、または他の前述のタイプの通信ネットワークのいずれかを介して通信するためのプロトコル及びコンポーネントは、当業者に既知であるため、本明細書でより詳細に記述されない。
【００１５】
コンピューティング環境１００は、１つ以上のコンピュータ・ネットワークを使用して相互接続されるいくつかのコンピュータ・システムを含む分散コンピューティング環境で動作するように図１で描写される。エンドポイント管理システム１０６、及び／またはエンドポイント・プロキシ・システム１３２は、図１で図示されるより少ない、またはより多い数のデバイスを含むコンピューティング環境内で動作することも可能である。したがって、図１のコンピューティング環境１００の描写は、例示としてみなされ、本開示への限定とみなされない。たとえば、コンピューティング環境１００、またはそのさまざまな構成要素は、さまざまなウェブ・サービス・コンポーネント、ホストされた、または「クラウド」・コンピューティング環境、及び／またはピアツーピア・ネットワーク構成を実装し、本明細書に記述されるプロセスの少なくとも一部分を実装することが可能である。
【００１６】
さらにコンピューティング環境１００のさまざまなコンポーネントは、ハードウェア及び／またはソフトウェア内に実装されることができ、たとえば、本明細書に記述されるさまざまな機能を実行するためのコンピュータ実行可能命令を実行するように構成される物理コンピュータ・ハードウェア上に実装される、１つ以上の物理または仮想サーバを含むことができる。１つ以上のサーバは、たとえば、１つ以上のデータ・センターに、地理的に分散される、または地理的に併置されることができる。
【００１７】
図１で図示されるように、エンドポイント・プロキシ・システム１３２は、レスポンス・ハンドラ１０８、キャッシュ・マネージャ１２０、及びパフォーマンス・ユニット１２４を含む。レスポンス・ハンドラ１０８は、たとえば、１つ以上のＡＰＩへ対応し、１つ以上のバックエンド・システム（複数可）１１４上で呼び出される、または引き起こされるプロキシＡＰＩを実行する呼び出しシステム（たとえば、ユーザ・デバイス１０２を含む）からの要求を受信するように構成されることができる。レスポンス・ハンドラ１０８は、エンドポイント／ＡＰＩマッピング定義データ・ソース１２８と通信し、これにアクセスし、受信した要求についてのＡＰＩマッピング定義をルックアップすることができる。レスポンス・ハンドラ１０８は、ＡＰＩマッピング定義に少なくとも部分的に基づき、この要求にサービスを提供するために使用される、単数のバックエンドＡＰＩ（または複数のＡＰＩ）、及びバックエンド・システム（複数可）を決定することが可能である。レスポンス・ハンドラ１０８は、要求及びこの要求を提供される任意の関連した入力パラメータをパースする、及び／または解析するように、及びＡＰＩマッピング定義に基づきバックエンドＡＰＩについてのパラメータを入力するために関連した入力パラメータの任意の適切なデータ変換及びマッピングを決定するように構成されることもできる。いくつかの実施形態で、レスポンス・ハンドラ１０８は、以下でより詳細に記述されるように、プロキシＡＰＩ要求についてキャッシュされた結果が利用可能であるかどうかを判定するためにキャッシュ・マネージャ１２０で確認することができる。つぎにレスポンス・ハンドラ１０８は、変換されたＡＰＩ要求を適切なバックエンド・システム（複数可）１１４へ送信し、順に応答で返された結果を受信することができる。レスポンス・ハンドラ１０８は、次に、この結果をパースし、及び／またはこの結果を元の呼び出しシステムへの応答についての出力結果に変換し、この出力結果を提供することができる。ＡＰＩマッピング定義に部分的に基づき、この結果をパースする、及び／または変換することができる。また、本明細書に記述されるように、さらにハンドリングするために、この結果をキャッシュ・マネージャ１２０へ提供することができる。
【００１８】
キャッシュ・マネージャ１２０は、いくつかの方式でバックエンドＡＰＩ要求と関連してバックエンド・システム（複数可）１１４から受信する結果を管理するように構成されることができる。キャッシュ・マネージャ１２０は、エンドポイント結果キャッシュ１３０と通信することができ、そこでバックエンドＡＰＩ要求と関連するバックエンド・システム（複数可）１１４から受信する結果を今後のＡＰＩプロキシ要求のために格納し、これらにアクセスすることができる。キャッシュされた結果は、バックエンド・システム（複数可）１１４からの元のバックエンドＡＰＩ結果、及びレスポンス・ハンドラ１０８が元のバックエンドＡＰＩ結果を処理した後に変換された、または出力された結果の両方を含むことができる。
【００１９】
ＡＰＩマッピング定義に少なくとも部分的に基づき、結果のキャッシングを実行することができる。たとえば、ＡＰＩマッピング定義は、バックエンドＡＰＩからの結果をキャッシュするかどうかを指定し、キャッシュする場合、その期間を指定する、ユーザ提供の構成設定を含むことができる。したがって、開発者は、一定期間（たとえば、数秒、数分、数時間、数日、数週間、数ヶ月、数年、または任意の他の時間）特定のバックエンドＡＰＩからの結果をキャッシュすることができることを示すことができる。レスポンス・ハンドラ１０８を参照して上記で説明されるように、プロキシＡＰＩ要求を受信し、処理するときに、キャッシュ・マネージャ１２０は、キャッシュされた結果が利用可能である、有効である、及び／またはその他の方法で期限切れである（たとえば、キャッシュ有効期限を過ぎた）かどうかを判定するキャッシュ・チェックを実行することができる。キャッシュされた結果が利用可能である場合に、キャッシュ・マネージャ１２０は、エンドポイント結果キャッシュ１３０からそれらにアクセスし、それらを取得し、それらをレスポンス・ハンドラ１０８へ提供することができる。
【００２０】
上記で参照されるように、キャッシュ・マネージャ１２０は、いくつかの方式でバックエンドＡＰＩ呼び出しからの結果をキャッシュすることができる。たとえば、特定の実施形態で、エンドポイント・プロキシ・システム１３２が第一ＡＰＩ呼び出しを複数回受信し、第一バックエンドＡＰＩについてのキャッシュされた結果が利用可能である場合、キャッシュ有効期限の期間に関して再度、または複数回、関連した第一バックエンドＡＰＩ要求をそれぞれのバックエンド・システム１１４へ送信する必要なしで、キャッシュされた結果のコピーを提供することができる。別の実施形態で、エンドポイント・プロキシ・システム１３２は、第一プロキシＡＰＩ呼び出しと同一のバックエンドＡＰＩへマッピングする第二プロキシＡＰＩ呼び出しを受信することができ、この事例で、レスポンス・ハンドラ１０８、及び／またはキャッシュ・マネージャ１２０は、関連したバックエンドＡＰＩ要求をそれぞれのバックエンド・システム１１４へ送信する必要なしで、同一のキャッシュされた結果を提供できることを判定することができる。さらに別の実施例で、第二プロキシＡＰＩ呼び出しは、第一バックエンドＡＰＩと、それにもかかわらず同一の結果、または同一の結果の部分を返す第二バックエンドＡＰＩへマッピングすることができる。このような状況で、関連した第二バックエンドＡＰＩ要求をそれぞれのバックエンド・システム１１４へ送信する必要なしで、同一のキャッシュされた結果（またはその関連部分）を提供することができる。
【００２１】
上記で説明されるフレキシブルで、動的なキャッシング機能の例示的な実施例として、それぞれの個人についての氏名、電話番号、及び送り先を含む１セットの記録を含む結果を提供する第一バックエンドＡＰＩ、ならびに特定の個人についての送り先を含む結果を提供する第二バックエンドＡＰＩを考察する。第一プロキシＡＰＩ呼び出しを受信して処理し、第一バックエンドＡＰＩを実行する場合、キャッシュ・マネージャ１２０は、１セットの記録をキャッシュすることができる。その後、再度第一プロキシＡＰＩ呼び出しを受信する場合、要求をバックエンド・システム（複数可）１１４へ発行する代わりに、記録のキャッシュされたセットにアクセスすることができる。加えて、特定の個人についての送り先を要求する第二バックエンドＡＰＩに対応する第二プロキシＡＰＩ呼び出しを受信する場合、記録のキャッシュされたセットにもアクセスし、第二プロキシＡＰＩ呼び出しを実行する要求をバックエンド・システム（複数可）１１４へ発行する代わりに、出力結果を呼び出しシステムへ提供することができる。したがって、たとえば、キャッシュされた結果が別のバックエンドＡＰＩ呼び出しと重複して累積する場合に、そのバックエンドＡＰＩを呼び出す必要なしで、バックエンドＡＰＩ呼び出しについての結果をプリエンプティブにキャッシュすることが可能であり得る。
【００２２】
パフォーマンス・ユニット１２４は、バックエンド・システム（複数可）１１４へ送信されるバックエンドＡＰＩ要求を含むパフォーマンス関連態様を管理するように構成されることができる。たとえば、ＡＰＩマッピング定義は、バックエンドＡＰＩを呼び出すことができる頻度の限度、または頻度を指定するユーザ提供の構成設定を含むことができる。この機能は、バックエンド・システム１１４がレガシー・システムである、またはバックエンドＡＰＩ要求にサービスを提供することに関して、期限切れである、パフォーマンスが低いもしくは効率の悪い、もしくは過負荷であるものである可能性がある場合に、有益であり得る。したがって、たとえば、ユーザは、一定の時間にわたり一定の回数（たとえば、毎分１００回、毎時１０回、または任意の他の頻度）、または一定の期間にわたり一定の回数（たとえば、ピーク・サービス時間に受信する要求にスロットリングを行うために）のみ、一定のバックエンドＡＰＩを呼び出すことができることを指定することが可能である。
【００２３】
パフォーマンス・ユニット１２４と関連して提供され、利用されることができる別のパフォーマンス構成オプションは、メータリング識別子を要求するかどうかを指定する、またはバックエンドＡＰＩの呼び出しシステムの使用を追跡する、もしくは監視するために使用される設定である。このようなメータリング情報は、どのプロキシＡＰＩ及び／またはバックエンドＡＰＩを呼び出すか、どのくらいの頻度か、及びどの呼び出しシステムによるかで可視化を可能にすることに貢献することができる。
【００２４】
図１で図示されるように、エンドポイント管理システム１０６は、マネージャ・ユーザ・コンソール１３２、セキュリティ・マネージャ１２２、及びソフトウェア開発者キット（「ＳＤＫ」）生成サービス１２６を含む。マネージャ・ユーザ・コンソール１３２は、１つ以上のユーザ・インタフェースを提供することができ、これらによりシステム管理者及び／または開発者などのユーザは、たとえば、ＡＰＩマッピング定義、キャッシング・オプション、パフォーマンス・オプション、及びセキュリティ・オプションを含む、ＡＰＩプロキシ設定を管理することが可能である。マネージャ・ユーザ・コンソール１３２により生成され、提供されることができる１つの例示的なエンドポイント管理ユーザ・インタフェースは、図３を参照して本明細書に図示され、記述される例示的なユーザ・インタフェース３００である。たとえば、ユーザ・コンピューティング・デバイス１０２を使用して、ネットワーク１０４Ａ経由で（たとえば、ネットワーク１０４Ａがパブリック・ネットワークとして構成されるときに）、またはネットワーク１０４Ｂ経由で（たとえば、ネットワーク１０４Ｂがプライベート・ネットワークとして構成されるときに）、ユーザは、マネージャ・ユーザ・コンソール１３２、及び関連したユーザ・インタフェースにアクセスすることができる。たとえば、マネージャ・ユーザ・コンソール１３２は、ユーザ・コンピューティング・デバイス１０２上でアクセスされ、もしくはインストールされ、エンドポイント管理システム１０６と通信するように構成されることができる、ウェブ、モバイル、スタンドアロン、または他のアプリケーションを提供することができる。エンドポイント管理システム１０６を介してユーザにより作成され、改定されるＡＰＩマッピング定義をエンドポイント／ＡＰＩマッピング定義データ・ソース１２８に格納することができる。エンドポイント管理システム１０６は、エンドポイント・プロキシ・システム１３２へさまざまなＡＰＩマッピング定義を公開する、プッシュする、またはその他の方法で送信するように構成されることができ、これは、本明細書に記述されるさまざまな応答ハンドリング及び関連プロシージャについてのＡＰＩ定義を使用することができる。
【００２５】
セキュリティ・マネージャ１２２は、バックエンド・システム（複数可）１１４、及びバックエンドＡＰＩへのセキュリティ及びアクセスを管理するように構成されることができる。たとえば、ＡＰＩマッピング定義は、特定のユーザ（複数可）またはグループ（複数可）のみがバックエンドＡＰＩを呼び出すことを許可されることができるかどうかを指定するための、ユーザ提供の構成設定を含むことができる。プロキシＡＰＩ要求は、要求するユーザまたはグループと関連するインジケータ（またはセキュリティ・トークン）を含むことができ、ＡＰＩマッピング定義に基づき、セキュリティ・マネージャ１２２は、要求が許可される、または拒否されるかどうかを判定することができる。呼び出しシステム（たとえば、ユーザ・コンピューティング・デバイス１０２）がバックエンドＡＰＩを呼び出すことを許可されるユーザまたはグループへマッピングするインジケータ、またはセキュリティ・トークンを提供する場合、セキュリティ・マネージャ１２２は、要求の処理を進行することが可能であることをレスポンス・ハンドラ１０８へ指示することができる。呼び出しシステムがインジケータ、もしくはセキュリティ・トークンを提供することができない、またはバックエンドＡＰＩを呼び出すことを許可されるユーザもしくはグループへマッピングしないインジケータ、もしくはセキュリティ・トークンを提供する場合、セキュリティ・マネージャ１２２は、要求の処理を停止する（この事例で、エンドポイント・プロキシ・システム１３２は、リターン・インジケータを任意選択で提供し、承認がないため要求が拒否されたことを示すことができる）ことをレスポンス・ハンドラ１０８へ指示することができる。この方式で、たとえば、開発者は、特定のバックエンドＡＰＩへのアクセスを保護する、または限定することができる。
【００２６】
またエンドポイント管理システム１０６は、ユーザが１つ以上のＡＰＩマッピング定義に基づきＳＤＫを生成することを可能にするＳＤＫ生成サービス１２６を含むことができる。この機能は、新規の１セットのプロキシＡＰＩへレガシー・バックエンドＡＰＩのスイートをマッピングする際に、相当な時間及び労力を費やしているエンドポイント管理システム１０６のユーザへ特に有益であり得る。ＡＰＩマッピング定義に基づきＳＤＫを生成し、他のユーザ（より最新式のＡＰＩプロトコルを使用してバックエンド・システム１１４とインタフェースに接続したい、またはこれを使用したいシステム開発者など）へ提供し、プロキシＡＰＩのスイートを介してバックエンド・システム（複数可）１１４を利用する他のアプリケーション及びサービスの開発を促進することができる。
【００２７】
エンドポイント管理システム１０６、及び／またはエンドポイント・プロキシ・システム１３２のさまざまなサブシステム及びユニットを実装するために使用されることができる例示的な構成は、図２を参照して以下でより詳細に記述される。
【００２８】
図１で示されるように、エンドポイント管理システム１０６は、エンドポイント・プロキシ・フリート１２３Ａ，．．．，Ｎと通信する。たとえば、第一プロキシ・サーバは、第一プロキシＡＰＩの実行を管理するように構成されることができ、第二プロキシ・サーバは、第二プロキシＡＰＩの実行を管理するように構成されることができ、第ｎプロキシ・サーバは、第ｎプロキシＡＰＩの実行を管理するように構成されることができる。または、１つのプロキシ・サーバは、たとえば、バックエンドＡＰＩの類似性、関連したバックエンドＡＰＩについてバックエンド・システム（複数可）１１４から得られる累積または重複結果、及びその他のものに部分的に基づき、互いに関連する、もしくは互いにグループ化されることができる、複数のプロキシＡＰＩの実行を管理するように構成されることができる。プロキシ・サーバのフリート内で各プロキシ・サーバは、特定のタスクまたはバックエンド・システムに関連するパフォーマンスまたは効率について構成されることができる。たとえば、一方のプロキシ・サーバは、データベース・クエリを含むプロキシＡＰＩの効率的なパフォーマンス及び実行について構成されることができ、他方のプロキシ・サーバは、出力結果へのバックエンドＡＰＩ結果の重要なデータ変換を伴うプロキシＡＰＩの効率的なパフォーマンス及び実行について構成されることができる。
【００２９】
図１の実施例で、ネットワーク１０４Ａ、及びネットワーク１０４Ｂに接続されるように、エンドポイント・プロキシ・システム１３２を図示する。いくつかの実施形態で、エンドポイント・プロキシ・システム１３２内のいずれかのコンポーネントは、ネットワーク１０４Ａ、及び／またはネットワーク１０４Ｂを介してコンピューティング環境１００の他のコンポーネント（たとえば、ユーザ・コンピューティング・デバイス１０２、及びバックエンド・システム（複数可）１１４）と通信することが可能である。他の実施形態で、エンドポイント・プロキシ・システム１３２のすべてのコンポーネントは、コンピューティング環境１００の他のコンポーネントと通信することが可能であるとは限らない。１つの実施例で、レスポンス・ハンドラ１０８のみをネットワーク１０４Ａへ接続することができ、エンドポイント・プロキシ・システム１３２の他のコンポーネントは、レスポンス・ハンドラ１０８を介してコンピューティング環境１００の他のコンポーネントと通信することができる。
【００３０】
図１の実施例で、ネットワーク１０４Ａに接続されるように、エンドポイント管理システム１０６を図示する。いくつかの実施形態で、エンドポイント管理システム１０６内のいずれかのコンポーネントは、ネットワーク１０４Ａ、及び／またはネットワーク１０４Ｂを介してコンピューティング環境１００の他のコンポーネント（たとえば、ユーザ・コンピューティング・デバイス１０２、及びバックエンド・システム（複数可）１１４）と通信することが可能である。他の実施形態で、エンドポイント管理システム１０６のすべてのコンポーネントは、コンピューティング環境１００の他のコンポーネントと通信することが可能であるとは限らない。１つの実施例で、マネージャ・ユーザ・コンソール１３２のみをネットワーク１０４Ａへ接続することができ、エンドポイント管理システム１０６の他のコンポーネントは、マネージャ・ユーザ・コンソール１３２を介してコンピューティング環境１００の他のコンポーネントと通信することができる。
【００３１】
バックエンド・システム（複数可）１１４は、ユーザ・コンピューティング・デバイス１０２のこれらと互換性がない、またはその他の方法でユーザ・コンピューティング・デバイス１０２によりアクセス困難であるプロトコルを有するレガシー・システムを含むことができる。またバックエンド・システム（複数可）１１４は、デバイス固有プロトコルを含むデバイス（たとえば、ＩｏＴデバイス）を含むことができる。
【００３２】
いくつかの実施形態で、エンドポイント・プロキシ・システム１３２は、バックエンド・システム（複数可）１１４、または他のシステムもしくはデバイスへのより便利なアクセスをユーザ・コンピューティング・デバイス１０２へ提供する。これらのような実施形態のいくつかで、エンドポイント・プロキシ・システム１３２は、デバイス固有プロトコルを含むＩｏＴデバイスと通信することができる。たとえば、ＩｏＴデバイスは、温度センサを含むことができ、ユーザは、ＩｏＴデバイスからの温度情報を要求することが可能である。別の実施例で、ＩｏＴデバイスは、サーモスタットであることができ、ユーザは、それに所与の温度へ温度設定させることが可能であり得る。どのデバイスであるかにより、それは、異なる機能を有することが可能である。すべてのこれらの機能は、機能を操作するために存在するいくつかのタイプのＡＰＩ（たとえば、バックエンドＡＰＩ）により管理されることができる。エンドポイント・プロキシ・システム１３２は、必要なプロトコル変換、及び／またはデータ操作を実行し、デバイス固有プロトコルまたは要件について気に留めないで、ユーザがこのようなＩｏＴデバイスとシームレスに通信することを可能にすることができる。たとえば、エンドポイント・プロキシ・システム１３２は、データについてＩｏＴデバイスにクエリを行う、またはＩｏＴデバイスへコマンドを送信することができる。これらのＩｏＴデバイスから受信する応答を使用して、呼び出し側の要件に基づき呼び出し側へ返すように応答を適合させることができる。
【００３３】
図２は、限定されないが、レスポンス・ハンドラ１０８、キャッシュ・マネージャ１２０、セキュリティ・マネージャ１２２、パフォーマンス・ユニット１２４、及びＳＤＫ生成サービス１２６を含む、エンドポイント管理システムのさまざまなサブシステム及びユニットのさまざまな機能を可能にするように実装されることができるコンピューティング・デバイス１０６Ａの一般的なアーキテクチャを描写する。図２で描写されるコンピューティング・デバイス１０６Ａの一般的なアーキテクチャは、本開示の態様を実施するために使用されることができるコンピュータ・ハードウェア及びソフトウェア・モジュールの配置を有する。コンピューティング・デバイス１０６Ａは、図２で示される要素より多い（またはより少ない）要素を含むことができる。しかしながら、有効な開示を提供するために、すべてのこれらの一般的な従来の要素を示す必要がない。図示されるように、コンピューティング・デバイス１０６Ａは、処理ユニット１９０、ネットワーク・インタフェース１９２、コンピュータ可読媒体ドライブ１９４、入出力デバイス・インタフェース１９６を含み、これらのすべては、通信バスの方式で互いに通信することができる。ネットワーク・インタフェース１９２は、１つ以上のネットワークまたはコンピューティング・システムへ接続性を提供することができる。したがって、処理ユニット１９０は、ネットワーク１０４Ａまたは１０４Ｂを介して他のコンピューティング・システムまたはサービスから情報及び命令を受信することができる。また、処理ユニット１９０は、メモリ１８０へ、及びこれから通信し、さらに入出力デバイス・インタフェース１９６を介して任意選択のディスプレイ（図示せず）についての出力情報を提供することができる。また、入出力デバイス・インタフェース１９６は、任意選択の入力デバイス（図示せず）から入力を受け付けることができる。
【００３４】
メモリ１８０は、本開示の１つ以上の態様を実施するために処理ユニット１９０が実行するコンピュータ・プログラム命令（いくつかの実施形態でモジュールとしてグループ化される）を含むことができる。メモリ１８０は、ＲＡＭ、ＲＯＭ、及び／または他の永続的な、補助的な、または非一時的なコンピュータ可読媒体を一般的に含む。メモリ１８０は、レスポンス・ハンドラ１０８の一般的な管理及び操作での処理ユニット１９０による使用のためにコンピュータ・プログラム命令を提供するオペレーティング・システム１８４を格納することができる。メモリ１８０は、本開示の態様を実施するために、コンピュータ・プログラム命令、及び他の情報をさらに含むことができる。たとえば、１つの実施形態で、メモリ１８０は、たとえば、コンピューティング・デバイス上にインストールされるブラウザまたはアプリケーションなどのナビゲーション及び／またはブラウジング・インタフェースを介して、コンピューティング・デバイス上で表示用のユーザ・インタフェース（及び／または表示用の命令）を生成するユーザ・インタフェース・ユニット１８２を含む。たとえば、ユーザ・インタフェース・ユニット１８２は、図３を参照して本明細書に図示され、記述される例示的なユーザ・インタフェース３００などの１つ以上のエンドポイント管理構成ユーザ・インタフェースを生成することができる。ユーザ・インタフェースのコンテキストで図２の実施例を記述するが、追加で、または代替で、任意のＣＬＩ、ＡＰＩ、または他のプログラマティック・インタフェースを使用して、本明細書に記述される１つ以上の実施形態を実施することができることを理解するであろう。加えて、メモリ１８０は、たとえば、プログラム・コード、パターン・マッチング定義、及び／またはライブラリにアクセスするために、１つ以上のデータ・リポジトリ（図示せず）を含むことができる、及び／またはこれらと通信することができる。
【００３５】
ユーザ・インタフェース・ユニット１８２に加えて、及び／またはこれと組み合わせて、メモリ１８０は、エンドポイント管理システム１０６、及び／またはエンドポイント・プロキシ・フリート１３２のサブシステム及びユニットの特定のインスタントと関連するさまざまな機能を提供するために処理ユニット１９０により実行されることができる追加ユニット１８６Ａ，．．．，Ｎを含む。たとえば、レスポンス・ハンドラ１０８は、バックエンド・システム（複数可）１１４から受信する応答または結果をパースするために実行されることができる応答パーシング・ユニットを含むことができる。キャッシュ・マネージャ１２０は、キャッシング・ユニットを含むことができ、これは、バックエンド・システム（複数可）１１４から受信する結果をキャッシュするかどうか、及びキャッシュされた結果を使用して特定のプロキシＡＰＩ要求へ応答するかどうかを判定するために実行されることができる。セキュリティ・マネージャ１２２は、承認ユニットを含むことができ、これは、プロキシＡＰＩ要求が適切なセキュリティ識別を含み、続行することを許可されるかどうかを判定するために実行されることができる。パフォーマンス・ユニット１２４は、スロットル・ユニットを含むことができ、これは、プロキシＡＰＩ要求が現在のデマンド条件下で続行することを許可されるかどうかを判定するために実行されることができる。ＳＤＫ生成サービス１２６は、ＡＰＩマッピング解析ユニットを含むことができ、これは、１セットのＡＰＩマッピング定義を統合されたＳＤＫライブラリに集約するために実行されることができる。
【００３６】
さまざまな実施形態で、エンドポイント管理システム１０６、エンドポイント・プロキシ・システム１３２、及び／または別のコンピューティング・デバイスの他のコンポーネントは、追加ユニット１８６Ａ，．．．，Ｎのすべて、または一部分を実装することができる。たとえば、本開示の特定の実施形態で、エンドポイント管理システム１０６、及び／またはエンドポイント・プロキシ・システム１３２と通信する別のコンピューティング・デバイスは、コンピューティング・デバイス１０６Ａの部分として図示されるモジュール及びコンポーネントと同様に動作するいくつかのモジュールまたはコンポーネントを含むことができる。
【００３７】
ここで図３を参照し、エンドポイント管理システム１０６と関連してさまざまなエンドポイント管理構成オプションをユーザに提供する例示的なユーザ・インタフェース３００を記述する。さまざまな実施形態で、図３で示されるユーザ・インタフェース３００をウェブ・ページとして、モバイル・アプリケーション表示として、スタンドアロン・アプリケーション表示として、ポップアップ・ウィンドウもしくはダイアログ・ボックスとして、電子メール・メッセージとして、または他の通信手段により提示することができる。他の実施形態で、オーディオ、または他の形式の通信を使用して、類似したインタフェースを提示することができる。実施形態で、図３で示されるインタフェースは、インタラクティブであり、さまざまなユーザ・インタラクションへ応答するように構成される。これらのようなユーザ・インタラクションは、マウスでのクリック、キーボードでのタイピング、タッチ・スクリーン上でのタッチ及び／またはジェスチャ、音声コマンド、及び／または同様のものを有することができる。ユーザ・インタフェース３００で示される表示要素は、多少の表示要素及びユーザ入力フィールドを実施形態により提示することができる、例示的な目的のためにすぎない。
【００３８】
示されるように、例示的なユーザ・インタフェース３００は、複数の表示要素（たとえば、さまざまなＡＰＩマッピング構成オプションの記述）、及びユーザ入力フィールド（たとえば、テキスト・ボックス、チェックまたはラジオ・ボックス、及びその他のもの）を含む。表示要素３０２で、ユーザ・インタフェースは、たとえば、ユーザがバックエンドＡＰＩについてのシステムまたは接続設定を指定することができるシステム・アクセス／接続設定（表示要素３０４）、及び関連したテキスト入力フィールドと、ユーザがバックエンドＡＰＩ名を指定することができる機能名（表示要素３０６）、及び関連したテキスト入力フィールドと、ユーザがバックエンドＡＰＩについて１つ以上の入力パラメータを指定することができる入力パラメータ（表示要素３０８）、及び関連したテキスト入力フィールドと、ユーザがバックエンドＡＰＩにより提供される出力（複数可）のタイプを指定することができる出力結果パラメータ（表示要素３０８）、及び関連したテキスト入力フィールドと、を含む、複数のエンドポイントＡＰＩオプションを提示する。
【００３９】
表示要素３１２で、ユーザ・インタフェースは、たとえば、ユーザがプロキシＡＰＩ名を指定することができる機能名（表示要素３１４）、及び関連したテキスト入力フィールドと、ユーザがプロキシＡＰＩについて１つ以上の入力パラメータを指定することができる入力パラメータ（表示要素３１６）、及び関連したテキスト入力フィールドと、ユーザがプロキシＡＰＩにより提供される出力（複数可）のタイプを指定することができる出力パラメータ（表示要素３１８）、及び関連したテキスト入力フィールドとを含む、複数のプロキシＡＰＩオプションを提示する。
【００４０】
表示要素３２２で、ユーザ・インタフェースは、たとえば、エンドポイント管理システムが出力結果をキャッシュするかどうかをユーザが指定することができるキャッシュ結果設定（表示要素３２４）、及び関連したラジオ・ボックス選択ユーザ入力フィールド、ならびにキャッシュされた結果が有効である有効期限の長さをユーザが指定することができるキャッシュ有効期限（表示要素３２６）、及び関連したテキスト入力フィールドを含む、複数のキャッシュ・オプションを提示する。
【００４１】
表示要素３２８で、ユーザ・インタフェースは、たとえば、プロキシ及び／または関連したバックエンドＡＰＩ（複数可）を呼び出すことを許可されるユーザ及び／またはグループをユーザが指定することができる制限アクセス設定（表示要素３３０）、及び関連したテキスト・ボックス・ユーザ入力フィールド、ならびにメータリング識別子要件をプロキシＡＰＩの実行のために強制する、または要求するかどうかをユーザが指定することができるメータリング識別要件設定（表示要素３３２）、及び関連したラジオ・ボックス選択フィールドを含む、複数のセキュリティ及びユーザ・アクセス・オプションを提示する。
【００４２】
表示要素３３４で、ユーザ・インタフェースは、たとえば、一定の期間にわたるバックエンドＡＰＩ要求の最大数をユーザが指定することができるＡＰＩ呼び出しサービス制限設定（表示要素３３６）、及び関連したテキスト・ボックス・ユーザ入力フィールドを含む、複数のパフォーマンス・オプションを提示する。
【００４３】
表示要素３３８で、ユーザ・インタフェースは、ＡＰＩマッピング定義及び設定を保存する保存ボタンを提示し、これは、ユーザにより選択されるときに、エンドポイント管理システムにエンドポイント／ＡＰＩマッピング定義データ・ソース１２８内にＡＰＩマッピング定義を保存させることができる。表示要素３４０は、ＡＰＩマッピングまたは設定を保存することなく、現在の構成をキャンセルする、または終了するキャンセル・ボタンを提示する。
【００４４】
エンドポイント管理システム１０６により提供されることができる図３で図示されない別の機能は、ＡＰＩマッピング定義への変更がＡＰＩマッピングの大きな変更をもたらすことができるインジケータであり得る。たとえば、プロキシＡＰＩの名前、入力パラメータ、及び／または出力パラメータへの変更は、変更されたプロキシＡＰＩ定義への更新なしで、大きな変更前にプロキシＡＰＩを使用する呼び出しシステムがプロキシＡＰＩを使用することを不可能にする可能性があるような、大きな変更を有することができる。たとえば、プロキシＡＰＩ名を変更する場合、呼び出しシステムは、古い名前を使用してプロキシＡＰＩを呼び出すことが不可能になる、または要求された入力パラメータ（及び／または関連した属性）数が変わる場合、呼び出しシステムは、ここで要求される入力より少ない入力を使用してプロキシＡＰＩを呼び出すことが不可能になる、及びその他のことが不可能になり得る。さまざまな実施例で、エンドポイント管理システム１０６は、ＡＰＩプロキシ定義への大きな変更が発生し、ユーザへ警告、またはインジケータを提供することができるときを検出するように構成されることができる。インジケータは、大きな変更を扱う方式に係る提案（たとえば、既存のＡＰＩを変更する代わりに新規のプロキシＡＰＩを作成すること、新規の、または修正された入力及び／または出力パラメータを任意選択で作成すること、既存の属性名または識別子を同じままにし、新規の属性名または識別子のみを追加すること、ならびに既存のＡＰＩプロキシ・マッピング定義を維持する、または保持する類似したタイプのアクション）を任意選択で含むことができる。
【００４５】
ここで図４Ａを参照し、エンドポイント管理システム１０６、及び／またはエンドポイント・プロキシ・システム１３２の１つ以上のコンポーネント（たとえば、レスポンス・ハンドラ１０８、キャッシュ・マネージャ１２０、セキュリティ・マネージャ１２２、パフォーマンス・ユニット１２４、及び／またはＳＤＫ生成サービス１２６）により実装されるルーチン４００Ａを記述する。エンドポイント管理システム１０６による実装に関してルーチン４００Ａを記述するが、当業者は、代替のコンポーネントがルーチン４００Ａを実装することができることを、または異なるコンポーネントにより、もしくは分散方式で、１つ以上のブロックを実装することができることを理解するであろう。
【００４６】
例示的なルーチン４００Ａのブロック４０２で、エンドポイント管理システム１０６は、バックエンドまたはエンドポイントＡＰＩ、及び関連したバックエンド・システムとインタフェースで接続するためにＡＰＩマッピング定義を受信する。たとえば、図３を参照して本明細書に図示され、記述されるユーザ・インタフェース３００を介して、ＡＰＩマッピング定義を受信することができる。たとえば、エンドポイント／ＡＰＩマッピング定義データ・ソース１２８内に、ＡＰＩマッピング定義を格納することができる。ＡＰＩマッピング定義は、本開示全体を通して記述されるように複数の構成オプションを有することができる。
【００４７】
つぎに、ブロック４０４で、エンドポイント・プロキシ・システム１３２は、呼び出しシステムからＡＰＩプロキシを介してプログラム・コードを実行する要求を受信する。たとえば、ユーザ・コンピューティング・デバイス１０２から、要求を受信することができる。
【００４８】
ブロック４０６で、エンドポイント・プロキシ・システム１３２は、受信した要求に基づきＡＰＩマッピング定義を決定する。この決定は、たとえば、プロキシＡＰＩ名、プロキシＡＰＩと関連する入力パラメータ、呼び出しシステムまたは要求エンティティ、要求（識別トークン、メータリング識別子、または他の識別子などの）を提供する任意のセキュリティまたは識別情報、及びその他のものを含む、受信した要求と関連するさまざまな要因に基づくことができる。
【００４９】
ブロック４０８で、エンドポイント・プロキシ・システム１３２は、ＡＰＩマッピング定義と関連するいくつかの前処理を任意選択で実行する。たとえば、１つの実施形態で、レスポンス・ハンドラ１０８は、プロキシＡＰＩ要求が適切なセキュリティ識別を有し、続行することを許可されるかどうかを判定することができる。または、同一の、もしくは別の実施形態で、レスポンス・ハンドラ１０８は、キャッシュ・マネージャ１２０とやり取りし、キャッシュされた結果がプロキシＡＰＩ要求へ応答するために利用可能であるかどうか、及び／または使用されるかどうかを判定することができる。または、同一の、または別の実施形態で、レスポンス・ハンドラ１０８は、パフォーマンス・ユニット１２４とやり取りし、プロキシＡＰＩ要求が現在のデマンド条件下で続行することを許可されるかどうかを判定することができる。たとえば、許可するＡＰＩ要求数への一定の制限（ＡＰＩマッピング定義で示されるような）を超えていると判定することに応答して、パフォーマンス・ユニット１２４は、プロキシＡＰＩ要求を拒否することができる。
【００５０】
ブロック４１０で、エンドポイント・プロキシ・システム１３２は、ＡＰＩマッピング定義で指定されるようにバックエンドＡＰＩを介してバックエンド・システムにより処理するためにＡＰＩプロキシ要求を変換する。たとえば、ＡＰＩマッピング定義は、プロキシＡＰＩ要求と関連する１つ以上の入力パラメータをバックエンドまたはエンドポイントＡＰＩ要求についての１つ以上の入力パラメータにマッピングする、パースする、及び／または変換することを指定することができる。またエンドポイント・プロキシ・システム１３２は、バックエンドＡＰＩ要求を送信する特定のバックエンド・システムをＡＰＩマッピング定義から決定することができる。これが完了すると、ルーチン４００Ａは、図４Ｂのブロック４１２へ進行することが可能である。
【００５１】
ここで図４Ｂを参照すると、ルーチン４００Ａは、例示的なルーチン４００Ｂで継続する。ルーチン４００Ｂのブロック４１２で、エンドポイント・プロキシ・システム１３２は、バックエンドＡＰＩを介してプログラム・コードを実行する要求を特定のバックエンド・システム１１４へ送信する。いくつかの実施形態で、エンドポイント・プロキシ・システム１３２は、プロキシＡＰＩ要求と関連する複数のバックエンドＡＰＩ要求を送信することができ、これはＡＰＩマッピング定義で指定され得る。ＡＰＩマッピング定義で特定の構成により、複数のバックエンドＡＰＩ要求をシリアルに、またはパラレルに送信することができる。たとえば、１つのＡＰＩマッピング定義は、ワークフローを指定することができ、その中で単一のプロキシＡＰＩ要求は、複数のバックエンドＡＰＩ要求に対応し、これらを含む。複数のバックエンドＡＰＩ要求のうちのいくつかは、独立していることができ（たとえば、パラレルで実行されることが可能であり）、また、これらのうちのいくつかは、依存していることができる（たとえば、第二バックエンドＡＰＩの実行は、第一バックエンドＡＰＩの実行から受信する成果結果に依存することができ、この状況で第二バックエンドＡＰＩの実行が後に続く、第一バックエンドＡＰＩのシリアル処理は、必要であり得る）。
【００５２】
ブロック４１４で、エンドポイント・プロキシ・システム１３２は、特定のバックエンド・システム１１４からバックエンドＡＰＩ要求（たとえば、プログラム・コードの実行から）の結果を受信する。
【００５３】
つぎに、ブロック４１６で、エンドポイント・プロキシ・システム１３２は、ＡＰＩマッピング定義に少なくとも部分的に基づき受信した結果を変換する。たとえば、ＡＰＩマッピング定義は、バックエンドＡＰＩ要求と関連する１つ以上の結果パラメータをプロキシＡＰＩ要求についての１つ以上の出力結果パラメータにマッピングする、パースする、及び／または変換することを指定することができる。たとえば、バックエンド・システム１１４から受信する結果は、ＡＰＩマッピング定義にしたがって、一方のフォーマット（たとえば、ＪＳＯＮオブジェクト）に変換される他方のフォーマット（たとえば、ＸＭＬドキュメント）内にあることができる。
【００５４】
ブロック４１８で、エンドポイント・プロキシ・システム１３２は、受信した結果、及び／または変換された結果を任意選択でキャッシュする。たとえば、ＡＰＩマッピング定義は、受信した結果、及び／または変換された結果（または両方）をキャッシュするかどうか、またキャッシュする場合に、その期間を示す、ユーザ固有の構成オプションを含むことができる。上記で考察されるように、たとえば、エンドポイント結果キャッシュ１３０で、これらの結果をキャッシュすることが可能である。
【００５５】
ブロック４２０で、エンドポイント・プロキシ・システム１３２は、受信したプロキシＡＰＩ要求に応答して、変換された結果を呼び出しシステム（たとえば、ユーザ・コンピューティング・デバイス１０２）へ提供する。いくつかの実施形態で、エンドポイント・プロキシ・システム１３２は、プロキシＡＰＩ要求と関連する追加のバックエンドＡＰＩ要求を送信し続けることができ、これは、ＡＰＩマッピング定義で指定されることができる。
【００５６】
図４Ａ〜４Ｂのルーチン４００Ａ〜４００Ｂをブロック４０２〜４１０、及び４１２〜４２０を参照して上記で記述しているが、本明細書に記述される実施形態は、このようなものに制限されず、本開示の趣旨から逸脱することなく、１つ以上のブロックを省略する、修正する、または交換することができる。
【００５７】
図５は、通信ネットワーク１０４Ａ及び／または１０４Ｂを介してサービス・プロバイダ・コンピュータ・ネットワーク５０１と通信する１つ以上のクライアント・コンピューティング・デバイス（「クライアント」）１０２を含む、ネットワーク化されたコンピューティング環境５００の実施形態を図示するブロック図である。ネットワーク化されたコンピューティング環境５００は、異なるコンポーネント、より多い数のコンポーネント、またはより少ない数のコンポーネントを含むことができ、異なって構造化されることが可能である。たとえば、１つより多いサービス・プロバイダ・コンピュータ・ネットワーク５０１があることが可能であるため、ホスティング・サービス、またはデータ・ストレージ・サービスは、たとえば、確立されたプロトコルまたは合意に基づき、複数のサービス・プロバイダ・コンピュータ・ネットワーク５０１を介して実装されることが可能である。別の実施例として、サービス・プロバイダ・コンピュータ・ネットワーク５０１は、多少のコンポーネントを含むことができ、いくつかのコンポーネントは、通信ネットワーク１０４Ａ及び／または１０４Ｂを介して互いと通信することができる。
【００５８】
例示的に、サービス・プロバイダ・コンピュータ・ネットワーク５０１の顧客は、クライアント１０２を利用することが可能である。例示的な実施形態で、クライアント１０２は、ワイド・エリア・ネットワーク、またはローカル・エリア・ネットワークなどの、通信ネットワーク１０４Ａ及び／または１０４Ｂ経由でサービス・プロバイダ・コンピュータ・ネットワーク５０１のさまざまなコンポーネントとの通信を確立するために、必要なハードウェア及びソフトウェア・コンポーネントを含む。たとえば、クライアント１０２には、インターネットまたはイントラネットを介して通信を促進するネットワーキング機器、及びブラウザ・ソフトウェア・アプリケーションが装備されることができる。クライアント１０２は、中央処理装置及びアーキテクチャ、メモリ、マス・ストレージ、グラフィックス・プロセッシング・ユニット、通信ネットワーク可用性及び帯域幅などのような、さまざまなローカル・コンピューティング・リソースを含むことができる。１つの実施形態で、クライアント１０２は、サービス・プロバイダ・コンピュータ・ネットワーク５０１によりホストされる仮想マシン・インスタンスへのアクセス、またはこれ経由での制御を有することができる。またクライアント１０２は、サービス・プロバイダ・コンピュータ・ネットワーク５０１により提供されるデータ・ストレージ・リソースへのアクセスを有することができる。
【００５９】
図５への参照を継続し、１つの例示的な実施形態によれば、サービス・プロバイダ・コンピュータ・ネットワーク５０１は、エンドポイント管理システム１０６、エンドポイント・プロキシ・システム１３２、１つ以上のホスト・コンピューティング・デバイス５１０、ストレージ管理サービス５０３、及び１つ以上のストレージ・システム５０７などの、相互接続されたコンポーネントを含むことができ、これらは、１つ以上のサービス・プロバイダと関連する１つ以上のデータ・センターの論理的な関連付けを有する。エンドポイント管理システム１０６は、１つ以上のコンピューティング・デバイスにより実装されることができる。たとえば、エンドポイント管理システム１０６は、コンピューティング・デバイスにより実装されることができ、これには、１つ以上の命令を実行する１つ以上のプロセッサ、メモリ、及び１つ以上のクライアント１０２またはサービス・プロバイダ・コンピュータ・ネットワーク５０１の他のコンポーネントと通信する通信デバイスが含まれる。いくつかの実施形態で、エンドポイント管理システム１０６をネットワーク経由で通信することが可能な１つ以上のサーバに実装する。他の実施形態で、１つ以上の仮想マシンは、ホストされたコンピューティング環境内に、エンドポイント管理システム１０６を実装する。例示的に、エンドポイント管理システム１０６は、本明細書に開示されるプロキシＡＰＩ管理及び構成、ならびに他の関連した機能性を有することが可能である。
【００６０】
１つ以上のコンピューティング・デバイスは、エンドポイント・プロキシ・システム１３２を実装することもできる。いくつかの実施形態で、エンドポイント・プロキシ・システム１３２を、ネットワーク経由で通信することが可能な１つ以上のコンピューティング・デバイスに実装する。他の実施形態で、１つ以上の仮想マシン・インスタンスは、ホストされたコンピューティング環境内に、エンドポイント・プロキシ・システム１３２を実装する。エンドポイント・プロキシ・システム１３２は、本明細書に記述されるように、プロキシＡＰＩを実行し、バックエンド・システム１１４と通信する電子的な要求を受信し、これらの要求に応答することができる。
【００６１】
各ホスト・コンピューティング・デバイス５１０は、１つ以上の仮想マシン・インスタンス５１４をホストする物理コンピューティング・デバイスであってもよい。ホスト・コンピューティング・デバイス５１０は、仮想マシン・インスタンス１１４を管理する、ハイパーバイザなどの、ソフトウェア仮想マシン・マネージャ１２２を実行することで仮想マシン・インスタンス１１４をホストすることができる。仮想マシン・インスタンス１１４は、オペレーティング・システム、及びアプリケーション・ソフトウェアのインスタンスを実行することができる。
【００６２】
いくつかの実施形態で、ホスト・コンピューティング・デバイス５１０は、それらがクライアント１０２により直接アクセスできないように、サービス・プロバイダ・コンピュータ・ネットワーク５０１内で、ＩＰアドレスなどの、プライベート・ネットワーク・アドレスと関連することができる。仮想マシン・インスタンスは、仮想マシン・マネージャ１２２、及びエンドポイント管理システム１０６により促進されるように、サービス・プロバイダ・コンピュータ・ネットワーク５０１のエッジでゲートウェイにより利用可能にされることができるパブリック・ネットワーク・アドレスと関連することができる。その結果、仮想マシン・インスタンス５１４は、パブリック・ネットワーク・アドレスを介してクライアント１０２により直接、アドレス指定可能であり得る。当業者は、各ホスト・コンピューティング・デバイス５１０が他の物理コンピューティング・デバイス・リソース及びソフトウェアを含み、複数の仮想マシン・インスタンスを実行する、または仮想マシン・インスタンスを動的にインスタンス化することを理解するであろう。これらのようなインスタンス化は、クライアント１０２からの要求などの、特定の要求に基づくことが可能である。
【００６３】
ストレージ管理サービス５０３は、１つ以上のストレージ・システム５０７と関連することが可能である。ストレージ・システム５０７は、仮想マシン・インスタンスにより生成される、もしくは利用される、またはその他の方法でクライアントにより提供されるデータを格納するために使用されるサーバであってもよい。例示的に、ストレージ管理サービス５０３は、データ・ストレージ・ボリューム内でデータを論理的に編成し、維持することが可能である。たとえば、ストレージ管理サービス５０３は、ストレージ空間割り当て、入出力操作、メタデータ管理、またはボリュームに関する他の機能性を実行する、または促進することができる。
【００６４】
いくつかの実施形態で、ボリュームは、複数のストレージ・システムにわたり分散されることができ、異なるネットワーク・エリア内のストレージ・システム上でパフォーマンス目的のために複製されることができる。ストレージ・システムは、異なる電源もしくは冷却システムに取り付けられることができる、データ・センターの異なる部屋に、もしくは異なるデータ・センターに設置されることができる、または異なるルータもしくはネットワーク・スイッチに取り付けられることができる。
【００６５】
例示的な実施形態で、ホスト・コンピューティング・デバイス５１０、またはストレージ・システム５０７は、コンポーネント、またはコンポーネントの部分が物理的に離れているかどうかにかかわらず、論理的にグループ化されるとみなされる。たとえば、サービス・プロバイダ・コンピュータ・ネットワーク５０１は、ホスト及びストレージ・コンポーネントを提供するために別々の位置に管理されることができる。加えて、ホスト・コンピューティング・デバイス５１０は、そのユーザのさまざまな層を最も良く満足させる方式で地理的に分散されることが可能である。当業者は、サービス・プロバイダ・コンピュータ・ネットワーク５０１がコンテンツ及びリソースの管理用の追加のコンピューティング・デバイス、ならびに同様のものなどの、さまざまな追加のコンピューティング・リソースと関連することが可能であることを理解するであろう。
【００６６】
当業者及びその他の者は、本開示に記述されるすべての機能が開示されたコンポーネント及びモバイル通信デバイスの１つ以上の物理プロセッサにより実行されるソフトウェアで具現化されることができることを理解するであろう。ソフトウェアは、任意のタイプの不揮発性ストレージに永続的に格納されることができる。
【００６７】
条件付き言語、とりわけ、「ｃａｎ（ことが可能である）」、「ｃｏｕｌｄ（ことが可能である）」、「ｍｉｇｈｔ（ことができる）」、または「ｍａｙ（ことができる）」などは、特に別段の定めがない限り、またはその他の方法で使用されるように文脈内で理解されない限り、特定の実施形態が特定の特徴、要素、及び／またはステップを含む一方で、他の実施形態は含まない、ことを伝えることを一般的に意図する。したがって、これらのような条件付き言語は、特徴、要素、及び／またはステップが１つ以上の実施形態のために要求される任意の方式内にあることを、またはユーザ入力もしくはプロンプティングの有無にかかわらず、いずれの特定の実施形態でもこれらの特徴、要素、及び／またはステップを含む、もしくは実行するかどうかを決定するためにロジックを１つ以上の実施形態が必ず含むことを、意味することを一般的に意図しない。
【００６８】
本明細書に記述される、及び／または添付の図面で描写される、流れ図内のいずれのプロセス説明、要素、またはブロックも、プロセス内に特定の論理的な機能またはステップを実装するために１つ以上の実行可能な命令を含むコードの、モジュール、セグメント、または部分を潜在的に表現するように理解されるであろう。代替の実施態様は、本明細書に記述される実施形態の範囲内に含まれ、当業者により理解されるように、要素または機能が関連する機能性に依存して、削除される、示される順序と異なる順序で実行される、または実質的に同時にもしくは逆の順序を含むように考察されることができる。上記で記述されたデータ及び／またはコンポーネントがＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはネットワーク・インタフェースなどのコンピュータ実行可能コンポーネントを格納するコンピュータ可読記憶媒体と関連するドライブ・メカニズムを使用して、コンピュータ可読媒体に格納され、コンピューティング・デバイスのメモリ内にロードされることができることをさらに理解するであろう。さらに、コンポーネント及び／またはデータは、単一のデバイス内に含まれる、または任意の方式で分散されることが可能である。その結果、汎用コンピューティング・デバイスは、上記で記述されたさまざまなデータ及び／またはコンポーネントの処理及び／または実行で、本開示のプロセス、アルゴリズム、及び方法論を実装するように構成されることができる。
【００６９】
多くの変形形態及び修正形態が上記で記述された実施形態に対して行われることができることを強調し、これらの要素は、他の許容可能な実施例内にあると理解されるであろう。すべてのこれらのような修正形態及び変形形態は、本開示の範囲内の本明細書内に包含され、以下の特許請求の範囲により保護されることを意図される。
【００７０】
以下の条項を考慮して本開示の実施形態を記述することが可能である。
１．アプリケーション・プログラミング・インタフェースのエンドポイント管理を提供するためのシステムであって、
アプリケーション・プログラミング・インタフェース（「ＡＰＩ」）・マッピング定義を格納するように構成される電子データ・ストア、及び
特定のコンピュータ実行可能命令を実行する１つ以上のハードウェア・コンピューティング・デバイスを含むエンドポイント・システム、
を備え、
前記エンドポイント・システムは、前記電子データ・ストアと通信し、少なくとも、
複数のＡＰＩマッピング定義を受信し、各それぞれのＡＰＩマッピング定義は、プロキシＡＰＩを少なくとも１つのエンドポイントＡＰＩと関連付け、
特定のプロキシＡＰＩによりプログラム・コードを実行する呼び出しシステムからの要求を受信し、
前記受信した要求、及び前記特定のプロキシＡＰＩに少なくとも部分的に基づき、前記特定のプロキシＡＰＩと関連するＡＰＩマッピング定義を決定し、
エンドポイントＡＰＩシステムにより処理するために前記要求をエンドポイント要求に変換し、前記要求は、前記ＡＰＩマッピング定義に少なくとも部分的に基づき変換され、前記エンドポイント要求は、前記エンドポイントＡＰＩシステム上で前記プログラム・コードを実行する命令を含み、
前記エンドポイント要求を前記エンドポイントＡＰＩシステムへ送信し、前記エンドポイントＡＰＩシステム上での前記プログラム・コードの実行を引き起こし、
前記エンドポイントＡＰＩシステムからエンドポイント結果を受信し、前記エンドポイント結果は、前記エンドポイントＡＰＩシステム上での前記プログラム・コードの前記実行から生成され、
前記エンドポイント結果をプロキシ結果に変換し、前記エンドポイント結果は、前記ＡＰＩマッピング定義に少なくとも部分的に基づき変換され、
返信応答を前記呼び出しシステムへ提供し、前記返信応答は、少なくとも前記プロキシ結果を含む、
ように構成される、前記システム。
【００７１】
２．前記エンドポイント・システムは、それぞれのエンドポイントＡＰＩシステムから受信するキャッシュされた結果を格納するように構成される第二電子データ・ストアに前記エンドポイント結果のコピーを格納する、ようにさらに構成される、条項１に記載の前記システム。
【００７２】
３．前記エンドポイント・システムは、それぞれのエンドポイントＡＰＩシステムから受信するキャッシュされた結果を格納するように構成される第二電子データ・ストアから前記エンドポイント結果のキャッシュされたコピーにアクセスする、ようにさらに構成される、条項１に記載の前記システム。
【００７３】
４．特定のコンピュータ実行可能命令を実行するように適合される１つ以上のハードウェア・コンピューティング・デバイスを備え、アプリケーション・プログラミング・インタフェース（「ＡＰＩ」）・マッピング定義を格納するように構成される電子データ・ストアと通信するエンドポイント・プロキシ・システム、
を備え、
前記エンドポイント・プロキシ・システムは、少なくとも、
プロキシＡＰＩを実行するユーザ・コンピューティング・デバイスからの要求を受信し、
前記受信した要求、及び前記プロキシＡＰＩに少なくとも部分的に基づき、前記プロキシＡＰＩと関連するＡＰＩマッピング定義を決定し、
バックエンドＡＰＩシステムにより処理するために前記要求をバックエンド要求に変換し、前記要求は、前記ＡＰＩマッピング定義に少なくとも部分的に基づき変換され、前記バックエンド要求は、前記エンドポイントＡＰＩシステム上でバックエンドＡＰＩを実行する命令を含み、
前記バックエンド要求を前記エンドポイントＡＰＩシステムへ送信し、前記バックエンド要求は、前記エンドポイントＡＰＩシステム上での前記バックエンドＡＰＩの実行を引き起こすように適合され、
前記バックエンドＡＰＩシステムからバックエンド結果を受信し、前記エンドポイント結果は、前記バックエンドＡＰＩシステム上での前記バックエンドＡＰＩの実行により生成され、
前記バックエンド結果を出力結果に変換し、前記バックエンド結果は、前記ＡＰＩマッピング定義に少なくとも部分的に基づき変換され、
前記出力結果を前記ユーザ・コンピューティング・デバイスへ提供する、
ように構成される、システム。
【００７４】
５．前記エンドポイント・プロキシ・システムは、それぞれのバックエンドＡＰＩシステムから受信するキャッシュされた結果を格納するように構成される第二電子データ・ストアに前記バックエンド結果のコピーを格納する、ようにさらに構成される、条項４に記載の前記システム。
【００７５】
６．前記エンドポイント・プロキシ・システムは、前記ＡＰＩマッピング定義と関連するキャッシュ有効期限設定にしたがって、前記第二電子データ・ストアに前記バックエンド結果の前記コピーを格納する、ようにさらに構成される、条項５に記載の前記システム。
【００７６】
７．前記エンドポイント・プロキシ・システムは、それぞれのバックエンドＡＰＩシステムから受信するキャッシュされた結果を格納するように構成される第二電子データ・ストアから前記バックエンド結果のキャッシュされたコピーにアクセスする、ようにさらに構成される、条項４に記載の前記システム。
【００７７】
８．前記ＡＰＩマッピング定義は、前記プロキシＡＰＩについて少なくとも関連した構成設定、及び前記バックエンドＡＰＩについて関連した構成設定を備える、条項４に記載の前記システム。
【００７８】
９．前記プロキシＡＰＩについての前記関連した構成設定は、プロキシＡＰＩ名、プロキシＡＰＩ入力パラメータ、及びプロキシＡＰＩ出力結果タイプを備える、条項８に記載の前記システム。
【００７９】
１０．前記バックエンドＡＰＩについての前記関連した構成設定は、バックエンドＡＰＩ名、バックエンドＡＰＩ入力パラメータ、及びバックエンドＡＰＩ出力結果タイプを備える、条項８に記載の前記システム。
【００８０】
１１．プロキシＡＰＩを実行する前記要求は、第一ネットワーク経由で前記ユーザ・コンピューティング・デバイスから受信され、前記バックエンド結果は、第二ネットワーク経由で前記バックエンドＡＰＩシステムから受信され、前記第二ネットワークは、前記第一ネットワークと別個である、条項４に記載の前記システム。
【００８１】
１２．前記エンドポイント・プロキシ・システム、及び前記バックエンド・システムは、前記第二ネットワーク上に併置される、条項１１に記載の前記システム。
【００８２】
１３．特定の実行可能命令で構成される１つ以上のコンピューティング・デバイスにより実装されるように、
プロキシＡＰＩを実行する呼び出しシステムからの要求を受信すること、
前記受信した要求、及び前記プロキシＡＰＩに少なくとも部分的に基づき、前記プロキシＡＰＩと関連するＡＰＩマッピング定義を決定すること、
バックエンドＡＰＩシステムにより処理するために前記要求をバックエンド要求に変換することであって、前記要求は、前記ＡＰＩマッピング定義に少なくとも部分的に基づき変換され、前記バックエンド要求は、前記エンドポイントＡＰＩシステム上でバックエンドＡＰＩを実行する命令を含む、前記変換すること、
前記バックエンド要求を前記エンドポイントＡＰＩシステムへ送信することであって、前記バックエンド要求は、前記エンドポイントＡＰＩシステム上での前記バックエンドＡＰＩの実行を引き起こすように適合される、前記送信すること、
前記バックエンドＡＰＩシステムからバックエンド結果を受信することであって、前記エンドポイント結果は、前記バックエンドＡＰＩシステム上での前記バックエンドＡＰＩの実行により生成される、前記受信すること、
前記バックエンド結果を出力結果に変換することであって、前記バックエンド結果は、前記ＡＰＩマッピング定義に少なくとも部分的に基づき変換される、前記変換すること、
前記出力結果を前記呼び出しシステムへ提供すること、
を備える、コンピュータ実装方法。
【００８３】
１４．それぞれのバックエンドＡＰＩシステムから受信するキャッシュされた結果を格納するように構成される第二電子データ・ストアに、前記バックエンド結果のコピーを格納すること、
をさらに備える、条項１３に記載の前記コンピュータ実装方法。
【００８４】
１５．第二プロキシＡＰＩを実行する第二要求を受信すること、
前記受信した第二要求、及び前記第二プロキシＡＰＩに少なくとも部分的に基づき、前記第二プロキシＡＰＩと関連する第二ＡＰＩマッピング定義を決定すること、
をさらに備える、条項１３に記載の前記コンピュータ実装方法。
【００８５】
１６．前記ＡＰＩマッピング定義に基づき、前記第二プロキシＡＰＩが前記バックエンドＡＰＩへマッピングされることを決定すること、
それぞれのバックエンドＡＰＩシステムから受信するキャッシュされた結果を格納するように構成される第二電子データ・ストアから前記バックエンド結果のキャッシュされたコピーにアクセスすること、
をさらに備える、条項１５に記載の前記コンピュータ実装方法。
【００８６】
１７．前記ＡＰＩマッピング定義に基づき、前記第二プロキシＡＰＩが第二バックエンドＡＰＩへマッピングされることを決定することであって、前記第二バックエンドＡＰＩは、前記バックエンドＡＰＩの実行により生成される１サブセットの前記バックエンド結果である第二バックエンド結果を返すように構成される、前記決定すること、
それぞれのバックエンドＡＰＩシステムから受信するキャッシュされた結果を格納するように構成される第二電子データ・ストアから前記バックエンド結果のキャッシュされたコピーにアクセスすること、
前記キャッシュされたコピーの変換された出力結果を前記呼び出しシステムへ提供すること、
をさらに備える、条項１５に記載の前記コンピュータ実装方法。
【００８７】
１８．コンピュータ実行可能命令を格納するコンピュータ可読で、非一時的な記憶媒体であって、前記コンピュータ実行可能命令は、１つ以上のコンピューティング・デバイスにより実行されるときに、前記１つ以上のコンピューティング・デバイスが、
プロキシＡＰＩを実行する呼び出しシステムからの要求を受信すること、
前記受信した要求、及び前記プロキシＡＰＩに少なくとも部分的に基づき、前記プロキシＡＰＩと関連するＡＰＩマッピング定義を決定すること、
バックエンドＡＰＩシステムにより処理するために前記要求をバックエンド要求に変換することであって、前記要求は、前記ＡＰＩマッピング定義に少なくとも部分的に基づき変換され、前記バックエンド要求は、前記エンドポイントＡＰＩシステム上でバックエンドＡＰＩを実行する命令を含む、前記変換すること、
前記バックエンド要求を前記エンドポイントＡＰＩシステムへ送信することであって、前記バックエンド要求は、前記エンドポイントＡＰＩシステム上での前記バックエンドＡＰＩの実行を引き起こすように適合される、前記送信すること、
前記バックエンドＡＰＩシステムからバックエンド結果を受信することであって、前記エンドポイント結果は、前記バックエンドＡＰＩシステム上での前記バックエンドＡＰＩの実行により生成される、前記受信すること、
前記バックエンド結果を出力結果に変換することであって、前記バックエンド結果は、前記ＡＰＩマッピング定義に少なくとも部分的に基づき変換される、前記変換すること、
前記出力結果を前記呼び出しシステムへ提供すること、
を備える操作を実行するように構成される、前記非一時的な記憶媒体。
【００８８】
１９．前記操作は、それぞれのバックエンドＡＰＩシステムから受信するキャッシュされた結果を格納するように構成される第二電子データ・ストアに前記バックエンド結果のコピーを格納すること、
をさらに備える、条項１８に記載の前記非一時的な記憶媒体。
【００８９】
２０．前記操作は、前記ＡＰＩマッピング定義と関連する承認設定に少なくとも部分的に基づき、前記プロキシＡＰＩを実行する前記要求と関連するユーザ識別子が、承認されたユーザまたはグループとして前記ＡＰＩマッピング定義に含まれることを判定すること、
をさらに備える、条項１８に記載の前記コンピュータ可読で、非一時的な記憶媒体。
【００９０】
２１．前記操作は、前記バックエンドＡＰＩシステムと関連する現在のＡＰＩ要求作業負荷と、前記ＡＰＩマッピング定義と関連するパフォーマンス・スロットリング設定の比較に少なくとも部分的に基づき、前記プロキシＡＰＩを実行する前記要求が進行することを許可されることを判定すること、
をさらに備える、条項１８に記載の前記コンピュータ可読で、非一時的な記憶媒体。
【００９１】
２２．前記ＡＰＩマッピング定義は、前記プロキシＡＰＩについて少なくとも関連した構成設定、及び前記バックエンドＡＰＩについて関連した構成設定を備える、条項１８に記載の前記非一時的な記憶媒体。
【００９２】
２３．前記プロキシＡＰＩは、第一プロトコルと関連し、前記バックエンドＡＰＩは、第二プロトコルと関連する、条項１８に記載の前記非一時的な記憶媒体。
【図１】
0006559252.tif 000002
【図２】
0006559252.tif 000003
【図３】
0006559252.tif 000004
【図４Ａ】
0006559252.tif 000005
【図４Ｂ】
0006559252.tif 000006
【図５】
0006559252.tif 000007