(57)【要約】【課題】  ．ＮＥＴ（登録商標）Ｆｒａｍｅｗｏｒｋの効率および／または性能を高めることを可能にするＡＰＩ関数の独自のセットを開発した。【解決手段】  プログラミングインターフェースが、アプリケーション、文書、媒体プレゼンテーション、および他の内容を生成する機能を提供する。これらの機能を用いると、開発者が、オペレーティングシステム、オブジェクトモデルサービス、あるいは他のシステムまたはサービスからサービスを得られるようになる。【選択図】  図２
2005129022.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のコンピュータ可読媒体で実施されるプログラミングインターフェースであって、
グラフィカルオブジェクトの生成に関連するサービスの第１群と、
コンテンツのフォーマットに関連するサービスの第２群と、
前記グラフィカルオブジェクトのコンポーネントの作成に関連するサービスの第３群と
を備えたことを特徴とするプログラミングインターフェース。
【請求項２】
サービスの前記第１群、サービスの前記第２群、およびサービスの前記第３群は、共通のプログラミングモデルを共有することを特徴とする請求項１に記載のプログラミングインターフェース。
【請求項３】
サービスの前記第１群、サービスの前記第２群、およびサービスの前記第３群は、共通のマークアップ言語を利用することを特徴とする請求項１に記載のプログラミングインターフェース。
【請求項４】
サービスの前記第１群、サービスの前記第２群、およびサービスの前記第３群は、共通のイベントシステムを共有することを特徴とする請求項１に記載のプログラミングインターフェース。
【請求項５】
サービスの前記第１群、サービスの前記第２群、およびサービスの前記第３群は、共通のプロパティ定義システムを共有することを特徴とする請求項１に記載のプログラミングインターフェース。
【請求項６】
サービスの前記第１群、サービスの前記第２群、およびサービスの前記第３群は、共通の入力パラダイムを共有することを特徴とする請求項１に記載のプログラミングインターフェース。
【請求項７】
サービスの前記第１群、サービスの前記第２群、およびサービスの前記第３群は、サービスの特定の群に関連する要素内にサービスの別の群に関連する要素をネストすることに関する共通のシステムを共有することを特徴とする請求項１に記載のプログラミングインターフェース。
【請求項８】
サービスの前記第１群は、前記グラフィカルオブジェクトの外見を決定するサービスを含むことを特徴とする請求項１に記載のプログラミングインターフェース。
【請求項９】
サービスの前記第１群は、前記グラフィカルオブジェクトの挙動を決定するサービスを含むことを特徴とする請求項１に記載のプログラミングインターフェース。
【請求項１０】
サービスの前記第１群は、前記グラフィカルオブジェクトの配置を決定するサービスを含むことを特徴とする請求項１に記載のプログラミングインターフェース。
【請求項１１】
サービスの前記第１群は、前記グラフィカルオブジェクトを定義する複数のネストされた要素を含むことを特徴とする請求項１に記載のプログラミングインターフェース。
【請求項１２】
前記グラフィカルオブジェクトは、ベクトルグラフィックスによって定義される１つまたは複数の要素からなることを特徴とする請求項１に記載のプログラミングインターフェース。
【請求項１３】
サービスの前記第１群は、新しいウィンドウを起動せずにマークアップ言語においてウィンドウプロパティを定義することができることを特徴とする請求項１に記載のプログラミングインターフェース。
【請求項１４】
サービスの前記第１群は、複数のグラフィカルオブジェクトを含むユーザインターフェースを生成することを特徴とする請求項１に記載のプログラミングインターフェース。
【請求項１５】
サービスの前記第２群は、前記グラフィカルオブジェクトを配置することを特徴とする請求項１に記載のプログラミングインターフェース。
【請求項１６】
請求項１に記載の前記プログラミングインターフェースを備えたことを特徴とするソフトウェアアーキテクチャ。
【請求項１７】
１つまたは複数のコンピュータ可読媒体で実施されるアプリケーションプログラムインターフェースであって、
グラフィカルオブジェクトの生成に関連するサービスの第１群と、
コンテンツのフォーマットに関連するサービスの第２群と、
前記グラフィカルオブジェクトのコンポーネントの作成に関連するサービスの第３群と
を備え、サービスの前記第１群、サービスの前記第２群、およびサービスの前記第３群は、共通のプログラミングモデルを共有することを特徴とするアプリケーションプログラムインターフェース。
【請求項１８】
サービスの前記第１群、サービスの前記第２群、およびサービスの前記第３群は、共通のマークアップ言語を利用することを特徴とする請求項１７に記載のアプリケーションプログラムインターフェース。
【請求項１９】
サービスの前記第３群は、幾何学的形状を生成するサービスを含むことを特徴とする請求項１７に記載のアプリケーションプログラムインターフェース。
【請求項２０】
サービスの前記第２群は、複数のデータ要素を配置することを含むことを特徴とする請求項１７に記載のアプリケーションプログラムインターフェース。
【請求項２１】
サービスの前記第１群は、
グラフィカルオブジェクトの外見を決定するサービスと、
前記グラフィカルオブジェクトの挙動を決定するサービスと
を含むことを特徴とする請求項１７に記載のアプリケーションプログラムインターフェース。
【請求項２２】
サービスの前記第１群は、新しいウィンドウを起動せずにマークアップ言語においてウィンドウプロパティを定義するサービスを含むことを特徴とする請求項１７に記載のアプリケーションプログラムインターフェース。
【請求項２３】
１つまたは複数のマイクロプロセッサおよび１つまたは複数のソフトウェアプログラムを含むコンピュータシステムであって、前記１つまたは複数のソフトウェアプログラムは、オペレーティングシステムからサービスを要求するプログラミングインターフェースを利用し、前記プログラミングインターフェースは、
グラフィカルオブジェクトを生成するサービスの第１群と、
前記グラフィカルオブジェクトのコンポーネントを生成するサービスの第２群と
からなるサービスを要求する別々のコマンドを備え、サービスの前記第１群およびサービスの前記第２群は、共通のプログラミングモデルを共有することを特徴とするコンピュータシステム。
【請求項２４】
サービスの前記第１群は、
前記グラフィカルオブジェクトの外見を定義するサービスと、
前記グラフィカルオブジェクトの配置を定義するサービスと
を含むことを特徴とする請求項２３に記載のコンピュータシステム。
【請求項２５】
サービスの前記第２群は、複数の幾何学的形状を生成するサービスを含むことを特徴とする請求項２３に記載のコンピュータシステム。
【請求項２６】
グラフィカルオブジェクトの生成を容易にする１つまたは複数の第１機能を呼び出すステップと、
コンテンツのフォーマットを容易にする１つまたは複数の第２機能を呼び出すステップと
を備え、前記第１機能および前記第２機能は、共通のプログラミングモデルを共有することを特徴とする方法。
【請求項２７】
前記グラフィカルオブジェクトのコンポーネントの作成を容易にする１つまたは複数の第３機能を呼び出すステップをさらに備えたことを特徴とする請求項２６に記載の方法。
【請求項２８】
前記グラフィカルオブジェクトに含まれる幾何学的形状の生成を容易にする１つまたは複数の第３機能を呼び出すステップを備えたことをさらに特徴とする請求項２６に記載の方法。
【請求項２９】
前記第１機能は、
新しいウィンドウを起動せずにマークアップ言語でウィンドウプロパティを定義し、および
複数のグラフィカルオブジェクトを含むユーザインターフェースを生成すること
を容易にすることを特徴とする請求項２６に記載の方法。
【請求項３０】
グラフィカルオブジェクトの生成を可能にする機能の第１セットを公開する手段と、
前記グラフィカルオブジェクトのコンポーネントの作成を可能にする機能の第２セットを公開する手段と
を備え、前記グラフィカルオブジェクトの前記コンポーネントは、複数の幾何学的形状を含み、および機能の前記第１セットおよび機能の前記第２セットは、共通のプログラミングモデルを共有することを特徴とするシステム。
【請求項３１】
機能の前記第２セットは、さらに、ページ上での前記幾何学的形状の配置のレンダリングを可能にすることを特徴とする請求項３０に記載のシステム。
【請求項３２】
ディスプレイに関するコンテンツのフォーマットを可能にする機能の第３セットを公開する手段をさらに備えたことを特徴とする請求項３０に記載のシステム。
【請求項３３】
機能の前記第１セットおよび機能の前記第２セットは、共通のマークアップ言語を利用することを特徴とする請求項３０に記載のシステム。
【請求項３４】
機能の前記第１セットおよび機能の前記第２セットは、共通のイベントシステムおよび共通のプロパティ定義システムを共有することを特徴とする請求項３０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアおよびそのようなソフトウェアの開発に関する。より詳細には、アプリケーションプログラムおよびコンピュータハードウェアによる、ソフトウェアプラットフォームの使用を容易にするプログラミングインターフェースに関する。
【背景技術】
【０００２】
非常に早くから、コンピュータソフトウェアは、「オペレーティングシステム」ソフトウェアまたは「アプリケーション」ソフトウェアとして分類されるようになった。おおまかにいって、アプリケーションは、数学の方程式を解くか、またはワードプロセッシングをサポートするなど、コンピュータユーザのために特定のタスクを実行することを意図されたソフトウェアである。オペレーティングシステムは、コンピュータハードウェアを管理し、制御するソフトウェアである。オペレーティングシステムの目標は、コンピュータリソースをアプリケーションプログラマが使用可能にすると同時に、ハードウェアを実際に制御するのに必要な複雑さを隠蔽することである。
【０００３】
オペレーティングシステムは、アプリケーションプログラムインターフェースまたはＡＰＩとして周知の機能または関数を介してリソースを使用可能にする。用語ＡＰＩは、これらの機能のうちの単一の関数を指すのにも使用される。関数は、多くの場合、アプリケーションプログラマに提供するリソースまたはサービスに関してグループ化される。アプリケーションソフトウェアは、個々のＡＰＩ関数を呼び出すことによってリソースを要求する。ＡＰＩ関数は、オペレーティングシステムによって提供されるメッセージおよび情報をアプリケーションソフトウェアに中継する手段としても働く。
【０００４】
【特許文献１】米国特許出願第０９／５９８，１０５号明細書
【特許文献２】米国特許出願第０９／６１３，２８９号明細書
【非特許文献１】［online］、ＥＣＭＡ、〈URL:www.ecma.ch〉
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ハードウェアの変更のほかに、オペレーティングシステムソフトウェアの進化を駆り立てるもう１つの要因が、アプリケーションソフトウェア開発を単純化し、加速する要望である。アプリケーションソフトウェア開発は、困難な作業になる場合があり、時折、数百万行のコードによって高度化されたプログラムを作成するために数年の開発者の時間を必要とする。Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムのさまざまなバージョンなどの広く使用されているオペレーティングシステムに関して、アプリケーションソフトウェア開発者は、そのオペレーティングシステムを利用する数千本の異なるアプリケーションを毎年記述している。そのように多くの異なるアプリケーション開発者をサポートするために、一貫性のある（coherent）、利便性の高いオペレーティングシステムベースが必要である。
【０００６】
多くの場合、オペレーティングシステムをより複雑にすることによって、アプリケーションソフトウェアの開発を単純にすることができる。すなわち、ある機能が、複数の異なるアプリケーションプログラムに有用であり得る場合に、その機能をオペレーティングシステムに含めるために一度記述することが、数十人のソフトウェア開発者が数十本の異なるアプリケーションに含めるために数十回記述することを要求するよりよい場合がある。  このように、オペレーティングシステムが、複数のアプリケーションによって要求される広範囲の共通の機能性をサポートする場合、アプリケーションソフトウェア開発のコストおよび時間においてかなりの節約を達成することができる。
【０００７】
オペレーティングシステムとアプリケーションソフトウェアの間のどこに線が引かれるかに関係なく、有用なオペレーティングシステムについて、オペレーティングシステムおよびコンピュータハードウェアとアプリケーションソフトウェアとの間のＡＰＩは、オペレーティングシステム自体の効率的な内部動作と同様に重要であることは明白である。
【０００８】
アプリケーションを開発するときに、開発者は、さまざまなツールを使用して、グラフィカルアイテムおよび他の内容を生成する。表示されるか、またはレンダリングされるグラフィカルアイテムおよび他のデータを配置するために、追加ツールは使用可能である。  これらのツールは、通常は、異なるエンティティまたは異なるツール開発者によって作成される。その結果、これらのツールは、一貫性のあるプログラミング環境を提供しない。したがって、これらの異なるツールを使用する開発者は、ツールそれぞれの使用方法を習得し、それらに互いに通信させることを試みる必要がある。これらのアクティビティは、面倒で時間がかかる可能性があり、間近の実際の開発タスクから時間を奪う。
【０００９】
過去数年間に、インターネットおよびネットワーク技術全般の万国での採用によって、コンピュータソフトウェア開発者の風景が変化した。従来、ソフトウェア開発者は、独立型デスクトップコンピュータまたはローカルエリアネットワーク（ＬＡＮ）を介して限られた数の他のコンピュータに接続されたＬＡＮベースコンピュータの単一サイトソフトウェアアプリケーションに焦点を合わせていた。ソフトウェアが、シュリンクラップパッケージでマーケティングされ、販売されたので、そのようなソフトウェアアプリケーションを、通常は、「シュリンクラップ」製品と称する。これらのアプリケーションは、明確に定義されたＡＰＩを使用して、コンピュータの基礎になるオペレーティングシステムにアクセスした。
【００１０】
インターネットが進化し、広く受け入れられたので、産業界は、ワールドワイドウェブ（または単に「ウェブ」）のさまざまなサイトでのアプリケーションのホスティングの威力を理解し始めた。ネットワーク化された世界では、あらゆる場所のクライアントが、個別の位置でホスティングされるサーバベースのアプリケーションに要求をサブミットし、ほんの一瞬で応答を受信することができる。しかし、これらのウェブアプリケーションは、通常は、元々は独立型コンピューティングマシンまたはローカルにネットワーク化されたコンピュータのために開発されたものと同一のオペレーティングシステムプラットフォームを使用して開発された。残念ながら、いくつかの場合に、これらのアプリケーションは、分散コンピューティング管理様式に適切に振り替えられない。基礎になるプラットフォームは、単純に、無制限の数の相互接続されたコンピュータをサポートするという観念を用いて構成されていなかった。
【００１１】
インターネットによって導入された分散コンピューティング環境へのシフトに対処するために、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ社は、「．ＮＥＴ」Ｆｒａｍｅｗｏｒｋ（「ドットネット」と読む）と称するネットワークソフトウェアプラットフォームを開発した。Ｍｉｃｒｏｓｏｆｔ（登録商標）．ＮＥＴは、人、情報、システム、および装置を接続するソフトウェアである。このプラットフォームを用いると、開発者が、インターネットを介して実行されるウェブサービスを作成できるようになる。この動的なシフトは、Ｍｉｃｒｏｓｏｆｔの．ＮＥＴ（登録商標）ＦｒａｍｅｗｏｒｋのＡＰＩ関数のセットによって達成された。
【００１２】
．ＮＥＴ（登録商標）Ｆｒａｍｅｗｏｒｋの使用がますます一般的になるにつれて、このプラットフォームの効率および／または性能を高める形が識別された。本発明者は、そのような高められた効率および／または性能を可能にするＡＰＩ関数の独自のセットを開発した。
【課題を解決するための手段】
【００１３】
ＡＰＩなどのプログラミングインターフェースが、アプリケーション、文書、媒体プレゼンテーション、および他の内容を生成する機能を提供する。これらの機能を用いると、開発者が、オペレーティングシステム、オブジェクトモデルサービス、あるいは他のシステムまたはサービスからサービスを得られるようになる。一実施形態では、これらの機能を用いると、開発者が、グラフィカルユーザインターフェースを生成できるようになる。
【００１４】
同一の符号は、複数の図面を通じて同一の特徴を指すのに使用される。
【発明を実施するための最良の形態】
【００１５】
この開示は、開発者がウェブアプリケーションおよびウェブサービスを構築できるネットワークプラットフォームのアプリケーションプログラムインターフェース（ＡＰＩ）を扱う。より詳細には、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎによって作成された．ＮＥＴ（登録商標）Ｆｒａｍｅｗｏｒｋなどのネットワークプラットフォームを利用するオペレーティングシステムの例示的なＡＰＩを説明する。．ＮＥＴ（登録商標）Ｆｒａｍｅｗｏｒｋは、分散コンピューティング環境で実施されるウェブサービスおよびウェブアプリケーションのソフトウェアプラットフォームである。．ＮＥＴ（登録商標）Ｆｒａｍｅｗｏｒｋは、特定のタスクを実行するために協力している疎結合ウェブサービスの間の通信にオープン通信標準規格を使用する、次世代のインターネットコンピューティングを表す。
【００１６】
説明する実施形態で、ネットワークプラットフォームは、ＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）すなわちデータを記述するオープン標準規格を使用する。ＸＭＬは、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ  Ｃｏｎｓｏｒｔｉｕｍ（Ｗ３Ｃ）によって管理される。ＸＭＬは、ウェブページおよび企業間文書のデータ要素を定義するのに使用される。ＸＭＬでは、ＨＴＭＬに類似するタグ構造が使用されるが、ＨＴＭＬは、要素をどのように表示するかを定義し、ＸＭＬは、それらの要素に何が含まれるかを定義する。ＨＴＭＬでは、事前定義のタグを使用するが、ＸＭＬでは、ページの開発者がタグを定義することができる。したがって、事実上すべてのデータアイテムを識別することができ、ウェブページが、データベースレコードのように機能することができる。ＸＭＬおよびシンプルオブジェクトアクセスプロトコル（ＳＯＡＰ）などの他のオープンプロトコルの使用を介して、ネットワークプラットフォームが、ユーザの必要に合わせて調整できる広範囲のサービスの統合を可能にする。本明細書に記載の実施形態を、ＸＭＬおよび他のオープン標準規格とともに説明するが、これは、請求される発明の動作に必要ではない。他の同等に実行可能な技術が、本明細書に記載の発明を実施するのに十分である。
【００１７】
本明細書で使用される句、アプリケーションプログラムインターフェースまたはＡＰＩには、メソッド呼出しまたは関数呼出しを使用する従来のインターフェースならびに、リモート呼出し（たとえばプロキシ、スタブ関係）およびＳＯＡＰ／ＸＭＬ呼出しが含まれる。
【００１８】
下の名前空間の説明の一部で、あるクラス、インターフェース、列挙、および委任の説明が空白にされていることを諒解されたい。これらのクラス、インターフェース、列挙、および委任のより完全な説明は、上のＳＤＫ参考文献が保管されるコンパクトディスクの主題の中で見つけることができる。
【００１９】
（例示的ネットワーク環境）
図１に、．ＮＥＴ（商標）Ｆｒａｍｅｗｏｒｋなどのネットワークプラットフォームを実装できるネットワーク環境１００を示す。ネットワーク環境１００には、ネットワーク１０４（たとえばインターネット）上でアクセスできるサービスを提供する、代表的なウェブサーバ１０２（１）、…、１０２（Ｎ）が含まれる。一般に符号１０２として参照されるウェブサービスは、リモートプロシージャコール（ＲＰＣ）またはオブジェクトブローカ型技術などの、ネットワークを介してウェブサービスと相互作用する他の手段も使用することができるが、通常は、ＸＭＬ、ＳＯＡＰ、ＷＡＰ（wireless  application  protocol）、ＨＴＴＰ（ハイパーテキスト転送プロトコル）、およびＳＭＴＰ（シンプルメール転送プロトコル）などの産業界標準ウェブプロトコルを介してネットワーク１０４上でプログラム的に相互作用する、再利用可能なプログラマブルアプリケーションコンポーネントである。ウェブサービスは、自己記述的とすることができ、しばしば、メッセージのフォーマットおよび順序に関して定義される。
【００２０】
ウェブサービス１０２は、他のサービス（通信リンク１０６によって表されるように）、またはウェブアプリケーション１１０などのソフトウェアアプリケーション（通信リンク１１２および１１４によって表されるように）によって直接にアクセス可能である。各ウェブサービス１０２は、特定のサービスに関する要求を処理するソフトウェアを実行する１つまたは複数のサーバを含むものとして示されている。そのようなサービスは、しばしば、要求元にサービスされる情報を保管するデータベースを維持する。ウェブサービスを構成して、さまざまな異なるサービスの任意の１つを実行することができる。ウェブサービスの例に、ログイン検証、通知、データベース保管、株式市況、ディレクトリの突き止め、地図作成、音楽、電子ウォレット、カレンダ／スケジューラ、電話リスティング、ニュースおよび情報、ゲーム、発券業務などが含まれる。ウェブサービスを、互いにおよび他のアプリケーションと組み合わせて、インテリジェント対話経験を構築することができる。
【００２１】
ネットワーク環境１００には、ウェブサービス１０２（通信リンク１２２によって表される）および／またはウェブアプリケーション１１０（通信リンク１２４、１２６、および１２８によって表される）を使用する代表的なクライアント装置１２０（１）、１２０（２）、１２０（３）、１２０（４）、…、１２０（Ｍ）も含まれる。クライアントは、クライアント１２０（３）と１２０（４）の間の例示的なＸＭＬリンク１２９によって表されるように、標準プロトコルを使用して互いに通信することもできる。
【００２２】
全般的に符号１２０として参照されるクライアント装置は、多数の異なる形で実施することができる。可能なクライアント実施形態の例に、制限なしに、ポータブルコンピュータ、ステーショナリコンピュータ、タブレットＰＣ、テレビジョン／セットトップボックス、無線通信装置、携帯情報端末、ゲーム機、プリンタ、コピー機、および他のスマート装置が含まれる。
【００２３】
ウェブアプリケーション１１０は、ネットワークプラットフォームで動作するように設計されたアプリケーションであり、クライアント１２０からの要求を処理し、サービスするときに、ウェブサービス１０２を使用することができる。ウェブアプリケーション１１０は、プログラミングフレームワーク１３２上で稼動する１つまたは複数のソフトウェアアプリケーション１３０からなり、ソフトウェアアプリケーション１３０は、１つまたは複数のサーバ１３４または他のコンピュータシステムで実行されている。ウェブアプリケーション１１０の一部が、実際には１つまたは複数のクライアント１２０に常駐する場合があることに留意されたい。その代わりに、ウェブアプリケーション１１０が、実際にタスクを達成するクライアント１２０上の他のソフトウェアを調整することができる。
【００２４】
プログラミングフレームワーク１３２は、アプリケーション開発者によって開発されるアプリケーションおよびサービスをサポートする構造である。プログラミングフレームワーク１３２は、複数の言語をサポートすることによって、マルチ言語開発およびシームレス統合を可能にする。プログラミングフレームワーク１３２は、ＳＯＡＰなどのオープンプロトコルをサポートし、基礎になるオペレーティングシステムサービスおよびオブジェクトモデルサービスをカプセル化する。このフレームワークは、複数のプログラミング言語の堅牢で保護された実行環境を提供し、保護され、統合されたクラスライブラリを提供する。
【００２５】
フレームワーク１３２は、アプリケーションプログラムインターフェース（ＡＰＩ）レイヤ１４２、共通言語ランタイム（ＣＬＲ）レイヤ１４４、およびオペレーティングシステム／サービスレイヤ１４６を含むマルチティアアーキテクチャである。この階層アーキテクチャを用いると、フレームワークの他の部分に影響せずに、さまざまなレイヤに対する更新および修正が可能になる。共通言語仕様（ＣＬＳ）１４０を用いると、さまざまな言語の設計者が、基礎になるライブラリ機能性にアクセスできるコードを記述できるようになる。共通言語仕様１４０は、言語設計者とライブラリ設計者の間の、言語インターオペラビリティを促進するのに使用できるコントラクトとして機能する。ＣＬＳを厳守することによって、ある言語で記述されたライブラリは、別の言語で記述されたコードモジュールから直接にアクセスでき、ある言語で記述されたコードモジュールと別の言語で記述されたコードモジュールの間のシームレスな統合を達成することができる。ＣＬＳの１つの例示的な詳細な実施形態が、ＥＣＭＡ  ＴＣ３９／ＴＧ３の参加者によって作成されたＥＣＭＡ標準規格である。非特許文献１を参照されたい。
【００２６】
ＡＰＩレイヤ１４２は、アプリケーション１３０が、レイヤ１４６によって提供されるリソースおよびサービスにアクセスするために呼び出す関数のグループを提供する。ネットワークプラットフォームに対するＡＰＩ関数を公開することによって、アプリケーション開発者は、ネットワークリソースが実際にどのように動作するかまたは使用可能にされるかの複雑な相互作用を理解する必要なしに、ネットワークリソースおよび他のウェブサービスを完全に利用する分散コンピューティングシステム用のウェブアプリケーションを作成することができる。さらに、ウェブアプリケーションを、任意の数のプログラミング言語で記述でき、共通言語ランタイムレイヤ１４４によってサポートされ、共通言語仕様１４０の一部として含まれる中間言語に変換することができる。この形で、ＡＰＩレイヤ１４２が、広範囲のさまざまなアプリケーションにメソッドを提供することができる。
【００２７】
さらに、フレームワーク１３２を、フレームワークをホスティングするサーバ１３４からリモートに実行されるリモートアプリケーションによって設定される、ＡＰＩ呼出しをサポートするように構成することができる。それぞれクライアント１２０（３）および１２０（Ｍ）に常駐する代表的なアプリケーション１４８（１）および１４８（２）は、直接的にまたは間接的に、ネットワーク１０４上でＡＰＩレイヤ１４２への呼出しを行うことによって、ＡＰＩ関数を使用することができる。
【００２８】
このフレームワークを、クライアントで実施することもできる。クライアント１２０（３）は、フレームワーク１５０がクライアントで実施される情況を表す。このフレームワークは、サーバベースのフレームワーク１３２と同一とするか、クライアント用に修正することができる。その代わりに、クライアントが、携帯電話、携帯情報端末、ハンドヘルドコンピュータ、または他の通信／コンピューティング装置などの制限付きまたは専用機能の装置である場合に、クライアントベースフレームワークを圧縮することができる。
【００２９】
（開発者のプログラミングフレームワーク）
図２に、プログラミングフレームワーク１３２を詳細に示す。共通言語仕様（ＣＬＳ）レイヤ１４０は、さまざまな言語１３０（１）、１３０（２）、１３０（３）、１３０（４）、…、１３０（Ｋ）で記述されたアプリケーションをサポートする。そのようなアプリケーション言語に、Ｖｉｓｕａｌ  Ｂａｓｉｃ、Ｃ＋＋、Ｃ＃、ＣＯＢＯＬ、Ｊｓｃｒｉｐｔ、Ｐｅｒｌ、Ｅｉｆｆｅｌ、Ｐｙｔｈｏｎなどが含まれる。共通言語仕様１４０は、それに従う場合にさまざまな言語が通信できるようなる特徴のまたは特徴に関するルールのサブセットを指定する。たとえば、いくつかの言語は、共通言語ランタイム１４４によってサポートされる可能性がある所与の型（たとえば、「ｉｎｔ＊」型）をサポートしない。この場合に、共通言語仕様１４０に、その型が含まれない。その一方で、すべてまたはほとんどの言語によってサポートされる型（たとえば、「ｉｎｔ［］」型）は、共通言語仕様１４０に含まれ、したがって、ライブラリ開発者は、それを使用することができ、言語がそれを処理できることが保証される。この通信の能力は、ある言語で記述されたコードモジュールと別の言語で記述されたコードモジュールの間のシームレスな統合をもたらす。異なる言語が、特定のタスクに特によく適するので、言語の間のシームレスな統合によって、開発者が、特定のコードモジュールに対し特定の言語を選択でき、そのコードモジュールを異なる言語で記述されたモジュールと共に使用する能力が与えられる。共通言語ランタイム１４４を用いると、クロス言語継承と共にシームレスなマルチ言語開発が可能になり、複数プログラミング言語の堅牢で保護された実行環境が提供される。共通言語仕様１４０および共通言語ランタイム１４４に関するさらなる情報については、特許文献１、表題「Method and System for Compiling Multiple Languages」および特許文献２、表題「Unified Data Type System and Method」を参照されたい。
【００３０】
フレームワーク１３２によって、オペレーティングシステム１４６（１）（たとえば、Ｗｉｎｄｏｗｓ（登録商標）ブランドのオペレーティングシステム）およびオブジェクトモデルサービス１４６（２）（たとえば、コンポーネントオブジェクトモデル（ＣＯＭ）または分散ＣＯＭ）がカプセル化される。オペレーティングシステム１４６（１）は、ファイル管理、通知、イベント処理、ユーザインターフェース（たとえば、ウィンドウイング（windowing）、メニュー、ダイアログなど）、セキュリティ、認証、検証、プロセスおよびスレッド、メモリ管理などの従来の機能を提供する。オブジェクトモデルサービス１４６（２）は、さまざまなタスクを実行するために、他のオブジェクトとのインターフェースを提供する。ＡＰＩレイヤ１４２に対して行われる呼出しは、オペレーティングシステム１４６（１）および／またはオブジェクトモデルサービス１４６（２）によるローカル実行のために共通言語ランタイムレイヤ１４４に渡される。
【００３１】
ＡＰＩ１４２は、ＡＰＩ関数を複数の名前空間にグループ化する。名前空間によって、本質的に、セットとして「型」と呼ばれる、関連する機能性の特定のセットを提供する、クラス、インターフェース、委任（delegate）、列挙、および構造体のセットが定義される。クラスは、参照割り当てセマンティックス（semantics）を有する、管理されるヒープから割り当てられるデータを表す。委任は、オブジェクト指向関数ポインタである。列挙は、名前付き定数を表す特殊な種類の値型である。構造体は、値割り当てセマンティックスを有する、静的に割り当てられたデータを表す。インターフェースは、他の型を実施できるコントラクトを定義する。
【００３２】
名前空間を使用することによって、設計者が、型のセットを階層名前空間に編成することができる。設計者は、型のセットから複数のグループを作成することができ、各グループに、論理的に関連する機能性を公開する少なくとも１つの型が含まれる。例示的な実施形態では、ＡＰＩ１４２が、３つのルート名前空間を含むように編成される。図２には３つのルート名前空間だけが示されているが、追加のルート名前空間をＡＰＩ１４２に含めることもできることに留意されたい。ＡＰＩ１４２に示された３つのルート名前空間は、プレゼンテーションサブシステムの第１名前空間２００（ユーザインターフェースシェルの名前空間２０２を含む）、ウェブサービスの第２名前空間２０４、およびファイルシステムの第３名前空間２０６である。各グループに名前を割り当てることができる。たとえば、プレゼンテーションサブシステム名前空間２００に、名前「Ｗｉｎｄｏｗｓ」を割り当てることができ、ファイルシステム名前空間２０６の型に、名前「Ｓｔｏｒａｇｅ」を割り当てることができる。名前付きグループを、Ｓｙｓｔｅｍ名前空間全体などのシステムレベルＡＰＩの単一の「グローバルルート」名前空間の下で編成することができる。トップレベル識別子を選択し、プレフィックシングすることによって、各グループの型を、型を含むグループの名前の前に置かれた選択されたトップレベル識別子を含む階層名によって簡単に参照することができる。たとえば、ファイルシステム名前空間２０６の型を、階層名「Ｓｙｓｔｅｍ．Ｓｔｏｒａｇｅ」を使用して参照することができる。このようにして、個々の名前空間２００、２０４、および２０６が、Ｓｙｓｔｅｍ名前空間からの主要な分岐になり、および個々の名前空間が「Ｓｙｓｔｅｍ．」プレフィックスなどの指示子（designator）を前に付けられる指定を伝える。
【００３３】
プレゼンテーションサブシステム名前空間２００は、プログラミングおよびコンテンツ開発に関する。この名前空間は、アプリケーション、文書、媒体プレゼンテーション、および他のコンテンツの生成を可能にする型を供給する。たとえば、プレゼンテーションサブシステム名前空間２００は、開発者がオペレーティングシステム１４６（１）および／またはオブジェクトモデルサービス１４６（２）からサービスを得られるようにするプログラミングモデルを提供する。
【００３４】
シェル名前空間２０２は、ユーザインターフェース機能性に関する。この名前空間は、開発者が自分のアプリケーションにユーザインターフェース機能性を埋め込めるようにし、さらに、開発者がユーザインターフェース機能性を拡張できるようにする型を供給する。
【００３５】
ウェブサービス名前空間２０４は、たとえば、イントラネット上の２つのピアの間で動作するチャットアプリケーションのように単純なアプリケーションおよび／または数百万のユーザに関するスケーラブルウェブサービスなどの複雑なアプリケーションなど、さまざまなウェブアプリケーションの作成を可能にするインフラストラクチャに関する。本明細書で説明するインフラストラクチャは、有利なことに、特定のソリューションの複雑さに適当なパーツだけを使用する必要があるという点で、非常に可変である。このインフラストラクチャは、さまざまなスケールおよび複雑さのメッセージベースアプリケーションを構築する基礎を提供する。このインフラストラクチャまたはフレームワークは、基本的メッセージング、セキュアメッセージング、信頼されるメッセージング、およびトランザクション処理されるメッセージングのＡＰＩを提供する。下で説明する実施形態では、関連するＡＰＩが、有用性、使い易さ、拡張性、およびバージョナビリティ（versionability）のバランスをとるように注意深く作成された形で名前空間の階層に分解される。
【００３６】
ファイルシステム名前空間２０６は、ストレージに関する。この名前空間は、情報の保管および検索を可能にする型を供給する。
【００３７】
フレームワーク１３２のほかに、プログラミングツール２２０が、開発者がウェブサービスおよび／またはアプリケーションを構築するのを支援するために設けられている。プログラミングツール２２０の１つの例が、Ｍｉｃｒｏｓｏｆｔ社によって提供されるプログラミングツールのマルチ言語スイートであるＶｉｓｕａｌ  Ｓｔｕｄｉｏ（商標）である。
【００３８】
（ルートＡＰＩ名前空間）
図３に、プレゼンテーションサブシステム２００の一部を詳細に示す。一実施形態で、名前空間が、名前のストリングがピリオドによって連結される階層命名規約に従って識別される。たとえば、プレゼンテーションサブシステム２００は、ルート名「Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ」によって識別される。「Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ」名前空間内に、「Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ」として識別される、さまざまなコントロールの別の名前空間があり、この名前空間は、さらに、「Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ．Ｐｒｉｍｉｔｉｖｅｓ」と称する、プリミティブ（図示せず）のもう１つの名前空間を識別する。この命名規約を念頭において、以下では、ＡＰＩ１４２の選択された名前空間の一般的な概要を示すが、他の命名規約を使用して同等の効果を得ることができる。
【００３９】
図３からわかるように、プレゼンテーションサブシステム２００に、複数の名前空間が含まれる。図３に示された名前空間は、プレゼンテーションサブシステム２００の特定の実施形態を表す。プレゼンテーションサブシステム２００の他の実施形態に、１つまたは複数の追加の名前空間を含めることができ、あるいは、図３に示された名前空間の１つまたは複数を省略することができる。
【００４０】
プレゼンテーションサブシステム２００は、ＡＰＩ１４２のプレゼンテーション機能性の多くのルート名前空間である。Ｃｏｎｔｒｏｌｓ名前空間３１０に、ユーザインターフェースなどの情報のディスプレイを構築するのに使用されるコントロールと、ユーザがアプリケーションと対話できるようにするクラスが含まれる。コントロールの例に、ディスプレイ上のボタンを作成する「Ｂｕｔｔｏｎ」、ディスプレイ上のラジオスタイルのボタンを生成する「ＲａｄｉｏＢｕｔｔｏｎ」、ディスプレイ上のメニューを作成する「Ｍｅｎｕ」、ディスプレイ上のツールバーを作成する「ＴｏｏｌＢａｒ」、ディスプレイ上のイメージを作成する「Ｉｍａｇｅ」、および情報の階層ビューを作成する「ＴｒｅｅＶｉｅｗ」が含まれる。
【００４１】
ある種のコントロールは、複数の要素をネストし、配置することによって作成される。  これらのコントロールは、コントロールの作成に使用される要素を隠蔽する論理モデルを有し、これによって、プログラミングモデルが単純になる。コントロールに、開発者またはユーザがスタイルおよびテーマを与えることができる（たとえば、ユーザインターフェースボタンの外見および挙動をカスタマイズすることによって）。一部のコントロールは、個人が個々のコントロールのスタイルを調整できるようにするアドレス可能コンポーネントを有する。さらに、コントロールを、アプリケーション設計者およびコンポーネント開発者がサブクラス化し、拡張することができる。コントロールは、ベクトルグラフィックスを使用してレンダリングされ、特定のインターフェースまたは他のディスプレイの要件に合うようにサイズを変更することができる。コントロールは、たとえばユーザインターフェースの対話フィールを強化し、アクションおよびリアクションを示すためにアニメーションを使用することができる。
【００４２】
Ｃｏｎｔｒｏｌｓ名前空間３１０に、１つまたは複数のパネルが含まれ、このパネルは、その子（たとえばネストされた要素）を測定し、配置するコントロールである。たとえば、「ＤｏｃｋＰａｎｅｌ」パネルでは、各子をディスプレイの上辺、左辺、下辺、または右辺にドッキングすることによって子を配置し、残りのスペースに他のデータを充てんする。特定のパネルが、ディスプレイ最上部のメニューおよびツールバー、ディスプレイ最下部のステータスバー、ディスプレイの左辺のフォルダリストにドッキングし、残りのスペースにメッセージのリストを充てんすることができる。
【００４３】
上述のように、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ．Ｐｒｉｍｉｔｉｖｅｓは、通常はＳｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ名前空間内のコントロールの開発者および彼ら自身のコントロールを作成する開発者によって使用されるコンポーネントである複数のコントロールを含む名前空間である。これらのコントロールの例に、「ＴｈｕｍｂおよびＲｅｐｅａｔＢｕｔｔｏｎ」が含まれる。別のコンポーネントである「ＳｃｒｏｌｌＢａｒ」は、４つのリピートボタン（「ラインアップ」の１つ、「ラインダウン」の１つ、「ページアップ」の１つ、および「ページダウン」の１つ）および現在のビューを文書内の別のロケーションにドラッグする「Ｔｈｕｍｂ」によって作成される。別の例では、「ＳｃｒｏｌｌＶｉｅｗｅｒ」は、スクロール可能領域を提供するために２つの「ＳｃｒｏｌｌＢａｒｓ」および１つの「ＳｃｒｏｌｌＡｒｅａ」を使用して作成されるコントロールである。
【００４４】
下のリストに、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ名前空間によって公開される例のクラスが含まれる。これらのクラスを用いると、ユーザが、たとえばさまざまな入出力機能ならびに追加のディスプレイ機能を介してアプリケーションと対話できるようになる。
・AccessKey  −  ＡｃｃｅｓｓＫｅｙは、文字をラップし、その文字をキーボードニーモニックとして示すキーボードキュー装飾を受け取ることを示す、ＦｒａｍｅｗｏｒｋＥｌｅｍｅｎｔ要素である。デフォルトで、キーボードキュー装飾は、下線である。
・Audio  −  Ａｕｄｉｏ要素。
・Border  −  ボーダー、バックグラウンド、またはその両方を、別の要素の回りに描く。
・Button  −  Ｃｌｉｃｋイベントに固有に反応する標準ボタンコンポーネントを表す。
・Canvas  −  Ｃａｎｖａｓ領域に関連して座標によってユーザが子要素を明示的に位置決めできる領域を定義する。
・CheckBox  −  ユーザに、真／偽などのオプションを与えるためにＣｈｅｃｋＢｏｘを使用する。ＣｈｅｃｋＢｏｘを用いると、ユーザが、オプションのリストから選択できるようになる。ＣｈｅｃｋＢｏｘコントロールによって、ユーザが、オプションの組合せを選択できるようになる。
・CheckedChangedEventArgs  −  ＣｈｅｃｋｅｄＣｈａｎｇｅｄＥｖｅｎｔＡｒｇｓクラスには、ＣｈｅｃｋｅｄＣｈａｎｇｅｄＥｖｅｎｔイベントに関する追加情報が含まれる。
・CheckStateChangedEventArgs  −  ＣｈｅｃｋＳｔａｔｅＣｈａｎｇｅｄＥｖｅｎｔＡｒｇｓクラスには、 ＣｈｅｃｋＳｔａｔｅＣｈａｎｇｅｄＥｖｅｎｔイベントに関する追加情報が含まれる。
・ClickEventArgs  −  Ｃｌｉｃｋイベントに関する情報を含む。
・ColumnStyle  −  変更可能なＣｏｌｕｍｎＳｔｙｌｅオブジェクトを表す。
・ColumnStyles  −  Ｃｈａｎｇｅａｂｌｅ要素のコレクションである変更可能なパターンのＩＬｉｓｔオブジェクト。
・ComboBox  −  ＣｏｍｂｏＢｏｘコントロール。
・ComboBoxItem  −  ＣｏｍｂｏＢｏｘ内部で選択可能なアイテムを実装するコントロール。
・ContactPickerDialog  −  ユーザが１つまたは複数の連絡先を選択できるようにする。
・ContactPropertyRequest  −  アプリケーションが、ＣｏｎｔａｃｔＰｉｃｋｅｒＤｉａｌｏｇを介して連絡先プロパティに関する情報を要求できるようにする。このクラスを継承することはできない。
・ContactPropertyRequestCollection - ＣｏｎｔａｃｔＰｒｏｐｅｒｔｙＲｅｑｕｅｓｔオブジェクトのコレクションを表す。
・ContactSelection  −  Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）Ｆｉｌｅ  Ｓｙｓｔｅｍ、コードネーム「ＷｉｎＦＳ」またはＭｉｃｒｏｓｏｆｔ  Ａｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙ（登録商標）からの、選択された連絡先に関する情報。
・ContactSelectionCollection  −  ＣｏｎｔａｃｔＳｅｌｅｃｔｉｏｎオブジェクトのコレクションを表す。
・ContactTextBox  −  連絡先または連絡先のプロパティの選択をサポートするエディットコントロール。
・ContactTextBoxSelectionChangedEventArgs  − ＣｏｎｔａｃｔＴｅｘｔＢｏｘＳｅｌｅｃｔｉｏｎＣｈａｎｇｅｄイベントの引数。
・ContactTextBoxTextChangedEventArgs  −  ＣｏｎｔａｃｔＴｅｘｔＢｏｘＴｅｘｔＣｈａｎｇｅｄイベントの引数。
・ContactTextBoxTextResolvedEventArgs  −  ＴｅｘｔＲｅｓｏｌｖｅｄＴｏＣｏｎｔａｃｔイベントの引数。
・ContentChangedEventArgs  −  ＣｏｎｔｅｎｔＣｈａｎｇｅｄＥｖｅｎｔのイベント引数。
・ContentControl  −  単一の内容を有するすべてのコントロールの基本クラス。
・ContentPresenter  −  ＣｏｎｔｅｎｔＰｒｅｓｅｎｔｅｒは、コンテンツコントロールのスタイルで、コンテンツが追加されるコントロールのビジュアルツリー（ｃｈｒｏｍｅテンプレート）内の位置を表すのに使用される。
・ContextMenu  −  ユーザが呼び出す選択肢のメニューを定義するコントロール。
・ContextMenuEventArgs  −  ＣｏｎｔｅｘｔＭｅｎｕＥｖｅｎｔに送られるデータ。
・Control  −すべてのユーザ対話要素の基本クラスを表す。このクラスは、そのサブクラスのプロパティの基本的なセットを提供する。
・Decorator  −  ボーダーなど、単一の子要素の上または周囲にエフェクトを適用する要素の基本クラス。
・DockPanel  −  互いに関して水平にまたは垂直にのいずれかで子要素を配置できる領域を定義する。
・DragDeltaEventArgs  −  ＤｒａｇＤｅｌｔａＥｖｅｎｔＡｒｇｓクラスには、ＤｒａｇＤｅｌｔａＥｖｅｎｔイベントに関する追加情報が含まれる。
・FixedPanel  −  ＦｉｘｅｄＰａｎｅｌは、自動ページ付け（ｐａｇｉｎａｔｉｏｎ）について固定されたページを含む固定フォーマット文書において使用されるルート要素である。ＦｉｘｅｄＰａｎｅｌは、一度に１ページまたはページのスクロール可能なスタックとして、自動ページ付けされたコンテンツを表示する。
・FlowPanel  −  ＦｌｏｗＰａｎｅｌは、単一行の長さを超えるコンテンツを、改行、ラップ、および位置合せするのに使用される。ＦｌｏｗＰａｎｅｌは、コンテナのコンテンツ、たとえばＴｅｘｔのフローが単一行の長さを超える可能性が高いときに使用できる、改行プロパティおよび位置合せプロパティを提供する。
・Frame  −  別のマークアップツリーのコンテンツをロードできる領域。
・Generator  −  Ｇｅｎｅｒａｔｏｒは、ＩｔｅｍｓＣｏｎｔｒｏｌの代わりにＵＩを生成し、ＧｅｎｅｒａｔｏｒＦａｃｔｏｒｙの監督下で働くオブジェクトである。
・GeneratorFactory  −  ＧｅｎｅｒａｔｏｒＦａｃｔｏｒｙは、ＩｔｅｍｓＣｏｎｔｒｏｌの代わりにＵＩを生成する責任を負う。ＧｅｎｅｒａｔｏｒＦａｃｔｏｒｙは、コントロールのＩｔｅｍｓＣｏｌｌｅｃｔｉｏｎ（フラット化されたビュー）のアイテムとそれに対応するＵＩＥｌｅｍｅｎｔの間の関連付けを維持する。コントロールのアイテムコンテナは、ファクトリにＧｅｎｅｒａｔｏｒを要求することができ、ファクトリは、実際のＵＩの生成を行う。
・GridPanel  −  行および列からなるグリッド領域を定義する。
・HeaderItemsControl  −  複数のアイテムを含み、ヘッダを有するすべてのコントロールの基本クラス。
・HorizontalScrollBar  −  水平スクロールバークラス。
・HorizontalSlider  −水平スライダクラス。 
・HyperLink  −  ＨｙｐｅｒＬｉｎｋクラスでは、ナビゲーションコントロールが実装される。デフォルトプレゼンタは、ＴｅｘｔＰｒｅｓｅｎｔｅｒである。
・Image  −  文書またはアプリケーションにイメージを含める簡単な方法を提供する。
・IncludeContactEventArgs  −  ＣｏｎｔａｃｔＰｉｃｋｅｒＤｉａｌｏｇ．ＩｎｃｌｕｄｅＣｏｎｔａｃｔイベントのハンドラに渡される引数。
・ItemCollection  −  コントロール内の個別のアイテムのコレクションを維持する。コレクションコンテンツの変更およびコンテンツに関するデータの入手を可能にするメソッドおよびプロパティを提供する。
・ItemsChangedEventArgs  −  ＩｔｅｍｓＣｈａｎｇｅｄイベントは、アイテムコレクションが変更したレイアウトを知らせるためにＧｅｎｅｒａｔｏｒＦａｃｔｏｒｙによって引き起こされる。
・ItemsControl  −  複数の子を有するすべてのコントロールの基本クラス。
・ItemsView  −  ＩｔｅｍｓＶｉｅｗはＩｔｅｍＣｏｌｌｅｃｔｉｏｎのフラット化されたビューを提供する。
・KeyboardNavigation  −  ＫｅｙｂｏａｒｄＮａｖｉｇａｔｉｏｎクラスは、フォーカス可能コントロールの間の、論理（タブ）ナビゲーションおよび方向付き（矢印）ナビゲーションのメソッドを提供する
・ListBox  −  選択可能なアイテムのリストを実装するコントロール。
・ListItem  −  ＬｉｓｔＢｏｘ内部の選択可能アイテムを実装するコントロール。
・Menu  −  ユーザが呼び出す選択肢のメニューを定義するコントロール。
・MenuItem  −  メニューの子アイテム。ＭｅｎｕＩｔｅｍを選択してコマンドを呼び出すことができる。ＭｅｎｕＩｔｅｍは、セパレータとすることができる。ＭｅｎｕＩｔｅｍは、サブメニューのヘッダとすることができる。ＭｅｎｕＩｔｅｍは、チェック付きまたはチェックなしにすることができる。
・PageViewer  −  自動ページ付けコントロール、ツールバー、およびページバーコントロールを含む文書表示コンポジットコントロールを表す。
・PaginationCompleteEventArgs  −  ＰａｇｉｎａｔｉｏｎＣｏｍｐｌｅｔｅＥｖｅｎｔのイベント引数。
・PaginationProgressEventArgs  −  ＰａｇｉｎａｔｉｏｎＰｒｏｇｒｅｓｓＥｖｅｎｔのイベント引数。
・Pane  −  新しいウィンドウを起動せずにマークアップ言語（たとえば「ＸＡＭＬ」）でウィンドウプロパティを定義する方法を提供する。
・Panel  −  すべてのＰａｎｅｌ要素の基本クラスを提供する。Ｐａｎｅｌ要素をインスタンス化するためには、派生具象クラスを使用する。
・RadioButton  −  ＲａｄｉｏＢｕｔｔｏｎは、２つの状態すなわち真または偽を有するオプションボタンを実装する。
・RadioButtonList  −  このコントロールは、ＲａｄｉｏＢｕｔｔｏｎのグループ化コントロールとして働き、ＲａｄｉｏＢｕｔｔｏｎを相互排他的に処理する部分である。ＲａｄｉｏＢｕｔｔｏｎＬｉｓｔは、Ｓｅｌｅｃｔｏｒから継承する。ＲａｄｉｏＢｕｔｔｏｎＬｉｓｔは、本質的に単一のＳｅｌｅｃｔｉｏｎＭｏｄｅセレクタであり、（Ｓｅｌｅｃｔｏｒからの）選択という概念は、これがグループ化するＲａｄｉｏＢｕｔｔｏｎのＣｈｅｃｋｅｄプロパティをキーオフとする。
・RowStyle  −  変更可能なパターンＣｈａｎｇｅａｂｌｅ要素。
・RowStyles  −  Ｃｈａｎｇｅａｂｌｅ要素のコレクションである変更可能なパターンのＩＬｉｓｔオブジェクト。
・ScrollChangeEventArgs  −  ＳｃｒｏｌｌＣｈａｎｇｅＥｖｅｎｔｓＡｒｇｓは、スクロール状態の変更を記述する。
・ScrollViewer  −
・SelectedItemsCollection  −  Ｓｅｌｅｃｔｏｒの選択されたアイテムのコンテナ。
・SelectionChangedEventArgs  −  選択変更イベントハンドラへの入力。
・SimpleText  −  ＳｉｍｐｌｅＴｅｘｔは、ユーザインターフェース（ＵＩ）シナリオでの使用を想定された軽量で、複数行の、単一フォーマットテキスト要素である。ＳｉｍｐｌｅＴｅｘｔは、複数の同一のフォーマッティングプロパティをＴｅｘｔとして公開し、しばしば、ある多用途性を犠牲にして性能を高めるのに使用することができる。
・StyleSelector  −  ＳｔｙｌｅＳｅｌｅｃｔｏｒを用いると、アプリケーション作成者がカスタムスタイル選択ロジックを提供できるようになる。たとえば、ＣｏｎｔｅｎｔとしてクラスＢｕｇを用いて、Ｐｒｉ１バッグに特定のスタイル、Ｐｒｉ２バッグに異なるスタイルを使用する。アプリケーション作成者は、派生セレクタクラスでＳｅｌｅｃｔＳｔｙｌｅメソッドをオーバーライドし、このクラスのインスタンスにＣｏｎｔｅｎｔＰｒｅｓｅｎｔｅｒクラスのＳｔｙｌｅＳｅｌｅｃｔｏｒプロパティを割り当てることができる。
・Text  −  Ｔｅｘｔの複数のフォーマットをレンダリングできるＴｅｘｔコントロールを表す。Ｔｅｘｔは、アプリケーションＵＩ内で最もよく使用される。より高度なテキストシナリオは、ＴｅｘｔＰａｎｅｌの追加の機能セットから利益を得る。比較的単純なテキストサポートが必要である場合のほとんどで、Ｔｅｘｔは、軽量の性質および機能の範囲のゆえに、好ましい要素である。
・TextBox  −  テキスト入力を受け入れる編集可能な領域を提供するコントロールを表す。
・TextChangedEventArgs  −  ＴｅｘｔＣｈａｎｇｅｄＥｖｅｎｔＡｒｇｓクラスは、ＴｅｘｔＲａｎｇｅ．ＳｅｔＴｅｘｔ（）によって送出されるイベントに関連するＲｏｕｔｅｄＥｖｅｎｔＡｒｇｓの型を表す。
・TextPanel  −  テキストをフォーマットし、サイズを変更し、描画する。ＴｅｘｔＰａｎｅｌは、複数の行のテキストおよび複数のテキストフォーマットをサポートする。
・ToolTip  −  ユーザがコントロールの上でホバリングするときに情報を表示するコントロール。
・ToolTipEventArgs  −  ＴｏｏｌＴｉｐＥｖｅｎｔ時に送られるデータ。
・TransformDecorator  −  ＴｒａｎｓｆｏｒｍＤｅｃｏｒａｔｏｒは、子を含み、指定された変換をその子に適用する。ＴｒａｎｓｆｏｒｍＤｅｃｏｒａｔｏｒは、変換後に子がデコレータの空間にぴたりとおさまり、最大限の領域を使用するように、そのローカル（変換前）座標で子を測定し、配置するロジックを実装する。したがって、子は、それに適用される変換の知識を有する必要がない。
・UIElementCollection  −  ＵＩＥｌｅｍｅｎｔＣｏｌｌｅｃｔｉｏｎは、ＵＩＥｌｅｍｅｎｔの順序付きコレクションである。
・ValueChangedEventArgs  −  このＶａｌｕｅＣｈａｎｇｅｄＥｖｅｎｔＡｒｇｓクラスには、ＶａｌｕｅＣｈａｎｇｅｄＥｖｅｎｔイベントに関する追加情報が含まれる。
・VerticalScrollBar  −  垂直スクロールバークラス。
・VerticalSlider  −  垂直スライダクラス。
・Video  −  現在のユーザ座標系内の指定された長方形でストリーミングビデオファイルまたはストリーミングオーディオファイルを再生する。
・VisibleChangedEventArgs  −  ＶｉｓｉｂｌｅＣｈａｎｇｅｄＥｖｅｎｔＡｒｇｓクラスには、ＶｉｓｉｂｌｅＣｈａｎｇｅｄＥｖｅｎｔイベントに関する追加情報が含まれる。
【００４５】
Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ名前空間には、さまざまな列挙も含まれる。下のリストに、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ名前空間に関連する列挙例が含まれる。
・CharacterCase  −  テキストがタイプされるときにＴｅｘｔＢｏｘコントロール内の文字の大文字小文字を指定する。
・CheckState  −  チェックボックスなど、チェック付き、チェックなし、または中間状態とすることができるコントロールの状態を指定する。
・ClickMode  −  Ｃｌｉｃｋイベントを発生させなければならないときを指定する。
・ContactControlPropertyPosition  −  連絡先のプロパティの位置およびディスプレイを制御する。
・ContactPickerDialogLayout  −  ＣｏｎｔａｃｔＰｉｃｋｅｒＤｉａｌｏｇが選択されたプロパティをどのように表示すべきかを指定する。
・ContactPropertyCategory  −  プロパティが、ユーザが選択できる複数の値を有する場合に、どの値をデフォルトとして扱うかを指定する。たとえば、ＣｏｎｔａｃｔＰｉｃｋｅｒＤｉａｌｏｇから電話番号プロパティを要求するときに「Ｗｏｒｋ」が好ましいカテゴリとして指定され、ユーザが、仕事場と家庭の両方の電話番号を有する連絡先を選択する場合に、仕事場の電話番号がデフォルト選択として示される。ユーザは、ＵＩを使用して、その代わりに家庭の電話番号を選択することができる。
・ContactPropertyType  −  ＣｏｎｔａｃｔＰｉｃｋｅｒＤｉａｌｏｇがユーザに要求できる連絡先のプロパティを指定する。
・ContactType  −  どの連絡先型をＣｏｎｔａｃｔＰｉｃｋｅｒＤｉａｌｏｇに表示するかを指定する。
・Direction  −  この列挙は、ジェネレータがＵＩを作る方向を指定するためにＧｅｎｅｒａｔｏｒＦａｃｔｏｒｙおよびＧｅｎｅｒａｔｏｒによって使用される。
・Dock  −  ＤｏｃｋＰａｎｅｌ内の子要素のＤｏｃｋ位置を指定する。
・GeneratorStatus  −  この列挙は、ＧｅｎｅｒａｔｏｒＦａｃｔｏｒｙによって、その状況を示すのに使用される。
・KeyNavigationMode  −  ＴａｂＮａｖｉｇａｔｉｏｎプロパティの型によって、Ｔａｂナビゲーションが生じるときにコンテナがフォーカスを移動する方法が指定される。
・MenuItemBehavior  −  ＭｅｎｕＩｔｅｍが有することができる異なる挙動を定義する。
・MenuItemType  −  ＭｅｎｕＩｔｅｍｓの異なる配置型を定義する。
・Orientation  −  スライダオリエンテーション型。
・PageViewerFit  −  ページをＰａｇｅＶｉｅｗｅｒのクライアント領域にどのように適合させるかを選択する。
・PageViewerMode  −  モードドロップダウンに反映される現在のＰａｇｅＶｉｅｗｅｒモードを選択する。
・ScrollerVisibility  −  ＳｃｒｏｌｌｅｒＶｉｓｉｂｉｌｔｙは、スクロールバーの可視性挙動を定義する。
・SelectionMode  −  ＬｉｓｔＢｏｘの選択挙動を指定する。
【００４６】
「Ｐｏｓｉｔｉｏｎ」が、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ名前空間に関連する構造体の例である。Ｇｅｎｅｒａｔｏｒのユーザは、この構造体を使用して位置を記述する。たとえば、アイテムリストの先頭から前への生成を開始するには、位置（−１、０）および方向Ｆｏｒｗａｒｄを指定する。リストの末尾から後ろへの生成を開始するには、位置（−１、０）および方向Ｂａｃｋｗａｒｄを指定する。インデックスｋの要素の後のアイテムを生成するには、位置（ｋ、０）および方向Ｆｏｒｗａｒｄを指定する。
【００４７】
下のリストに、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ名前空間に関連する例の委任が含まれる。
・CheckedChangedEventHandler  −  この委任は、ＣｈｅｃｋｅｄＣｈａｎｇｅｄＥｖｅｎｔイベントのハンドラによって使用される。
・CheckStateChangedEventHandler  −  この委任は、ＣｈｅｃｋＳｔａｔｅＣｈａｎｇｅｄＥｖｅｎｔイベントのハンドラによって使用される。
・ClickEventHandler  −  Ｃｌｉｃｋイベントを処理するメソッドを表す。
・ContactTextBoxSelectionChangedEventHandler  −  ＣｏｎｔａｃｔＴｅｘｔＢｏｘＳｅｌｅｃｔｉｏｎＣｈａｎｇｅｄイベントの委任ハンドラ。
・ContactTextBoxTextChangedEventHandler  −  ＣｏｎｔａｃｔＴｅｘｔＢｏｘＴｅｘｔＣｈａｎｇｅｄイベントの委任ハンドラ。
・ContactTextBoxTextResolvedEventHandler  −  ＴｅｘｔＲｅｓｏｌｖｅｄＴｏＣｏｎｔａｃｔイベントの委任ハンドラ。
・ContentChangedDelegate  −  ＣｏｎｔｅｎｔＣｈａｎｇｅｄＥｖｅｎｔに関する委任。
・ContextMenuEventHandler  −  ＣｏｎｔｅｘｔＭｅｎｕＥｖｅｎｔを処理するコールバック型。
・DragDeltaEventHandler  −  この委任は、ＤｒａｇＤｅｌｔａＥｖｅｎｔイベントのハンドラによって使用される。
・IncludeContactEventHandler  −  ＣｏｎｔａｃｔＰｉｃｋｅｒＤｉａｌｏｇ．ＩｎｃｌｕｄｅＣｏｎｔａｃｔイベントのハンドラ。
・ItemsChangedEventHandler  −  ＩｔｅｍｓＣｈａｎｇｅｄＥｖｅｎｔＡｒｇｓを受け取るハンドラに使用される委任。
・OpenedEventHandler  −  ＣｏｎｔａｃｔＰｉｃｋｅｒＤｉａｌｏｇ．Ｏｐｅｎｅｄイベントのハンドラ。
・PaginationCompleteDelegate  −  ＰａｇｉｎａｔｉｏｎＣｏｍｐｌｅｔｅＥｖｅｎｔに関する委任。
・PaginationProgressDelegate  −  ＰａｇｉｎａｔｉｏｎＰｒｏｇｒｅｓｓＥｖｅｎｔに関する委任。
・ScrollChangeEventHandler  −  この委任は、ＳｃｒｏｌｌＣｈａｎｇｅＥｖｅｎｔイベントのハンドラによって使用される。
・SelectionChangedEventHandler  −  選択変更イベントの処理に関する委任型。
・TextChangedEventHandler  −  ＴｅｘｔＣｈａｎｇｅｄＥｖｅｎｔＡｒｇｓを受け取るハンドラに使用される委任。
・ToolTipEventHandler  −  ＴｏｏｌＴｉｐＥｖｅｎｔの処理に関するコールバック型。
・ValueChangedEventHandler  −  この委任は、ＶａｌｕｅＣｈａｎｇｅｄＥｖｅｎｔイベントのハンドラによって使用される。
・VisibleChangedEventHandler  −  この委任は、ＶｉｓｉｂｌｅＣｈａｎｇｅｄＥｖｅｎｔイベントのハンドラによって使用される。
【００４８】
もう１つの名前空間、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ．Ａｔｏｍｓは、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ名前空間のサブ名前空間である。Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ．Ａｔｏｍｓには、関連するコントロール、イベント引数、およびイベントハンドラが含まれる。下のリストに、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ．Ａｔｏｍｓ名前空間に関連する例のクラスが含まれる。
・PageBar  −  スクロール可能自動ページ付けコントロールを表す。
・PageElement  −  自動ページ付けされたコンテンツの特定のページをレンダリングする。レンダリングされるページは、ＰａｇｅＳｏｕｒｃｅプロパティによって指定される。
・PageHoveredEventArgs  −  ＰａｇｅＨｏｖｅｒｅｄＥｖｅｎｔＡｒｇｓは、マウスポインタがホバリングしている場所に関する情報を提供する。
・PageScrolledEventArgs  −  ＰａｇｅＳｃｒｏｌｌｅｄＥｖｅｎｔＡｒｇｓには、ＰａｇｅＳｃｒｏｌｌｅｄＥｖｅｎｔに関する情報が含まれる。
・PageSelectedEventArgs  −  ＰａｇｅＳｅｌｅｃｔｅｄＥｖｅｎｔは、新しい行／列範囲選択が行われるときに発せられる。
・PageSelector  −  ＰａｇｅＳｅｌｅｃｔｏｒ：ページのうちで表示される行／列の範囲をユーザが選択できるようにする。
・PageSource  −  自動ページ付けされるコンテンツのソースを識別する。自動ページ付けされるコンテンツをフォーマットするプロパティおよびメソッドも提供する。
【００４９】
下のリストに、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ．Ａｔｏｍｓ名前空間に関連する例の委任が含まれる。
・PageHoveredEventHandler  −  この委任は、ＰａｇｅＨｏｖｅｒｅｄＥｖｅｎｔイベントのハンドラによって使用される。
・PageScrolledEventHandler  −  この委任は、ＰａｇｅＨｏｖｅｒｅｄイベントのハンドラによって使用される。
・PageSelectedEventHandler  −  この委任は、ＰａｇｅＳｅｌｅｃｔｅｄＥｖｅｎｔイベントのハンドラによって使用される。
【００５０】
Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ．Ｐｒｉｍｉｔｉｖｅｓ名前空間は、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ名前空間のもう１つのサブ名前空間である。上で述べたように、Ｐｒｉｍｉｔｉｖｅｓサブ名前空間には、他のより複雑なコントロールによってプリミティブとして使用されることを意図されたコントロールが含まれる。下のリストに、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ．Ｐｒｉｍｉｔｉｖｅｓ名前空間に関連する例のクラスが含まれる。
・ButtonBase  −  派生クラスにおいてオーバーライドされるときに、関連するイベントおよびプロパティを定義し、関連する入力イベントのハンドラを提供する。
・Popup  −  コンテンツを含むフライアウトウィンドウを作成するコントロール。
・RangeBase  −  指定された範囲を有する要素の基本クラスを表す。そのような要素の例が、スクロールバーおよびプログレスバーである。このクラスは、関連するイベントおよびプロパティを定義し、そのイベントのハンドラを提供する。
・RepeatButton  −  ＲｅｐｅａｔＢｕｔｔｏｎコントロールは、Ｃｌｉｃｋイベントが発生するときの反復セマンティックスを追加する。
・ScrollArea  −  ＳｃｒｏｌｌＡｒｅａは、スクロールに関する有効な要素である。これは、これがクリッピングするコンテンツを含み、そのコンテンツのオフセットおよび範囲を公開するプロパティを提供する。プログラムによってあるいはキーボードまたはマウスホイールを介してスクロールを駆動できるように、デフォルト入力処理も提供する。
・ScrollBar  −  スクロールバークラス。
・Selector  −  子の間からアイテムを選択するコントロールの基本クラス。
・Slider  −  スライダクラス。
・Thumb  −  サムコントロールは、スクロールバーの基本的なドラッグ移動機能性およびウィジェットのウィンドウサイズ変更を可能にする。
【００５１】
「ＩＥｎｓｕｒｅＶｉｓｉｂｌｅ」が、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ．Ｐｒｉｍｉｔｉｖｅｓ名前空間に関連するインターフェースの例である。ＩＥｎｓｕｒｅＶｉｓｉｂｌｅは、子ビジュアルをスクロールする／ビューに移動するためにビジュアルに対して実施される。
【００５２】
下のリストに、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ．Ｐｒｉｍｉｔｉｖｅｓ名前空間に関連する例の列挙が含まれる。
・ArrowButtonStates  −
・CloseModeType  −  さまざまなマウスイベントに対してポップアップがどのように振る舞うべきかを記述する。
・Part  −  Ｐａｒｔ列挙は、スクロールバーを構成するコントロールのセマンティック使用を示すのに使用される。
・PartStates  −  スクロールバー部品状態。
・PlacementType  −  ポップアップがスクリーンに置かれるべき場所を記述する。
・SizeBoxStates  −
【００５３】
Ｄｏｃｕｍｅｎｔｓ名前空間３１２は、リッチフォーマットであり意味論的に豊富な文書の作成に使用されるセマンティック要素およびフォーマッティング要素のコレクションである。一実施形態で、「要素」は、主に要素の階層（「ツリー」と称する）と共に使用されるクラスである。これらの要素は、対話型（たとえば、キーボード、マウス、または他の入力デバイスを介するユーザ入力を受け取る）とすることができ、イメージまたはオブジェクトをレンダリングすることができ、他の要素の配置を支援することができる。要素例に、一般的なブロックを実装する「Ｂｌｏｃｋ」要素、テーブルの本体を含むコンテンツを表す「Ｂｏｄｙ」要素、テーブル内の表データを含む「Ｃｅｌｌ」要素、テーブルのヘッダに含まれるコンテンツを表す「Ｈｅａｄｅｒ」要素、およびコンテンツを複数のページにまたがって分割するのに使用される「ＰａｇｅＢｒｅａｋ」要素が含まれる。
【００５４】
下のリストに、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｄｏｃｕｍｅｎｔｓ名前空間によって公開される例のクラスが含まれる。
・AdaptiveMetricsContext  −  ＡｄａｐｔｉｖｅＭｅｔｒｉｃｓＣｏｎｔｅｘｔは、適応フローフォーマット（ａｄａｐｔｉｖｅ−ｆｌｏｗ−ｆｏｒｍａｔ）文書のルート要素を提供する。子パネルが、ＡｄａｐｔｉｖｅＭｅｔｒｉｃｓＣｏｎｔｅｘｔ要素でカプセル化されたならば、親パネルのコンテンツは、ＲＭＥ（Ｒｅａｄｉｎｇ  Ｍｅｔｒｉｃｓ  Ｅｎｇｉｎｅ）によって処理される。子パネルのサイズは、任意の列の数およびサイズならびに最適のフォントサイズおよび行高さを計算するのに使用される。
・Block  −  デフォルトレンダリング挙動を誘導しない一般的なブロック要素を実装する。
・BlockElement  −  すべてのＢｌｏｃｋ要素の基本クラスを実装する。
・Body  −  Ｔａｂｌｅ要素の本体を含むコンテンツを表す。
・Bold  −  Ｉｎｌｉｎｅから導出されるＢｏｌｄ要素を実装する。
・BreakRecord  −  改ページにまたがって自動ページ付けされたコンテンツのフォーマッティングを継続するのに必要な情報を保管する。自動ページ付けサポートを提供するためには、このクラスから継承する。これは、抽象クラスである。
・Cell  −  Ｃｅｌｌには、あるＴａｂｌｅ内の表データが含まれる。Ｃｅｌｌ要素は、Ｒｏｗに含まれる。
・CellCollection  −  テーブルセルの順序付きコレクション。
・Column  −  Ｃｏｌｕｍｎ要素は、ＧｒｉｄＰａｎｅｌまたはＴａｂｌｅのコンテンツを配分するのに使用される。
・ColumnCollection  −  ＣｏｌｕｍｎＣｏｌｌｅｃｔｉｏｎは、Ｃｏｌｕｍｎの順序付きコレクションである。
・ColumnResult  −  列のビュー関連情報を表す。
・ContainerParagraphResult  −  他のＰａｒａｇｒａｐｈオブジェクトだけを含むＰａｒａｇｒａｐｈオブジェクトの計算されたレイアウトパラメータへのアクセスを提供する。
・ContentPosition  −  段落内のコンテンツの位置を表す。関連するコンテンツの位置を記述するには、このクラスから継承する。これは、抽象クラスである。
・Document  −  Ｄｏｃｕｍｅｎｔクラスの目的は、文書のコンテンツを、それを囲むＵＩ「ｃｈｒｏｍｅ」から分離することである。「分離」は、そのＵＩについて考慮せずに（およびコミットせずに）文書を作成できることを意味する。Ｄｏｃｕｍｅｎｔクラスは、文書コンテンツ、通常はＴｅｘｔＰａｎｅｌまたはＦｉｘｅｄＰａｎｅｌと、その子を保持する。ビジュアルツリー（デフォルトでＰａｇｅＶｉｅｗｅｒ）が、ＷＰＰコントロールスタイリング機構を介してこの要素に関連付けられる。
・DocumentPage  −  自動ページ付けの対象である文書のページに関連するコントロールのレイアウト情報を表す。これらのコントロールのレイアウト情報を記述するには、このクラスから継承する。これは、抽象クラスである。
・DocumentPageParagraphResult  −  自動ページ付けによって影響を受けるオブジェクトの計算されたレイアウトパラメータへのアクセスを提供する。
・FindEngine  −  検索アルゴリズムの基本クラス。
・FindEngineFactory  −  検索アルゴリズムファクトリ。
・FixedPage  −  固定フォーマットレイアウト文書内のコンテンツの単一ページへのアクセスを提供する。
・Footer  −  Ｔａｂｌｅ要素のフッタを含むコンテンツを表す。
・Header  −  Ｔａｂｌｅ要素のヘッダを含むコンテンツを表す。
・Heading  −  ヘディングとしてテキストをレンダリングするブロックレベル要素を実装する。
・HyphenationDictionary  −  ＨｙｐｈｅｎａｔｉｏｎＤｉｃｔｉｏｎａｒｙは、アプリケーション内のハイフネーションサポートを提供するための辞書を表す。これには、インライン辞書と外部辞書への参照との両方を含めることができる。インライン辞書は、より高い優先順位を有し、外部辞書のエントリの前に適用される。
・Hyphenator  −  Ｈｙｐｈｅｎａｔｏｒオブジェクトは、ＨｙｐｈｅｎａｔｉｏｎＤｉｃｔｉｏｎａｒｙ内のハイフネーションデータへの参照を維持し、ハイフネーションも実行する。
・Inline  −  デフォルトレンダリング挙動を全く誘導しない一般的なＩｎｌｉｎｅ要素を実装する。
・InlineElement  −  すべてのインライン要素の基本クラスとして、一般的なインライン要素を実装する。
・Italic  −  Ｉｎｌｉｎｅから導出されるＩｔａｌｉｃ要素を実装する。
・LineBreak  −  改行を課すマークアップ要素を表す。
・LineResult  −  テキストの行の計算された情報へのアクセスを提供する。
・List  −  Ｌｉｓｔ要素を実装する。Ｌｉｓｔは、中黒または番号付けなどのマーカーを用いてフォーマットされるように設計されたブロックレベル要素である。
・ListElementItem  −  中黒または番号付けなどのマーカーをサポートする、ＬｉｓｔＥｌｅｍｅｎｔＩｔｅｍを実装する。
・Note  −  ＨＴＭＬのｎｏｔｅ要素に類似する、Ｎｏｔｅ要素を実装する。
・PageBreak  −  さまざまなページにまたがってコンテンツを分割するのに使用されるマークアップ要素を表す。
・PageDescriptor  −  自動ページ付けされたレイアウトを作成するのに必要な情報を保管する、ＰａｇｅＤｅｓｃｒｉｐｔｏｒを実装する。
・Paragraph  −  段落のテキストをレンダリングするのに使用されるブロックレベル要素を実装する。レンダリング挙動は、ＨＴＭＬのｐａｒａｇｒａｐｈ要素のレンダリング挙動に類似する。
・ParagraphResult  −  Ｐａｒａｇｒａｐｈオブジェクトの計算されたレイアウトパラメータへのアクセスを提供する。
・Row  −  ＧｒｉｄＰａｎｅｌ要素またはＴａｂｌｅ要素内の行を定義する。
・RowCollection  −  ＲｏｗＣｏｌｌｅｃｔｉｏｎは、Ｒｏｗの順序付きコレクションを表す。
・RowGroup  −  ＴａｂｌｅまたはＧｒｉｄＰａｎｅｌ内の行のグループのプロパティデフォルトを指定する。
・Section  −  一般的なコンテナ要素を実装する。レンダリング挙動は、ＨＴＭＬのｄｉｖ要素に類似する。
・SmallCaps  −  インラインＳｍａｌｌＣａｐｓ要素を実装する。ＳｍａｌｌＣａｐｓは、タイトルなどで、強調のために文字の小さい大文字版としてレンダリングされる、印刷形態である。
・Subscript  −  インラインＳｕｂｓｃｒｉｐｔ要素を表す。Ｓｕｂｓｃｒｉｐｔ文字は、他の文字の真下、左下、または右下に書き込まれる。
・Superscript  −  インラインＳｕｐｅｒｓｃｒｉｐｔ要素を表す。Ｓｕｐｅｒｓｃｒｉｐｔ文字は、通常は文字または数字であり、他の文字の真上、左上、または右上にレンダリングされる。
・Table  −  Ｔａｂｌｅは、マークアップ言語（たとえば「ＸＡＭＬ」）を使用して表形式で複雑なデータを表示するのに使用される。
・TextArray  −  テキストのアクセスおよび操作に関する基本ＡＰＩ。
・TextChangedEventArgs  −  ＴｅｘｔＣｈａｎｇｅｄＥｖｅｎｔＡｒｇｓは、ＴｅｘｔＡｒｒａｙが変更されるときに送られるイベント引数を定義する。
・TextElement −  ＴｅｘｔＥｌｅｍｅｎｔは、ＴｅｘｔＴｒｅｅのＴｅｘｔＲａｎｇｅ機能を提供する。これは、固定されたエンドポイントを有する不変の、連続的なＴｅｘｔＲａｎｇｅである。これは、ＣｏｎｔｅｎｔＥｌｅｍｅｎｔ  Ｉｎｐｕｔ、ＦｏｃｕｓおよびＥｖｅｎｔｉｎｇのサポートを提供する。ＤｅｐｅｎｄｅｎｃｙＯｂｊｅｃｔプロパティのサポートも提供する。
・TextNavigator  −  これによって、テキストコンテンツを列挙することができる。移動可能なＴｅｘｔＰｏｓｉｔｉｏｎを実装する。テキストラン（ｔｅｘｔ  ｒｕｎ）によって移動するか、テキスト内の既知のロケーションで位置決めすることができる。
・TextParagraphResult  −  フローティングオブジェクトおよび図を含む、テキストに関する計算されたレイアウトパラメータへのアクセスを提供する。
・TextPosition  −  これは、ＴｅｘｔＡｒｒａｙ内のある位置を表すオブジェクトである。テキスト内の位置を表すコンパクトなオブジェクトによって、テキストが変更されるときに位置が自動的に維持される。比較動作は、同一のＴｅｘｔＡｒｒａｙ（同一のＣｏｎｔｅｘｔ）内の位置だけに適用可能である。ＴｅｘｔＰｏｓｉｔｉｏｎは、スタティックまたは移動可能とすることができる。ＩｓＣｈａｎｇｅａｂｌｅプロパティによって、位置の種類がわかる。
・TextRange  −  ＴｅｘｔＲａｎｇｅは、プロパティへの０個以上のサブレンジの一般的関連付けを提供する抽象クラスである。サブレンジ操作は、派生クラスで定義される。
・TextRangeMovable  −  ＴｅｘｔＲａｎｇｅＭｏｖａｂｌｅは、移動可能なＴｅｘｔＲａｎｇｅの抽象クラスである。このクラスでは、ＴｅｘｔＵｎｉｔｓに基づく始点および終点への移動の能力が追加される。
・TextTreeChangedEventArgs  −  ＴｅｘｔＣｈａｎｇｅｄＥｖｅｎｔＡｒｇｓでは、ＴｅｘｔＡｒｒａｙが変更されるときに送られるイベント引数が定義される。
・TextTreeDumper  −  ＴｒｅｅＤｕｍｐｅｒは、パッケージング問題に起因してパブリックであるツリーテストクラスである。
・TextTreeNavigator  −  これは、ＴｅｘｔＴｒｅｅ内のある移動可能位置を表すオブジェクトである。これは、ＴｅｘｔＴｒｅｅ内のみでの使用されるＴｅｘｔＮａｖｉｇａｔｏｒの特定の実装である。
・TextTreePosition  −  これは、ＴｅｘｔＴｒｅｅ内のある不変の位置を表すオブジェクトである。これは、ＴｅｘｔＴｒｅｅ内でのみ使用されるＴｅｘｔＰｏｓｉｔｉｏｎの特定の実装である。
・TextTreeRange  −  ＴｅｘｔＴｒｅｅのＴｅｘｔＲａｎｇｅ機能を提供する。これは、移動可能なエンドポイントを有する、不変の、連続的なＴｅｘｔＲａｎｇｅである。
・TextTreeRangeContentEnumerator  −  ＴｅｘｔＴｒｅｅＲａｎｇｅの真下のオブジェクト子に対する列挙子。
・TextUnit  −  テキストナビゲーションの拡張可能な単位。
・TextUnits  −  ＴｅｘｔＰｏｓｉｔｉｏｎおよびＴｅｘｔＲａｎｇｅに一般に使用されるテキスト単位。
・Typography  −  ＯｐｅｎＴｙｐｅタイポグラフィプロパティの豊富なセットへのアクセスを提供する。
・UIElementParagraphResult  −  完全にＵＩＥｌｅｍｅｎｔから構成される段落のＰａｒａｇｒａｐｈＲｅｓｕｌｔ。Ｆｌｏａｔｅｒｓ、Ｆｉｇｕｒｅｓ、および組み込みブロックレベルＵＩＥｌｅｍｅｎｔｓに使用される。
・Underline  −  ＩｎｌｉｎｅＥｌｅｍｅｎｔから派生したＵｎｄｅｒｌｉｎｅ要素を実装する。
【００５５】
下のリストに、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｄｏｃｕｍｅｎｔｓ名前空間に関連する例のインターフェースが含まれる。
・IDocumentContentHost  −  コンテンツホストの子が、コンテンツが変更されるときにホストに通知するようにするために、コンテンツホストでこのインターフェースを実装する。
・IDocumentFormatter  −  自動ページ付けなどの文書機能のサポートを提供するには、要素においてこのインターフェースを実装する。
・ITextDocumentResult  −  文書の列情報を維持するには、このインターフェースを実装する。
・ITextParagraphResult  −  テキスト段落に関するテキスト情報および位置情報を提供するには、このインターフェースを実装する。
【００５６】
下のリストにＳｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｄｏｃｕｍｅｎｔｓ名前空間に関連する例の列挙が含まれる。
・ElementEdge  −  これは、ＴｅｘｔＰｏｓｉｔｉｏｎが配置されるオブジェクトのエッジを識別する。
・FindAdvancedOptions  −  ＦｉｎｄＡｌｇｏｒｉｔｈｍ（検索初期化）クラスおよびＴｅｘｔＲａｎｇｅＭｏｖａｂｌｅ／ＴｅｘｔＳｅｌｅｃｔｉｏｎ（単純化された検索実行）クラスによって使用される高度な検索オプション。
・FindOptions  −  ＴｅｘｔＢｏｘ．Ｆｉｎｄメソッドによって使用される単純化された検索オプション。
・LogicalDirection  −  ＬｏｇｉｃａｌＤｉｒｅｃｔｉｏｎは、テキスト内の移動の論理方向を定義する。これは、コンテンツがＴｅｘｔＰｏｓｉｔｉｏｎに挿入されるときにＴｅｘｔＰｏｓｉｔｉｏｎを移動する先を決定するのにも使用される。
・TextArrayRunType  −  これは、ＬｏｇｉｃａｌＤｉｒｅｔｉｏｎを考慮に入れて、ＴｅｘｔＰｏｓｉｔｉｏｎが配置される実行（ｒｕｎ）を識別する。
・TextChangeOptions  −  ＣａｎＣｈａｎｇｅＴｅｘｔの可能なテキスト変更。
・TextMoveOptions  −  ナビゲーションを停止する条件を指定することによって、ＴｅｘｔＮａｖｉｇａｔｏｒの移動を制御する。
【００５７】
下のリストに、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｄｏｃｕｍｅｎｔｓ名前空間に関連する例の委任が含まれる。
・ObjectCloneDelegate  −  ＴｅｘｔＡｒｒａｙの一部がコピーまたは移動されるときにＤｅｐｅｎｄｅｎｃｙＯｂｊｅｃｔのクローンまたはコピーを提供するコールバックメソッド。
・TextChangedEventHandler  −  ＴｅｘｔＣｈａｎｇｅｄＥｖｅｎｔＨａｎｄｌｅｒ委任は、コンテンツがＴｅｘｔＴｒｅｅに追加されるか除去されるたびに、ＴｅｘｔＣｈａｎｇｅｄＥｖｅｎｔＡｒｇｓを用いて呼び出される。
【００５８】
Ｓｈａｐｅｓ名前空間３１４は、イメージおよびオブジェクトの作成に使用されるベクトルグラフィックス要素のコレクションである。ベクトルグラフィックス要素の使用によって、要素のサイズを簡単に変更して、特定のインターフェースまたはディスプレイ装置の要件に合わせることができるようになる。下のリストに、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｓｈａｐｅｓ名前空間によって公開される例のクラスが含まれる。
・Ellipse  −  楕円を描く。
・Glyphs  −  「ＸＡＭＬ」などのマークアップ言語のグリフ形状を表す。グリフは、フォントを表すのに使用される。
・Line  −  ２点間に直線を描く。
・Path  −  一連の接続された直線および曲線を描く。
・Polygon  −  多角形（閉じた形状を形成する接続された一連の線）を描く。
・Polyline  −  一連の接続された直線を描く。
・Rectangle  −  長方形を描く。
・Shape  −  楕円、多角形、および長方形などの形状要素の基礎的機能性を提供する抽象クラス。
【００５９】
Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ名前空間、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｄｏｃｕｍｅｎｔｓ名前空間、およびＳｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｓｈａｐｅｓ名前空間は、アプリケーションおよび関連コンポーネントを開発する統合システムを提供する。この統合システムは、３つのすべての名前空間に共通のプログラミングモデルを提供し、これによって、アプリケーションプログラムの開発を単純にする。３つのすべての名前空間の間のこのインターオペラビリティによって、開発者が、３つの名前空間によって提供される機能のどれにでも適用される単一のプログラミングアーキテクチャを習得できるようになる。たとえば、共通のマークアップ言語が、３つの名前空間のすべてにまたがって使用される。この共通マークアップ言語は、ＸＭＬマークアップにおいて指定されるクラスおよびプロパティの、オブジェクトのインスタンス化されたツリーへのマッピングを提供する。
【００６０】
さらに、一貫性のあるプログラミングモデルおよび一貫性のあるサービスが、３つの名前空間にまたがって使用される。たとえば、一貫性のあるイベントシステムが、さまざまなイベントの開始および処理に使用される。共通のプロパティシステムが、プロパティが「Ｃｏｎｔｒｏｌｓ」名前空間、「Ｄｏｃｕｍｅｎｔｓ」名前空間、または「Ｓｈａｐｅｓ」名前空間のどれに関連するかにかかわらず、さまざまなプロパティのスタイル指定、プロパティへのデータのバインディング、またはプロパティのアニメーション表示に使用される。さらに、同一の入力パラダイムおよびレイアウト処理が、３つのすべての名前空間にまたがって共通する。たとえば、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｃｏｎｔｒｏｌｓ名前空間からのさまざまなコントロールを、Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｄｏｃｕｍｅｎｔｓ名前空間を使用して定義される文書のコンテンツの途中にネストすることができる。
【００６１】
ソースファイルの例には、「Ｃｏｎｔｒｏｌｓ」、「Ｄｏｃｕｍｅｎｔｓ」、および「Ｓｈａｐｅｓ」を使用して宣言的に定義されるウィンドウおよびペイン（「ページ」とも称する）のセットが含まれる。対話ロジックも、ウィンドウおよびペインについて提供される。対話ロジックでは、特定のユーザアクションに応答してあるいはイベントまたはアクティビティの発生に応答して実行されるプログラムコードが識別される。対話ロジックは、たとえば、コモンランゲージランタイム（ＣＬＲ）言語を使用して定義される。ＣＬＲは、プログラムコード（たとえば．ＮＥＴプログラムコード）の実行を処理し、セキュリティ関連サービスおよびメモリ関連サービスなどのさまざまなサービスを提供するランタイム環境である。ＣＬＲ言語の例に、Ｃ＃およびＶｉｓｕａｌ  Ｂａｓｉｃが含まれる。ソースファイルに、Ｃ＃およびＶｉｓｕａｌ  Ｂａｓｉｃ言語ファイルなどの他の独立型のプログラミング言語ファイルも含めることができる。
【００６２】
この議論では、「Ｃｏｎｔｒｏｌｓ」名前空間、「Ｄｏｃｕｍｅｎｔｓ」名前空間、および「Ｓｈａｐｅｓ」名前空間の統合に言及するが、この統合は、本明細書に記載の名前空間およびサブ名前空間のいずれか、またはすべてに適用することができる。
【００６３】
Ｄａｔａ名前空間３１６には、要素のプロパティをデータソース、データソースクラス、ならびにデータコレクションおよびビューのデータ固有実装に束縛するのに使用されるクラスおよびインターフェースが含まれる。これらのクラスおよびインターフェースは、データ入力の例外を処理するのにも使用され、これらのクラスおよびインターフェースを用いると、さまざまなデータソース内の情報に基づいてユーザインターフェースをランタイムに作成できるようになる。データは、テキスト形式で表示することができ、あるいは、負である場合に金額を赤で表示するなど、ディスプレイのフォーマッティングを変更するのに使用することができる。クラスの例に、ダイナミックプロパティユーザインターフェースとソースデータとの間のバインディングを管理するバインディング宣言オブジェクトを表す「Ｂｉｎｄ」クラスと、ＸＭＬコンテンツノードへのデータバインディングのデータソースとして働く「ＸｍｌＤａｔａＳｏｕｒｃｅ」クラスが含まれる。
【００６４】
ｍｅｄｉａ名前空間３１８は、さまざまな媒体クラスを提供する。アプリケーション設計者ならびにコンポーネント開発者は、このクラスを使用して、さまざまなプレゼンテーション機能性を開発することができる。ｍｅｄｉａ名前空間３１８のクラス例に、あるイメージングエフェクト（たとえば、ブラーおよびグレイスケール）を可能にする「ＩｍａｇｅＥｆｆｅｃｔ」クラス、および単色、グラディエント、イメージ、ビデオ、および類似物を使用する領域の塗潰しの機構を提供する「Ｂｒｕｓｈ」クラスが含まれる。
【００６５】
ｍｅｄｉａ名前空間３１８には、開発者がプロパティをアニメーション表示にし、アニメーションのセットをタイムラインのセットと整合させることを可能にするサービスを含むサブ名前空間Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｍｅｄｉａ．Ａｎｉｍａｔｉｏｎが含まれる。アニメーションは、期間にわたって値を変更するオブジェクトである。アニメーションエフェクトに、ディスプレイ上のオブジェクトの移動、およびオブジェクトのサイズ、形状、または色の変更が含まれる。複数のアニメーションクラスが、さまざまなアニメーションエフェクトを実装するために提供される。エフェクトは、アニメーションを要素のプロパティ値に関連付けることによって達成される。たとえば、ビューにフェードインし、およびフェードアウトする長方形を作成するために、１つまたは複数のアニメーションが、長方形の不透明度プロパティに関連付けられる。
【００６６】
Ｍｅｄｉａ名前空間３１８には、さまざまなテキストサービスを提供するサブ名前空間Ｓｙｓｔｅｍ．Ｗｉｎｄｏｗｓ．Ｍｅｄｉａ．ＴｅｘｔＦｏｒｍａｔｔｉｎｇも含まれる。たとえば、「ＴｅｘｔＦｏｒｍａｔｔｅｒ」テキストエンジンは、テキスト行を改行し、ディスプレイに提示されるテキストをフォーマットするサービスを提供する。「ＴｅｘｔＦｏｒｍａｔｔｅｒ」は、異なるテキスト文字フォーマットおよび段落スタイルを処理でき、国際テキストレイアウトを処理することができる。
【００６７】
ｄｅｓｉｇｎ名前空間３２０は、フォームおよびテキストの編集、データのフォーマット、およびクロスプロセスデータ共有を可能にするクラスを提供する。これらのクラスは、文書、アプリケーション、および他のコンテンツの編集に関する拡張可能なフレームワークを提供する。
【００６８】
ｉｎｐｕｔ名前空間３２２には、システムによって受け取られる入力を調整する入力マネージャが含まれる。ｉｎｐｕｔ名前空間３２２には、キーボードまたはマウスなどの異なる入力デバイスを管理し、その制御を提供するのを助けるクラスも含まれる。
【００６９】
ｎａｖｉｇａｔｉｏｎ名前空間３２４は、ブラウザアプリケーションなど、ナビゲーションパラダイムを有するアプリケーションの作成を可能にするクラスおよびサービスのセットを提供する。これらのクラスおよびサービスによって、カスタマイズされたナビゲーション経験を有するアプリケーションの開発が可能になる。たとえば、オンライン商人から製品またはサービスを購入するときに、「戻る」ボタンをクリックすると、アプリケーションが異なるページを表示するようになり、そのページで、ユーザに、注文を取り消すか変更することを望むかどうかを尋ねる。別の例では、「更新」ボタンによって、アプリケーションが、まずアプリケーションを再ロードした後に新しいデータを検索するのではなく、新しいデータを検索するようになる。Ｎａｖｉｇａｔｉｏｎ名前空間３２４には、ユーザに提示される質問の階層を生成する機構を提供するページ機能も含まれる。
【００７０】
ａｕｔｏｍａｔｉｏｎ名前空間３２６は、アクセシビリティおよびユーザインターフェースオートメーションをサポートするクラスのセットを提供する。
【００７１】
ｓｅｒｉａｌｉｚａｔｉｏｎ名前空間３２８は、ＸＭＬファイルまたは２進表現を有するファイルから、またはこれらにオブジェクトの階層（たとえば要素）をロードまたは保管できるパーサを提供する。このプロセスでは、オブジェクトに関連するプロパティも設定され、イベントハンドラに関連付けられる。
【００７２】
ｉｎｔｅｒｏｐ名前空間３３０は、他のオペレーティングシステムまたはコンピューティングプラットフォームとのインターオペラティブを可能にするクラスのセットを提供する。
【００７３】
ｆｏｒｍｓ．Ｉｎｔｅｒｏｐ名前空間３３２は、アプリケーションがフォーム制御動作をホスティングできるようにする要素を提供する。
【００７４】
別の名前空間Ｓｙｓｔｅｍ．ＩＯ．ＣｏｍｐｏｕｎｄＦｉｌｅ（図３に図示せず）は、さまざまな文書配布可能ファイルが保管される複合ファイルを使用するサービスを提供する。これらのサービスを用いると、内容の暗号化および圧縮が可能になる。これらのサービスは、リフロー可能な文書および固定フォーマット文書など、同一の内容の複数の翻訳のストレージもサポートする。
【００７５】
（例示的なコンピューティングシステムおよび環境）
図４に、プログラミングフレームワーク１３２を（完全にまたは部分的にのいずれかで）実施できる、適するコンピューティング環境４００の例を示す。コンピューティング環境４００は、本明細書に記載のコンピュータアーキテクチャおよびネットワークアーキテクチャで使用することができる。
【００７６】
例示的なコンピューティング環境４００は、コンピューティング環境の一例にすぎず、コンピュータおよびネットワークアーキテクチャの使用の範囲または機能性に関する制限を示唆することを意図されたものではない。また、コンピューティング環境４００を、例示的なコンピューティング環境４００に示された、構成要素のいずれかまたはその組合せに関する依存性または要件を有するものと解釈してもならない。
【００７７】
フレームワーク１３２を、多数の他の汎用または専用コンピューティングシステム環境または構成と共に実施することができる。使用に適する可能性がある衆知のコンピューティングシステム、コンピューティング環境、および／または構成の例に、パーソナルコンピュータ、サーバコンピュータ、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などが含まれるが、これに制限されない。このフレームワークのコンパクト版またはサブセット版を、携帯電話、携帯情報端末、ハンドヘルドコンピュータ、または他の通信／コンピューティング装置などの限られたリソースのクライアントで実施することもできる。
【００７８】
フレームワーク１３２を、１つまたは複数のコンピュータまたは他の装置によって実行される、プログラムモジュールなどのコンピュータ実行可能命令の全般的な文脈で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するか特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。フレームワーク１３２は、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境で実践することもできる。分散コンピューティング環境では、プログラムモジュールを、メモリストレージ装置を含むローカルおよびリモートの両方のコンピュータストレージ媒体に配置することができる。
【００７９】
コンピューティング環境４００に、コンピュータ４０２の形の汎用コンピューティング装置が含まれる。コンピュータ４０２のコンポーネントには、１つまたは複数のプロセッサまたは処理装置４０４、システムメモリ４０６、および処理装置４０４を含むさまざまなシステムコンポーネントをシステムメモリ４０６に接続するシステムバス４０８を含めることができるが、これに制限はされない。
【００８０】
システムバス４０８は、メモリバスまたはメモリコントローラ、周辺バス、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）、およびさまざまなバスアーキテクチャのいずれかを使用するプロセッサバスまたはローカルバスを含む、複数の可能なタイプのバス構造の１つまたは複数を表す。たとえば、そのようなアーキテクチャに、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニンバスとも称するＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ）バスを含めることができる。
【００８１】
コンピュータ４０２に、通常は、さまざまなコンピュータ可読媒体が含まれる。そのような媒体は、揮発性媒体および不揮発性媒体、リムーバブル媒体および固定の媒体の両方を含む、コンピュータ４０２によってアクセス可能である任意の使用可能な媒体とすることができる。
【００８２】
システムメモリ４０６には、ランダムアクセスメモリ（ＲＡＭ）４１０などの揮発性メモリおよび／または読取専用メモリ（ＲＯＭ）４１２などの不揮発性メモリの形のコンピュータ可読媒体が含まれる。起動中などにコンピュータ４０２内の要素の間での情報の転送を助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）４１４が、ＲＯＭ４１２に保管される。ＲＡＭ４１０には、通常は、処理装置４０４によって即座にアクセス可能および／または処理装置４０４によって現在操作されているデータおよび／またはプログラムモジュールが含まれる。
【００８３】
コンピュータ４０２に、他のリムーバブル／固定の、揮発性／不揮発性コンピュータストレージを含めることもできる。たとえば、図４に、固定の不揮発性磁気媒体（図示せず）から読み取り、これに書き込むハードディスクドライブ４１６、リムーバブル不揮発性磁気ディスク４２０（たとえば「フロッピ(登録商標)ディスク」）から読み取り、これに書き込む磁気ディスクドライブ４１８、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体などのリムーバブル不揮発性光ディスク４２４から読み取り、かつ／またはこれに書き込む光ディスクドライブ４２２が含まれる。ハードディスクドライブ４１６、磁気ディスクドライブ４１８、および光ディスクドライブ４２２は、それぞれ、１つまたは複数のデータメディアインターフェース４２３によってシステムバス４０８に接続される。その代わりに、ハードディスクドライブ４１６、磁気ディスクドライブ４１８、および光ディスクドライブ４２２を、１つまたは複数のインターフェース（図示せず）によってシステムバス４０８に接続することができる。
【００８４】
ディスクドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ４０２のコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性ストレージを提供する。この例では、ハードディスク４１６、リムーバブル磁気ディスク４２０、およびリムーバブル光ディスク４２４が示されているが、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、または他の光ストレージ、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、電気的消去可能プログラマブル読取専用メモリ（ＥＥＰＲＯＭ）、および類似物などのコンピュータによってアクセス可能なデータを保管できる他のタイプのコンピュータ可読媒体を使用して、例示的なコンピューティングシステムおよび環境を実施することもできることを理解されたい。
【００８５】
たとえば、オペレーティングシステム４２６、１つまたは複数のアプリケーションプログラム４２８、他のプログラムモジュール４３０、およびプログラムデータ４３２を含む、任意の個数のプログラムモジュールを、ハードディスク４１６、磁気ディスク４２０、光ディスク４２４、ＲＯＭ４１２、および／またはＲＡＭ４１０に保管することができる。オペレーティングシステム４２６、１つまたは複数のアプリケーションプログラム４２８、他のプログラムモジュール４３０、およびプログラムデータ４３２（またはその組合せ）に、プログラミングフレームワーク１３２の要素を含めることができる。
【００８６】
ユーザは、キーボード４３４およびポインティング装置４３６（たとえば「マウス」）などの入力装置を介してコンピュータ４０２にコマンドおよび情報を入力することができる。他の入力装置４３８（具体的には図示せず）に、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、シリアルポート、スキャナ、および／または類似物を含めることができる。上記および他の入力装置は、システムバス４０８に接続された入出力インターフェース４４０を介して処理装置４０４に接続されるが、パラレルポート、ゲームポート、またはＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などの他のインターフェースおよびバス構造によって接続することができる。
【００８７】
モニタ４４２または他のタイプの表示装置を、ビデオアダプタ４４４などのインターフェースを介してシステムバス４０８に接続することもできる。モニタ４４２のほかに、他の出力周辺装置に、スピーカ（図示せず）およびプリンタ４４６など、入出力インターフェース４４０を介してコンピュータ４０２に接続できるコンポーネントを含めることができる。
【００８８】
コンピュータ４０２は、リモートコンピューティング装置４４８などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。たとえば、リモートコンピューティング装置４４８を、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、または他の一般的なネットワークノード、などとすることができる。リモートコンピューティング装置４４８は、コンピュータ４０２に関して本明細書で説明した要素および特徴の多くまたはすべてを含めることができるポータブルコンピュータとして図示されている。
【００８９】
コンピュータ４０２とリモートコンピュータ４４８の間の論理接続は、ローカルエリアネットワーク（ＬＡＮ）４５０および一般的な広域ネットワーク（ＷＡＮ）４５２として図示されている。そのようなネットワーキング環境は、オフィス、会社規模のコンピュータネットワーク、イントラネット、およびインターネットでありふれたものである。
【００９０】
ＬＡＮネットワーキング環境において実施されるときに、コンピュータ４０２は、ネットワークインターフェースまたはネットワークアダプタ４５４を介してローカルネットワーク４５０に接続される。ＷＡＮネットワーキング環境において実施されるときに、コンピュータ４０２に、通常は、広域ネットワーク４５２を介する通信を確立する、モデム４５６または他の手段が含まれる。モデム４５６は、コンピュータ４０２の内蔵または外付けとすることができるが、入出力インターフェース４４０または他の適当な機構を介してシステムバス４０８に接続することができる。図示のネットワーク接続が、例示的であり、コンピュータ４０２と４４８の間の通信リンクを確立する他の手段を使用できることを理解されたい。
【００９１】
コンピューティング環境４００と共に図示されたものなどのネットワーク化された環境において、コンピュータ４０２に関して示したプログラムモジュールまたはその一部を、リモートメモリ記憶装置に保管することができる。たとえば、リモートアプリケーションプログラム４５８が、リモートコンピュータ４４８の記憶装置に常駐している。例示のために、アプリケーションプログラムおよびオペレーティングシステムなどの他の実行可能なプログラムコンポーネントが、本明細書では別個のブロックに図示されているが、そのようなプログラムおよびコンポーネントが、さまざまなときにコンピューティング装置４０２の異なるストレージコンポーネントに常駐することができ、コンピュータのデータプロセッサによって実行されることを理解されたい。
【００９２】
フレームワーク１３２、具体的にはＡＰＩ１４２またはＡＰＩ１４２に対して行われる呼出しの実装を、ある形のコンピュータ可読媒体を介して保管または伝送することができる。コンピュータ可読媒体は、コンピュータによってアクセスできる任意の使用可能な媒体とすることができる。制限ではなく例として、コンピュータ可読媒体に、「コンピュータストレージ媒体」および「通信媒体」を含めることができる。「コンピュータストレージ媒体」には、揮発性および不揮発性、取外し可能および取外し不能の、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報のストレージに関する方法またはテクノロジで実施される媒体が含まれる。コンピュータストレージ媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリテクノロジ、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、あるいは、所望の情報を保管するのに使用でき、コンピュータによってアクセスできる他のすべての媒体が含まれるが、これに制限はされない。
【００９３】
「通信媒体」によって、通常は、搬送波または他のトランスポート機構などの変調されたデータ信号内でコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータが実施される。通信媒体には、すべての情報配信媒体も含まれる。用語「変調されたデータ信号」は、信号内で情報をエンコードする形で、その特性の１つまたは複数を設定または変更された信号を意味する。制限ではなく例として、通信媒体に、有線ネットワークまたは直接配線接続などの有線媒体と、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体が含まれる。上記のいずれかの組合せも、コンピュータ可読媒体の範囲に含まれる。
【００９４】
その代わりに、フレームワークの諸部分を、ハードウェアで、あるいはハードウェア、ソフトウェア、および／またはファームウェアの組合せで実施することができる。たとえば、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）またはプログラマブルロジックデバイス（ＰＬＤ）を設計またはプログラムして、本フレームワークの１つまたは複数の部分を実施することができる。
【００９５】
プログラミングインターフェース（または単にインターフェース）は、コードの１つまたは複数のセグメントが、コードの１つまたは複数の他のセグメントと通信するかそのセグメントによって提供される機能性にアクセスできるようにする機構、処理、プロトコルとみなすことができる。その代わりに、プログラミングインターフェースを、他のコンポーネントの１つまたは複数の機構、メソッド、関数呼出し、モジュールなどとの通信接続が可能なシステムのコンポーネントの１つまたは複数の機構、メソッド、関数呼出し、モジュール、オブジェクトなどとみなすことができる。前の文の用語「コードのセグメント」は、コードの１つまたは複数の命令または行を含むことが意図されており、これには、使用される用語、コードセグメントが別々にコンパイルされるかどうか、コードセグメントがソースコード、中間コード、またはオブジェクトコードのどれとして提供されるか、コードセグメントがランタイムシステム内またはプロセス内で使用されるかどうか、コードセグメントが同一のマシンまたは異なるマシンに配置されるか、あるいはマシンにまたがって分散されるかどうか、コードのセグメントによって表される機能性が、完全にソフトウェアで、完全にハードウェアで、あるいはハードウェアとソフトウェアの組合せのどれで実施されるかに無関係に、たとえば、コードモジュール、オブジェクト、サブルーチン、関数などが含まれる。
【００９６】
概念上、プログラミングインターフェースは、一般的に、図５または図６に示されているように見ることができる。図５に、第１コードセグメントと第２コードセグメントがそれを介して通信する導管としてのインターフェースＩｎｔｅｒｆａｃｅ１を示す。図６に、システムの第１コードセグメントおよび第２コードセグメントが媒体Ｍを介して通信できるようにする、インターフェースオブジェクトＩ１およびＩ２（第１および第２コードセグメントの一部とすることも、そうしないこともできる）を含むものとしてインターフェースを示す。図６に鑑みて、インターフェースオブジェクトＩ１およびＩ２を、同一のシステムの別々のインターフェースと考えることができ、オブジェクトＩ１およびＩ２と媒体Ｍにインターフェースが含まれると考えることもできる。図５および７に、両方向のフローおよびフローの両側のインターフェースを示したが、ある実施形態では、一方向の情報フローだけを有する（または、下で示すように情報フローなし）ことができ、あるいは、片側だけにインターフェースオブジェクトを有することができる。制限ではなく例として、アプリケーションプログラミングまたはプログラムインターフェース（ＡＰＩ）、エントリポイント、メソッド、関数、サブルーチン、リモートプロシージャコール、およびコンポーネントオブジェクトモデル（ＣＯＭ）インターフェースなどの用語が、プログラミングインターフェースの定義に含まれる。
【００９７】
そのようなプログラミングインターフェースの態様に、第１コードセグメントが情報（ここで、「情報」は、その最も広い意味で使用され、「情報」には、データ、コマンド、要求などが含まれる）を第２コードセグメントに送る方法と、第２コードセグメントがその情報を受け取る方法と、情報の構造、シーケンス、構文、編成、スキーマ、タイミング、および内容とを含めることができる。これに関して、基礎になるトランスポート媒体自体は、媒体が有線、無線またはその両方の組合せのどれであれ、インターフェースによって定義される形で情報がトランスポートされる限り、インターフェースの動作に重要でない可能性がある。ある状況では、情報転送が別の機構を介する（たとえば、情報が、コードセグメントの間で流れる情報と別に、バッファ、ファイルなどに置かれる）ので、従来の意味で一方向または両方向に渡されないか、あるコードセグメントが第２コードセグメントによって実行される機能性に単純にアクセスするので情報が存在しない場合がある。  これらの態様のいずれかまたはすべてが、所与の状況で、たとえば、コードセグメントが疎結合された構成または密結合された構成のどちらの一部であるかに応じて、重要になる可能性があり、したがって、このリストは、例示的であり、非限定的とみなされなければならない。
【００９８】
プログラミングインターフェースのこの概念は、当業者に既知であり、本発明の前述の詳細な説明から明白である。しかし、プログラミングインターフェースを実施する他の形があり、明示的に除外されない限り、これらも、本明細書に記載の請求項に含まれることが意図されている。そのような他の形は、図５および７の極度に単純化された図よりも洗練されて見える、または複雑に見える可能性があるが、それでも、そのような他の形によって、同一の全体的な結果を達成する類似する機能が実行される。これから、プログラミングインターフェースの例示的な代替実施形態を短く説明する。
【００９９】
Ａ．因数分解
あるコードセグメントから別のコードセグメントへの通信は、通信を複数の個別の通信に分解することによって、間接的に達成することができる。これを、図７および９に概略的に示す。図からわかるように、いくつかのインターフェースを、機能性の分割可能なセットとして記述することができる。したがって、数学的に２４または２×２×３×２を提供するように、図５および７のインターフェースの機能性を因数分解して、同一の結果を達成することができる。したがって、図７からわかるように、インターフェースＩｎｔｅｒｆａｃｅ１によって提供される機能を再分割して、このインターフェースの通信を複数のインターフェース、Ｉｎｔｅｒｆａｃｅ１Ａ、Ｉｎｔｅｒｆａｃｅ１Ｂ、Ｉｎｔｅｒｆａｃｅ１Ｃなどに変換し、同一の結果を達成することができる。図８からわかるように、インターフェースＩ１によって提供される機能性を、複数のインターフェースＩ１ａ、Ｉ１ｂ、Ｉ１ｃなどに再分割し、それと同時に同一の結果を達成することができる。同様に、第１コードセグメントから情報を受け取る第２コードセグメントのインターフェースＩ２を、複数のインターフェースＩ２ａ、Ｉ２ｂ、Ｉ２ｃなどに因数分解することができる。因数分解するときに、第１コードセグメントに含まれるインターフェースの数が、第２コードセグメントに含まれるインターフェースの数と一致する必要はない。図７および９のどちらの場合でも、インターフェースＩｎｔｅｒｆａｃｅ１およびＩ１の機能的趣旨は、それぞれ図５および７と同一のままである。インターフェースの因数分解は、関連するプロパティ、累算的プロパティ、および他の数学的プロパティに従う場合もあり、因数分解の理解が困難な場合がある。たとえば、動作の順序付けは、重要でない場合があり、その結果、あるインターフェースによって実行される機能を、別のコードまたはインターフェースによって、インターフェースに達するよりかなり前に実行することができ、あるいは、システムの別々の構成要素によって実行することができる。さらに、プログラミング技術の当業者は、同一の結果を達成する異なる関数呼出しを行うさまざまな形があることを理解することができる。
【０１００】
Ｂ．再定義
いくつかの場合に、初期の結果を達成しながら、プログラミングインターフェースのある態様（たとえばパラメータ）を無視し、追加し、または再定義することが可能である場合がある。これを、図９および１１に示す。たとえば、図５のインターフェースＩｎｔｅｒｆａｃｅ１に、関数呼出しＳｑｕａｒｅ（ｉｎｐｕｔ、ｐｒｅｃｉｓｉｏｎ、ｏｕｔｐｕｔ）すなわち、３つのパラメータｉｎｐｕｔ、ｐｒｅｃｉｓｉｏｎ、およびｏｕｔｐｕｔを含む呼出しであって、第１コードセグメントから第２コードセグメントに発行される関数呼出しが含まれると仮定する。真ん中のパラメータｐｒｅｃｉｓｉｏｎが、図９に示されているように、所与のシナリオで関係がない場合に、無視することができ、意味のない（この状況）パラメータと置換することができる。関係のない追加のパラメータを追加することもできる。どちらの場合でも、ｉｎｐｕｔが第２コードセグメントによって二乗された後にｏｕｔｐｕｔが返される限り、ｓｑｕａｒｅ（二乗）の機能性を達成することができる。ｐｒｅｃｉｓｉｏｎ（精度）は、コンピューティングシステムの下流または他の部分に意味のあるパラメータとすることもできるが、二乗計算の狭い目的について精度が必要でないことが理解されたならば、置換するか無視することができる。たとえば、結果に悪影響を及ぼさずに、有効な精度値を渡すのではなく、誕生日などの意味のある値を渡すことができる。同様に、図１０に示されているように、インターフェースＩ１が、インターフェースへのパラメータを無視するか追加するために再定義されたインターフェースＩ１’に置換される。インターフェースＩ２は、同様に、不要なパラメータを無視するか、ほかで処理できるパラメータについて再定義されたインターフェースＩ２’として再定義することができる。ここでのポイントは、いくつかの場合に、プログラミングインターフェースに、パラメータなど、ある目的に不要な態様が含まれる場合があり、したがって、それらを無視するか再定義することができ、あるいは、他の目的のために他の形で処理できるということである。
【０１０１】
Ｃ．インラインコーディング
２つの別々のコードモジュールの機能性の一部またはすべてをマージし、これらの間の「インターフェース」の形を変えることが実行可能である場合もある。たとえば、図５および７の機能性を、それぞれ図１１および１３の機能性に変換することができる。図１１では、図５の前の第１コードセグメントおよび第２コードセグメントが、その両方を含む１つのモジュールにマージされている。この場合に、コードセグメントは、まだ互いに通信することができるが、インターフェースは、単一モジュールにより適する形に適合させることができる。したがって、たとえば、前のＣａｌｌステートメントおよびＲｅｔｕｒｎステートメントは、もはや不要とすることができるが、インターフェースＩｎｔｅｒｆａｃｅ１に準ずる類似する処理または応答を、まだ有効とすることができる。同様に、図１２では、図６のインターフェースＩ２の一部（またはすべて）を、インターフェースＩ１にインラインで記述して、インターフェースＩ１”を形成することができる。図からわかるように、インターフェースＩ２は、Ｉ２ａおよびＩ２ｂに分割され、インターフェース部分Ｉ２ａは、インターフェースＩ１とインラインにコーディングされて、インターフェースＩ１”を形成する。具体的な例として、図６のインターフェースＩ１が、関数呼出しｓｑｕａｒｅ（ｉｎｐｕｔ、ｏｕｔｐｕｔ）を実行し、これがインターフェースＩ２によって受け取られ、インターフェースＩ２は、第２コードセグメントによるｉｎｐｕｔを用いて渡された値の処理（二乗）の後に、二乗された結果にｏｕｔｐｕｔを用いて返すことを検討されたい。その場合に、第２コードセグメントによって実行される処理（ｉｎｐｕｔの二乗）を、インターフェースへの呼出しなしで、第１コードセグメントによって実行することができる。
【０１０２】
Ｄ．分離（ｄｉｖｏｒｃｅ）
あるコードセグメントから別のコードセグメントへの通信は、通信を複数の個別の通信に分解することによって、間接的に達成することができる。これを、図１３および１５に示す。図１３からわかるように、１または複数のミドルウェア（機能性および／またはインターフェース機能を元のインターフェースから分離するので、分離インターフェース）を設けて、第１インターフェースＩｎｔｅｒｆａｃｅ１の通信を、異なるインターフェース、この例ではインターフェースＩｎｔｅｒｆａｃｅ２Ａ、Ｉｎｔｅｒｆａｃｅ２Ｂ、およびＩｎｔｅｒｆａｃｅ２Ｃに従うように変換する。たとえば、これは、たとえばＩｎｔｅｒｆａｃｅ１プロトコルに従ってオペレーティングシステムと通信するように設計されたアプリケーションのインストールベースがあるが、そのオペレーティングシステムが、異なるインターフェース、この例ではインターフェースＩｎｔｅｒｆａｃｅ２Ａ、Ｉｎｔｅｒｆａｃｅ２Ｂ、およびＩｎｔｅｒｆａｃｅ２Ｃを使用するように変更される場合に行うことができる。ポイントは、第２コードセグメントによって使用された元のインターフェースが、もはや第１コードセグメントによって使用されるインターフェースと互換でなくなるように変更され、したがって、古いインターフェースと新しいインターフェースとに互換性を持たせるため、仲介物が使用されることである。同様に、図１４からわかるように、インターフェースＩ１からの通信を受け取る分離インターフェースＤＩ１を有し、インターフェース機能性を、たとえば、ＤＩ２と共に働くが同一の機能的結果を提供するように再設計されているインターフェースＩ２ａおよびＩ２ｂに送る、分離インターフェースＤＩ２を有する第３コードセグメントを導入することができる。同様に、ＤＩ１およびＤＩ２は、同一のまたは類似する機能的結果を提供しながら、図６のインターフェースＩ１およびＩ２の機能性を変換するように一緒に働くことができる。
【０１０３】
Ｅ．再記述
もう１つの可能な変形形態が、コードを動的に再記述して、インターフェース機能性を、同一の総合的な結果を達成する別のものに置換することである。たとえば、中間言語（たとえば、Ｍｉｃｒｏｓｏｆｔ（登録商標）  ＩＬ、Ｊａｖａ（登録商標）  ＢｙｔｅＣｏｄｅなど）で提示されるコードセグメントを、実行環境（．ＮＥＴ  ｆｒａｍｅｗｏｒｋ（登録商標）、Ｊａｖａ（登録商標）ランタイム環境、または類似するランタイムタイプ環境によって提供されるものなど）内のジャストインタイム（ＪＩＴ）コンパイラまたはインタープリタに供給するシステムがある。ＪＩＴコンパイラは、第１コードセグメントから第２コードセグメントへの通信を動的に変換する、すなわち、それらを、第２コードセグメント（元のまたは異なる第２コードセグメント）が必要とする可能性がある異なるインターフェースに合わせることができる。これを、図１５および１７に示す。図１５からわかるように、この手法は、上で説明した分離シナリオに似ている。これは、たとえば、アプリケーションのインストールベースが、Ｉｎｔｅｒｆａｃｅ１プロトコルに従ってオペレーティングシステムと通信するように設計されているが、オペレーティングシステムが、異なるインターフェースを使用するように変更される場合に行うことができる。  ＪＩＴコンパイラを使用して、通信を、オンザフライでインストールベースアプリケーションからオペレーティングシステムの新しいインターフェースに合わせることができる。  図１６からわかるように、インターフェースを動的に再記述するこの手法は、動的因数分解、または他の形のインターフェースの変更にも適用することができる。
【０１０４】
代替実施形態を介してインターフェースとして同一のまたは類似する結果を達成する、上で説明したシナリオを、さまざまな形で、順次および／または並列で、または他の介在コードと共に、組みわせることもできることにも留意されたい。したがって、上で提示した代替実施形態は、相互に排他的ではなく、混合され、マッチングされ、かつ組み合わされて、図５および７で提示された一般的なシナリオと同一のまたは同等のシナリオを作ることができる。また、ほとんどのプログラミング構造と同様に、本明細書に記載されていないが、それでも本発明の趣旨および範囲によって表されるインターフェースの同一のまたは類似する機能性を達成する他の類似する形があることに留意されたい、すなわち、インターフェースの価値の基礎になるのは、少なくとも部分的に、インターフェースによって表される機能性と、インターフェースによって使用可能にされる有益な結果である。
【０１０５】
（結論）
本発明を、構造的特徴および／または方法論的動作に固有の言葉で説明したが、請求項で定義される本発明は、説明した特定の特徴または動作に必ずしも制限されないことを理解されたい。そうではなく、特定の特徴および動作は、請求される発明を実施する例示的な形として開示されたものである。
【図面の簡単な説明】
【０１０６】
【図１】クライアントが、従来のプロトコルを使用する、インターネットを介してウェブサービスにアクセスするネットワークアーキテクチャを示す図である。
【図２】アプリケーションプログラムインターフェース（ＡＰＩ）を含むネットワークプラットフォームのソフトウェアアーキテクチャを示すブロック図である。
【図３】ＡＰＩによってサポートされるプレゼンテーションサブシステムならびにさまざまなＡＰＩ関数の機能クラスを示すブロック図である。
【図４】ソフトウェアアーキテクチャのすべてまたは一部を実行することができる例示的コンピュータを示すブロック図である。
【図５】プログラミングインターフェースの例の実施形態を示す図である。
【図６】プログラミングインターフェースの例の実施形態を示す図である。
【図７】プログラミングインターフェースの例の実施形態を示す図である。
【図８】プログラミングインターフェースの例の実施形態を示す図である。
【図９】プログラミングインターフェースの例の実施形態を示す図である。
【図１０】プログラミングインターフェースの例の実施形態を示す図である。
【図１１】プログラミングインターフェースの例の実施形態を示す図である。
【図１２】プログラミングインターフェースの例の実施形態を示す図である。
【図１３】プログラミングインターフェースの例の実施形態を示す図である。
【図１４】プログラミングインターフェースの例の実施形態を示す図である。
【図１５】プログラミングインターフェースの例の実施形態を示す図である。
【図１６】プログラミングインターフェースの例の実施形態を示す図である。
【符号の説明】
【０１０７】
１００  ネットワーク環境
１０４  ネットワーク
１０６，１１２，１１４，１２２〜１２９  通信リンク
１３２  プログラミングフレームワーク
１４２  ＡＰＩレイヤ
３７２  名前空間
４００  コンピューティング環境
４１６  ハードディスクドライブ
４１８  磁気ディスクドライブ
４２２  光ディスクドライブ
４２０  リムーバブル不揮発性磁気ディスク
４２４  リムーバブル不揮発性光ディスク
４３８  入力装置
【図１】
2005129022.tif 000003
【図２】
2005129022.tif 000004
【図３】
2005129022.tif 000005
【図４】
2005129022.tif 000006
【図５】
2005129022.tif 000007
【図６】
2005129022.tif 000008
【図７】
2005129022.tif 000009
【図８】
2005129022.tif 000010
【図９】
2005129022.tif 000011
【図１０】
2005129022.tif 000012
【図１１】
2005129022.tif 000013
【図１２】
2005129022.tif 000014
【図１３】
2005129022.tif 000015
【図１４】
2005129022.tif 000016
【図１５】
2005129022.tif 000017
【図１６】
2005129022.tif 000018
【外国語明細書】
2005129022000001.pdf