ネットワークアプリケーションは、リモートプロシージャコール(RPC)等の1以上のトリガに応答してデータを交換してよい。この場合、例示の第1のアプリケーション(例えばネットワーク化されたサーバ)は、特定のデータフィールドを有する要求を送信し、それらの同じデータフィールドを含む例示の第2のアプリケーション(例えばネットワーク化されたモバイルピアデバイス)からの応答を期待する。一部の例では、第2のアプリケーションは、周期的持続時間、非周期的持続時間、スケジュールされた時間持続時間、メモリ記憶容量閾値、センサ応答イベント及び/又は手動トリガ等のトリガに応答して、レポートを送信することができる。例示の第2のアプリケーションによって収集され且つ/又は別の方法で取得されたデータは、第2のアプリケーションを実行するクライアント装置に記憶されてよい。この場合、収集されたデータは、バイナリフォーマット等のネイティブフォーマットで、メモリ及び/又は他のストレージに記憶される。バイナリフォーマットで記憶されたデータは、通常アーキテクチャ固有のものである。この場合、異なるアーキテクチャは、異なるバイトサイズ(1バイトあたり8ビット、1バイトあたり16ビット等)、異なるエンディアンネス(ビッグエンディアン、リトルエンディアン、混合エンディアン等)及び/又は異なるオフセットアラインメントを利用する。
図1は例示のプロセス間環境100であり、例示の送信側クライアント装置102が例示のネットワーク106を介して例示の受信側サーバ装置104と通信可能に接続される。一部の例では、送信側クライアント装置102及び受信側サーバ装置104は、共通のプラットフォーム上に常駐し、且つ/又は別の方法で動作し、これらの間の通信は、例示のネットワーク106の代わりに通信バス188を用いる。例示のネットワーク106は、任意のタイプの通信プロトコル(TCP/IP、ソケット通信プロトコル/インタフェース、I2Cを介するプロセス間通信、共有メモリ等)を採用してよく、有線ネットワーク(例えばCAT5ルータ/スイッチネットワーク)、無線ネットワーク(例えばWiFi)及び/又はセルベースのネットワーク(GSM(登録商標)、CDMA等)を含んでよい。更に別の例では、ネットワーク106は採用されず、ハードウェアベースの通信ではなく論理的通信と同じプラットフォーム内で、任意の他のタイプの通信プロトコルが採用されてよい。動作中、例示の送信側クライアント装置102は、例示のクライアントタスクエンジン103又は仮想マシン(VM)152を用いて、タスクプロセス184等の1以上のタスクを実行し、収集されたデータ及び/又は他の方法で生成されたデータ(送信側クライアント装置102の例示のペイロードストレージ108に記憶されたタスクデータ等)を(例示の送信クライアント入出力(I/O)インタフェース112を介して)例示の受信側サーバ装置104に送信して、(例示の受信側サーバI/Oインタフェース114を介して)例示のサーバデータストア116に記憶する。図1の図示の実施例は単一のタスクプロセス184を含むが、本明細書に開示される実施例は任意の数のタスクプロセスを含むことができる。送信前に、例示の送信側クライアント装置102の従来のアプリケーションは、エンコーダ110を呼び出して、例示の受信側サーバ装置104と互換性のあるフォーマットにペイロードを符号化する。特に、例示のエンコーダ110は、例示の受信側サーバ装置の例示のデコーダ118に準拠したフォーマットで符号化を行う。したがって、デバイスアーキテクチャ及び/又はデータスキーマが変更された場合、例示のエンコーダ110及び例示のデコーダ118の変更は、それらの間の通信を成功させるために行われなければならない。例示の送信側クライアント装置102は、例示の受信側サーバ装置104からの要求に応答して、且つ/又は他のタイプのトリガ(例えば、送信側クライアント装置102によって管理される時間ベースのトリガ、送信側クライアント装置102によって管理されるセンサベースのトリガ等)に応答して、例示のペイロードストレージ108内のデータの1以上の部分を送信してよい。
しかしながら、例示の送信側クライアント装置102のアーキテクチャは、例示の受信側サーバ装置104のアーキテクチャとは異なる可能性があるので、送信側クライアント装置102は、データの1以上の部分を、ネイティブバイナリフォーマットから例示の受信側サーバ装置104によって処理できるフォーマットに符号化する例示のエンコーダ110を備える。例えば、エンコーダ110は、ネイティブバイナリ(或いはその一部)を、拡張マークアップ言語(XML)フォーマット、抽象構文記法(ASN、例えばASN.1)フォーマット、テキストフォーマット(例えばASCII)等に変換してよく、且つ/又は他の方法で符号化してよい。一部の例では、ネイティブバイナリを代替フォーマットに符号化すると、データストレージフットプリントが比較的大きくなる。更に、送信側クライアント装置102の例示のエンコーダ110は、1以上の受信側サーバ装置と通信する所定の対象フォーマットに固有である。
図1の例示の送信側クライアント装置等の例示の送信側クライアント装置は、典型的には、限定された処理及び/又は記憶リソースを有する。一部の例では、送信側クライアント装置102は、(a)バッテリ容量によって制限される電力消費能力、(b)オンボードメモリによって制限される記憶容量能力、及び/又は(c)オンボード処理装置によって制限される処理能力を有する無線電話である。更に、バイナリが代替フォーマットに符号化されるとき、データの代替フォーマット(例えば、人間が読めるASCII)は、ネイティブバイナリフォーマットと比較して送信中の安全性が低い。更に、例示の送信側クライアント装置102及び/又は例示の受信側サーバ装置104が符号化及び/又は復号動作のスキーマを変更する場合、それらの間の互換性は中断され、通信を可能にする追加の構成動作が必要となる。
本明細書に開示される例示の方法、装置、製品及び/又はステムは、ネットワーク106(或いは共通のプラットフォーム内)のピア(例えば、例示の送信側クライアント装置102と例示の受信側サーバ装置104)間で情報を交換する改善された方法を容易にする。以下で更に詳述するように、例示のクライアントペイロードエンジン150は、例示のクライアントタスクエンジン103の1以上のタスクプロセス184によって生成され、且つ/又はペイロードストレージ108に記憶されていたネイティブバイナリフォーマットを保存する形で、例示の送信側クライアント装置102からのデータの送信を容易にする。
このようなネイティブバイナリフォーマットの保存により、1以上の宛先ピアに送信する前にネイティブバイナリを人間が読めるフォーマットに符号化する際に従来他の方法で発生した、例示の送信側クライアント装置102の計算負荷が軽減される。更に、このようなネイティブバイナリフォーマットの保存により、人間が読めるフォーマットで符号化されたデータよりもネイティブバイナリフォーマットは比較的小さなストレージフットプリントを呈するので、送信装置102のストレージ容量要件が低減される。ネイティブバイナリフォーマットを送信することは、バイナリを代替フォーマットに符号化するバージョンと比較して比較的低い帯域幅を反映するので、ネットワーク伝送効率が改善される。更に、データをそのネイティブバイナリフォーマットで送信することにより、人間が読めるフォーマットと比較して優れたセキュリティ特性を示し、送信中に消費する帯域幅が少なくなる。
更に、以下で更に詳述するように、例示のサーバペイロードエンジン160は、例示の受信側サーバ装置104のアーキテクチャの違いを示す送信ピアからのバイナリフォーマットのデータの受信を容易にし、これにより、バイナリフォーマットのネットワーク転送が従来の人間が読めるフォーマットと比較して固有のセキュリティを維持できるようになる。例示の列挙エンジン170は、以下で更に詳述するように、類似のアーキテクチャでは動作しないピア間のENUMのデータ複合型マッピングを容易にする(例えば、異なる値を有する同様の名称のような、異なる値のマッピングをENUM要素に用いることができる)。例示の変換エンジン180は、以下で更に詳述するように、1以上の変換要求エンティティ182及び/又は例示の受信側サーバ装置104から発することができる要求(例えば、例示の受信側サーバ装置104(受信ピア)に記憶されたコンポジットに関連するデータをレンダリングするための変換要求)を容易にする。
ピア(例えば、例示の送信側クライアント装置102と例示の受信側サーバ装置104)間で情報を交換する改良された方法を容易にするために、例示のプロセス間環境100は、例示のネットワーク106及び/又は例示の通信バス188のうちの少なくとも一方を介して、例示の送信側クライアント装置102及び/又は例示の受信側サーバ装置104に通信可能に接続された例示のメタデータエンジン136を含む。図1Aの図示の実施例では、メタデータエンジン136(主にランタイムに先立って使用される)は、以下で更に詳述する複合インタフェース記述(CID)エンジン120、複合レイアウト記述(CLD)エンジン126及びタスクプロセスコンパイラ186を含む。
動作中、例示の送信側クライアント装置102は、例示のペイロードストレージ108に記憶されるべきペイロードデータを取得及び/又は他の方法で収集する形で実行される1以上のタスクプロセス184を取得及び/又は他の方法で受信する。上述のように、例示の送信側クライアント装置102は、限定された処理及び/又は記憶リソースを有するが、例えばデータ取得動作を達成するために1以上のタスクプロセス184を実行することができてもよい。例示のタスクプロセス184は、例示のメタデータエンジン136の例示のタスクプロセスコンパイラ186により、実行可能なフォーマットにコンパイルされてよい。タスクプロセス184によって生成されるペイロードデータは、1以上の関連するコンポジットを含む。本明細書で使用する場合、コンポジットは、データフィールド及び/又はデータユニットを有する例示のペイロードストレージ108内のペイロードの一部を反映する。例示のコンポジットは、変数名、変数タイプ及び対応する変数値(例えば、各変数名の値)を有するC構造を含む。例示のペイロードストレージ108に記憶された1以上のペイロードは、任意の数及び/又はタイプのコンポジットを含むことができる。
従来の送信側クライアント装置102は、典型的には、要求されたコンポジットのネイティブバイナリを例示の受信側サーバ装置によって期待されるフォーマットに符号化するために例示のエンコーダ110を呼び出す1以上のペイロードを、送信及び/又は別の方法で伝送するように指示される。しかしながら、本明細書に開示される実施例は、(例えば、エンコーダを有するレガシーピアのための)エンコーダがコンポジットを符号化することを防止することにより、送信プロセス中に帯域幅利用を改善し、それにより、ピア(例えば例示の受信側サーバ装置104)にそのネイティブバイナリフォーマットでデータを送信することができる。更に、コンポジットはネイティブバイナリフォーマットで送信されるので、インターセプト及び/又はネットワークスニッフィングの際に人間が読めるフォーマットがレンダリングされないようにすることで、コンポジットのセキュリティが強化される。一部の例では、人間が読めるフォーマットと区別されるネイティブのネイティブバイナリフォーマットは、曖昧さによってセキュリティとみなされる。
図1Bは、図1Aの例示のメタデータエンジン136に関連する追加の詳細を含む。図1Bの図示の実施例では、CIDエンジン120は、CIDポインタマネジャ122及びCLDファイルジェネレータ124も含む。更に、例示のCLDエンジン126は、例示のCLDポインタマネジャ128、例示のCLDファイルジェネレータ130及び例示のペイロードアナライザ132も含む。例示のタスクプロセスコンパイラ186がタスクプロセス184をコンパイルすることに応答して、例示のCIDエンジン120は、送信されるコンポジットに関連するCIDを生成する。一般的に言えば、以下で更に詳述するように、コンポジットメタデータは、コンポジットの関連するCID及びCLDへの簡略な参照を容易にする。以下で更に詳述するように、CIDは、コンポジットのアーキテクチャ非依存のテキスト又は結合バイナリ及びテキスト記述であり、コンポジットのタイプの定義(例えばC構造体)と、コンポジットの名称と、コンポジット要素名並びに対応するタイプ及び配列の次元のリストを含む。更に、例示のCLDエンジン126は、送信されるコンポジットに関連付けられたCLDを生成する。以下で更に詳述するように、CLDは、コンポジットのアーキテクチャ固有のテキスト又は結合テキスト/バイナリ記述であり、コンポジットのサイズ(例えばバイト数)、コンポジット内の要素の数、バイナリ画像内の各要素のバイトオフセット値を含む。
まとめると、例示のCID及びCLDは、タスクプロセス184にコンパイルされるコンポジットメタデータを表し、或いは、JAVA(登録商標)のような仮想化言語の場合、コンポジットメタデータは仮想マシン(VM)152に記憶され、且つ/又は送信側クライアント装置102の例示のペイロードストレージ108に記憶される。例示のタスクプロセス184がコンパイルされ、その中にメタデータが含まれた後は、例示のメタデータエンジン136は実行時にもはや必要ではない。一般的に言えば、例示のCIDエンジン120がコンポジットに関連付けられたCIDを生成し、例示のCLDエンジン126がコンポジットに関連付けられたCLDを生成した後、送信されるコンポジット(及び関連するCIDとCLD)への以後の参照は、例示の送信側クライアント装置102の処理リソースを節約するために、例示のメタデータリファレンスを介して参照されてよい。生成されたコンポジットメタデータ(CID及びCLDを含む)は、後に例示のメタデータリファレンスマネジャ134により実行時に取得され(コンパイルされたタスクプロセス184の状況において)、或いは、VM152から取得され、一意のメタデータリファレンス(例えば、コンポジットメタデータを識別するためのテキスト及び/又は数値の命名法)に関連付けられる。このリファレンスを使用する他のデバイスは、それらの間に存在し得るアーキテクチャの相違に関係なく、一貫した結果を生成することができる。例示のメタデータリファレンスマネジャ134は、例示のクライアントペイロードエンジン150に配置され、以下で更に詳述される。
図2は、図1の例示の送信側クライアント装置102の概略図であり、例示のペイロードストレージ108に記憶され、且つ/又は例示のクライアントタスクエンジン103の1以上のタスクプロセス184によって生成されたデータを管理することに関する追加の詳細を含む。図2の図示の実施例では、送信側クライアント装置102は、図1に関連して上述したように、1以上の実行可能なタスクプロセス184を有するクライアントタスクエンジン103と、ペイロードストレージ108と、エンコーダ110(例えばレガシーエンコーダ)と、ネットワーク106及び/又は通信バス188に通信可能に接続された送信側クライアントI/Oインタフェース112とを備える。更に、図2の例示の送信側クライアント装置102は、例示のVM152、例示のクライアントペイロードエンジン150、例示のクライアントペイロードモニタ204、例示のエンコーダインタフェース208、例示のタスク記憶インタフェース210及び例示のメタデータリファレンスマネジャ134を備える。
動作中、例示のクライアントペイロードモニタ204は、例示のペイロードストレージ108が、例示の受信側サーバ装置104に送信されるべき情報及び/又は他の方法で伝送される情報を含むか否かを決定する。一部の例では、クライアントペイロードモニタ204は1以上のトリガに応答して、受信側サーバ装置104からの要求(例えばリモートプロシージャコール(RPC))、時間ベースのトリガ、センサベースのトリガ、及び/又はペイロードストレージ108内の記憶された情報の閾値容量に基づくトリガ等の、ペイロードストレージ108内の利用可能な情報を識別する。例示のクライアントペイロードモニタ204がペイロード情報を送信する場合、例示のメタデータリファレンスマネジャ134は、タスクプロセス184でコンパイルされたメタデータを抽出及び/又は他の方法で取得して、アーキテクチャの相違を有する可能性のあるピア間のペイロード伝送の改善を容易にする。例示のメタデータリファレンスマネジャ134は、コンパイルされていない(仮想化された)タスクが呼び出された場合(例えば、例示のVM152で実行されたタスク)、VM152又はペイロードストレージ108から関連するメタデータを抽出及び/又は他の方法で取得する。
図3Aは、例示のCIDエンジン120によって生成される例示のCID300を示す。図3Aの図示の実施例では、CID300は、コンポジットタイプ302(“struct”)と、コンポジット名304(“foos1”)と、コンポジット要素名306と、対応するコンポジット要素タイプ308を含む。上述のように、CIDは、コンポジットのアーキテクチャ非依存テキスト記述を含む(図3Aの図示の実施例におけるC構造体)。更に、例示のCID300は、例示のペイロードストレージ108にファイル(例えばCIDファイル)として記憶されてよく、例示のコンポジットメタデータの一部であってよい。
図3Bは、例示のCLDエンジン126によって生成される例示のCLD350を示す。図3Bの図示の実施例では、CLD350は、例示のコンポジットのサイズ識別子352と、対応するサイズ値354と、要素識別子356の数及び対応する要素値358と、対応するバイナリオフセット値362を伴うオフセット識別子360とを含む。更に、例示のCLD350は、例示のペイロードストレージ108にファイル(例えばCLDファイル)として記憶されてよく、例示のコンポジットメタデータの一部であってよい。まとめると、例示のコンポジットメタデータは、例示のCID300及び例示のCLD350を含む。
例示のCID300を構築及び/又は他の方法で生成するために、例示のCIDポインタマネジャ122は、タスクプロセスコンパイラ186によってコンパイルされるタスクプロセス184と関連付けられたコンポジットを取得する。一般的に言えば、変数名、オフセット値及び/又はサイズ情報等のコンポジット情報は、コンパイラによって利用可能であり、且つ/又は他の方法でコンパイラによってリゾルブされる。このように、例示のタスクプロセスコンパイラ186は、対応する実行可能ファイルが実行されるデバイスのアーキテクチャタイプと一致し、且つ/又は他の方法で関連付けられるタイプのものである。以下の表1に、例示のタスクプロセスコンパイラ186によって処理される例示のCLD構造(バイナリ)定義を示す。
更に、例示のタスクプロセスコンパイラ186は、以下の表3に示すようにバイナリCLDをコンパイルすることができる。
例示のCIDファイルジェネレータ124は、コンポジットに関連付けられたアーキテクチャ非依存の情報を取り込むCIDシェルファイルを生成する。例示のCIDポインタマネジャ122は、そこに含まれる各要素の情報についてコンポジットを解析するためのポインタを用いて、バイナリコンポジットの先頭を識別する。バイナリコンポジット内の各要素について、例示のCIDファイルジェネレータ124は、CID300への情報をテキストとして符号化する。全ての要素がCID300に符号化されると、例示のCLDポインタマネジャ128は、タスクプロセスコンパイラ186によってコンパイルされるタスクプロセス184に関連付けられたコンポジットを取得し、例示のCLDファイルジェネレータ130は、コンポジットに関連付けられたアーキテクチャ固有の情報を取り込むCLDシェルファイルを生成する。例示のペイロードアナライザ132は、コンポジットのサイズを識別し、それをCLDシェルファイルに書き込み、コンポジットの要素の数を識別し、その値をCLDシェルファイルに書き込む(例示のCLD350の要素352,354,356,358を参照)。例示のCLDポインタマネジャ128は、コンポジットの要素の数に基づいて、対応する回数だけコンポジットバイナリを増分及び/又は他の方法で解析して各要素を識別し、対応するバイナリオフセット値を識別し、例示のペイロードアナライザ132はその情報をCLDシェルファイルに追加する。一部の例では、例示のペイロードアナライザ132は、使用可能であれば、例示のバイナリコンポジットのエンディアン値を決定し、それをCLDシェルファイルに書き込む。コンポジット内の任意のサブコンポジットの場合、そのようなサブコンポジットには、上記と同様の方式で決定される独自の類似したメタデータ定義がある。
例示のメタデータリファレンスマネジャ134は、CID300及びCLD350を、コンポジットメタデータとして以後の使用のために送信側クライアント装置102に送信して、ターゲットピア(例えば例示の受信側サーバ装置104)へのデータ転送/送信の改善を容易にする。一部の例では、送信側クライアント装置のタスクプロセス184が、利用可能なペイロードデータをターゲットピアに送信する準備ができているとき、そのような送信は、例示のメタデータエンジン136によるそれ以上の関与なしに進めることができる。しかしながら、1以上の追加及び/又は代替のタスクプロセス184がペイロードデータ収集のために例示の送信側クライアント装置に提供される場合、例示のメタデータエンジン136は、対応する実行可能ファイルと、対応するコンポジットのコンポジットメタデータ(例えばCID、CLD)の1以上のインスタンスを生成するために、上記の開示された例を繰り返す。
上述のように、1以上のタスクプロセス184は、コンパイルされた(例えばネイティブ)言語(例えばC、C++)ではなく、仮想化言語(例えばJAVA(登録商標)、C#)に関連付けられる。そのような状況では、例示のCID及びCLDは、例示のVM152からの協働による反映によって生成される。例えば、メタデータリファレンスマネジャ134(送信側クライアント装置102の例示のペイロードエンジン150を参照)は、送信側クライアント装置102のVM152に問い合わせて、仮想化されたタスクプロセス184に関連付けられたコンポジットに利用可能な1以上の変数タイプ及び/又は変数名を決定する。更に、仮想マシンベースの言語(例えばJAVA(登録商標)、C#)はオフセット情報を含まないので、要素はパディングバイトの有無に関わらず連続してパックされる。一部の例では、仮想化されたタスクは、特に1以上のパディング技術が採用される場合、CLDを必要としない。更に、1以上の異なる位置にあるVM(例えば、送信側クライアント装置102のVM152、受信側サーバ装置104のVM152)は、2以上のピア間のタスクプロセスの一貫性を保証するために、例示のメタデータエンジン136によって同期及び/又は別の方法で登録されてよい。
トリガ(例えば、ペイロードデータの要求)に応答して、図2の例示のタスク記憶インタフェース210は、コンポジットメタデータ(例示のCID300及び例示のCLD350を含み、特定のメタデータリファレンスに関連付けられている)が、以前の機会に例示の受信側サーバ装置104に送信されたか否かを決定する。そうでない場合、例示のクライアントペイロードエンジン150は、(a)ネイティブバイナリ(例えば、対象バイナリコンポジットを含むペイロードの一部)と、(b)コンポジットメタデータと、(c)バイナリコンポジット及び/又はそれに関連するコンポジットメタデータへの以後の参照を行うときに使用されるメタデータリファレンスとの両方を送信する。一部の例では、クライアントペイロードエンジン150は、任意の受信ピアが既にコンポジットメタデータを受信及び/又は他の方法で有しているという仮定の下で、(a)ネイティブバイナリ及び(b)メタデータリファレンスを送信する。そうでない場合、例えばコンポジットメタデータが以前に送信されていない場合や、受信ピアが以前に受信したコンポジットメタデータをもはや有していない場合、例示の受信I/Oインタフェース114は要求コマンドを生成する。要求コマンドが例示のクライアントペイロードエンジン150によって受信されると、コンポジットメタデータは、例示の受信ピア(例えば受信側サーバ装置104)に送信される。
以下で更に詳述するように、ネイティブバイナリと共にコンポジットメタデータを送信することにより、例示の受信側サーバ装置104は受信時にネイティブバイナリを復号することが可能となり、符号化努力を回避することにより例示の送信側クライアント装置102の計算効率を改善することができる。更に、例示の送信側クライアント装置102は、符号化リソース/労力を費やすことなくネイティブバイナリを送信することができるので、例示の送信側クライアント装置102は、オンボード電力(例えばバッテリ)リソースを節約し、より低い送信帯域幅を消費する(送信効率を改善する)。また、ネイティブバイナリフォーマットは、人間が読めるフォーマットよりも比較的小さなストレージフットプリントを含むので、例示の送信側クライアント装置102は、オンボードストレージ(例えば、オンボードメモリ、RAM、FLASH)リソースを節約する。更に、例示の送信側クライアント装置102が、生成されたコンポジットバイナリに関連するスキーマを変更した場合、送信ピア/受信ピア間で送信の互換性は中断されず、代わりに、更新されたコンポジットメタデータでスキーマの更新(例えばアーキテクチャの変更、コンポジット要素に関連付けられたバイナリオフセット値の変更)を管理することができる。
一部の例では、送信側クライアント装置102は、コンポジットに関連付けられたコンポジットメタデータを、例示の受信側サーバ装置104に以前に送信している。したがって、例示の受信側サーバ装置104は、(a)コンポジットメタデータ及び(b)メタデータリファレンスの記憶されたコピーを既に有する。よって、例示のクライアントペイロードエンジン150は、(a)コンポジットメタデータ、(b)メタデータリファレンス及び(c)コンポジットバイナリの3つ全てを送信するのではなく、上述のようにメタデータリファレンス及びコンポジットバイナリのみを送信する。例示の受信側サーバ装置は、以前に記憶されたコンポジットメタデータのコピーを参照して、コンポジットバイナリを変換することを可能にする(例えば、テキスト、XML、受信ピアアーキテクチャに関連する代替バイナリ等の代替フォーマットに変換される)。
図4は、図1Aの例示の受信側サーバ装置104の概略図であり、例示の送信側クライアント装置102によって受信されたデータを処理することに関する追加の詳細を含む。一部の例では、データを処理することは、受信ピアとは異なるアーキテクチャフォーマットを有する送信ピアによって取得されたコンポジットバイナリ等のデータをリゾルブすることを含む。図4の図示の実施例では、受信側サーバ装置104は、図1Aに関連して上述したように、例示のネットワーク106に通信可能に接続された例示の受信側サーバI/Oインタフェース114と、例示のデコーダ118と、例示のサーバデータストア116と、例示のVM152とを備える。更に、図4の例示の受信側サーバ装置104は、例示のサーバペイロードエンジン160、例示のサーバペイロードモニタ404、例示のサーバメタデータマネジャ406、例示のサーバ記憶インタフェース408、例示のデコーダマネジャ410、例示の列挙エンジン170、例示の解決テーブルマネジャ414、例示の例外ジェネレータ416、例示の変換エンジン180、例示の要求マネジャ420、例示のフォーマットリゾルバ422、例示の変換システム424、例示の例外ジェネレータ416、及び、ペイロードデータを1以上の要求エンティティの所望のフォーマット(例えば、例示の変換要求エンティティ182からの1以上の要求)に部分的に符号化する例示のフォーマットエンコーダ426を備える。
動作中、例示のサーバペイロードモニタ404は、ペイロードが例示の受信側サーバI/Oインタフェース114を介して受信されたか否かを判定する。上述のように、例示の送信側クライアント装置102は、例示の受信側サーバ装置104によって開始されるトリガ等のトリガに応答して、ペイロードデータを送信してよい。ペイロード情報が受信された場合、例示のサーバメタデータマネジャ406は、受信されたペイロードデータが、マッチするコンポジットメタデータリファレンスも含むか否かを判定する。上述のように、例示の送信側クライアント装置102がコンポジットメタデータ(例えば、例示のCID300及び例示のCLD350)を提供するとき、コンポジットタデータリファレンスも、以後の参照のためのコンポジットメタデータに関連付けられ、マッチし、且つ/又はその他の方法でタグ付けされる。この例について、受信されたペイロード(例えば、受信されたバイナリコンポジット、受信されたメタデータリファレンス、受信されたメタデータコンポジット情報)が初めて発生すると仮定すると、例示のサーバ記憶インタフェース408は、受信されたメタデータコンポジット情報を抽出して、対応するCID及びCLDを識別する。抽出されたCID(例えば、図3Aの例示のCID350)と抽出されたCLD(例えば、図3Bの例示のCLD350)は、例示のサーバデータストア116に記憶され、抽出されたメタデータリファレンス命名法(例えば“SF1”)と関連付けられる。このように、同じスキーマ(例えば、同じCIDと同じCLDを有するコンポジットメタデータ)を有する別のバイナリコンポジットが送信された場合、例示の受信側サーバ装置104は、それをサーバデータストア116から取得してよい。よって、要求されたコンポジット内に記憶されたデータを取得及び/又は別の方法でレンダリングするための1以上の後続の要求の間に、受信側サーバ装置104の処理リソースが節約される。実際には、例示の送信側クライアント装置102(例えば送信ピア)からのメタデータリファレンスが、例示の受信側サーバ装置104(例えば受信ピア)からのメタデータリファレンスとマッチする場合、CID及びCLD情報の再構築及び/又はその他の取込みへの取組みはバイパスされる。
しかしながら、例示の送信側クライアント装置102と例示の受信側サーバ装置104は、それぞれ固有及び/又はその他の異なるアーキテクチャを有することができるので、送信側クライアント装置102からの受信ペイロードは、受信側サーバ装置104と互換性がない場合がある。このように、例示のサーバメタデータマネジャ406は、任意のアーキテクチャの相違に対応し、且つ/又は別の方法で解決するために、それ自身のサーバ側CIDファイルとサーバ側CLDファイルを生成する。一部の例では、サーバメタデータマネジャ406は、図1Bに示すような、サーバ側CIDファイル及びサーバ側CLDファイルを生成するための1以上の要素を含む。例示のタスクプロセスコンパイラは、例示の受信側サーバ装置104の特定のアーキテクチャタイプのタスクプロセスをコンパイルすることができる。更に別の例では、サーバメタデータマネジャ406は、例示の受信側サーバ装置104に関連付けられたアーキテクチャと互換性のあるメタデータエンジンに通信可能に接続される。
図5の図示の実施例では、例示のCIDエンジン120によって生成された例示のCID300は、例示の変換エンジン180によって変換され、例示のサーバデータストア116に記憶されている。更に、例示のCLDエンジン126によって生成された例示のCLD350は、例示の受信側サーバ装置104によって変換され、例示のサーバデータストア116に記憶されている。まとめると、例示のCID300及び例示のCLD350は、コンポジットメタデータ575(点線を参照)を生成する。図3Aに関連して上述したように、例示のCID300は、コンポジットタイプ302(“struct”)、コンポジット名304(“foos1”)、コンポジット要素名306及び対応するコンポジット要素タイプ308を含む。図5の図示の実施例は“struct”のコンポジットタイプを含むが、本明細書に開示される実施例はこれに限定されない。一部の例では、コンポジットは、以下で更に詳述するように、1以上の要素がリゾルブされるタイプ、列挙(enum)であってよい。
サーバ側CID500は、より多い要素又はより少ない要素を有するそれ自身の固有の定義を有してよく、ピア間でマッチするものだけが変換を可能にする。ピア間の対応するマッチを含まないこれらの1以上の要素について、それらは無視されてよく、且つ/又は、例示の例外ジェネレータ416によって例外エラーが生成され、その間に部分的な復号能力を伝えることができる。比較及び/又は変換が完了すると、例示のサーバ側CID500は、コンポジットタイプ502、コンポジット名504、コンポジット要素名506及び対応するコンポジット要素タイプ508も含むことになる。更に、例示のサーバ側CID500は、例示の送信側クライアント装置によって最初に確立されたのと同じメタデータリファレンス命名法に関連付けられることになる。図5の図示の実施例では、CID300は、メタデータリファレンス“SF1”310に関連付けられ、これもサーバ側CID500に帰属される(要素510を参照)。
図3Bに関連して上述したように、例示のCLD350は、コンポジットのサイズ識別子352と対応するサイズ値354、要素識別子の数356と対応する要素値358、対応するバイナリオフセット値362を伴うオフセット識別子360を含む。例示のサーバメタデータマネジャ406はまた、サーバ側CLD550を生成し、それに、変換エンジン180によって受信されたCLD350から翻訳されたデータの1以上の部分を取り込む。具体的には、初期の比較/変換が完了すると、例示のCLD550は、サイズ識別子552、要素識別子の数556及びオフセット識別子560を含むことにより、受信されたCLD350とのパリティの程度を反映する。例示の受信側サーバ装置104のアーキテクチャが送信側クライアント装置102のアーキテクチャと異なる場合、例示の変換エンジン180は、受信側サーバ装置104のそれぞれのアーキテクチャタイプに基づいて、例示のサーバ側CLD550に書き込まれるサイズ、要素数及び/又はバイナリオフセットの適切な値を決定する。
一部の例では、マッピングテーブルは送信側メタデータと受信側メタデータをリゾルブする。図5の図示の実施例では、変換エンジン180は、受信側サーバ装置104のアーキテクチャに基づいて、バイナリコンポジットのサイズが“74”であると判定する(送信側クライアント装置102からのサイズ“80”ではなく)。同様に、例示の変換エンジン180は、受信側サーバ装置104のアーキテクチャの要件に適合するように調整されるべきサーバ側CLD550のバイナリオフセット値562の特定のものを識別している(例えば、要素A.sbのオフセット値は、送信側クライアント装置102では“4”であるが、受信側サーバ装置104では“2”である)。
バイナリコンポジットが将来例示の受信側サーバ装置104によって受信及び/又は他の方法で取得される場合(例えば、バイナリコンポジットが異なるペイロードデータを含むが、同じスキーマ/コンポジットフォーマットを示す場合)、受信側サーバ装置104は、オフセット位置を訂正するために、マッチするメタデータ及びマップを識別することができる。一部の例では、サーバメタデータマネジャ406は、図5の図示の実施例に示すような、比較のためのメタデータ解決テーブルとして機能する並列比較テーブルを生成する。例示の変換エンジン180は、取得されたCID300及び対応するメタデータリファレンス(例えば“SF1”310)を取得し、マッチするメタデータリファレンス(例えば“SF1”510)を識別/比較するために、例示のサーバデータストア116に問い合わせる。発見された場合、例示の変換エンジン180は、サーバ側CID500及び/又はサーバ側CLD550を再取込みするための任意の動作をバイパスしてよく、代わりに、以前に記憶されたサーバ側CID500を取得し、それらを比較してそれらの間のパリティを確認する。
取得されたCID300と記憶されたサーバ側CID500との間に1以上のディスパリティが識別されると、データ破損及び/又はデータの不一致を識別するために、変換エンジン180の例示の例外ジェネレータ416により1以上の例外が呼び出し及び/又は別の方法で生成される。更に、例示の変換エンジン180は、取得されたCLD350及び対応するメタデータリファレンス(例えば“SF1”310)を取得し、一致するメタデータリファレンス(例えば“SF1”510)を識別するために例示のサーバデータストア116に問い合わせる。発見された場合、例示の変換エンジン180は、以前に記憶されたサーバ側CLD550を取得し、それを取得されたCLD350と比較して、オフセット値の相違を識別する。取得されたCLD350内のオフセット値を知ることにより、例示の受信側サーバ装置は、特定の要素に関連付けられたコンポジットバイナリ内に記憶されたデータを抽出することができ、それを、受信側サーバ装置104の特定のハードウェアアーキテクチャに準拠するバイナリフォーマットで例示のサーバデータストア116に記憶する。
更に、例示の受信側サーバ装置104が、変換要求エンティティ182(例えば、XMLでレンダリングされたバイナリコンポジット情報を必要とする第三者リクエスタ(例えば、変換要求エンティティ182のうちの1つ))の取得されたバイナリコンポジットの代替フォーマットを生成する変換要求を実行する場合、例示のサーバ側CLD550は、例示の変換システム424が、(例えば、送信側クライアント装置102に固有ではなく受信側サーバ装置104に固有のバイナリ形式の)バイナリコンポジットを取得し、1以上の対象要素についてバイナリ内の正確な位置を識別し、適切なフォーマットエンコーダ426を起動してペイロードデータを更なる送信/配信のための所望の代替フォーマットにレンダリングする。図1の図示の実施例は、受信側サーバ装置104の外部の受信側サーバ装置182の外部の変換要求エンティティ182を示すが、一部の例は、受信側サーバ装置104内の1以上の変換要求エンティティ182を含んでよい。いずれの場合においても、変換要求エンティティ82が独自のCID/CLD(メタデータ)を有する場合、上述のように、それらは送信側クライアント装置102に関連付けられた任意のメタデータと比較され、アーキテクチャ上の相違をリゾルブする。
要求マネジャ420が変換要求(例えば、特定のフォーマットのコンポジットデータを取得するための例示の受信側サーバ装置104に対する第三者の要求)を識別すると、例示のフォーマットリゾルバ422は、所望のフォーマットのタイプを識別する。例示のフォーマットリゾルバ422は、例示のサーバデータストア116に問い合わせて、要求されたコンポジットの所望のフォーマットが既に利用可能であるか否かを判定する。利用可能であれば、例示の変換エンジン180は、復号化されたコンポジットをストレージから取得し、例示の受信側サーバI/Oインタフェース114を介してそれをリクエスタに転送する。一部の例では、要求されたコンポジットは、バイナリコンポジットを第三者の変換要求によって要求された所望のフォーマットに復号するための1以上の以前の取組みに応答して、例示のサーバデータストア116に保存されているので、既に利用可能である。
一方、要求されたコンポジットの所望のフォーマットが例示のサーバデータストア116で利用可能でない(例えば、これが対象コンポジットバイナリに対して変換要求が最初に呼び出されたときである)場合、例示のフォーマットリゾルバ422は、サーバ側CID500から第1のコンポジット要素を識別し、例示のサーバデータストア116に記憶されたコンポジットバイナリの要素に関連付けられたオフセット値を含むサーバ側CLD550から、対応するコンポジット要素を識別する。コンポジットバイナリの要素のそれぞれのオフセット値に基づいて、例示の変換システム24は、コンポジットバイナリに位置するデータを取得し、対応するフォーマットエンコーダ426を呼び出して、データをリクエスタに関連付けられたフォーマットに変換する(例えば、テキストへの変換、XMLへの変換、JSONへの変換)。フォーマットエンコーダ426は、任意の数のエンコーダタイプを含むことができ、それぞれが特定のフォーマットに符号化することができる。一部の例では、変換システム424は、フォーマットエンコーダ426を呼び出して、ネイティブバイナリからテキスト、ネイティブバイナリからXML、ネイティブバイナリからJSON等に変換する。例示の変換エンジン180は、例示のサーバデータストア116に記憶されたターゲットコンポジットバイナリの各要素を変換するので、集約されたコンポジット要素を所望のフォーマットを有する出力ファイルに(例えば、例示のサーバデータストアに)記憶する。次に、例示の変換エンジン180は、変換されたファイルを、例示の受信側サーバI/Oインタフェース114を介してリクエスタに送信する。
上述のように、いくつかの例ではコンポジットはENUM型であり、受信ピアからのコンポジットENUMと比較して送信ピアからのコンポジットENUMの1以上の命名ディスパリティを解決するために、要素間の更なる解決が必要となる。図6は、列挙(ENUM)コンポジットタイプに関連付けられた例示のCID及びCLDテーブルを示す。一部の例では、サーバペイロードモニタ404は、ペイロードに記憶された特定のペイロードタイプ及び/又は特定のタイプのコンポジットを検出する。例えば、例示のサーバペイロードモニタ404が、受信されたコンポジットバイナリがENUMタイプのものであることを検出した場合、例示の列挙エンジン170は、受信したコンポジットバイナリ(例示の送信側クライアント装置102からの)と、例示の受信側サーバ装置104で実装されたENUMフォーマットとの間のENUMデータの変換を容易にする。一般的に言えば、例示の送信側クライアント装置102(例えば、送信ピア)からのENUMに関連付けられたデータは、例示の受信側サーバ装置104(例えば受信ピア)からのENUMと同じデータを参照しているかもしれないが、各装置は、リファレンス命名法のいくつかの相違を有するENUMを実施してよい。列挙型構造体は、コンパイラが名称/命名法に基づいて実際の値をリゾルブする対応する名称を用いて抽象化された、名前付き値のリストを表す。しかしながら、一緒にコンパイルされず、且つ/又は異なるアーキテクチャを有するピア(例えば、例示の送信側クライアント装置102と例示の受信側サーバ装置104)のネットワークにおいて通信する場合、ENUMが最初に非バイナリ(例えばテキスト)フォーマットに変換されない限り、解決は不可能である。上述のように、バイナリフォーマットから1以上の代替フォーマットへの変換は、符号化処理中の膨大なストレージフットプリントと計算上の歪みをもたらす。よって、例示の送信側クライアント装置102と例示の受信側サーバ装置104の間の調整を可能にするために、例示の列挙エンジンは、1以上のディスパリティを解決するときに、符号化オーバヘッドを回避し、且つ/又はバイナリ変換作業を防止しながら、それらの間の変換を容易にする。
図6の図示の実施例では、ネットワーク600上のピアからの(例えば、送信側クライアント装置102からの)CID600は、コンポジットタイプ識別子602によって識別されるような列挙(ENUM)タイプのコンポジット構造を含む。例示のCID600はまた、名称“colors”を有するENUMタグ604を含む。一部の例では、ENUMタグ604はENUM名と呼ばれる。例示のCID600はまた要素名606を含み、要素の一部は対応するターゲット値(例えば、yellow=900、black=1000)を含む。初期の明示的なターゲット値(red、green、blue等)を含まない要素については、暗黙の値が順次割り当てられる。例えば、redには0が割り当てられ、greenには1が割り当てられる。一部の例では、ENUM要素の選択及び/又は識別は、要素名(例えば“yellow”)、要素ターゲット値(例えば“900”)、又はENUM要素のリスト内の要素バイナリ位置(例えば、ゼロベースのバイナリリストの第4の要素を参照する“3”)を参照して生じてよい。図6はまた、ピアからの(例えば送信側クライアント装置102からの)CLD610を含み、ENUMコンポジットのサイズに関する情報を含む。図6の図示の実施例では、ENUMコンポジットのサイズは“2”であり、これは16ビットを示すバイト値を反映する。以下で更に詳述するように、例示のCID600及び例示のCLD610は、マッピングされるENUMコンポジットタイプのインスタンスに応答して、例示の変換エンジン180又はENUMエンジン170に送信される。
図6はまた、ネットワーク600上の別個のピアからの(例えば受信側サーバ装置104からの)CID612を含む。図6の図示の実施例では、CID612は、“colors”と命名されたENUMタグ616を有するENUMタイプ614を含み、それにより、例示のネットワーク600上にマッピングされる他のENUMコンポジットとの一致を示す。例示のCID612は要素名618を含み、要素の一部は対応するターゲット値(例えば、green=50、yellow=700)を含む。上述のように、明示的な値をもたない要素には、暗黙の値が順次割り当てられる(例えば、redは0が割り当てられ、greyは1001が割り当てられる)。図6はまた、別個のピアからの(例えば受信側サーバ装置104からの)CLD620を含み、ENUMコンポジットのサイズに関する情報を含む。図6の図示の実施例では、ENUMコンポジットのサイズは“4”であり、これは32ビットを示すバイト値を反映する。例示のCID612及び例示のCLD620は、マッピングされるENUMコンポジットタイプのインスタンスに応答して、例示のデコーダ618に送信される
上述のように、ENUMコンポジットタイプ間のディスパリティをマッピング及び/又は他の方法でリゾルブする従来のアプローチは、ENUMを標準フォーマットに符号化及び/又は他の方法で変換するためにピア間の調整を必要とした。これは、元のバイナリフォーマットを比較的大きなメモリストレージフットプリントに変換し、対応するより大きな帯域幅消費を引き起こし、リソースの符号化を必要とし、データ転送中のデータセキュリティを低下させる(例えば、符号化された標準タイプが人間が読めるテキストになる)。本明細書に開示される実施例は、メモリストレージフットプリントを節約し、帯域幅消費を節約し、リソースの符号化を削減及び/又は排除し、データ転送中のデータセキュリティを改善する。
例示の受信側サーバ装置104の例示の解決テーブルマネジャ114は、列挙解決テーブル(ERT)が以前に生成されたか否かを決定する。生成されていなければ、一致するコンポジットタグを共有するCID及びCLD情報に基づいて、ERT(例えば、最初は空のシェルファイル)が生成される。例示の解決テーブルマネジャは、ERTをファイルとして例示のサーバデータストア116に保存してよい。図7は、例示のネットワーク600上の1対のピア(例えば、例示の送信側クライアント装置102と例示の受信側サーバ装置104)からのCID及びCLD情報が取り込まれた、例示のERT700を示す。図7の図示の実施例では、ERT700は、第1のピア列702(例えば“Peer1”)及び第2のピア列704(例えば“Peer2”)を含む。更に、例示の第1のピア列702及び例示の第2のピア列704のそれぞれについて、ERT700は、例示のコンポジット識別子706、例示のコンポジット名識別子708、例示のコンポジットサイズ識別子710及び例示のコンポジット要素識別子712を含む。例示の第1のピア列702及び例示の第2のピア列704のそれぞれについて、例示のコンポジット要素識別子712は、要素インデックス列714、要素名列716及び要素値列718(例えばターゲット値)を含む。更に、例示のコンポジット要素識別子712は、第1のピア及び第2のピアの特定の要素のコンポジット位置が一致するか否かを識別するための要素パリティ列720と、例示の第1のピア702と例示の第2のピア704との間の要素を一致させるために、1以上の代替識別子(要素インデックス位置を除く)を使用できるか否かを識別するセカンダリ解決列722とを含む。換言すると、例示のセカンダリ解決列722は、例示の第1のピア702と例示の第2のピア704との間のそれぞれのENUM要素間のマッピングリンクを反映する。
例示の第1のピア702と例示の第2のピア704のENUM間でどの要素が一致するかを判定するために、ENUMエンジン170の例示の例外ジェネレータ416は、要素位置の不一致が生じるか否かを判定する。具体的には、例示の例外ジェネレータ416は、両方のピアの第1の要素位置(例えば、要素インデックス位置列714のゼロ“0”ビット)を識別し、対応する要素名(例えば、要素名列716の要素名“red”)が一致するか否かを決定する。そうである場合、評価された要素インデックス位置(例えば、インデックス位置“0”)に関連付けられる要素は一致とみなされ、例示の解決テーブルマネジャ414がTRUEの値を例示の要素パリティ列720に設定する。
一方、例示の例外ジェネレータ416がピア間の要素位置の不一致を識別した場合(図7の行724参照)、例示の例外ジェネレータ16は、セカンダリ解決パラメータが異なる要素との一致候補を示すか否かを決定する(例えば、代替の要素インデックス値を有する別個の要素)。図7の図示の実施例では、Peer1 702のインデックス位置“2”(行724)は、要素名716“blue”に関連付けられているが、Peer2 704のインデックス位置“2”は、要素名716“yellow”に関連付けられており、不一致を示す。このように、例示の解決テーブルマネジャ414は、インデックス位置“2”(行724)に関連付けられる例示の要素パリティ列720に値FALSEを設定する。例示の第1のピア702と例示の第2のピア704との間でインデックス位置“2”の不一致が識別されたにも関わらず、例示の例外ジェネレータ416はセカンダリ解決パラメータを使用して一致する。具体的には、例示の例外ジェネレータ416は、例示の第1のピア702からの要素名“blue”のセカンダリ解決パラメータを使用し、一致する要素名“blue”について例示の第2のピア704の全ての要素名を検索する。図7の図示の実施例では、例示の第2のピア704において一致が識別されず、例示の例外ジェネレータ416は、要素名“blue”に関連付けられた任意の要素について例外を呼び出す。図示の実施例ではセカンダリ解決アプローチとして要素名を使用しているが、本明細書に開示の実施例はそれに限定されない。一部の例では、ENUMとのピア間の任意の相違を識別するための主な手法は、要素名のみを採用してよい。
要素名“blue”に関連付けられた例示の第1のピア702と例示の第2のピア704との間の不一致に関係なく、その間の1以上の他の要素は、例示の第1のピア702及び例示の第2のピア704のENUM間の相違を解決するために用いることのできる一致を、更に示すことができる。例えば、第1のピア702のインデックス位置“3”の例示の要素名“yellow”は、第2のピア704のインデックス位置“3”の要素名“black”と一致しないので、例示の例外ジェネレータ416はまた、インデックス位置“3”(図7の行726参照)のピア間のインデックス位置の不一致を識別する。しかしながら、例示の例外ジェネレータ416が要素名“yellow”の代替のインデックス位置を検索すると、第2のピア704のインデックス位置“2”において一致が識別される。このように、例示の解決テーブルマネジャ414は、ビット位置「3」のセカンダリ解決列722に、第1のピア702が第2のピア704のインデックス位置“2”と一致するというマッピングインジケータと共にビット位置“3”を取り込む
例示のERT700に解決されたマッピング情報が取り込まれたとき、例示の列挙エンジン170は、ENUM“colors”をマッピングするための1以上の以後の要求が要求された場合に、ERTを例示のサーバデータストア116に記憶する。例えば、例示の列挙エンジン170が、例示の第1のピア702からENUM名“colors”に関連付けられるバイナリ入力クエリ値“1”を取得及び/又は別の方法で受け取る場合、例示の解決テーブルマネジャ414414を呼び出して、ERT700を参照することにより、例示の第2のピア704から“colors”という名称の適切なENUMの対応するターゲット値を取得する。例示の入力クエリ値“1”は、第1のピア702からの要素名“green”と関連付けられているので、第2のピア704の“50”という対応する値が解決される(図7の行728参照)。上記で開示された実施例は、ペイロードデータを受信側サーバ装置104に送信するとき、送信側クライアント装置102が計算集約型変換から保護される例を示しているが、そのような例はこれに限定される。一部の例では、受信側サーバ装置104は、同様の方式で送信側クライアント装置102にペイロードデータを送信してよい。
図1のクライアントペイロードエンジン150、サーバペイロードエンジン160、列挙エンジン170及び変換エンジン180を実現する例示の方式を図2,3A,3B,4〜7に示したが、図1,2,3A,3B,4〜7に示される要素、プロセス及び/又はデバイスのうちの1以上は、任意の他の方式で組合わせ、分割、再配置、省略、除去及び/又は実施することができる。更に、図1,1B,2,4の例示の送信側クライアント装置102、例示の受信側サーバ装置104、例示のクライアントタスクエンジン103、例示のペイロードストレージ108、例示のエンコーダ110、例示の送信側クライアントI/Oインタフェース112、例示の受信側サーバI/Oインタフェース114、例示のサーバデータストア116、例示のデコーダ118、例示のメタデータエンジン136、例示のタスクプロセスコンパイラ186、例示のVM152、例示のクライアントペイロードモニタ204、例示のメタデータリファレンスマネジャ134、例示のエンコーダインタフェース208、例示のタスク記憶インタフェース210、例示のCIDエンジン120、例示のCIDポインタマネジャ122、例示のCIDファイルジェネレータ124、例示のCLDエンジン126、例示のCLDポインタマネジャ128、例示のペイロードアナライザ132、例示のCLDファイルジェネレータ130、例示のサーバペイロードモニタ404、例示のサーバメタデータマネジャ406、例示のサーバ記憶インタフェース408、例示のデコーダマネジャ410、例示の解決テーブルマネジャ414、例示の例外ジェネレータ416、例示の要求マネジャ420、例示のフォーマットリゾルバ422、例示の変換システム424、例示のフォーマットエンコーダ426、及び/又は、より一般に、例示のクライアントペイロードエンジン150、例示のサーバペイロードエンジン160、例示の列挙エンジン170及び例示の変換エンジン180は、ハードウェア、ソフトウェア、ファームウェア、並びに/又は、ハードウェア、ソフトウェア及び/若しくはファームウェアの任意の組合わせによって実現されてよい。よって、例えば、図1,1B,2,4の例示の送信側クライアント装置102、例示の受信側サーバ装置104、例示のクライアントタスクエンジン103、例示のペイロードストレージ108、例示のエンコーダ110、例示の送信側クライアントI/Oインタフェース112、例示の受信側サーバI/Oインタフェース114、例示のサーバデータストア116、例示のデコーダ118、例示のメタデータエンジン136、例示のタスクプロセスコンパイラ186、例示のVM152、例示のクライアントペイロードモニタ204、例示のメタデータリファレンスマネジャ134、例示のエンコーダインタフェース208、例示のタスク記憶インタフェース210、例示のCIDエンジン120、例示のCIDポインタマネジャ122、例示のCIDファイルジェネレータ124、例示のCLDエンジン126、例示のCLDポインタマネジャ128、例示のペイロードアナライザ132、例示のCLDファイルジェネレータ130、例示のサーバペイロードモニタ404、例示のサーバメタデータマネジャ406、例示のサーバ記憶インタフェース408、例示のデコーダマネジャ410、例示の解決テーブルマネジャ414、例示の例外ジェネレータ416、例示の要求マネジャ420、例示のフォーマットリゾルバ422、例示の変換システム424、例示のフォーマットエンコーダ426、及び/又は、より一般に、例示のクライアントペイロードエンジン150、例示のサーバペイロードエンジン160、例示の列挙エンジン170及び例示の変換エンジン180のいずれかは、1以上のアナログ若しくはデジタル回路、論理回路、プログラマブルプロセッサ、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)及び/又はフィールドプログラマブルロジックデバイス(FPLD)によって実現することができる。純粋なソフトウェア及び/又はファームウェア実装をカバーする本願の装置又はシステムの請求項のいずれかを読むと、図1,1B,2,4の例示の送信側クライアント装置102、例示の受信側サーバ装置104、例示のクライアントタスクエンジン103、例示のペイロードストレージ108、例示のエンコーダ110、例示の送信側クライアントI/Oインタフェース112、例示の受信側サーバI/Oインタフェース114、例示のサーバデータストア116、例示のデコーダ118、例示のメタデータエンジン136、例示のタスクプロセスコンパイラ186、例示のVM152、例示のクライアントペイロードモニタ204、例示のメタデータリファレンスマネジャ134、例示のエンコーダインタフェース208、例示のタスク記憶インタフェース210、例示のCIDエンジン120、例示のCIDポインタマネジャ122、例示のCIDファイルジェネレータ124、例示のCLDエンジン126、例示のCLDポインタマネジャ128、例示のペイロードアナライザ132、例示のCLDファイルジェネレータ130、例示のサーバペイロードモニタ404、例示のサーバメタデータマネジャ406、例示のサーバ記憶インタフェース408、例示のデコーダマネジャ410、例示の解決テーブルマネジャ414、例示の例外ジェネレータ416、例示の要求マネジャ420、例示のフォーマットリゾルバ422、例示の変換システム424、例示のフォーマットエンコーダ426並びに/又は、より一般に、例示のクライアントペイロードエンジン150、例示のサーバペイロードエンジン160、例示の列挙エンジン170及び例示の変換エンジン180のうち少なくとも1つは、ソフトウェア及び/又はファームウェアを記憶するメモリ、デジタル多用途ディスク(DVD)、コンパクトディスク(CD)、ブルーレイディスク等の、有形のコンピュータ可読記憶装置又は記憶ディスクを含むように明示的に定義される。更に、図1の例示のクライアントペイロードエンジン150、例示のサーバペイロードエンジン及び/又は例示の列挙エンジン170は、図1、1B、2及び/又は4に示されたものに加えて、又はその代わりに、1以上の要素、プロセス及び/又はデバイスを含んでよく、且つ/又は、図示された要素、プロセス及びデバイスのいずれか又は全てを含んでよい。
図1,1B,2,4のクライアントペイロードエンジン150、サーバペイロードエンジン160及び/又は列挙エンジン170を実施するための例示の機械可読命令を表すフローチャートを、図8〜14に示す。これらの例では、機械可読命令は、図15に関連して以下に説明される例示のプロセッサプラットフォーム500に示されるプロセッサ1512等のプロセッサによる実行のための、1以上のプログラムを含む。プログラムは、CD−ROM、フロッピーディスク、ハードドライブ、デジタル多用途ディスク(DVD)、ブルーレイディスク、又はプロセッサ1512に関連付けられたメモリ等の、有形のコンピュータ可読記憶媒体に記憶されたソフトウェアで具現化されてよいが、プログラム全体及び/又はその一部は、代わりに、プロセッサ1512以外のデバイスによって実行され、且つ/又は、ファームウェア若しくは専用ハードウェアで具体化されてもよい。更に、図8〜14に示されるフローチャートを参照して例示のプログラムを説明するが、例示のクライアントペイロードエンジン150、例示のサーバペイロードエンジン160及び/又は例示の列挙エンジン170を実現する多くの他の方法が代替として採用されてもよい。例えば、ブロックの実行順序が変更されてもよく、且つ/又は、記載されたブロックの一部が変更、削除或いは組み合わせられてもよい。
上述したように、図8〜14の例示のプロセスは、ハードディスクドライブ、フラッシュメモリ、リードオンリーメモリ(ROM)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、キャッシュ、ランダムアクセスメモリ(RAM)、及び/又は任意の持続時間の間(例えば、長期間、恒久的、短時間、一時的なバッファリング、及び/又は情報のキャッシュ)に情報が記憶される任意の他の記憶装置若しくは記憶ディスク等の、有形のコンピュータ可読記憶媒体に記憶されたコード化された命令(例えば、コンピュータ及び/又は機械可読命令)を用いて、実現されてよい。本明細書で使用する場合、有形のコンピュータ可読記憶媒体という用語は、任意のタイプのコンピュータ可読記憶装置及び/又は記憶ディスクを含み、伝播信号を排除し伝送媒体を排除するように明示的に定義される。本明細書で使用する場合、「有形のコンピュータ可読記憶媒体」と「有形の機械可読記憶媒体」は、互換的に使用される。追加的又は代替的に、図8〜14の例示のプロセスは、ハードディスクドライブ、フラッシュメモリ、読取専用メモリ、コンパクトディスク、デジタル多用途ディスク、キャッシュ、ランダムアクセスメモリ、及び/又は任意の持続時間の間(例えば、長期間、恒久的、短時間、一時的なバッファリング、及び/又は情報のキャッシュ)に情報が記憶される任意の他の記憶装置若しくは記憶ディスク等の、非一時的なコンピュータ及び/又は機械可読記憶媒体に記憶されたコード化された命令(例えば、コンピュータ及び/又は機械可読命令)を用いて、実現されてよい。本明細書で使用する場合、非一時的コンピュータ可読記憶媒体という用語は、任意のタイプのコンピュータ可読記憶装置及び/又は記憶ディスクを含み、伝播信号を排除し伝送媒体を排除するように明示的に定義される。本明細書で使用する場合、請求項のプリアンブルにおける遷移用語として「少なくとも」が使用されている場合、「含む」という用語がオープンエンドであるのと同じように、オープンエンドである。
図8のプログラム800はブロック802で始まり、例示のプロセス間通信エンジン136は、新しいタスクがコンパイルされるべきか否かを決定する。そうである場合、例示のCIDエンジン120が、送信されるコンポジットバイナリに関連付けられたCIDを生成し(ブロック814)、例示のCLDエンジン126が、送信されるコンポジットバイナリに関連付けられたCLDを生成する(ブロック816)。例示のCID及びCLDの両方が生成された場合、CID及びCLDをターゲットピアに再送信する必要なしにコンポジットバイナリを送信する1以上の以後のインスタンスが発生するように、例示のメタデータリファレンスマネジャ134は、それに関連付けられたメタデータリファレンスを生成する(ブロック818)。クライアントペイロードモニタ204は、ペイロード(例えば、1以上のコンポジット)がネットワーク106上の1以上の要求側デバイス(ピア)、例えば例示の受信側サーバ装置104に送信されるか否かを判定する(ブロック814)。上述のように、例示の送信側クライアント装置102は、1以上のピアからの要求に応答してペイロードデータを送信し、時間ベースの(例えば、周期的な、非周期的な、予定された)トリガに応答してペイロードデータを送信し、且つ/又は、条件ベースのトリガ(例えば、例示のペイロードストレージ108の閾値記憶消費値)に応答してペイロードデータを送信してよい。一部の例では、トリガがないと待機状態になり、他の例では、クライアントペイロードエンジン202は、ペイロードデータが利用可能になったときに準備が整うように、コンポジットメタデータを1以上のピアに送信及び/又は他の方法で配信する。
例示の送信側クライアント装置102のコンピューティングリソースを節約するために、例示のエンコーダインタフェース208は、例示のエンコーダ110が、送信されるコンポジットに対して符号化動作を実行することを中断及び/又は他の方法で防止する(ブロック804)。このように、例示の送信側クライアント装置によって送信された任意のコンポジットは、ネイティブフォーマット(例えばバイナリ)のままであり、これは、比較的小さなメモリ記憶領域を消費し、例示のネットワーク106を介して送信されるコンポジットの固有のセキュリティを保持する。
例示のタスク記憶インタフェース210は、前の機会にメタデータリファレンスがターゲットピアに送信されたか否かを判定する(ブロック808)。上述のように、例示のクライアントペイロードエンジンは、1以上のピアが比較的低い計算需要を経験している場合等、利用可能になるとすぐにコンポジットメタデータを配信してよい。メタデータリファレンスが以前に送信されていない場合、例示のクライアントペイロードエンジン202は、(a)メタデータリファレンス、(b)コンポジットに関連付けられたCID、(c)コンポジットに関連付けられたCLD及び(d)そのバイナリ形式でのコンポジットと共に、ペイロード(例えば、ペイロードを伴うコンポジット)を送信する(ブロック810)。一方、タスク記憶インタフェース210が、以前の機会にメタデータリファレンスがターゲットピアに送信されたと判定した場合(ブロック808)、これはターゲットピアが既にコンポジットに関連付けられた対応するCID及びCLDを受信したことを意味し、例示のクライアントペイロードエンジン202は、そのバイナリ形式でコンポジットのみを送信する(ブロック812)。更に別の例では、クライアントペイロードエンジン202は、デフォルトでメタデータリファレンスを伴うペイロードを常に送信する。受信ピアが対応するコンポジットメタデータを有さない場合、コンポジットメタデータを送信するために、クライアントペイロードエンジン202によって肯定応答さ及び/又は他の方法でサービスされる要求を送信する。
図9は、ブロック814のCIDの生成に関する更なる詳細を示す。図9の図示の実施例では、CIDポインタマネジャ122は、構文解析ポインタを用いてコンポジットを取得し、コンポジットの開始部分を識別する(ブロック902)。例示のCIDファイルジェネレータ124は、コンポジットに関連付けられたアーキテクチャ非依存データを取り込むCIDシェルファイルを生成し(ブロック904)、例示のCIDポインタマネジャ122は、ポインタをコンポジットの第1の要素に移動する(ブロック906)。例示のCIDファイルジェネレータ124は、選択されたコンポジット要素の要素データをCIDシェルファイルに符号化し(ブロック908)、例示のCIDポインタマネジャ122は、送信されるコンポジット要素に残りの要素があるか否かを判定する(ブロック910)。そうであれば、制御はブロック906に戻り、そこで例示のCIDポインタマネジャ122はポインタをバイナリコンポジット内の次の要素に進める。そうでなければ、例示のプログラム814は終了する。
図10は、ブロック814のCLDの生成に関する更なる詳細を示す。図10の図示の実施例では、例示のCLDポインタマネジャ128は、送信されるバイナリコンポジットを取得し(ブロック1002)、例示のCLDファイルジェネレータ130は、送信されるコンポジットバイナリに関連付けられたアーキテクチャ固有データで書き込まれるCLDシェルファイルを生成する(ブロック1004)。例示のペイロードアナライザ132は、送信されるコンポジットのサイズを識別し、この情報を例示のCLDシェルファイルに書き込み(ブロック1006)、コンポジット内の要素の数を識別し、このデータをCLDシェルファイルに書き込む(ブロック1008)。例示のペイロードアナライザ132は、対応するオフセット値を決定するためにバイナリコンポジット内の要素の数の1つを選択し(ブロック1010)、対応するオフセット値をCLDシェルファイルに書き込む(ブロック1012)。例示のCLDポインタマネジャ128が、解析すべきバイナリコンポジットに追加の要素が残っていると判定した場合(ブロック1014)、制御はブロック1010に戻る。全ての要素がそれぞれのオフセット値を決定するために評価された場合(ブロック1014)、例示のペイロードアナライザ132は、送信されるバイナリコンポジットに関連付けられた追加情報(例えば、エンディアン情報、浮動小数点情報、補数情報)を識別し、この値をCLDシェルファイルに書き込む(ブロック1016)。次に、例示のプログラム816が終了する。
図8〜10の例示のプログラムは、例示の送信側クライアント装置102によるペイロード情報(例えば、送信されるバイナリ内のコンポジット)の準備を示すが、図11は、例示の受信側サーバ装置104によってペイロード情報を処理するためのプログラム1100を示す。図11の図示の実施例では、例示のサーバペイロードモニタ404は、ペイロード情報(例えば、ネットワークピアからのバイナリコンポジット)が受信されたか否かを判定する(ブロック1102)。そうである場合、例示のサーバメタデータマネジャ406は、受信したペイロード情報(例えばバイナリコンポジット)が一致するコンポジットメタデータリファレンスを含むか否かを判定する(ブロック1104)。そうでない場合、ペイロード情報を受信するこのインスタンスが最初に発生している可能性があり、例示のサーバ記憶インタフェース408は、それぞれのCID、CLD及び関連メタデータリファレンス命名法を抽出して、例示のサーバデータストア116に記憶する(ブロック1106)。
例示の受信側サーバ装置104が、例示の受信側サーバ装置104とは異なるアーキテクチャフォーマットを有し得るコンポジットバイナリを含む受信ペイロードを処理することができるように、例示のサーバメタデータマネジャ406は、それ自体のサーバ側CIDファイル及びサーバ側CLDファイルを生成する(ブロック1108)。一般的に言えば、サーバ側CIDファイル及びサーバ側CLDファイルは、受信側サーバ装置104のアーキテクチャ固有の要件の解決及びマッピングを可能にするように、送信ピア(例えば、送信側クライアント装置102)に関連付けられた対応するメタデータ情報を記憶する。上述のように、例示のサーバメタデータマネジャ406は、ピアから受信したCID及びCLDを考慮して、変換エンジン180によって変換及び/又は他の方法で比較される対応するメタデータを、サーバ側CID及びサーバ側CLDに取り込む(ブロック1110)。受信側サーバ装置104のアーキテクチャに基づいて、例示の変換エンジン180は、各要素にサーバ側CLD内のオフセット値を割り当てることにより、アーキテクチャの不一致を解決する(ブロック1112)。更に、以下で更に詳述するように、コンポジットがENUM型であると例示の列挙エンジン170が判定した場合(ブロック1113)、列挙エンジン170は、例示の送信側クライアント装置102と例示の受信側サーバ装置104との間に存在し得る列挙命名の不一致を解決する(ブロック1150)。制御はブロック1102に戻る。
ブロック1104に戻り、例示のサーバメタデータマネジャ406が一致するコンポジットメタデータリファレンスを含む場合、例示のサーバ記憶インタフェース408は、受信されたメタデータリファレンスに関連付けられる以前に記憶されたサーバ側CID及びサーバ側CLDを取得する(ブロック1114)。例示の変換システム24は、図5に示すように、以前に記憶されたサーバ側メタデータ(例えば、サーバ側CID500及びサーバ側CLD550)にアクセスする(ブロック1116)。一部の例では、例示の変換システム424は、適切なフォーマットエンコーダ426を呼び出し、サーバ側CLD550からのオフセット値を用いて、受信側サーバ装置104と互換性のあるフォーマットで、受信したバイナリを例示のサーバデータストア116に記憶する(ブロック1118)。これは、以後の変換労力を低減することにより、特定のフォーマットに対する反復要求が受信されたときに、ある程度の計算効率をもたらすことができる。一方、一部の例では、デコーダマネジャ410を使用せず、代わりに、送信側クライアント装置から受信したバイナリを、必要に応じて以後の変換のための変更されていないフォーマットで記憶することができる。上述のように、受信されたコンポジットバイナリは、受信側サーバ装置104に関連付けられたネイティブバイナリフォーマットで記憶されるので、変換されたデータに対する1以上のピア(例えば第三者のクライアント)による以後の要求は、サーバ側CLD550のオフセットマッピング情報を介してレンダリングされてよい。制御はブロック1102に戻る。
収集のための1以上のコンポジットバイナリを提供するネットワークピア(例えば、例示の送信側クライアント装置102)を参照して例示の受信側サーバ装置104を上述したが、受信側サーバ装置104は、コンポジットバイナリの変換バージョンを要求する他のピア(例えば、ネットワーク接続されたピア、同じプラットフォームのピア)からの要求(変換要求)もサービスする。上述のように、変換要求は、プレーンテキスト、XML、JSON等、取得されるコンポジットデータのフォーマットに関する様々なプリファレンスを有するピアデバイスから生じる。このように、例示の変換エンジン180は、特定の符号化タイプのフォーマットに対応するために、例示の変換エンジン180の任意の数の異なるフォーマットエンコーダ426を含む。ブロック1102に戻り、ペイロード(例えばコンポジットバイナリ)が受信されなかった場合、例示の要求マネジャ420は、変換要求が発生したか否かを判定する(ブロック1120)。そうでなければ、例示のサービスペイロードモニタ404は、ENUMマッピング要求が受信されたか否かを判定し(ブロック1122)、そうであれば、例示のENUMエンジン170は、以下で更に詳述するように、ENUMマッピング要求をサービスする(ブロック1420)。しかしながら、変換要求を検出することに応答して(ブロック1120)、例示の変換エンジン180は、例示の変換要求エンティティ182の1つからの要求等、要求をサービスする(ブロック1124)。
図12は、例示の変換要求のサービス(ブロック1124)に関する追加の詳細を含む。図12の図示の実施例では、フォーマットリゾルバ422は、(例えば、変換要求エンティティ182の1つからの)フォーマット要求タイプを識別し(ブロック1202)、要求されたフォーマットタイプが既に変換され例示のサーバデータストア116に記憶されているか否かを判定する(ブロック1204)。例えば、変換要求エンティティ182の例示の第1のものが、コンポジットがXMLにフォーマットされることを要求することがあるが、そのような変換されたコンポジット情報は、変換要求エンティティ182の例示の第2のものもコンポジットがXMLフォーマットにフォーマットされることを要求した場合に、例示のサーバデータストア116に任意に記憶されてよく、これにより、例示の受信側サーバ装置104に対する重複した変換作業を防止する。例示の変換エンジン180は、記憶装置(例えば例示のサーバデータストア)から復号されたコンポジットを取得し(ブロック1206)、復号化されたコンポジットを(例えば、例示の受信側サーバI/Oインタフェース114を介してリクエスタに転送する(ブロック1208)。
ブロック1204に戻り、要求されたフォーマットが例示のサーバデータストア116においてまだ利用可能ではないと例示のフォーマットリゾルバ422が判定した場合(バイナリコンポジットが要求に応答して初めて変換されたときに発生する可能性がある)、例示の変換システム424は、記憶されたバイナリ及び関連メタデータ(例えば、図5の例示のサーバ側CID500及びサーバ側CLD550)を取得する(ブロック1210)。上述のように、要求されたフォーマットタイプへの変換(符号化)を実行するとき、例示の変換エンジン180が対応するサーバ側CID500及びサーバ側CLD550を参照することができるように、バイナリコンポジットは、任意に、受信側サーバ装置104のアーキテクチャと互換性のあるフォーマットを有するサーバデータストア116に記憶されてよい(ブロック1212)。
図13は、バイナリコンポジットの変換(ブロック1212)を実行するための更なる詳細を示す。図13の図示の実施例では、例示の変換システム424は、サーバ側CID500からコンポジット要素の1つを識別し(ブロック1302)、サーバ側CLD550から対応する要素を識別して、対象要素に関連するデータのオフセット値を決定する(ブロック1304)。例示の変換システム424は、そのような情報を対応するフォーマットエンコーダ426に転送して、オフセット位置及びフォーマット要求タイプに基づいてデータを変換し(ブロック1306)、要求されたフォーマットタイプを有する対象要素に関連付けられたデータを生成する。例示のフォーマットリゾルバ422は、サーバ側CID500が、変換されるバイナリコンポジット内の追加の対象要素を含むか否かを判定し(ブロック1308)、そうであれば、制御はブロック1302に戻る。しかしながら、要求されたバイナリコンポジットの全ての要素が要求されたフォーマットに変換されると、例示の変換エンジン180は、変換されたデータを例示のサーバデータストア116に記憶し(ブロック1310)、よって、このバイナリコンポジットに対する以後の要求は、重複した変換作業なしに、1以上の要求側ピア(例えば、例示の変換要求エンティティ182の1以上)に提供され得る。
図11に戻る。一部の実施例では、ペイロードコンポジットがタイプENUMであるとき(ブロック1113)、又はENUMマッピング要求が発生したとき(ブロック1122A)、例示の列挙エンジン170が呼び出されて、ENUMの不一致が解決され(ブロック1150)、又はマッピン要求がサービスされる(ブロック1122A)。図14は、ブロック1150の列挙解決に関連付けられる更なる詳細を示す。図14の図示の実施例では、例示の解決テーブルマネジャ414は、列挙解決テーブル(ERT)が既にピア比較のために利用可能であるか否かを判定する(ブロック1402)。そうでない場合、図7の図示の実施例に示すように、例示の解決テーブルマネジャ414は、ERTシェルファイルを生成し(ブロック1104)、ERTシェルファイルの第1のピア及び第2のピアの列のフィールドに、それぞれのピアに関連付けられたCID及びCLDデータを取り込む(ブロック1106)。
列挙エンジン170の例外ジェネレータ416が、ピア間の不一致(例えば、要素位置の不一致、要素名の不一致、要素値の不一致)を識別する場合(例えば、例示の第2のピア704のENUM要素の順序と比較したときの、例示の第1のピア702のENUM要素順序間の不一致)、例示の例外ジェネレータ416は、二次(または他の)解決が利用可能であるか否かを判定する(ブロック1410)。上述のように、二次解決は、例示の第1のピア702と例示の第2のピア704の両方に共通する1以上の要素パラメータ(例えば要素名)に基づくことができる。利用可能であれば、例示の解決テーブルマネジャ414は、マッピングのための対応するパラメータを確立する(ブロック1412)。例えば、図7の図示の実施例に示されるように、例示の第1のピア702が要素“3”を参照する場合、例示の第2のピア704のインデックス“3”との要素位置の不一致に関わらず、対応する一致するパラメータ“yellow”は、第2のピア704のインデックス位置“2”に一致する。このように、第1のピア702からの要素“3”のENUMリファレンスは、以下で更に詳述するように、第2のピア704の対応する値“700”をもたらす。このようなマッピングは、以後の参照のために例示のサーバデータストア116に記憶される(ブロック1414)。一方、例示の第1のピア702が例示の第2のピア704と対応する一致する要素名をもたない場合等、セカンダリ解決が不可能な場合(ブロック1410)、例示の例外ジェネレータ416は、その特定の要素の例外を呼び出す(ブロック1416)。
例示の例外ジェネレータ416が、例示の第1のピア702と例示の第2のピア704のENUMコンポジット間の不一致(例えば、要素位置の不一致)がないと判定した場合(ブロック1408)、例示の解決テーブルマネジャ414は、マッピングのための対応するパラメータを確立し(ブロック1418)、これらのマッピングを以後の参照のために例示のサーバデータストア116に記憶する(ブロック1414)。
図14の図示の実施例プログラム1150は、第1のピアと第2のピアのENUMコンポジット間に存在し得る不一致を解決するためのERTを生成するが、例示のプログラム1150は、ERTが以前に生成されていた場合、ENUMマッピング要求も処理する。例えば、図11の図示の実施例に簡単に戻る。例示のサーバペイロードモニタ404がENUMマッピング要求が発生したと判定すると(ブロック1122A)、制御はブロック1420に進み、ENUMマッピング要求が発生することを例示のENUMエンジン1700が確認する。例示の解決テーブルマネジャ414は、例示の第1のピア702(例えば、例示の送信側クライアント装置102)に関連付けられたENUMコンポジットの要素位置“1”をマップする要求等の、対象要素のソース要求値を取得する(ブロック1422)。例示の解決テーブルマネジャ414は、第2のピア704(例えば、例示の受信側サーバ装置104)に関連付けられた対応する他のENUMコンポジットに関連付けられたERT700から、対応するターゲット値を識別する(ブロック1424)。例示のデコーダ118は、ターゲット値をリクエスタに返し(ブロック1426)、これは図7の図示の実施例では値“50”である。
図15は、図1,2,4のクライアントペイロードエンジン150、サーバペイロードエンジン160、列挙エンジン170及び変換エンジン180を実現するための図8〜14の命令を実行することができる、例示のプロセッサプラットフォーム1500のブロック図である。プロセッサプラットフォーム1500は、例えば、サーバ、パーソナルコンピュータ、モバイルデバイス(例えば、携帯電話、スマートフォン、iPad(登録商標)等のタブレット)、パーソナルデジタルアシスタント(PDA)、インターネットアプライアンス、DVDプレーヤ、CDプレーヤ、デジタルビデオレコーダ、ブルーレイプレーヤ、ゲームコンソール、パーソナルビデオレコーダ、セットトップボックス、デジタルカメラ、仮想マシンその他の任意のタイプのコンピューティングデバイスであってよい。
図示の実施例のプロセッサプラットフォーム1500は、プロセッサ1512を含む。図示の実施例のプロセッサ1512はハードウェアである。例えば、プロセッサ1512は、任意の所望のファミリ又は製造業者からの1以上の集積回路、論理回路、マイクロプロセッサ又はコントローラによって実現することができる。図15の図示の実施例では、プロセッサ1512は、例示の命令1532(図1,2及び/又は4の例示のクライアントペイロードエンジン150、例示のサーバペイロードエンジン160、例示の列挙エンジン170及び例示の変換エンジン180を実現するための図8〜14の命令)を介して構成された1以上の例示の処理コア1515を含む。
図示の実施例のプロセッサ1512は、ローカルメモリ1513(例えばキャッシュ)を含む。図示の実施例のプロセッサ1512は、バス1518を介して、揮発性メモリ1514及び不揮発性メモリ1516を含むメインメモリと通信する。揮発性メモリ1514は、同期ダイナミックランダムアクセスメモリ(SDRAM)、ダイナミックランダムアクセスメモリ(DRAM)、RAMバスダイナミックランダムアクセスメモリ(RDRAM)及び/又は任意の他のタイプのランダムアクセスメモリデバイスによって実現されてよい。不揮発性メモリ1516は、フラッシュメモリ及び/又は任意の他の所望のタイプのメモリデバイスによって実現されてよい。メインメモリ1514,1516へのアクセスは、メモリコントローラによって制御される。
また、図示の実施例のプロセッサプラットフォーム1500は、インタフェース回路1520を含む。インタフェース回路1520は、イーサネット(登録商標)インタフェース、ユニバーサルシリアルバス(USB)及び/又はPCIエクスプレスインタフェース等の、任意のタイプのインタフェース規格によって実現されてよい。
図示の実施例では、1以上の入力装置1522がインタフェース回路1520に接続される。入力装置1522は、ユーザがデータ及びコマンドをプロセッサ1512に入力することを許可する。入力装置は、例えば、オーディオセンサ、マイク、カメラ(静止又はビデオ)、キーボード、ボタン、マウス、タッチスクリーン、トラックパッド、トラックボール、アイソポイント、音声認識システム及び/又は任意の他のヒューマンマシンインタフェースによって、実現することができる。
1以上の出力装置1524も、図示の実施例のインタフェース回路1520に接続される。出力装置1524は、例えば、ディスプレイデバイス(例えば、発光ダイオード(LED)、有機発光ダイオード(OLED)、液晶ディスプレイ、陰極線管ディスプレイ(CRT)、タッチスクリーン、触覚出力装置、プリンタ及び/又はスピーカ)によって実現することができる。したがって、図示の実施例のインタフェース回路1520は、典型的に、グラフィックスドライバカード、グラフィックドライバチップ又はグラフィックスドライバプロセッサを含む。
図示の実施例のインタフェース回路1520はまた、外部の機械(例えば、任意の種類のコンピューティングデバイス)とのネットワーク1526(例えば、イーサネット(登録商標)接続、類似の機械プラットフォーム内でのデータ交換を容易にするためのデジタル加入者線(DSL)(例えば通信バス)、電話回線、同軸ケーブル、セルラー電話システム等)を介したデータ交換を容易にするために、送信機、受信機、トランシーバ、モデム及び/又はネットワークインタフェースカード等の通信デバイスを含む。図15の図示の実施例では、インタフェース回路1520はまた、図1,2及び/又は4の例示の送信側クライアントI/Oインタフェース112及び/又は例示の受信側サーバI/Oインタフェース114の1以上を実現するように構成される。
図示の実施例のプロセッサプラットフォーム1500はまた、外部の機械(例えば、任意の種類のコンピューティングデバイス)とのネットワーク1526及び/又はネットワーク106(例えば、イーサネット(登録商標)接続、デジタル加入者線(DSL)、電話回線、同軸ケーブル、セルラー電話システム等)を介したデータ交換を容易にするために、送信機、受信機、トランシーバ、モデム及び/又はネットワークインタフェースカード等の通信デバイスを含む。
図示の実施例のプロセッサプラットフォーム1500は、ソフトウェア及び/又はデータを記憶するための1以上の大容量記憶装置1528も含む。そのような大容量記憶装置1528の例には、フロッピーディスクドライブ、ハードドライブディスク、コンパクトディスクドライブ、ブルーレイディスクドライブ、RAIDシステム、デジタル多用途ディスク(DVD)ドライブが含まれる。一部の例では、大容量記憶装置1530は、例示のペイロードストレージ108及び/又は例示のサーバデータストア116を実現してよい。
図8〜14のコード化された命令1532は、大容量記憶装置1528、揮発性メモリ1514、不揮発性メモリ1516、ローカルメモリ1513及び/又は取り外し可能な有形のコンピュータ可読記憶媒体、例えばCD又はDVD1536に記憶されてよい。
本明細書では特定の例示の方法、装置及び製品が開示されたが、本願の適用範囲はそれに限定されない。対照的に、本願は、本願の特許請求の範囲に包含される全ての方法、装置及び製品を対象とする。
実施例1は、送信ピアのネットワーク伝送効率を改善するための装置である。本装置は、送信トリガに応答して、エンコーダが、ネイティブフォーマットのデータを要求側ピアに関連付けられたターゲットフォーマットに符号化するのを防止するエンコーダインタフェースと、ネイティブフォーマットのデータのアーキテクチャ非依存メタデータを生成する複合インタフェース記述(CID)エンジンと、ネイティブフォーマットのデータのアーキテクチャ固有メタデータを生成する複合レイアウト記述(CLD)エンジンであって、アーキテクチャ固有メタデータは、ネイティブフォーマットのデータの要素に関連するオフセット値を識別する、複合レイアウト記述(CLD)エンジンと、アーキテクチャ非依存メタデータ及びアーキテクチャ固有メタデータと結合された未符号化データを、送信ピアのものとは異なるアーキテクチャを有する要求側ピアに送信することにより、ネットワーク伝送効率を改善するクライアントペイロードエンジンと、を備える。
実施例2は実施例1の主題を含む。未符号化データは、エンコーダによって符号化された後のネイティブフォーマットのデータよりもストレージフットプリントを含む。
実施例3は実施例1の主題を含む。ネイティブフォーマットのデータは、バイナリフォーマットを含む。
実施例4は実施例1の主題を含む。ターゲットフォーマットは、拡張マークアップ言語フォーマット、抽象構文記法フォーマット及びテキストフォーマットのうち少なくとも1つを含む。
実施例5は実施例1の主題を含む。ネイティブフォーマットのデータは、タイプに関連するコンポジットを含む。
実施例6は実施例5の主題を含む。タイプは、C構造と列挙のうち少なくとも一方を含む。
実施例7は実施例1の主題を含む。更に、ネイティブフォーマットのデータの要素のうち最初の要素を識別するポインタマネジャを備える。
実施例8は実施例7の主題を含む。更に、アーキテクチャ非依存メタデータを記憶するためのCIDファイルを生成するCIDファイルジェネレータを備える。
実施例9は実施例8の主題を含む。CIDファイルジェネレータは、要素データをCIDファイルに符号化する。
実施例10は実施例9の主題を含む。要素データは、コンポジットタイプ、コンポジット名、コンポジット要素名及びコンポジット要素タイプのうち少なくとも1つを含む。
実施例11は実施例7の主題を含む。更に、アーキテクチャ固有メタデータを記憶するためのCLDファイルを生成するCLDファイルジェネレータを備える。
実施例12は実施例11の主題を含む。更に、ネイティブフォーマットのデータの要素に関連付けられたオフセット値を識別し、オフセット値をCLDファイルに書き込むペイロードアナライザを備える。
実施例13は実施例1の主題を含む。更に、結合されたアーキテクチャ非依存メタデータ及びアーキテクチャ固有メタデータに関連付けられたメタデータリファレンスを生成するメタデータリファレンスマネジャを備える。
実施例14は実施例1の主題を含む。更に、アーキテクチャ非依存メタデータ及びアーキテクチャ固有メタデータを、送信ピアのタスク実行ファイルにコンパイルするタスクプロセスコンパイラを備える。
実施例15は、送信ピアのネットワーク伝送効率を改善する方法である。本方法は、送信トリガに応答して、エンコーダが、ネイティブフォーマットのデータを要求側ピアに関連付けられたターゲットフォーマットに符号化するのを防止するステップと、ネイティブフォーマットのデータのアーキテクチャ非依存メタデータを生成するステップと、ネイティブフォーマットのデータのアーキテクチャ固有メタデータを生成するステップであって、アーキテクチャ固有メタデータは、ネイティブフォーマットのデータの要素に関連するオフセット値を識別する、ステップと、アーキテクチャ非依存メタデータ及びアーキテクチャ固有メタデータと結合された未符号化データを、送信ピアのものとは異なるアーキテクチャを有する要求側ピアに送信することにより、ネットワーク伝送効率を改善するステップと、を含む。
実施例16は実施例15の主題を含む。未符号化データは、エンコーダによって符号化された後のネイティブフォーマットのデータよりもストレージフットプリントを含む。
実施例17は実施例15の主題を含む。ネイティブフォーマットのデータは、バイナリフォーマットを含む。
実施例18は実施例15の主題を含む。ターゲットフォーマットは、拡張マークアップ言語フォーマット、抽象構文記法フォーマット及びテキストフォーマットのうち少なくとも1つを含む。
実施例19は実施例15の主題を含む。ネイティブフォーマットのデータは、タイプに関連するコンポジットを含む。
実施例20は実施例19の主題を含む。タイプは、C構造と列挙のうち少なくとも一方を含む。
実施例21は実施例15の主題を含む。更に、ネイティブフォーマットのデータの要素のうち最初の要素を識別するステップを含む。
実施例22は実施例21の主題を含む。更に、アーキテクチャ非依存メタデータを記憶するための複合インタフェース記述(CID)ファイルを生成するステップを含む。
実施例23は実施例22の主題を含む。更に、要素データをCIDファイルに符号化するステップを含む。
実施例24は実施例23の主題を含む。要素データは、コンポジットタイプ、コンポジット名、コンポジット要素名及びコンポジット要素タイプのうち少なくとも1つを含む。
実施例25は実施例21の主題を含む。更に、アーキテクチャ固有メタデータを記憶するための複合レイアウト記述(CLD)ファイルを生成するステップを含む。
実施例26は実施例25の主題を含む。更に、ネイティブフォーマットのデータの要素に関連付けられたオフセット値を識別するステップと、オフセット値をCLDファイルに書き込むステップとを含む。
実施例27は実施例15の主題を含む。更に、結合されたアーキテクチャ非依存メタデータ及びアーキテクチャ固有メタデータに関連付けられたメタデータリファレンスを生成するステップを含む。
実施例28は実施例15の主題を含む。更に、アーキテクチャ非依存メタデータ及びアーキテクチャ固有メタデータを、送信ピアのタスク実行ファイルにコンパイルするステップを含む。
実施例29は、コンピュータ可読命令を有する有形のコンピュータ可読記憶媒体である。コンピュータ可読命令は、実行されると、プロセッサに、少なくとも送信トリガに応答して、エンコーダが、ネイティブフォーマットのデータを要求側ピアに関連付けられたターゲットフォーマットに符号化するのを防止するステップと、ネイティブフォーマットのデータのアーキテクチャ非依存メタデータを生成するステップと、ネイティブフォーマットのデータのアーキテクチャ固有メタデータを生成するステップであって、アーキテクチャ固有メタデータは、ネイティブフォーマットのデータの要素に関連するオフセット値を識別する、ステップと、アーキテクチャ非依存メタデータ及びアーキテクチャ固有メタデータと結合された未符号化データを、送信ピアのものとは異なるアーキテクチャを有する要求側ピアに送信することにより、ネットワーク伝送効率を改善するステップと、を実行させる。
実施例30は実施例29の主題を含む。命令は、プロセッサに、エンコーダによって符号化された後のネイティブフォーマットのデータよりも低いストレージフットプリントで、未符号化データを送信するステップを実行させる。
実施例31は実施例29の主題を含む。命令は、プロセッサに、ネイティブフォーマットをバイナリフォーマットとして送信するステップを実行させる。
実施例32は実施例29の主題を含む。命令は、プロセッサに、ネイティブフォーマットのデータの要素のうち最初の要素を識別するステップを実行させる。
実施例33は実施例32の主題を含む。命令は、プロセッサに、アーキテクチャ非依存メタデータを記憶するための複合インタフェース記述(CID)ファイルを生成するステップを実行させる。
実施例34は実施例33の主題を含む。命令は、プロセッサに、要素データをCIDファイルに符号化するステップを実行させる。
実施例35は実施例32の主題を含む。命令は、プロセッサに、アーキテクチャ固有メタデータを記憶するための複合レイアウト記述(CLD)ファイルを生成するステップを実行させる。
実施例36は実施例35の主題を含む。命令は、プロセッサに、ネイティブフォーマットのデータの要素に関連付けられたオフセット値を識別するステップと、オフセット値をCLDファイルに書き込むステップとを実行させる。
実施例37は実施例29の主題を含む。命令は、プロセッサに、結合されたアーキテクチャ非依存メタデータ及びアーキテクチャ固有メタデータに関連付けられたメタデータリファレンスを生成するステップを実行させる。
実施例38は実施例29の主題を含む。命令は、プロセッサに、アーキテクチャ非依存メタデータ及びアーキテクチャ固有メタデータを、送信ピアのタスク実行ファイルにコンパイルするステップを実行させる。
実施例39は、送信ピアのネットワーク伝送効率を改善するためのシステムである。本システムは、送信トリガに応答して、エンコーダが、ネイティブフォーマットのデータを要求側ピアに関連付けられたターゲットフォーマットに符号化するのを防止するための手段と、ネイティブフォーマットのデータのアーキテクチャ非依存メタデータを生成するための手段と、ネイティブフォーマットのデータのアーキテクチャ固有メタデータを生成するための手段であって、アーキテクチャ固有メタデータは、ネイティブフォーマットのデータの要素に関連するオフセット値を識別する、手段と、アーキテクチャ非依存メタデータ及びアーキテクチャ固有メタデータと結合された未符号化データを、送信ピアのものとは異なるアーキテクチャを有する要求側ピアに送信することにより、ネットワーク伝送効率を改善するための手段と、を備える。
実施例40は実施例39の主題を含む。未符号化データは、エンコーダによって符号化された後のネイティブフォーマットのデータよりもストレージフットプリントを含む。
実施例41は実施例39の主題を含む。ネイティブフォーマットのデータは、バイナリフォーマットを含む。
実施例42は実施例39の主題を含む。ターゲットフォーマットは、拡張マークアップ言語フォーマット、抽象構文記法フォーマット及びテキストフォーマットのうち少なくとも1つを含む。
実施例43は実施例39の主題を含む。ネイティブフォーマットのデータは、タイプに関連するコンポジットを含む。
実施例44は実施例43の主題を含む。タイプは、C構造と列挙のうち少なくとも一方を含む。
実施例45は実施例39の主題を含む。更に、ネイティブフォーマットのデータの要素のうち最初の要素を識別するための手段を備える。
実施例46は実施例45の主題を含む。更に、アーキテクチャ非依存メタデータを記憶するための複合インタフェース記述(CID)ファイルを生成するための手段を備える。
実施例47は実施例46の主題を含む。CIDファイルを生成するための手段は、要素データをCIDファイルに符号化する。
実施例48は実施例47の主題を含む。要素データは、コンポジットタイプ、コンポジット名、コンポジット要素名及びコンポジット要素タイプのうち少なくとも1つを含む。
実施例49は実施例45の主題を含む。更に、アーキテクチャ固有メタデータを記憶するための複合レイアウト記述(CLD)ファイルを生成するステップための手段を備える。
実施例50は実施例49の主題を含む。更に、ネイティブフォーマットのデータの要素に関連付けられたオフセット値を識別するための手段と、オフセット値をCLDファイルに書き込むための手段とを備える。
実施例51は実施例39の主題を含む。更に、結合されたアーキテクチャ非依存メタデータ及びアーキテクチャ固有メタデータに関連付けられたメタデータリファレンスを生成するための手段を備える。
実施例52は実施例39の主題を含む。更に、アーキテクチャ非依存メタデータ及びアーキテクチャ固有メタデータを、送信ピアのタスク実行ファイルにコンパイルするための手段を備える。
実施例53は、互換性のないアーキテクチャフォーマットを有する受信ピアによって取得されたデータをリゾルブする例示の装置である。本装置は、互換性のないアーキテクチャフォーマットを有するコンポジットと、コンポジットに関連付けられたアーキテクチャ非依存メタデータを有するクライアント側複合インタフェース記述(CID)と、コンポジットに関連付けられたアーキテクチャ固有メタデータを有するクライアント側複合レイアウト記述(CLD)とを取得するサーバ記憶インタフェースと、クライアント側CIDのアーキテクチャ非依存メタデータを伴うサーバ側CIDを符号化し、クライアント側CLDのアーキテクチャ固有メタデータを伴うサーバ側CLDを符号化するサーバメタデータマネジャと、受信ピアのアーキテクチャタイプに基づいて、サーバ側CLDの各要素のオフセット値を生成する変換エンジンと、を備える。
実施例54は実施例53の主題を含む。更に、互換性のないアーキテクチャフォーマットを有するデータをレンダリングする要求を検出する要求マネジャを備える。
実施例55は実施例54の主題を含む。更に、要求のフォーマットタイプを識別するフォーマットリゾルバを備える。
実施例56は実施例55の主題を含む。更に、(a)各要素の各オフセット値と(b)要求のフォーマットタイプに基づいて、受信ピアによって取得されたデータの各要素を変換する変換エンジンを備える。
実施例57は実施例56の主題を含む。変換エンジンは、データの変換された各要素を要求のリクエスタに転送する。
実施例58は実施例54の主題を含む。サーバ記憶インタフェースは、クライアント側CID及びクライアント側CLDを受信ピアのメタデータリファレンスに関連付けることにより、後続の要求中の受信ピアの計算要求を低減する。
実施例59は実施例53の主題を含む。サーバ記憶インタフェースは、サーバ側CID及びサーバ側CLDを受信ピアのメタデータリファレンスと関連付ける。
実施例60は実施例59の主題を含む。サーバメタデータマネジャは、受信ピアによって取得されたデータが、受信ピアのメタデータリファレンスとマッチする送信ピアのメタデータリファレンスを含む場合、サーバ側CID及びサーバ側CLDの延コーディングをバイパスすることにより、受信ピアの計算効率を改善する。
実施例61は実施例60の主題を含む。サーバメタデータマネジャは、送信ピアのメタデータリファレンスが受信ピアのメタデータリファレンスとマッチする場合、サーバ側CID及びサーバ側CLDをローカルストレージから取得する。
実施例62は、互換性のないアーキテクチャフォーマットを有する受信ピアによって取得されたデータをリゾルブする方法である。本方法は、互換性のないアーキテクチャフォーマットを有するコンポジットと、コンポジットに関連付けられたアーキテクチャ非依存メタデータを有するクライアント側複合インタフェース記述(CID)と、コンポジットに関連付けられたアーキテクチャ固有メタデータを有するクライアント側複合レイアウト記述(CLD)とを取得するステップと、クライアント側CIDのアーキテクチャ非依存メタデータを用いてサーバ側CLDを符号化するステップと、クライアント側CLDのアーキテクチャ固有メタデータを用いてサーバ側CLDを符号化するステップと、受信ピアのアーキテクチャタイプに基づいて、サーバ側CLDの各要素に対するオフセット値を生成するステップと、を含む。
実施例63は実施例62の主題を含む。更に、互換性のないアーキテクチャフォーマットを有するデータをレンダリングする要求を検出するステップを含む。
実施例64は実施例63の主題を含む。更に、要求のフォーマットタイプを識別するステップを含む。
実施例65は実施例64の主題を含む。更に、(a)各要素の各オフセット値と(b)要求のフォーマットタイプに基づいて、受信ピアによって取得されたデータのそれぞれの要素を変換するステップを含む。
実施例66は実施例65の主題を含む。更に、データの変換されたそれぞれの要素を要求のリクエスタに転送するステップを含む。
実施例67は実施例63の主題を含む。更に、クライアント側CID及びクライアント側CLDを受信ピアのメタデータリファレンスに関連付けることにより、後続の要求中の受信ピアの計算要求を低減するステップを含む。
実施例68は実施例62の主題を含む。更に、サーバ側CID及びサーバ側CLDを受信ピアのメタデータリファレンスと関連付けるステップを含む。
実施例69は実施例68の主題を含む。更に、受信ピアによって取得されたデータが、受信ピアのメタデータリファレンスとマッチする送信ピアのメタデータリファレンスを含む場合、サーバ側CID及びサーバ側CLDの符号化を回避することにより、受信ピアの計算効率を改善するステップを含む。
実施例70は実施例69の主題を含む。更に、送信ピアのメタデータリファレンスが受信ピアのメタデータリファレンスとマッチする場合、サーバ側CID及びサーバ側CLDをローカルストレージから取得するステップを含む。
実施例71は、コンピュータ可読命令を有する有形のコンピュータ可読記憶媒体である。コンピュータ可読命令は、実行されると、互換性のないアーキテクチャフォーマットを有するコンポジットと、コンポジットに関連付けられたアーキテクチャ非依存メタデータを有するクライアント側複合インタフェース記述(CID)と、コンポジットに関連付けられたアーキテクチャ固有メタデータを有するクライアント側複合レイアウト記述(CLD)とを取得するステップと、クライアント側CIDのアーキテクチャ非依存メタデータを用いてサーバ側CLDを符号化するステップと、クライアント側CLDのアーキテクチャ固有メタデータを用いてサーバ側CLDを符号化するステップと、受信ピアのアーキテクチャタイプに基づいて、サーバ側CLDの各要素のオフセット値を生成するステップと、をプロセッサに少なくとも実行させる。
実施例72は実施例71の主題を含む。命令は、プロセッサに、互換性のないアーキテクチャフォーマットを有するデータをレンダリングする要求を検出するステップを実行させる。
実施例73は実施例72の主題を含む。命令は、プロセッサに、要求のフォーマットタイプを識別するステップを実行させる。
実施例74は実施例73の主題を含む。命令は、プロセッサに、(a)各要素の各オフセット値と(b)要求のフォーマットタイプに基づいて、受信ピアによって取得されたデータの各要素を変換するステップを実行させる。
実施例75は実施例74の主題を含む。命令は、プロセッサに、データの変換された各要素を要求のリクエスタに転送するステップを実行させる。
実施例76は実施例72の主題を含む。命令は、プロセッサに、クライアント側CID及びクライアント側CLDを受信ピアのメタデータリファレンスに関連付けることにより、後続の要求中の受信ピアの計算要求を低減するステップを実行させる。
実施例77は実施例71の主題を含む。命令は、プロセッサに、サーバ側CID及びサーバ側CLDを受信ピアのメタデータリファレンスと関連付けるステップを実行させる。
実施例78は実施例77の主題を含む。命令は、プロセッサに、受信ピアによって取得されたデータが、受信ピアのメタデータリファレンスとマッチする送信ピアのメタデータリファレンスを含む場合、サーバ側CID及びサーバ側CLDの延コーディングをバイパスすることにより、受信ピアの計算効率を改善するステップを実行させる。
実施例79は実施例78の主題を含む。命令は、プロセッサに、送信ピアのメタデータリファレンスが受信ピアのメタデータリファレンスとマッチする場合、サーバ側CID及びサーバ側CLDをローカルストレージから取得するステップを実行させる。
実施例80は、互換性のないアーキテクチャフォーマットを有する受信ピアによって取得されたデータをリゾルブするためのシステムである。本システムは、互換性のないアーキテクチャフォーマットを有するコンポジットを取得するための手段と、コンポジットに関連付けられたアーキテクチャ非依存メタデータを有するクライアント側複合インタフェース記述(CID)を取得するための手段と、コンポジットに関連付けられたアーキテクチャ固有メタデータを有するクライアント側複合レイアウト記述(CLD)を取得するための手段と、クライアント側CIDのアーキテクチャ非依存メタデータを用いてサーバ側CLDを符号化するための手段と、クライアント側CLDのアーキテクチャ固有メタデータを用いてサーバ側CLDを符号化するための手段と、受信ピアのアーキテクチャタイプに基づいて、サーバ側CLDの各要素に対するオフセット値を生成するための手段と、を備える。
実施例81は実施例80の主題を含む。更に、互換性のないアーキテクチャフォーマットを有するデータをレンダリングする要求を検出するための手段を備える。
実施例82は実施例81の主題を含む。更に、要求のフォーマットタイプを識別するための手段を備える。
実施例83は実施例82の主題を含む。更に、(a)各要素の各オフセット値と(b)要求のフォーマットタイプに基づいて、受信ピアによって取得されたデータのそれぞれの要素を変換するための手段を備える。
実施例84は実施例83の主題を含む。更に、データの変換されたそれぞれの要素を要求のリクエスタに転送するための手段を備える。
実施例85は実施例81の主題を含む。更に、クライアント側CID及びクライアント側CLDを受信ピアのメタデータリファレンスに関連付けることにより、後続の要求中の受信ピアの計算要求を低減するための手段を備える。
実施例86は実施例80の主題を含む。更に、サーバ側CID及びサーバ側CLDを受信ピアのメタデータリファレンスと関連付けるための手段を備える。
実施例87は実施例86の主題を含む。更に、受信ピアによって取得されたデータが、受信ピアのメタデータリファレンスとマッチする送信ピアのメタデータリファレンスを含む場合、サーバ側CID及びサーバ側CLDの符号化を回避することにより、受信ピアの計算効率を改善するための手段を備える。
実施例88は実施例87の主題を含む。更に、送信ピアのメタデータリファレンスが受信ピアのメタデータリファレンスとマッチする場合、サーバ側CID及びサーバ側CLDをローカルストレージから取得するための手段を備える。
実施例89は、送信ピアの列挙(ENUM)コンポジットのバイナリ変換を防止する装置である。本装置は、送信ピアENUMコンポジットに関連付けられた送信ピアメタデータを取得するサーバ記憶インタフェースと、送信ピアメタデータを受信ピアENUMコンポジットに関連付けられた受信ピアメタデータと比較する列挙解決テーブル(ERT)を生成する解決テーブルマネジャと、(a)送信ピアメタデータ及び(b)受信ピアメタデータの各要素インデックス位置に基づいて一致する要素を識別することにより、送信ピアENUMコンポジットの変換を防止することにより、受信ピアの計算要求を改善する例外ジェネレータと、を備える。
実施例90は実施例89の主題を含む。解決テーブルマネジャは、送信ピアENUMコンポジットに関連付けられたマッピング要求値に基づいて、受信ピアENUMコンポジットのそれぞれのターゲット値を識別する。
実施例91は実施例90の主題を含む。例外ジェネレータは、(a)送信ピアメタデータと(b)受信ピアメタデータとの間の各要素インデックス位置のうち1つの不一致を識別する。
実施例92は実施例91の主題を含む。例外ジェネレータは、不一致の識別に応答してセカンダリ解決パラメータを識別する。
実施例93は実施例92の主題を含む。セカンダリ解決パラメータは、(a)送信ピアメタデータと(b)受信ピアメタデータに共通する要素名を含む。
実施例94は実施例91の主題を含む。解決テーブルマネジャは、セカンダリ解決パラメータに基づいて、送信ピアENUMコンポジットと受信ピアENUMコンポジットとの間のマッピングリンクを確立する。
実施例95は実施例91の主題を含む。例外ジェネレータは、(a)不一致を含み(b)利用可能なセカンダリ解決パラメータを含まないそれぞれの要素について例外を呼び出す。
実施例96は、送信ピアの列挙(ENUM)コンポジットのバイナリ変換を防止する方法である。本方法は、送信ピアENUMコンポジットに関連付けられた送信ピアメタデータを取得するステップと、送信ピアメタデータを受信ピアENUMコンポジットに関連付けられた受信ピアメタデータと比較する列挙解決テーブル(ERT)を生成するステップと、(a)送信ピアメタデータ及び(b)受信ピアメタデータの各要素インデックス位置に基づいて一致する要素を識別することにより、送信ピアENUMコンポジットの変換を防止することにより、受信ピアの計算要求を改善するステップと、を含む。
実施例97は実施例96の主題を含む。更に、送信ピアENUMコンポジットに関連付けられたマッピング要求値に基づいて、受信ピアENUMコンポジットのそれぞれのターゲット値を識別するステップを含む。
実施例98は実施例96の主題を含む。更に、(a)送信ピアメタデータと(b)受信ピアメタデータとの間の各要素インデックス位置のうち1つの不一致を識別するステップを含む。
実施例99は実施例98の主題を含む。更に、不一致の識別に応答してセカンダリ解決パラメータを識別するステップを含む。
実施例100は実施例99の主題を含む。セカンダリ解決パラメータは、(a)送信ピアメタデータと(b)受信ピアメタデータに共通する要素名を含む。
実施例101は実施例98の主題を含む。更に、セカンダリ解決パラメータに基づいて、送信ピアENUMコンポジットと受信ピアENUMコンポジットとの間のマッピングリンクを確立するステップを含む。
実施例102は実施例98の主題を含む。更に、(a)不一致を含み(b)利用可能なセカンダリ解決パラメータを含まないそれぞれの要素について例外を呼び出すステップを含む。
実施例103は、コンピュータ可読命令を有する有形のコンピュータ可読記憶媒体である。コンピュータ可読命令は、実行されると、送信ピアENUMコンポジットに関連付けられた送信ピアメタデータを取得するステップと、送信ピアメタデータを受信ピアENUMコンポジットに関連付けられた受信ピアメタデータと比較する列挙解決テーブル(ERT)を生成するステップと、(a)送信ピアメタデータ及び(b)受信ピアメタデータの各要素インデックス位置に基づいて一致する要素を識別することにより、送信ピアENUMコンポジットの変換を防止することにより、受信ピアの計算要求を改善するステップと、をプロセッサに少なくとも実行させる。
実施例104は実施例103の主題を含む。命令は、プロセッサに、送信ピアENUMコンポジットに関連付けられたマッピング要求値に基づいて、受信ピアENUMコンポジットのそれぞれのターゲット値を識別するステップを実行させる。
実施例105は実施例103の主題を含む。命令は、プロセッサに、(a)送信ピアメタデータと(b)受信ピアメタデータとの間の各要素インデックス位置のうち1つの不一致を識別するステップを実行させる。
実施例106は実施例105の主題を含む。命令は、プロセッサに、不一致の識別に応答してセカンダリ解決パラメータを識別するステップを実行させる。
実施例107は実施例106の主題を含む。命令は、プロセッサに、(a)送信ピアメタデータと(b)受信ピアメタデータに共通するセカンダリ解決パラメータの要素名を含むステップを実行させる。
実施例108は実施例105の主題を含む。命令は、プロセッサに、セカンダリ解決パラメータに基づいて、送信ピアENUMコンポジットと受信ピアENUMコンポジットとの間のマッピングリンクを確立するステップを実行させる。
実施例109は実施例105の主題を含む。命令は、プロセッサに、(a)不一致を含み(b)利用可能なセカンダリ解決パラメータを含まないそれぞれの要素について例外を呼び出すステップを実行させる。
実施例110は、送信ピアの列挙(ENUM)コンポジットのバイナリ変換を防止するシステムである。本システムは、送信ピアENUMコンポジットに関連付けられた送信ピアメタデータを取得するための手段と、送信ピアメタデータを受信ピアENUMコンポジットに関連付けられた受信ピアメタデータと比較する列挙解決テーブル(ERT)を生成するための手段と、(a)送信ピアメタデータ及び(b)受信ピアメタデータの各要素インデックス位置に基づいて一致する要素を識別することにより、送信ピアENUMコンポジットの変換を防止することにより、受信ピアの計算要求を改善するための手段と、を備える。
実施例111は実施例110の主題を含む。更に、送信ピアENUMコンポジットに関連付けられたマッピング要求値に基づいて、受信ピアENUMコンポジットのそれぞれのターゲット値を識別するための手段を備える。
実施例112は実施例110の主題を含む。更に、(a)送信ピアメタデータと(b)受信ピアメタデータとの間の各要素インデックス位置のうち1つの不一致を識別するための手段を備える。
実施例113は実施例112の主題を含む。更に、不一致の識別に応答してセカンダリ解決パラメータを識別するための手段を備える。
実施例114は実施例113の主題を含む。セカンダリ解決パラメータは、(a)送信ピアメタデータと(b)受信ピアメタデータに共通する要素名を含む。
実施例115は実施例112の主題を含む。更に、セカンダリ解決パラメータに基づいて、送信ピアENUMコンポジットと受信ピアENUMコンポジットとの間のマッピングリンクを確立するための手段を備える。
実施例116は実施例112の主題を含む。更に、(a)不一致を含み(b)利用可能なセカンダリ解決パラメータを含まないそれぞれの要素について例外を呼び出すための手段を備える。