JP2009501385A - ノード間通信パイプライン - Google Patents

ノード間通信パイプライン Download PDF

Info

Publication number
JP2009501385A
JP2009501385A JP2008521388A JP2008521388A JP2009501385A JP 2009501385 A JP2009501385 A JP 2009501385A JP 2008521388 A JP2008521388 A JP 2008521388A JP 2008521388 A JP2008521388 A JP 2008521388A JP 2009501385 A JP2009501385 A JP 2009501385A
Authority
JP
Japan
Prior art keywords
node
protocol
pipeline
api
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008521388A
Other languages
English (en)
Inventor
ケー.ペピン ブライアン
エス.ミラー ジェームズ
リヒター ジェフリー
イー.クイン トーマス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009501385A publication Critical patent/JP2009501385A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Abstract

ノード間通信パイプラインは、動的に入力されるモジュール特有のパラメータに従ってプロトコルにわたって構成され組み立てられるコードモジュールを含むことができる。モジュールが登録されているサービスへパラメータを入力することができ、1つまたは複数の適切なパイプラインを動的に組み立てることができる。

Description

本発明は、ノード間通信パイプラインに関する。
アプリケーション、プログラム、機能、およびプログラム可能で実行可能なコードのその他の集合は、モジュール化することができる。すなわち、上述の集合に関連付けられているコードは、コードモジュールへと分けることができ、これらのコードモジュールは、別々のメンバーが別々の時点で独立して作成したり、作成し直したり(すなわち、新たなバージョンを生成したり)することができる。そのようなコードモジュールの例としては、「アドイン」が含まれ、このアドインは、ランタイムにエンドユーザによってアプリケーションに追加することができる。
ランタイムに、そのようなコードモジュール同士は、相互関係を有するようになることができ、あるいはそのような相互関係は、その他の形で明らかになることもできる。しかしランタイムは、コードモジュール同士の間にバージョニング(versioning)および/または互換性の問題が存在するということも明らかにするかもしれない。「バージョニング」の問題とは、上述の生成され追加されるアプリケーション、プログラム、機能、およびプログラム可能で実行可能なコードのその他の集合の1つまたは複数の部分に対して行われる変更を指すことができる。そして、互換性の問題は、それらのいかなる部分における微妙な変更にさえ起因して生じるおそれがある。
動的なノード間通信パイプラインについて、本明細書において説明する。
より詳細には、本明細書に記載されている例示的な実施形態は、動的に入力されるモジュール特有のパラメータに従って構成して組み立てることができるコードモジュールを含むノード間通信パイプラインに関する。モジュールが登録されているサービスへパラメータを入力することができ、1つまたは複数の適切なパイプラインを動的に組み立てることができる。
次いで、動的なノード間通信パイプラインについて、添付の図に従って説明する。
動的なピアツーピア通信パイプラインについて、本明細書において説明する。
より詳細には、動的なノード間通信パイプラインは、本明細書において説明される際には、指定された順序で変更可能に組み立てることができる固定ステージ(fixed stage)のノード間パイプラインに関連することができる。さらに、動的なノード間通信パイプラインは、ネットワーク環境内の1つまたは複数のデバイスまたはノード内に実装することができ、ノードの構成は、ピアツーピアの構成やホスト対クライアントの構成を含むことができる。
「パイプライン」は、本明細書において説明される際には、少なくとも1つまたは複数のノード・アプリケーション・プログラミング・インターフェース(以降では「API」と呼ぶ)と、1つまたは複数のアダプタと、少なくとも1つのプロトコルとを含むことができる。このようなパイプラインは、上述のAPIと、アダプタと、プロトコルとを様々な数量および組合せで含むことができ、また、必ずしも上述のパイプライン要素のすべてを含む必要はない。
「API」は、本明細書において説明される際には、プロシージャーの実行を指示するために、アプリケーション、プログラム、機能、およびプログラム可能で実行可能なコードのその他の集合によって使用され、したがってオペレーティングシステムやランタイム実行環境などの対応する実行環境によって使用されるルーチンのセットを指すことができる。「アダプタ」は、本明細書において説明される際には、1つのAPIを別のAPIへ通信可能に適合させることができるモジュールまたはオブジェクトを指すことができ、シリアルに、またはプロトコルを介してリンクすることができる。「プロトコル」は、本明細書において説明される際には、オブジェクトが、それを介して通信できる規格や規約を指すことができる(APIが、それらのオブジェクトの唯一の例ではない)。
したがって「パイプライン」は、本明細書において説明される際には、ホストAPIアダプタからプロトコルを介してアドインAPIアダプタへ流れて、それによって第1のノードアプリケーション(例えば、ホストアプリケーション)を第2のノードアプリケーション(例えば、アドインアプリケーション)に接続するコードモジュールやオブジェクトの連鎖をさらに指すことができる。
図1は、動的なノード間通信パイプラインの例示的なテクノロジーを実装することができる例示的なネットワーク環境100を示しているが、動的なノード間通信パイプラインは、ネットワーク環境に限定されない。図1においては、クライアントデバイス105、サーバデバイス110、および「その他の」デバイス115が、ネットワーク125を介してお互いへ通信可能に結合することができ、またさらに、クライアントデバイス105、サーバデバイス110、および「その他の」デバイス115のうちの少なくとも1つは、本明細書に記載されているように、動的なピアツーピア通信パイプライン120を実装することができる。
クライアントデバイス105は、デスクトップPC(personal computer)、ワークステーション、メインフレームコンピュータ、インターネット機器、セットトップボックス、およびゲーム機など、様々な従来のコンピューティングデバイスのうちの少なくとも1つに相当することができる。クライアントデバイス105は、モバイル(すなわち携帯)電話、PDA(personal digital assistant)、ラップトップコンピュータなどを含む、有線および/または無線のリンクによってネットワーク125に関連付けることができる任意のデバイスのうちの少なくとも1つにさらに相当することができる。さらにまた、クライアントデバイス105は、様々な数量および/または組合せの上述のクライアントデバイスに相当することができる。「その他の」デバイス115は、クライアントデバイス105の上述の例のうちのいずれかによって具体化することもできる。
サーバデバイス110は、動的なノード間通信パイプライン120の少なくとも1つの実装に従って、様々なデータおよび/または機能のうちの任意のものをクライアントデバイス105や「その他の」デバイス115に提供することができる任意のデバイスに相当することができる。それらのデータは、公に利用可能とすることもでき、または別の方法としては、制限すること、例えば特定のユーザのみに、あるいは適切な会費やライセンス料金が支払われている場合のみに制限することもできる。サーバデバイス110は、ネットワークサーバ、アプリケーションサーバ、ブレードサーバ、またはそれらの任意の組合せのうちの少なくとも1つとすることができる。通常、サーバデバイス110は、コンテンツの提供元になることができる任意のデバイスに相当することができ、クライアントデバイス105は、ネットワーク125を介して、またはオフライン方式で、そのようなコンテンツを受信することができる任意のデバイスに相当することができる。しかし、本明細書に記載される例示的な実施形態によれば、クライアントデバイス105およびサーバデバイス110は、ネットワーク環境100内において送信側ノードまたは受信側ノードに交換可能になることができる。「その他の」デバイス115は、サーバデバイス110の上述の例のうちのいずれかによって具体化することもできる。
「その他の」デバイス115は、本明細書に記載される例のうちの1つまたは複数に従って動的なノード間通信パイプライン120を実装することができる任意のさらなるデバイスに相当することができる。すなわち、「その他の」デバイス115は、少なくともマネージド実行環境内におけるアプリケーション、プログラム、機能、あるいはプログラム可能で実行可能なコードのその他の集合に関するモジュール初期化を実装することができる任意のソフトウェア対応型のコンピューティングデバイスや処理デバイスに相当することができる。したがって、「その他の」デバイス115は、オペレーティングシステム、インタープリタ、コンバータ、コンパイラ、またはそれらに実装されたランタイム実行環境のうちの少なくとも1つを有するコンピューティングデバイスや処理デバイスとすることができる。これらの例は、いかなる形であれ限定することを意図するものではなく、したがって、そのように解釈されるべきではない。
ネットワーク125は、有線ネットワークおよび/または無線ネットワークを含むことができる様々な従来のネットワークトポロジーおよびタイプのうちのいずれかに相当することができる。ネットワーク125は、公開されているプロトコルおよび/または独自のプロトコルを含む様々な従来のネットワークプロトコルのうちのいずれかをさらに利用することができる。ネットワーク125は、例えばインターネット、ならびに802.11システムなどの1つまたは複数のローカルエリアネットワーク(個々には「LAN」とも呼ばれる)の少なくとも一部、またはより大きな規模ではワイドエリアネットワーク(すなわち「WAN」)、あるいはBluetoothなどのパーソナルエリアネットワーク(すなわちPAN)を含むことができる。
デバイス105、110、および115のうちの少なくとも1つにおけるコンピュータアーキテクチャは通常、ハードウェアおよびソフトウェアの点で確定したコンピューティングプラットフォームになっている。コンピューティングデバイス用のソフトウェアは、機能に基づいてグループに分類されており、それらのグループとしては、ハードウェア抽象層(hardware abstraction layer)(「HAL」と別称されている)、オペレーティングシステム(「OS」と別称されている)、およびアプリケーションを含むことができる。
ランタイム実行環境は、OSとアプリケーションとの間における隔離されたスペースを指すことができ、このスペース内において、アプリケーションは、処理デバイス105、110、または115のうちの少なくとも1つの上で特定のタスクを実行することができる。より詳細には、ランタイム実行環境は、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、およびモバイル処理デバイスなど、ますます広範囲になっている処理デバイス105、110、および105上でアプリケーションを実行する際の信頼性を、そのような処理デバイス上で実行されるアプリケーションのための抽象層およびサービス層を提供することによって、ならびにメモリの管理およびその構成を含む機能をそのアプリケーションにさらに提供することによって、高めることができる。
ランタイム実行環境は、アプリケーション・プログラミング・プラットフォームおよびアプリケーション実行プラットフォームのうちの少なくとも1つとして機能することができる。アプリケーション・プログラミング・プラットフォームとしては、ランタイム実行環境は、複数のコンピューティング言語のうちの1つで書かれている可能性のある対象のアプリケーションを、中間言語(以降では「IL」と呼ぶ)へとコンパイルすることができる。ILは通常、プラットフォームから独立しており、中央処理装置(以降では「CPU」と呼ぶ)が、ILを実行する。実際に、ILは、多くのCPUマシン語よりも高水準の言語である。アプリケーション実行プラットフォームとしては、ランタイム実行環境は、コンパイルされたILをネイティブな機械命令へと解釈することができる。ランタイム実行環境は、インタープリタまたはコンパイラ(例えば「ジャストインタイム」(別称「JIT」)のコンパイラ)のいずれかを利用して、そのような命令を実行することができる。いずれにしろ、ネイティブな機械命令は、次いでCPUによって直接実行されることができる。ILは、CPUから独立しているため、CPUプラットフォーム上で実行されているOSが適切なランタイム実行環境をホストしている限り、いかなるCPUプラットフォーム上でも実行することができる。動的なノード間通信パイプライン120の実装が関連することができるランタイム環境の例としては、Visual Basicランタイム環境、例えばJava(登録商標)ルーチンを実行するために使用されるJava(登録商標)Virtual Machineランタイム環境、または呼び出しルーチンを実行する前に例えばMicrosoft.NET(商標)アプリケーションをマシン語へとコンパイルするためのCLR(Common Language Runtime)が含まれる。しかし、ランタイム環境をこうして列挙したのは、例を提供しているにすぎない。例示的な実施形態は、これらのマネージドの実行環境だけに限らない。より詳細には、例示的な実施形態がマネージドの実行環境だけに限らないのは、1つまたは複数の例をテスト環境および/またはアンマネージドの実行環境内に実装することができるためである。
ILへとコンパイルされたアプリケーションを「マネージドのコード」と呼ぶことができ、これが、ランタイム実行環境を「マネージドの実行環境」と別称することができるゆえんである。ランタイム実行環境を利用しないで実行されるコードをネイティブなコードアプリケーションと呼ぶことができるという点に留意されたい。
少なくとも1つのマネージドの実行環境内においては、プロセスのための隔離の単位すなわち「隔離構造(isolation construct)」をアプリケーションドメインと呼ぶことができる。このような用語は、一例として提供されているにすぎない。すなわち、本明細書に記載されている例示的な実施形態は、アプリケーションドメインに、あるいは上述のようなマネージドの実行環境にさえ限定されるものではなく、様々な実行環境内における様々なその他の隔離構造の実施形態に適用することができる。
隔離構造(例えば、アプリケーションドメイン)は、内部で実行されるコードを指定のソースからロードできるようにすることができ、隔離構造は、その他のそのような隔離構造から独立して途中停止することができ、また隔離構造内での処理は、内部で生じる障害がプロセス内のその他の隔離構造に影響を及ぼさないように隔離することができる。すなわち、隔離構造内での処理の影響は、プロセス全体が永続的なものにされるまで、同時に実行されている構造からは見えない。整合性のために、以降の論考は、「アプリケーション」および「プロセス」に言及する可能性があるが、これらは双方とも、少なくともソフトウェアプログラムおよびアプリケーションのうちのいずれか1つを単独でまたは組み合わせて含むことができる。
図2は、動的なノード間通信パイプライン120の例(図1を参照されたい)、とりわけプロトコル間での動的なノード間通信パイプラインを実装することができるランタイム実行環境200の一例を示している。
少なくとも1つの例示的な実施形態によれば、ランタイム実行環境200は、コンピューティング・デバイス・プラットフォームのためのマネージドのコードの実行を容易にすることができる。マネージドのコードは、アプリケーション開発テクノロジーの中核をなすセットの一部であるとみなすことができ、またさらに、対応するサービスをコンピューティング・デバイス・プラットフォームに提供するためにランタイム実行環境200での実行用にコンパイルされたアプリケーション、プログラム、機能、あるいはプログラム可能で実行可能なコードのその他の集合とみなすことができる。さらにランタイム実行環境200は、マネージドのコードを解釈的なレベルで命令へと翻訳することができ、それらの命令は、代理する(proxy)ことができ、そしてプロセッサによって実行することができる。ランタイム実行環境200のためのフレームワークはまた、クラスライブラリを提供し、このクラスライブラリは、マネージドのアプリケーションに関するソフトウェアの基礎的要素とみなすことができる。
ランタイム実行環境200は、少なくとも部分的な機能を提供することができ、この部分的な機能は、別なやり方でカーネルから求められることができ、カーネルは、デバイス105、110、および115(図1を参照されたい)のうちの特定の1つに関するリソースの制約に依存してコンピューティング・デバイス・プラットフォームから欠けているかもしれないし、あるいは欠けていないかもしれない。したがって、ランタイム実行環境200の少なくとも1つの例は、入力/出力(以降では「I/O」と呼ぶ)ルーチン管理、メモリ管理、コンパイリング、およびサービスルーチン管理を実装することができる。したがってランタイム実行環境200は、I/Oコンポーネント205と、コンパイラ210と、少なくとも1つのメモリ管理コンポーネント215と、サービス・ルーチン・マネージャ225と、実行コンポーネント225とを含むことができる。これらのコンポーネントについては、以降でさらに詳しく説明するが、例として提供されており、ランタイム実行環境200のいかなる特定の実施形態にも限定することを意図するものではなく、そのような推論は、行うべきではない。したがって、これらのコンポーネントは、ランタイム実行環境200の例の中に様々な組合せおよび構成で実装することができる。
ランタイム実行環境200のI/Oコンポーネント205は、コンピューティング・デバイス・プラットフォームに関連付けられているデータソース(すなわち、プロセッサおよび周辺機器)への非同期アクセスを提供することができる。より詳細には、I/Oコンポーネント205は、ランタイム実行環境200に、堅牢なシステムスループットを提供し、I/O要求が生じる元となるコードの実行をさらに合理化することができる。
コンパイラ210は、コンパイルされたILを、ランタイム実行環境200内で実行するためのネイティブな機械命令へと解釈することができるランタイム実行環境200内のモジュールを指すことができる。さらに、モジュールの初期化120の少なくとも1つの例示的な実施形態によれば、コンパイラ210は、ランタイム実行環境200内へロードすることができるアプリケーション、プログラム、機能、あるいはプログラム可能で実行可能なコードのその他の集合に関連付けられているコードモジュールの動作を様々な目的から動的に分析することができる。そのような分析は、コンパイルされたコードモジュールのバージョンおよびプロトコルの互換性について判断することを含むことができる。さらにまた、この分析は、コードモジュールの実行可能な部分に触れたり影響を及ぼしたりすることなく実行することができる。この分析は、コンパイル時に、または最初のランタイムに、あるいはその後にコードモジュールの実行可能な部分を実行している最中の任意の時点で、実行することができる。
メモリ管理コンポーネント215は、「ごみ収集担当」とみなすことができる。ごみの収集は、マネージドのコードの実行環境の堅牢な機能とみなすことができ、この機能は、メモリヒープ(memory heap)を掃除したりスキャンしたりした際に、オブジェクトがもはやどのアプリケーションによっても使用されていないならば、オブジェクトを自動的に解放する(すなわち、割り当てを解除する)。メモリ管理コンポーネント215によって実施されるさらなる機能には、コンピューティング・デバイス・プラットフォーム上で実行されているタスクの間で、有限な揮発性RAM(すなわち、メモリヒープ)ストレージの1つまたは複数の連続したブロック、あるいはメモリの連続したブロックのセットを管理すること、コンピューティング・デバイス・プラットフォーム上で実行されている少なくとも1つのアプリケーションにメモリを割り当てること、アプリケーションのうちの少なくとも1つによる要求に応じてメモリの少なくとも一部を解放すること、およびアプリケーションのうちのいずれかが、その他のアプリケーションのうちのいずれかに割り当てられているメモリスペースに煩わしくアクセスするのを防止することを含むことができる。
プロセッサおよび周辺機器のためのサービス機能を提供するために、アプリケーションサポート層(application support layer)の少なくとも一部として、サービス・ルーチン・マネージャ220を含むことができる。動的なノード間通信パイプラインに関連付けられているサービスの例示的な実施形態は、サービス・ルーチン・マネージャ220によって管理することができる(ただし、この管理を行えるのは、サービス・ルーチン・マネージャ220だけではない)。例えばサービス・ルーチン・マネージャ220は、アプリケーションが、サービス、APIアダプタなどのモジュール、およびプロトコルに登録できるようにすることができる。このような例示的な実施形態に加えて、サービス・ルーチン・マネージャ220は、サービスに入力されたパラメータおよび制約に基づいて、サービスに登録されているアダプタおよびプロトコルの様々な組合せを含むノード間通信パイプラインを構成して組み立てることを可能にすることができる。
実行コンポーネント225は、コンピューティング・デバイス・プラットフォームのためのマネージドのコードを実行できるようにすることができる。より詳細には、動的なピアツーピア通信パイプライン120の実施形態に関して、実行コンポーネント225は、例えば、動的なノード間通信パイプラインによって満たされるべきプロトコルの制約を含む1つまたは複数のパラメータを決定することができるランタイム実行環境200内の例示的なコンポーネントとして機能することができる。そのようなパラメータは、サービス・ルーチン・マネージャ220に関して上述したように、モジュールおよびプロトコルが登録されているサービスへ入力することができる。さらに実行コンポーネント225は、そのようなパラメータを実施形態120のためのサービスへ提示することができる。
図3は、本明細書に記載されているノード間通信パイプラインの例示的な実施形態のうちの少なくとも1つによって構成され組み立てられている例示的なノード間通信パイプライン300を示している。
より詳細には、ノード間通信パイプライン300の例示的な実施形態は、2つのオブジェクトを通信可能に接続するモジュールの動的に組み立てられた連続を含むことができる。パイプライン300の少なくとも1つの実施形態によるそのようなオブジェクトの例としては、ホストアプリケーションおよびアドインアプリケーションが含まれるが、これらには限定されない。さらにより詳細には、ノード間通信パイプライン300は、1つのアダプタから別のアダプタへのプロトコル間の通信を可能にすることができる。
モジュール305は、ホストアプリケーションのためのAPIの抽象インターフェースまたはクラスとみなすことができるホスト・ビュー・オブジェクト(host view object)に相当することができる。
モジュール310は、モジュール305とインターフェースをとることができる少なくとも1つのアダプタに相当することができる。すなわちモジュール310は、1つのノードオブジェクトのAPI(すなわちモジュール305)を、別のノードオブジェクトのAPIと互換性を持って通信するように適合させることができる。
モジュール315は、モジュール同士が通信できるようにする上で介さなければならない規格や規約を指すプロトコルに相当することができる(APIは、それらのモジュールの一例だが、そうした例は、APIだけではない)。プロトコル315は、厳格に規定することができ、したがって不変であることができ、それによってプロトコル内のモジュールは、お互いに通信することができる。パイプライン300の少なくとも1つの例示的な実施形態によれば、プロトコル315は、少なくとも、実行環境間のプロトコル、隔離構造間の(すなわち、特定の実行環境内で1つの隔離構造から別の隔離構造にわたる)プロトコル、プロセス間のプロトコル、およびマシン間のプロトコルのうちのいずれか1つに相当することができる。したがってプロトコル315は、モジュール(すなわちAPI)のための通信ブリッジ(communication bridge)(例えば隔離構造、プロセス、およびマシン、規格)に相当することができる。モジュール320は、モジュール305とインターフェースをとることができる少なくとも1つのアダプタに相当することができる。モジュール320は、1つのノードオブジェクトのAPI(すなわちモジュール325)を、別のノードオブジェクトのAPI(すなわちモジュール305)と互換性を持って通信するように適合させることができる。
モジュール325は、アドイン・ビュー・オブジェクト(add−in view object)に相当することができる。この例によれば、モジュール325は、アドインアプリケーションのためのAPIの抽象インターフェースまたはクラスとみなすことができる。
図4は、動的なノード間通信パイプライン120(図1を参照されたい)の例示的な実施形態による例示的な処理フロー400を示している。処理フロー400については、図2のランタイム実行環境200および図3の例示的なパイプライン300に関して上述した機能および特徴を参照して説明することができる。
より詳細には、限定されない例として、処理フロー400の説明は、複数バージョンのモジュール(例えば、ホスト・ビュー・オブジェクト)305と、複数バージョンのモジュール(例えば、アドイン・ビュー・オブジェクト)325との間で互換性のある通信を可能にすることに言及することができる。
ブロック405は、複数バージョンのモジュール310および320をサービス415へ登録するサービス・ルーチン・マネージャ220(図2を参照されたい)、ホストアプリケーション、およびアドインアプリケーションのうちの少なくとも1つを指すことができる。すなわちサービス415は、モジュール310か、モジュール320か、またはモジュール310かモジュール320のどちらかとインターフェースをとるための少なくとも1つのその他のアダプタモジュールのうちの1つと、インターフェースをとることができる複数のアダプタを内部に登録しておくことができる。一例として、サービス415は、複数バージョンのホスト・ツー・プロトコルアダプタモジュール(host−to−protocol adapter module)310を内部に登録しておくことができ、ホスト・ツー・プロトコルアダプタモジュール310のそれぞれは、別のバージョンのモジュール305と別のプロトコル315との間で通信可能にインターフェースをとることができる。同様にサービス415は、複数バージョンのプロトコル・ツー・アドインアダプタモジュール(protocol−to−add−in adapter module)320を内部に登録しておくこともでき、プロトコル・ツー・アドインアダプタモジュール320のそれぞれは、別のプロトコル315と別のバージョンのモジュール325との間で通信可能にインターフェースをとることができる。
したがってブロック405は、複数のプロトコル315をサービス415へ登録するサービス・ルーチン・マネージャ220、ホストアプリケーション、およびアドインアプリケーションのうちの少なくとも1つをさらに指すことができる。サービス415へ登録される複数のプロトコル315は、モジュール同士の間における通信上の制約として指定することができ、それらの制約としては、例えば、実行環境間の(例えば、マネージドの実行環境と、アンマネージドの実行環境との間における)プロトコル、隔離構造間のプロトコル、プロセス間のプロトコル、およびマシン間のプロトコルが含まれる。
ブロック410は、1つまたは複数のノード間通信パイプラインを構成して組み立てる際のパラメータを指定したりその他の形で定義したりするホストアプリケーションおよびアドインアプリケーションのうちの少なくとも1つを指すことができる。例えばホストアプリケーションは、ノード間通信パイプライン300の1つまたは複数の実施形態を構成して組み立てる際の少なくとも1つのホストビューモジュール305、1つまたは複数の制約、および少なくとも1つのアドインビューモジュール325を指定することができる。1つまたは複数の制約を、ホストビューモジュール305およびアドインビューモジュール325と併用すれば、プロトコル315のうちの適切な1つを識別するには十分かもしれない。しかし上述のように、ホストアプリケーションが、モジュール305、315、および325のうちの1つまたは複数の部分的な組合せを指定できる可能性の方が高い。したがって一例として、ブロック410は、より詳細には、1つまたは複数のノード間通信パイプラインを構成して組み立てる際の1つまたは複数のホストビューモジュール305およびプロトコル315を指定したりその他の形で定義したりするホストアプリケーションを指すことができる。
ブロック410においてサービス415のために指定されたり定義されたりするパラメータに加えて、1つまたは複数の制約を、ノード間通信パイプライン300の1つまたは複数の実施形態を構成して組み立てる際のホストビューモジュール305、プロトコル315、およびアドインビューモジュール325のうちのいずれかに関して指定することができる。これらの制約は、ノード間通信パイプライン上のノード同士の間におけるプロトコルによって満たされる任意のユーザ定義のプロパティを含むことができるパラメータである。例えば、これらの制約は、実行するのに必要とされる許可と、ノード間通信パイプライン300の構成され組み立てられた実施形態上で指定されたり定義されたりしているプロトコル315によってサポートされる隔離境界(isolation boundary)とを指定したりその他の形で定義したりすることができる。そのような隔離境界の例は、局所的な境界(local boundary)、共有されている隔離構造、私的な隔離構造(private isolation construct)、あるいはその他のプロセスを指すことができる。
サービス415は、ホストアプリケーションまたはアドインアプリケーションのいずれかに対応する実行環境内に配置されているデータベース、レジストリ、およびファイルシステムのうちのいずれか1つを含むことができる。あるいはサービス415は、パイプライン300を構成して組み立てることにアクセスできる限り、デバイスに基づく任意の場所や、ネットワークに基づく任意の場所に配置することができる。上述のように、サービス415は、ノード間通信パイプライン300の多くの実施形態を構成して組み立てるための登録されたモジュール、パラメータ、および制約のためのリポジトリとして機能することができる。
ブロック420は、ノード間通信パイプライン300の1つまたは複数の実施形態を構成して組み立てる単独または様々な組合せのコンパイラ210、サービス・ルーチン・マネージャ220、または実行モジュール225のうちのいずれか1つを指すことができる。より詳細には、パイプライン300は、ブロック410においてサービス415へ入力されたパラメータおよび任意の制約によって指定されたりその他の形で定義されたりしているとおりに、1つまたは複数のホスト・ツー・プロトコルアダプタ310、プロトコル315、およびプロトコル・ツー・アドインアダプタ320の組合せをつなぎ合わせることによって構成することができる。
ここまで処理フロー400の例に関して説明したように、3つのステージのパイプライン300をブロック420において構成して組み立てることができる。しかし、とりわけホスト・ビュー・オブジェクト305およびアドイン・ビュー・オブジェクト325の多くの可能なバージョンを考慮すると、ノード間通信パイプライン300の代替実施形態は、1つまたは複数のホスト・ツー・プロトコルアダプタ310、あるいは1つまたは複数のプロトコル・ツー・アドインアダプタ320を考えることができる。したがって、3つのステージや4つのステージのパイプライン300の数百に及ぶ順列を考えることができる。この実施形態は、5つ以上のステージのパイプライン300をサポートすることができるが、登録されたモジュールと、指定されたパラメータおよび制約とに基づく可能な順列の数は、指数関数的に増加する可能性がある。したがって、可能ではあるものの、そのようなパイプラインによって必要とされるリソース消費は、そのような実施形態に対して重荷になるおそれがある。
ブロック425は、ブロック420において構成されて組み立てられたパイプライン300のうちの1つまたは複数を起動する、単独または様々な組合せのサービス・ルーチン・マネージャ220または実行モジュール225を指すことができる。より詳細には、ノード間通信パイプライン300の少なくとも1つの実施形態が、サービス415のために指定されたりその他の形で定義されたりしたパラメータおよび任意の制約を満たしていることをホスト・ビュー・オブジェクト305が判断した場合には、パイプライン300を介した通信処理のために隔離境界を作成することができる。そのような隔離境界は、別個の隔離構造(すなわち、アプリケーションドメイン)またはプロセスを含むことができる。
起動したら、パイプライン300のモジュールをロードすることができる。すなわち、サービス415から検索されたモジュールを表すメタデータをロードすることができる。このようなロードの繰り延べは、セキュリティ対策とみなすことができる。というのも、アドインはサードパーティによって提供される可能性があり、したがって、信頼の層が欠落しているおそれがあるためである。
図1〜図4に関連する上述の説明によれば、ランタイム実行環境のモジュールの初期化は、内部にロードされる実行コードに関連付けられているデータに従って構成することができる。しかし、本明細書に記載されている例示的な実施形態は、図1の環境、図2および図3のコンポーネント、あるいは図4のプロセスだけに限定されない。モジュールの初期化120(図1を参照されたい)は、図2および図3を参照して説明したコンポーネントの様々な組合せによって、ならびに図4を参照して説明したブロックの様々な順序で実施することができる。
さらに、上述の例および実施形態のうちのいずれかのためのコンピュータ環境は、例えば1つまたは複数のプロセッサまたは処理装置と、システムメモリと、様々なシステムコンポーネント同士を結合するためのシステムバスとを有するコンピューティングデバイスを含むことができる。
コンピューティングデバイスは、揮発性メディアおよび不揮発性メディア、取り外し可能なメディアおよび取り外し不能なメディアの双方を含む様々なコンピュータ可読媒体を含むことができる。システムメモリは、コンピュータ可読媒体を、RAM(random access memory)などの揮発性メモリ、および/またはROM(read only memory)やフラッシュRAMなどの不揮発性メモリの形態で含むことができる。磁気カセットやその他の磁気ストレージデバイス、フラッシュメモリカード、CD−ROM、DVD(digital versatile disk)、あるいはその他の光ストレージ、RAM(random access memory)、ROM(read only memory)、EEPROM(electric erasable programmable read−only memory)など、コンピュータによってアクセスできるデータを保存することができるその他のタイプのコンピュータ可読媒体を利用して、例示的なコンピューティングシステムおよび環境を実装することもできるということを理解されたい。
本明細書の全体を通じて、「一例」、「別の例」、「少なくとも1つの例」、「実施形態」、あるいは「例示的な実施形態」に言及しているが、これらは、記載されている特定の機能、構造、あるいは特徴が、本発明の少なくとも1つの実施形態内に含まれているということを意味している。したがって、そのような語句を使用して、1つの実施形態だけでなく、それよりも多くの実施形態を指すことができる。さらに、記載されている機能、構造、あるいは特徴は、1つまたは複数の実施形態内で任意の適切な方法で組み合わせることができる。
しかし、コードモジュールの初期化は、特定の詳細のうちの1つまたは複数を伴わずに、あるいはその他の方法、リソース、素材などを用いて実施することができるということを当業者なら認識することができる。その他の場合においては、よく知られている構造、リソース、あるいはオペレーションについて詳細には図示したり説明したりしていないが、これは、本発明の態様が分かりにくくなることを避けるためにすぎない。
コードモジュールの初期化の例示的な実施形態および応用例について例示して説明したが、本発明は上述の厳密な構成およびリソースには限定されないということを理解されたい。上述の説明および添付の特許請求の範囲の双方におけるような本発明の範囲から逸脱することなく、本明細書において開示されている本発明の方法およびシステムの構成、オペレーション、および細部において、当業者にとって明らかな様々な修正形態、変更形態、および変形形態を作成することができる。
ネットワークを介して通信するデバイスであり、モジュールを初期化するための例示的なテクノロジーを実装しているデバイスを示す図である。 動的なノード間通信パイプラインを実装するための例示的なテクノロジーを実装するための実行環境の一例を示す図である。 動的なノード間通信パイプラインの例示的な実施形態を示す図である。 例示的な動的なノード間通信パイプラインの実施形態による例示的な処理フローを示す図である。

Claims (20)

  1. ノード間パイプライン実装のための少なくとも1つのパラメータを指定するステップ(410)と、
    サービス(415)にアクセスして前記指定されたパラメータを所定の順序で満たすモジュールを有するノード間パイプラインを構成するステップ(420)と
    を備えることを特徴とする方法。
  2. 前記少なくとも1つのパラメータは、ノードアプリケーションのAPIを含むことを特徴とする請求項1に記載の方法。
  3. 前記少なくとも1つのパラメータは、ノードアプリケーションのAPI、ピアアプリケーションのAPI、またはプロトコルの制約のうちの少なくとも1つを含むことを特徴とする請求項1に記載の方法。
  4. 前記少なくとも1つのパラメータは、隔離構造間の互換性、プロセス間の互換性、またはマシン間の互換性のうちの1つを含む制約を指定することを特徴とする請求項1に記載の方法。
  5. 前記パイプラインは、第1のノードのAPI実装されたアダプタモジュールと、第2のノードのAPI実装されたアダプタモジュールと、プロトコル制約モジュールとを含むことを特徴とする請求項1に記載の方法。
  6. 1つのノードはホストアプリケーションであり、別のノードはアドインアプリケーションであることを特徴とする請求項1に記載の方法。
  7. ノード間通信パイプラインを組み立てる際に使用することができるモジュールを登録するステップ(405)と、
    特定のノード間通信パイプラインを定義するために少なくとも1つのパラメータを受信するステップ(410)と、
    前記パラメータに準拠するモジュールを使用して前記特定のノード間通信パイプラインの少なくとも1つのバージョンを組み立てるステップ(420)と
    を、読み取られるときに1つまたは複数のプロセッサに実行させる1つまたは複数のコンピュータ実行可能命令を有することを特徴とする少なくとも1つのコンピュータ可読媒体。
  8. 前記1つまたは複数の命令は、少なくとも部分的に、サービスにおいて実行されることを特徴とする請求項7に記載の少なくとも1つのコンピュータ可読媒体。
  9. 前記モジュールは、第1のノード・ツー・プロトコルアダプタモジュール、プロトコルモジュール、および少なくとも1つのプロトコル・ツー・第2のノードプロトコルアダプタモジュールのうちの少なくとも1つを含むことを特徴とする請求項7に記載の少なくとも1つのコンピュータ可読媒体。
  10. 前記ノード間パイプラインは、プロトコル間の通信パイプラインであることを特徴とする請求項7に記載の少なくとも1つのコンピュータ可読媒体。
  11. 前記ノード間パイプラインは、ホストアプリケーションAPIからアドインアプリケーションAPIへ実装されるプロトコル間の通信パイプラインであることを特徴とする請求項7に記載の少なくとも1つのコンピュータ可読媒体。
  12. 前記少なくとも1つのパラメータは、第1のノードアプリケーションのAPI、第2のノードアプリケーションのAPI、またはプロトコル間の制約のうちの少なくとも1つを含むことを特徴とする請求項7に記載の少なくとも1つのコンピュータ可読媒体。
  13. 前記少なくとも1つのパラメータは、隔離構造間の互換性、プロセス間の互換性、またはマシン間の互換性のうちの1つを有するプロトコル間の制約を含むことを特徴とする請求項7に記載の少なくとも1つのコンピュータ可読媒体。
  14. 前記少なくとも1つのパラメータは、アンマネージドの実行環境内の第2のノードと通信するマネージドの実行環境内の第1のノードを指定するプロトコル間の制約を含むことを特徴とする請求項7に記載の少なくとも1つのコンピュータ可読媒体。
  15. 組み立てを行うための前記1つまたは複数の命令は、前記1つまたは複数のプロセッサに、前記パラメータに準拠する前記モジュールを特定の順序で組み立てさせることを特徴とする請求項7に記載の少なくとも1つのコンピュータ可読媒体。
  16. 指定されたプロトコル内のパイプラインに関する1つまたは複数のパラメータを指定するためのホスト(220)と、
    サービス(415)であって、
    プロトコル内のパイプラインを組み立てる際に使用することができるモジュールを登録し(405)、
    前記1つまたは複数のパラメータを満たす前記登録されたモジュールのうちの様々なモジュールを、前記指定されたプロトコル内のパイプラインの1つまたは複数のバージョンへと組み立てる(420)、サービス(415)と、
    前記指定されたプロトコル内のパイプラインの前記組み立てられたバージョンのうちの1つまたは複数を起動する(425)ためのアクティベータと
    を備えることを特徴とするシステム。
  17. 前記少なくとも1つのパラメータは、ホストアプリケーションのAPI、アドインアプリケーションのAPI、またはプロトコル間の制約のうちの少なくとも1つを含むことを特徴とする請求項16に記載のシステム。
  18. 前記1つまたは複数のパラメータは、隔離構造間の互換性、プロセス間の互換性、またはマシン間の互換性のうちの1つを有するプロトコル間の制約のうちの少なくとも1つを含むことを特徴とする請求項16に記載のシステム。
  19. 前記指定されたプロトコル内のパイプラインは、少なくとも、ホストAPI・ツー・プロトコルアダプタ、プロトコル、およびプロトコル・ツー・アドインアダプタのうちの1つを含むことを特徴とする請求項16に記載のシステム。
  20. 前記指定されたプロトコル内のパイプラインは、マネージドの実行環境内のホストAPIからアンマネージドの実行環境内のアドインAPIへと拡張していることを特徴とする請求項16に記載のシステム。
JP2008521388A 2005-07-14 2006-06-07 ノード間通信パイプライン Pending JP2009501385A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/181,614 US7634578B2 (en) 2005-07-14 2005-07-14 Node-to-node communication pipelines
PCT/US2006/022230 WO2007011471A2 (en) 2005-07-14 2006-06-07 Node-to-node communication pipelines

Publications (1)

Publication Number Publication Date
JP2009501385A true JP2009501385A (ja) 2009-01-15

Family

ID=37662917

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008521388A Pending JP2009501385A (ja) 2005-07-14 2006-06-07 ノード間通信パイプライン

Country Status (5)

Country Link
US (1) US7634578B2 (ja)
EP (1) EP1902379B1 (ja)
JP (1) JP2009501385A (ja)
CN (1) CN101495987B (ja)
WO (1) WO2007011471A2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7856505B2 (en) * 2007-06-29 2010-12-21 Microsoft Corporation Instantiating a communication pipeline between software
GB2487357A (en) * 2011-01-12 2012-07-25 Promethean Ltd Embedding application functionality within a user interface of a second application for ease of user operation
US9203780B2 (en) * 2012-01-27 2015-12-01 Microsoft Technology Licensing, Llc Techniques to distribute messages using communication pipelines
US11010212B2 (en) * 2019-06-13 2021-05-18 Microsoft Technology Licensing, Llc System and method for supporting and negotiating multiple API versions across multiple products

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005505051A (ja) * 2001-10-02 2005-02-17 サイトリックス システムズ,インコーポレイテッド クライアント−サーバネットワークにおいてファイルタイプの関連性により分散型のプログラムの実行方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7877435B2 (en) * 2002-06-20 2011-01-25 International Business Machines Corporation Method and system for transaction pipeline decomposition
US20040034860A1 (en) * 2002-08-15 2004-02-19 Microsoft Corporation Dynamically extensible application program framework including message and notification routing
US7185060B2 (en) * 2003-03-26 2007-02-27 Microsoft Corporation Message processing pipeline for streams
JP2004310545A (ja) * 2003-04-08 2004-11-04 Matsushita Electric Ind Co Ltd データ送受信装置
US7472112B2 (en) * 2003-06-23 2008-12-30 Microsoft Corporation Distributed query engine pipeline method and system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005505051A (ja) * 2001-10-02 2005-02-17 サイトリックス システムズ,インコーポレイテッド クライアント−サーバネットワークにおいてファイルタイプの関連性により分散型のプログラムの実行方法

Also Published As

Publication number Publication date
EP1902379B1 (en) 2018-07-25
EP1902379A2 (en) 2008-03-26
WO2007011471A2 (en) 2007-01-25
WO2007011471A3 (en) 2009-04-16
CN101495987B (zh) 2012-04-18
US7634578B2 (en) 2009-12-15
EP1902379A4 (en) 2014-08-20
US20070016691A1 (en) 2007-01-18
CN101495987A (zh) 2009-07-29

Similar Documents

Publication Publication Date Title
JP5139987B2 (ja) 拡張可能メタデータ
RU2443012C2 (ru) Конфигурация изолированных расширений и драйверов устройств
US6415435B1 (en) Method and apparatus for determining compatibility of parent classes in an object oriented environment using versioning
US20100205604A1 (en) Systems and methods for efficiently running multiple instances of multiple applications
US7870546B2 (en) Collaborative classloader system and method
US10303449B2 (en) Compiling non-native constants
TW201308209A (zh) 運行時間系統
US8615743B2 (en) Adaptive compiled code
Kluge et al. Watchdog–a workflow management system for the distributed analysis of large-scale experimental data
EP3607432B1 (en) Flow-based scoping
US20120331013A1 (en) Object-Relational Mapped Database Initialization
CN114651233A (zh) 即时容器
Spear et al. Solving the starting problem: device drivers as self-describing artifacts
US20090077536A1 (en) Programming environment with support for handle and non-handle user-created classes
JP2009501385A (ja) ノード間通信パイプライン
US8196152B2 (en) Container context information propagation in an aspect-oriented environment
US7673051B2 (en) Resource usage conflict identifier
US20060288336A1 (en) Module initialization
US10346225B2 (en) Synthesized modules for module renaming
Sinha C# & the. Net Framework
Mackey CLR and BCL Changes
Ou . NET High Performance Computing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090513

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110902

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120406

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120427