(57)【要約】  コンパイルされたコードのメタデータは、スキーマ標準からの逸脱を可能にするために、メタデータ用のスキーマについての対応する記述を有することができる。
2009512062.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のデータ構造を有する少なくとも１つのコンピュータ可読媒体であって、前記データ構造の少なくとも１つが、
１つまたは複数のプログラム可能命令を実行するモジュールと、
前記モジュールの１つまたは複数に対応する型を記述するデータ構成と、
前記データ構成の構造を記述するさらなるデータ構成と
を具えたことを特徴とする少なくとも１つのコンピュータ可読媒体。
【請求項２】
前記モジュールは、マネージドコードを含むことを特徴とする請求項１記載の少なくとも１つのコンピュータ可読媒体。
【請求項３】
前記モジュールは、コンパイルされた中間言語コードを含むことを特徴とする請求項１記載の少なくとも１つのコンピュータ可読媒体。
【請求項４】
前記モジュールは、マネージド実行環境において前記１つまたは複数のプログラム可能命令を実行し、前記データ構成は、前記マネージド実行環境においてメタデータ構造用の公開された標準から逸脱する構造を有するメタデータを含むことを特徴とする請求項１記載の少なくとも１つのコンピュータ可読媒体。
【請求項５】
前記さらなるデータ構成は、前記データ構成用のスキーマを含み、前記データ構成用の前記スキーマは、マネージド実行環境において前記データ構成用の標準化スキーマから逸脱することを特徴とする請求項１記載の少なくとも１つのコンピュータ可読媒体。
【請求項６】
前記さらなるデータ構成は、マネージド実行環境における前記データ構成の構造用の公開された標準フォーマットからの前記データ構成の構造の逸脱を記述することを特徴とする請求項１記載の少なくとも１つのコンピュータ可読媒体。
【請求項７】
前記さらなるデータ構成は、前記データ構成用の公開された標準構造におけるテーブル数と比較した際の、前記データ構成の構造におけるテーブル数の逸脱を記述することを特徴とする請求項１記載の少なくとも１つのコンピュータ可読媒体。
【請求項８】
前記さらなるデータ構成は、前記データ構成用の公開された標準構造におけるテーブル当たりのカラム数と比較した際の、前記データ構成の構造におけるテーブル当たりのカラム数の逸脱を記述することを特徴とする請求項１記載の少なくとも１つのコンピュータ可読媒体。
【請求項９】
前記さらなるデータ構成は、前記データ構成用の公開された標準構造におけるカラムサイズと比較した際の、前記データ構成の構造におけるカラムサイズの逸脱を記述することを特徴とする請求項１記載の少なくとも１つのコンピュータ可読媒体。
【請求項１０】
マネージド実行環境における実行可能コードに関連するメタデータを受け取るステップと、
前記受け取られたメタデータと前記マネージド実行環境における標準メタデータフォーマットとの間の構造的差異を決定するステップと
を具えたことを特徴とする方法。
【請求項１１】
前記メタデータは、中間言語にコンパイルされることを特徴とする請求項１０記載の方法。
【請求項１２】
前記決定するステップが、前記メタデータのスキーマを記述する別個のデータエンティティを読むステップと、前記スキーマを前記スキーマの公開された標準と比較するステップと
を具えたことを特徴とする請求項１０記載の方法。
【請求項１３】
前記決定するステップが、前記構造的差異を記述する別個のデータエンティティを読むステップを含むことを特徴とする請求項１０記載の方法。
【請求項１４】
前記構造的差異は、前記メタデータのカラム数に関することを特徴とする請求項１０記載の方法。
【請求項１５】
前記構造的差異は、前記メタデータのカラムの型に関することを特徴とする請求項１０に記載の方法。
【請求項１６】
前記構造的差異は、前記メタデータのカラムのサイズに関することを特徴とする請求項１０記載の方法。
【請求項１７】
前記構造的差異は、前記メタデータのテーブル数に関することを特徴とする請求項１０記載の方法。
【請求項１８】
マネージドコードに関連するメタデータを受け取る手段と、
前記受け取られたメタデータの構造とマネージドコード用のメタデータの標準構造との間のスキーマ差異を決定する手段と、
前記決定されたスキーマ差異に従って前記メタデータを読む手段と
を具えたことを特徴とするシステム。
【請求項１９】
前記スキーマ差異は、前記受け取られたメタデータのテーブルに関することを特徴とする請求項１８記載のシステム。
【請求項２０】
前記スキーマ差異は、前記受け取られたメタデータのテーブル内のカラムに関することを特徴とする請求項１８記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、拡張可能なメタデータを含む、少なくとも１つのコンピュータ可読媒体、方法、システムに関する。
【背景技術】
【０００２】
ランタイム実行環境（ｒｕｎｔｉｍｅ  ｅｘｅｃｕｔｉｏｎ  ｅｎｖｉｒｏｎｍｅｎｔ）は、アプリケーションプログラミングプラットフォームおよびアプリケーション実行プラットフォームの少なくとも一方として働くことができる。アプリケーションプログラミングプラットフォームとして、ランタイム実行環境は、複数のコンピューティング言語の１つで書かれ得る目標アプリケーションをコンパイルして、例えば、中間言語（ｉｎｔｅｒｍｅｄｉａｔｅ  ｌａｎｇｕａｇｅ）またはバイトコードにすることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
コンパイルされたコードのメタデータに関して、スキーマ標準からの逸脱を可能にする。
【課題を解決するための手段】
【０００４】
メタデータストリームは、マネージド実行環境（ｍａｎａｇｅｄ  ｅｘｅｃｕｔｉｏｎ  ｅｎｖｉｒｏｎｍｅｎｔ）においてコンパイルされたアプリケーションに対応するメタデータ用のスキーマの記述を提供するために、１つまたは複数のデータ構成（ｄａｔａ  ｃｏｎｓｔｒｕｃｔ）を含むことができる。
【０００５】
この場合、コンパイルされたコードのメタデータは、スキーマ標準からの逸脱を可能にするために、メタデータ用のスキーマについての対応する記述を有することができる。
【０００６】
本説明は、以下の図を参照する。
【発明を実施するための最良の形態】
【０００７】
拡張可能メタデータ（ｅｘｔｅｎｓｉｂｌｅ  ｍｅｔａ−ｄａｔａ）および関連技術が、今から説明される。
【０００８】
拡張可能メタデータは、本明細書で説明されるように、マネージド実行環境またはアンマネージド実行環境（ｕｎｍａｎａｇｅｄ  ｅｘｅｃｕｔｉｏｎ  ｅｎｖｉｒｏｎｍｅｎｔ）のどちらかにおいてコンパイルされたアプリケーションに対応するメタデータに関係することができる。より具体的には、本明細書で説明される例示的な実施によれば、アプリケーションの少なくとも部分に対応するメタデータは、実行環境内での実行に悪影響を及ぼすことなく、拡張可能にされることができる。そのようなアプリケーションは、ネットワーク環境内の１つまたは複数の装置またはノードで実施される実行プラットフォーム上での実行のために、コンパイルされることができる。
【０００９】
本明細書で使用される「アセンブリ（ａｓｓｅｍｂｌｙ）」は、配置の単位（ｕｎｉｔ  ｏｆ  ｄｅｐｌｏｙｍｅｎｔ）、またはより具体的には、コード用のバージョン管理可能な配置の単位のこととすることができる。
【００１０】
本明細書で説明される「メタデータ」は、その他のデータ、特にコンパイルされたコードについて記述するデータのこととすることができる。メタデータは、例えば、１つまたは複数のデータ要素についての詳細な量の情報またはデータについての記述的項目を提供することができる。
【００１１】
本明細書で説明される「スキーマ」は、データ構造、および構造内の各データ要素が含み得る内容の型を定義するデータのこととすることができる。
【００１２】
図１は、拡張可能メタデータに関係する例示的な技術が実施され得る、例示的なネットワーク環境１００を示しているが、そのような例示的な技術は、決してネットワーク環境に限定されない。そのような技術は、本明細書で説明されるような、拡張可能メタデータ１２０に関連する、ツール、方法、およびシステムを含むことができるが、それらに限定されない。より具体的には、ツール、方法、およびシステムは、メタデータが拡張可能であるかどうかに関わらず、メタデータをフォーマットし、読み、または分析するために実施されることができる。
【００１３】
図１では、クライアント装置１０５、サーバ装置１１０、および「その他の」装置１１５は、ネットワーク１２５を介して、互いに通信可能に結合されることができ、さらに、クライアント装置１０５、サーバ装置１１０、および「その他の」装置１１５の少なくとも１つは、上述の技術を可能にすることができる。
【００１４】
クライアント装置１０５は、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりに関連するメタデータをフォーマットし、読み、または分析することが可能な、デスクトップパーソナルコンピュータ（ＰＣ）、ワークステーション、メインフレームコンピュータ、インターネット機器、またはセットトップボックスを含む、様々な知られたコンピューティング装置の少なくとも１つを表すことができる。クライアント装置１０５はさらに、モバイル（すなわちセルラ）電話、携帯情報端末（ＰＤＡ）、ラップトップコンピュータなどを含む、有線および／または無線リンクによってネットワーク１２５に関連付けられることが可能な、任意の装置の１つを表すことができる。またさらに、クライアント装置１０５は、様々な数量および／または組み合わせの上述のクライアント装置を表すことができる。「その他の」装置１１５も、クライアント装置１０５の上記の例のいずれかによって実施されることができる。
【００１５】
サーバ装置１１０は、拡張可能メタデータ１２０の少なくとも１つの実施に従って、様々なデータおよび／または機能のいずれかをクライアント装置１０５または「その他の」装置１１５に提供することが可能な、任意の装置を表すことができる。データは、公共的に利用可能とすることができ、あるいは代替として、制限されることができ、例えば、一定のユーザのみに、または適切な加入料もしくはライセンス料が支払われた場合のみに、制限されることができる。サーバ装置１１０は、ネットワークサーバ、アプリケーションサーバ、ブレードサーバ、またはそれらの任意の組み合わせの少なくとも１つとすることができる。典型的には、サーバ装置１１０は、コンテンツソースとすることができる任意の装置を表すことができ、クライアント装置１０５は、ネットワーク１２５を介して、またはオフライン方式で、そのようなコンテンツを受け取ることができる任意の装置を表すことができる。しかし、本明細書で説明される例示的な実施によれば、クライアント装置１０５とサーバ装置１１０は、ネットワーク環境１００において、互いに交替しながら送信ノードまたは受信ノードになることができる。「その他の」装置１１５も、サーバ装置１１０の上記の例のいずれかによって実施されることができる。
【００１６】
「その他の」装置１１５は、本明細書で説明される例示的な技術の１つまたは複数に従って拡張可能メタデータ１２０を実施することが可能な、任意のさらなる装置を表すことができる。すなわち、「その他の」装置１１５は、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりに関連するメタデータをフォーマットし、読み、または分析することが可能な、任意のソフトウェア使用可能コンピューティングまたは処理装置を表すことができる。したがって、「その他の」装置１１５は、その上で実施される、オペレーティングシステム、インタープリタ、コンバータ、コンパイラ、またはランタイム実行環境の少なくとも１つを有する、コンピューティングまたは処理装置とすることができる。これらの例は、決して限定を意図したものではなく、したがって、そのように解釈されるべきではない。
【００１７】
ネットワーク１２５は、有線および／または無線ネットワークを含み得る、様々な従来のネットワークトポロジおよびタイプのいずれかを表すことができる。ネットワーク１２５はさらに、公共および／または独自仕様のプロトコルを含む、様々な従来のネットワークプロトコルのいずれかを利用することができる。ネットワーク１２５は、例えば、インターネットのほか、８０２．１１システムなどの（個々に「ＬＡＮ」とも呼ばれる）１つまたは複数のローカルエリアネットワークの少なくとも部分、もしくはより大規模にワイドエリアネットワーク（すなわち「ＷＡＮ」）、またはＢｌｕｅｔｏｏｔｈなどのパーソナルエリアネットワーク（すなわちＰＡＮ）を含むことができる。
【００１８】
装置１０５、１１０、１１５の少なくとも１つにおけるコンピュータアーキテクチャは一般に、ハードウェアおよびソフトウェアに関する定義されたコンピューティングプラットフォームを有する。コンピューティング装置用のソフトウェアは、機能に基づいて、ハードウェアアブストラクションレイヤ（代替として「ＨＡＬ」と呼ばれる）、オペレーティングシステム（代替として「ＯＳ」と呼ばれる）、およびアプリケーションを含み得るグループに分類されることができる。
【００１９】
ランタイム実行環境は、ＯＳとアプリケーションの間に存在することができ、アプリケーションが処理装置１０５、１１０、１１５のいずれか１つまたは複数の上で特定のタスクを実行し得る空間として働くことができる。より具体的には、ランタイム実行環境は、そのような装置上で動作するアプリケーションにアブストラクションレイヤおよびサービスを提供することによって、またさらに、アプリケーションにメモリ管理およびメモリ構成を含む機能を提供することによって、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、およびモバイル処理／通信装置を含む、その範囲を広げつつある処理装置１０５、１１０、１１５上でのアプリケーション実行の信頼性を向上させることができる。
【００２０】
ランタイム実行環境は、アプリケーションプログラミングプラットフォームおよびアプリケーション実行プラットフォームの少なくとも一方として働くことができる。
【００２１】
アプリケーションプログラミングプラットフォームとして、ランタイム実行環境は、複数のコンピューティング言語の１つで書かれ得る目標アプリケーションをコンパイルして、例えば、中間言語（これ以降「ＩＬ」）またはバイトコードを生成することができる。ＩＬは典型的には、プラットフォームとは独立であり、中央処理装置（これ以降「ＣＰＵ」）は、多くのＣＰＵ機械語よりも高水準の言語であるＩＬを実行する。
【００２２】
アプリケーション実行プラットフォームとして、ランタイム実行環境は、コンパイルされたＩＬをネイティブな機械命令に解釈することができる。ランタイム実行環境は、そのような命令を実行するために、インタープリタまたはコンパイラ（例えば、「ジャストインタイム（ｊｕｓｔ−ｉｎ−ｔｉｍｅ）」コンパイラ、もしくは「ＪＩＴ」コンパイラ）のどちらかを利用することができる。いずれにしても、その後、ネイティブな機械命令が、ＣＰＵによって直接実行されることができる。ＩＬはＣＰＵ独立であるので、そのＣＰＵプラットフォーム上で動作するＯＳが適切なランタイム実行環境をホストする限り、ＩＬは、どのＣＰＵプラットフォーム上でも実行することができる。
【００２３】
拡張可能メタデータ１２０に関連する技術が実施され得るランタイム環境の例は、Ｖｉｓｕａｌ  Ｂａｓｉｃランタイム環境、例えばＪａｖａ（登録商標）ルーチンを実行するのに使用されるＪａｖａ（登録商標）仮想マシンランタイム環境、または呼び出しルーチンを実行する前に例えばＭｉｃｒｏｓｏｆｔ  ．ＮＥＴ（商標）アプリケーションを機械語にコンパイルするための共通言語ランタイム（ＣＬＲ：Ｃｏｍｍｏｎ  Ｌａｎｇｕａｇｅ  Ｒｕｎｔｉｍｅ）を含む。しかし、ランタイム環境のこの列挙は、例として提供されたに過ぎない。さらに、本明細書で説明される例示的な技術は、必ずしもこれらのマネージド実行環境だけに限定されない。より具体的には、例示的な実施は、マネージド実行環境だけに限定されず、１つまたは複数の例は、テスト環境および／またはアンマネージド実行環境内でも実施されることができる。
【００２４】
ＩＬにコンパイルされたアプリケーションは、「マネージドコード（ｍａｎａｇｅｄ  ｃｏｄｅ）」と呼ばれることがあり、したがって、ランタイム実行環境は、代替として、「マネージド実行環境」と呼ばれることがある。その実行のためにランタイム実行環境を利用しないコードは、ネイティブコードアプリケーション（ｎａｔｉｖｅ  ｃｏｄｅ  ａｐｐｌｉｃａｔｉｏｎ）と呼ばれることがあることに留意されたい。
【００２５】
図２は、拡張可能メタデータ１２０（図１を参照）に関連する技術が実施され得る、例示的なランタイム実行環境２００を示している。
【００２６】
少なくとも１つの例示的な実施によれば、ランタイム実行環境２００は、コンピューティング装置プラットフォームのためにマネージドコードの実行を容易にすることができる。マネージドコードは、アプリケーション開発技術のコアセットの部分であると考えられることができ、さらに、ランタイム実行環境２００における実行のためにコンパイルされ、対応するサービスをコンピューティング装置プラットフォームに提供する、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりと見なされることができる。加えて、ランタイム実行環境２００は、解釈レベルのマネージドコードを、プロセッサによってプロキシされ、その後、実行され得る命令に翻訳することができる。代替として、マネージドコードは、インタープリタもしくはコンパイラ、またはインストール時にネイティブイメージ（ｎａｔｉｖｅ  ｉｍａｇｅ）として動作するように設計されたコンパイラの一形態によって実行されることができる。ランタイム実行環境２００のためのフレームワークは、マネージドアプリケーション用のソフトウェア構築ブロックと見なされ得るクラスライブラリも提供する。
【００２７】
さらに、マネージドコードの少なくとも部分に対応するメタデータは、そのマネージドコードをもたらすコンパイルされたアセンブリの部分として含まれることができ、または代替として、ランタイム実行環境２００においてマネージドコードとは別個に受け取られることができる。例えば、メタデータは、別個のアセンブリの部分としてコンパイルされることができ、またはメタデータは、ランタイム実行環境２００においてオフライン方式で受け取られることができる。いずれにしても、メタデータは、マネージドコードの１つまたは複数の要素についての詳細な量の情報を提供するために受け取られることができる。
【００２８】
ランタイム実行環境２００は、それ以外ではカーネルから期待され得る機能を少なくとも部分的に提供することができ、その機能は、装置１０５、１１０、１１５（図１を参照）の特定の１つに対するリソース制約に依存して、コンピューティング装置プラットフォームから欠けていることもあり、または欠けていないこともある。ランタイム実行環境２００の少なくとも１つの例は、以下のもの、すなわち、入力／出力（これ以降「Ｉ／Ｏ」）ルーチン管理、コンパイル、メモリ管理、およびサービスルーチン管理を実施することができる。したがって、ランタイム実行環境２００は、Ｉ／Ｏコンポーネント２０５と、コンパイラ２１０と、メモリ管理コンポーネント２１５と、サービスルーチンマネージャ２２０と、実行コンポーネント２２５とを含むことができる。以下でさらに詳細に説明されるこれらのコンポーネントは、例として提供されており、その例は、ランタイム実行環境２００のいずれか特定の実施への限定を意図したものではなく、そのような推測が行われるべきではない。したがって、コンポーネントは、ランタイム実行環境２００の例において、その様々な組み合わせおよび構成により実施されることができる。
【００２９】
ランタイム実行環境２００のＩ／Ｏコンポーネント２０５は、コンピューティング装置プラットフォームに関連する物理リソース（例えば、プロセッサおよび周辺装置）ならびに論理リソース（例えば、ドライバもしくは特定の方式で区分化された物理リソース）への同期または非同期アクセスの少なくとも一方を提供することができる。より具体的には、Ｉ／Ｏコンポーネント２０５は、頑健なシステムスループットをランタイム実行環境２００に提供することができ、さらにＩ／Ｏ要求が出されたコードのパフォーマンスを効率化することができる。
【００３０】
コンパイラ２１０は、ランタイム実行環境２００における実行のために、コンパイルされたＩＬをネイティブな機械命令に解釈することができる、ランタイム実行環境２００内のモジュールのこととすることができる。さらに、拡張可能メタデータ１２０に関連する技術の少なくとも１つの代替実施によれば、コンパイラ２１０は、様々な目的のために、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりに関連するコードモジュールの挙動を動的に分析することができる。コードモジュールは、ランタイム実行環境２００にロードされてもよく、またはロードされなくてもよい。コードモジュールがランタイム実行環境２００にロードされる場合、コンパイラ２１０は、本明細書で説明されるように、メタデータを拡張可能にするコードモジュールに関連するデータエンティティを読み、解釈し、かつ／または別途分析することができる。上述の読み、解釈、および分析は、コードモジュールの実行可能部分に触れず、または影響を与えずに、実行されることができ、コンパイル時、初回実行時、またはその後の実行パスの実行可能部分の実行中における任意の時に、実行されることができる。
【００３１】
しかし、拡張可能メタデータ１２０の少なくとも１つの例示的な実施は、コンパイラ２１０によってコンパイルされたコードを読み、解釈し、または別途分析する必要がないこともある。代わりに、拡張可能メタデータが、中間言語コード（すなわち「ＩＬ」）に関連するものとして、読まれ、解釈され、または別途分析されることができ、中間言語コードは、ネイティブプラットフォーム実行フォーマットではなくＩＬフォーマットでランタイム実行環境２００に配布され、アセンブリ、メソッド、または型のいずれか１つにすでにコンパイルされている。そのようなＩＬ３０５のソースは、非マネージド実行環境、または装置１０５、１１０、１１５のうちの同じまたは別個の１つの装置上のランタイム実行環境の別個の実施のどちらかに配置されることができる。ソースは、ＩＬが対応するアプリケーション、プログラム、メソッド、関数、またはプログラム可能および実行可能コードのその他の集まりのインストール時またはインストール前に、ＩＬを配置することができる。
【００３２】
メモリ管理コンポーネント２１５は、「ガベージコレクタ（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｏｒ）」と呼ばれることがあり、ガベージコレクタは、ガベージコレクション（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ）を実施する。ガベージコレクションは、マネージドコード実行環境の頑健な特徴と見なされることができ、それによって、オブジェクトは、メモリヒープ（ｍｅｍｏｒｙ  ｈｅａｐ）のスイープまたはスキャン時に、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりによってもはや使用されないと決定された場合、自動的に解放（すなわちデアロケート）される。メモリ管理コンポーネント２１５によって実施されるさらなる機能は、コンピューティング装置プラットフォーム上で動作するタスクの間で、有限な揮発性ＲＡＭ（すなわちメモリヒープ）ストレージの１つもしくは複数の連続ブロックまたはメモリの連続ブロックの組を管理すること、コンピューティング装置プラットフォーム上で動作する少なくとも１つのアプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりにメモリをアロケートすること、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりの少なくとも１つによる要求時に、メモリの少なくとも部分を解放すること、ならびにアプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりのいずれかが、他のアプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりのいずれかにアロケートされたメモリ空間に侵犯的にアクセスすることを防止することを含むことができる。
【００３３】
サービスルーチンマネージャ２２０は、コンピューティング装置プラットフォームに関連する物理リソースおよび論理リソースにサービス機能を提供するために、アプリケーションサポートレイヤの少なくとも部分として含まれることができる。拡張可能メタデータ１２０に関連する例示的な技術（例えば、ツール、方法、およびシステム）は、サービスルーチンマネージャ２２０によって管理されることができる。すなわち、拡張可能メタデータ１２０に関連する技術は、そのような技術の様々な代替実施によれば、単独または互いに組み合わされて、（上で参照されたような）コンパイラ２１０、サービスルーチンマネージャ２２０、またはランタイム実行環境２００のその他のコンポーネントによって実施されることができる。例えば、サービスルーチンマネージャ２２０は、１つまたは複数のコードモジュールに関連するメタデータスキーマの、メタデータスキーマの知られた基準に対する、変化または逸脱の存在を少なくとも決定することができ、それによって、拡張可能メタデータが読まれ、分析され、または別途解釈されることを可能にする。サービスルーチンマネージャ２２０によるそのような寄与は、コンパイル時、初回実行時、またはその後の１つもしくは複数のコードモジュールの実行可能部分の実行中における任意の時に、コードモジュールの実行可能部分に触れず、または影響を与えずに、行われることができる。
【００３４】
実行コンポーネント２２５は、コンピューティング装置プラットフォームのためのマネージドコード内に含まれる１つまたは複数のコードモジュールの実行を可能にすることができる。より具体的には、拡張可能メタデータ１２０に関連する技術の実施に関して、実行コンポーネント２２５は、拡張可能メタデータ１２０にアクセスするための１つまたは複数のツール、システム、およびプロセスを実施して、１つまたは複数のコードモジュールのためのメタデータスキーマの変化または逸脱の存在を決定し、それによって、メタデータが読まれ、分析され、または別途解釈されることを可能にすることができる、ランタイム実行環境２００内の例示的なコンポーネントとして働くことができる。
【００３５】
図３は、少なくとも本説明の目的で「メタ−メタ−データ（ｍｅｔａ−ｍｅｔａ−ｄａｔａ）」と呼ばれるデータを利用することによる拡張可能メタデータ１２０（図１を参照）の例示的な実施を説明する、例示的なコードブロック３００を示している。コードブロック３００の説明は、図１のネットワーク環境１００に関して上で説明された装置と、図２のランタイム実行環境２００に関して上で説明されたコンポーネントとを参照することができる。しかし、図１および図２へのこれらの参照は、拡張可能メタデータ１２０のための使用可能な環境を提供することを意図したものに過ぎず、どのような限定としても解釈されるべきではない。
【００３６】
コードブロック３００は、ランタイム実行環境２００における実行のためにコンパイルされた、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりの少なくとも部分と見なされることができる。例えば、オブジェクトデータモデルにおいては、ブロック３００は、オブジェクト３００と呼ばれる。
【００３７】
ブロック３０５は、ランタイム実行環境２００における実行のためにコンパイルされた、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりの実行可能部分と見なされることができる。例として、コードモジュール３０７、３０８、３０９を含むブロック３０５は、オブジェクト３００に対応するプログラムファイルまたはメソッドのこととすることができる。もちろん、ブロック３０５の図説された構成は、例として提供されたに過ぎず、代替実施形態は、どのような限定も意図していない。
【００３８】
データ構成３１０は、この例によれば、コードモジュール３０７、３０８、３０９の少なくとも１つのデータ構造および機能構造を記述する、メタデータを含むことができる。すなわち、ランタイム実行環境２００の文脈でメタデータ３１０が対応する１つまたは複数のコードモジュール３０７、３０８、３０９を実行するため、データ構成３１０は、関連するデータ構造の記述を求めてアクセスされることができる。代替的に型と呼ばれることもあるデータ構造は、メソッドの名前と、メソッドで使用される引数と、戻り引数とを含むことができる。これらのデータ構造（すなわち型）は、例として提供されたに過ぎず、どのような限定も意図していない。
【００３９】
メタデータ３１０のスキーマは、公開された標準の部分として知られることができ、またはスキーマは、標準化され、ランタイム実行環境２００に組み込まれることができる。この実施によれば、スキーマは、構成３１０内のメタデータの構造を制約する１組の規則と呼ばれることができ、例えば、標準化されたテーブル数と、標準化されたテーブル当たりのカラム数と、テーブルの１つまたは複数に対する標準化されたカラムデスクリプタとを含むことができる。
【００４０】
データ構成３１５が、とりわけ、データ構成３１０内に含まれるメタデータが、公開された標準またはランタイム実行環境２００に組み込まれた標準に従って、コンパイルされない場合を説明するために、オブジェクト３００で提供されることができる。すなわち、新しい特徴を追加し、旧い特徴を削除し、または既存の特徴内のバグを修正するように進化したデータ構造（すなわち型）を読み、分析し、または別途解釈するため、データ構成３１５が、ランタイム実行環境２００のどのコンポーネントに対する調整も必要とせずに、データ構成３１０内に含まれるメタデータを拡張可能にするために提供されることができる。
【００４１】
したがって、データ構成３１５は、「メタ−メタ−データ」と呼ばれることもあるデータを含むことができる。すなわち、データ構成３１５内に含まれるメタ−メタ−データは、データ構成３１０内に含まれるメタデータのスキーマのこととすることができる。さらに、データ構成３１５は、メタデータストリームの部分としてのコードブロック３００の部分としてコンパイルされることができる。しかし、拡張可能メタデータ１２０の少なくとも１つの代替実施は、データ構成３１５を、したがって、そこに含まれるメタ−メタ−データを、何らかの代替トランスポート媒体または別個のスキーマストリームによって、オフライン方式でランタイム実行環境２００に提供されるものと考えることができる。加えて、これまで説明された例によれば、データ構成３１０とデータ構成３１５は、別個のデータエンティティであるが、少なくとも１つの代替実施は、データ構成３１５を、データ構成３１０内に統合されたものと考えることができる。
【００４２】
例えば、データ構成３１５内に含まれるメタ−メタ−データは、以下のうちの１つまたは複数、すなわち、データ構成３１０内に含まれるメタデータのスキーマについての包括的な記述、データ構成３１０内に含まれるメタデータのスキーマとブロック３０５に対応するコードの実行のために必要とされ得る標準化スキーマモデルとの比較、またはデータ構成３１０内に含まれるメタデータのスキーマが、ブロック３０５に対応するコードの実行のために必要とされ得る標準化スキーマモデルからどのように逸脱しているかについてのその他の何らかの記述を含むことができる。データ構成３１０内に含まれるメタデータに関するそのような逸脱についての記述は、テーブル数、テーブル当たりのカラム数、またはそれぞれのテーブルの１つまたは複数におけるカラムサイズに関することができる。
【００４３】
より具体的には、データ構成３１０内に含まれるメタデータのスキーマに関して、データ構成３１５内に含まれるメタ−メタ−データは、以下のうちの１つまたは複数、すなわち、カラム単位での可変サイズカラムの少なくとも１つの再定義サイズ、新しいテーブルの少なくとも１つの定義、新しいコード化トークン型（Ｃｏｄｅｄ  Ｔｏｋｅｎ  Ｔｙｐｅ）の少なくとも１つの定義、標準化数量を超えるテーブル数、標準化数量を超えるカラム数、標準化数量を超えるトークン型数を、様々な組み合わせで含むことができる。別個のスキーマストリームの少なくとも１つの例は、ストリームヘッダ、新しいコード化トークン型デスクリプタ、標準化テーブルのテーブルデスクリプタ、新しいテーブルのテーブルデスクリプタ、標準化テーブルのカラムデスクリプタ、および新しいテーブルのカラムデスクリプタを含むことができる。
【００４４】
図４は、拡張可能メタデータ１２０（図１を参照）の例示的な実施を説明する、例示的なデータフロー４００を示している。
【００４５】
ブロック４０５は、拡張可能メタデータ１２０に関係する１つまたは複数の技術が実施され得る、実行環境のこととすることができる。本説明はこれまで、拡張可能メタデータ１２０が実施され得る環境として、ランタイム実行環境に言及してきた。しかし、例示的な実施は、マネージド実行環境にのみ限定されない。代わりに、拡張可能メタデータ１２０の代替例は、テスト環境および／またはアンマネージド実行環境内で実施されることができる。いずれにしても、データフロー４００の説明は、ネットワーク環境１００に対応する装置（図１を参照）と、ランタイム実行環境２００に対応するコンポーネント（図２を参照）と、コードモジュール３０５およびデータ構成３１０、３１５（図３を参照）とに関連する、１つまたは複数のモジュールによって実行される、様々な動作に関することができる。加えて、動作は、単独または互いに様々に組み合わされて、ハードウェア、ファームウェア、またはソフトウェアとして実施されることができる。
【００４６】
ブロック４１０は、データ構成３１０内に含まれるメタデータによって示されるような入力コード３０５のメタデータスキーマと、公開された標準またはさもなければ実行環境４０５によって期待される標準化スキーマとの間に、逸脱が存在するかを決定するために、データ構成３１５内に含まれるメタ−メタ−データを検査し、分析し、または別途読む、実行環境４０５のモジュールのこととすることができる。そのようなモジュールの一例は、ランタイム実行環境２００のサービスルーチンマネージャ２２０を含むことができる。
【００４７】
より具体的には、実行環境４０５内で読まれ、または実行されるコンパイルされたコード３０５（すなわちＩＬ）の場合、メタデータ用のスキーマは、予想可能であることが期待される。例えば、図２および図３の例を参照すると、ランタイム実行可能２００は、データ構成３１０内に含まれるメタデータ用のスキーマが、６４個のカラムを各々が有する４２個のテーブルを含むことを予想することができる。したがって、ブロック４１０において、標準化されたタイプのデスクリプタ、テーブルデスクリプタ、およびカラムデスクリプタからの逸脱が、検出されることができる。
【００４８】
標準化メタデータスキーマモデルからの逸脱は、データ構成３１５内に含まれるメタ−メタ−データ（図３を参照）を読み、解釈し、または別途分析することによって、検出されることができる。したがって、メタ−メタ−データは、メタデータのスキーマについての包括的な記述を含むことができる。代替として、データ構成３１５内に含まれるデータは、データ構成３１０内に含まれるメタデータのスキーマと標準化スキーマモデルとの間の差異を列挙することができ、それによって、データ構成３１０内に含まれるメタデータの徹底的な再検討の必要を回避することができる。
【００４９】
さらに、データ構成３１５のメタ−メタ−データは、コード３０５の部分としてコンパイルされることができ、または別個のスキーマストリーム（例えば、オフライン方式もしくは何らかの代替トランスポート媒体）によって実行環境４０５に提供されることができる。
【００５０】
ブロック４１５は、入力コード３０５のメタデータを検査し、分析し、または別途読む、実行環境４０５内のモジュール（例えばサービスルーチンマネージャ２２０）のこととすることができる。すなわち、データ構成３１０内に含まれるメタデータがどのように標準化メタデータスキーマモデルから逸脱し得るかを通知されることによって、実行環境４０５内の上述のモジュールは、データ構成３１０内に含まれる拡張可能メタデータを読み、解釈し、または別途分析できるようにされることができる。
【００５１】
図１〜図４に関する上の説明によって、特定の実行環境に入力されるコードのメタデータは、拡張可能とされることができる。例えば、コンパイルされた中間言語コード（すなわちＩＬ）に対応するメタデータスキーマは、対応するアプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集まりに対してランタイム実行環境を再構成する必要なしに、標準化構造から逸脱することができる。しかし、本明細書で説明される例示的な実施は、図１の環境、図２および図３のコンポーネント、または図４のデータ処理フローにのみ限定されない。拡張可能メタデータ１２０（図１を参照）に関連する技術（例えば、ツール、方法、およびシステム）は、図２および図３を参照して説明されたコンポーネントの様々な組み合わせによって、ならびに図４を参照して説明されたブロックの様々な順序によって、実施されることができる。
【００５２】
さらに、上で説明された例および実施のいずれかのためのコンピュータ環境は、例えば、１つまたは複数のプロセッサまたは処理ユニットと、システムメモリと、様々なシステムコンポーネントを結合するシステムバスとを有するコンピューティング装置を含むことができる。
【００５３】
コンピューティング装置は、揮発性および不揮発性媒体、着脱可能および固定式媒体を含む、様々なコンピュータ可読媒体を含むことができる。システムメモリは、ランダムアクセスメモリ（ＲＡＭ）などの揮発性メモリ、および／またはリードオンリメモリ（ＲＯＭ）もしくはフラッシュＲＡＭなどの不揮発性メモリの形態をとる、コンピュータ可読媒体を含むことができる。磁気カセット、またはその他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、またはその他の光記憶、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）など、コンピュータによってアクセス可能なデータを保存し得るその他のタイプのコンピュータ可読媒体も、例示的なコンピューティングシステムおよび環境を実施するために利用され得ることは理解されよう。
【００５４】
本明細書を通して、特定の説明された特徴、構造、または特性が本発明の少なくとも１つの実施に含まれることを意味する、「一例」、「代替的な例」、「少なくとも１つの例」、「一実施」、または「例示的な一実施」に対して、言及がなされた。したがって、そのような語句の使用は、ただ１つの実施以上のものを指すことができる。さらに、説明された特徴、構造、または特性は、１つまたは複数の実施において、任意の適切なやり方で組み合わされることができる。
【００５５】
しかし、当業者であれば、コードモジュール初期化が、１つまたは複数の特定の細部を用いずに、またはその他の方法、リソース、要素などを用いて、実施され得ることを理解されよう。その他の例では、よく知られた構造、リソース、または動作は、もっぱら本発明の態様を曖昧にすることを避けるために、詳細には示されず、または説明されていない。
【００５６】
コードモジュール初期化の例示的な実施および応用が示され、説明されたが、本発明は、厳密に上で説明された通りの構成およびリソースに限定されないことを理解されたい。当業者に明らかな様々な修正、変更、および変形が、上で説明され、別途特許請求される本発明の範囲から逸脱することなく、本明細書で開示された本発明の方法およびシステムの構成、動作、および細部に施されることができる。
【図面の簡単な説明】
【００５７】
【図１】拡張可能メタデータに関係する例示的な技術を実施する装置とネットワークを介して通信する装置を示す図である。
【図２】拡張可能メタデータに関係する例示的な技術を実施するための実行環境の一例を示す図である。
【図３】マネージドコードに対応する拡張可能メタデータの一例を示す図である。
【図４】拡張可能メタデータの少なくとも１つの実施についての例示的なデータフローを示す図である。
【図１】
2009512062.tif 000003
【図２】
2009512062.tif 000004
【図３】
2009512062.tif 000005
【図４】
2009512062.tif 000006
【国際調査報告】
2009512062.tif 000007
2009512062.tif 000008
2009512062.tif 000009