説明

構造化データプロトコルをバイトストリームを供するプロトコルにバインドするための機構

【課題】対応するバイトストリームを使用して、構造化データを送信するための機構を提供すること。
【解決手段】簡易オブジェクトアクセスプロトコル(SOAP)エンベロープなどの構造化データ211にアクセスすると、バイトストリーム213が生成される。バイトストリーム213は、構造化データを表すバイト、並びに、例えば、通信モードなどの、バイトストリーム213についてのプロパティを表すバイトの集合を含む。バイトストリーム213は、次に、バイトストリームの送受信を行うことができる通信モジュール(例えば、TCPモジュールまたは名前付きパイプモジュール)214に送られる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はネットワーク技術に関し、より具体的には、構造化データトランスポートを、データストリームを供する(offer up)プロトコルにバインドして、1つの方向で通信されるメッセージが、逆の方向で通信されるメッセージと互いに関係付けられることを要求することなしに、双方向通信を使用して、構造化されたデータが通信されることを可能にするようにするための機構に関する。
【背景技術】
【0002】
コンピュータ技術は、私達が仕事をし、遊ぶ仕方を一変させた。コンピューティングシステムは、現在、デスクトップコンピュータ、ラップトップコンピュータ、タブレットPC、パーソナルデジタルアシスタント(PDA)、家庭用デバイスなどを含む、多種多様な形態をとる。最も基本的な形態では、コンピューティングシステムは、システムメモリ、および1つまたは複数のプロセッサを含む。システムメモリ内のソフトウェアが、プロセッサによって実行されて、コンピューティングシステムの他のハードウェアが、所望の種々機能を実行するように導くことが可能である。
【0003】
ネットワーキング技術は、コンピューティングシステムが、広大な距離にわたってさえ通信することを可能にして、コンピュータ機能を拡張する。例えば、ネットワーキング技術は、電子メール、Webブラウズ、ファイル転送、インスタントメッセージング、電子ホワイトボード(whiteboarding)、ネットワーク共同作業などのアプリケーションを可能にする。したがって、コンピュータネットワークは、広範な通信および情報アクセスを可能にする。
【0004】
コンピューティングシステム間で通信されるデータは、しばしば、データの意味が、少なくともある程度、構造内のデータの位置によって暗示される、構造化された形態になっている。ソフトウェアコンポーネントが、構造化データプロトコルによって規定された規則に従うことにより、データ構造の少なくともいくつかの部分を生成する、または解釈することができる。この説明、および特許請求の範囲では、「構造化データプロトコル(structured data ptotocol)」は、データ構造がどのように形成されるべきかを定義する1つまたは複数の規則のセットであると広く定義される。可能性として、複数の構造化データプロトコルが、データ構造の異なる部分を支配する可能性がある。
【0005】
構造化データプロトコルの一例には、拡張マークアップ言語(XML)の様々なバージョンが含まれる。XMLは、データが、階層化されたノードツリーとして構造化されることを可能にする。ルートノードが、ツリーにおいて最も遡った祖先の(most ancestral)ノードを形成する。ルートは、0以上の子ノードを有することが可能であり、各子ノードは、0以上の子ノードを有するといった具合である。各ノードは、属性および/またはその他のテキストコンテキストを有する。XML自体は、ノードの身元を指定せず、また、階層ツリーの形態を指定することもしない。したがって、XMLは、多くのタイプのデータを構造的に表すのに十分なだけの柔軟性がある。
【0006】
一部の構造化データプロトコルは、基本的なXMLに追加の構造規則を課す。そのような構造化データプロトコルには、例えば、簡易オブジェクトアクセスプロトコル(SOAP)の様々なバージョンが含まれる。SOAPは、トランスポートにバインドされることが可能なメッセージを表すSOAPエンベロープの形態で、XML要素を定義する。SOAPエンベロープには、ヘッダ要素を含む子XML要素、および本文要素が含まれる。ヘッダ要素には、バージョン設定、ルーティング、アドレス情報、メッセージ識別子などを定義する、いくつかの必須の子XML要素およびオプションの子XML要素が含まれることが可能である。本文要素には、1つまたは複数の他の構造化データプロトコルに準拠することが可能な、他のXML構造が含まれる。
【0007】
SOAPは、比較的トランスポートアグノスティック(agnostic)であるように設計される。しかし、SOAPは、トランスポート機構として、ハイパーテキスト転送プロトコル(HTTP)への既定のバインド(しばしば、「SOAP−over−HTTP」と呼ばれる)を定義する。SOAP−over−HTTPは広く実施されている。SOAP−over−HTTPバインド(および基礎にあるHTTPプロトコル)は、クライアントシナリオおよび企業シナリオにおける有用性を減じる、いくつかの限界を有する。
【0008】
第1に、HTTPは、サポートされるメッセージ交換パターンの点で限られている。というのは、HTTPは、本質的に要求−応答プロトコルだからである。具体的には、HTTP対話の開始者は、サービスに単一の要求を送信し、次に、基礎にある伝送制御プロトコル接続上で応答を待つ。応答は、無視して、要求によって表される単方向通信をシミュレートすることもできる。しかし、このシミュレーションは、貴重なネットワーク帯域幅を浪費する。というのは、応答は、未使用の情報を含むからである。したがって、HTTPは、基本的な単一要求−単一応答メッセージ交換パターンだけを効果的にサポートする。これにより、いくつかの限界がもたらされる。例えば、サーバは、求められていない応答をクライアントに送信する(すなわち、単方向メッセージ)手段を有さない。また、クライアントが、所与のTCP接続に関して、一度にせいぜい1つの保留中の要求しか有することができない。第2の要求は、第1の応答が受信されるまで、開始することができない。さらに、サーバは、所与の要求に1回だけしか応答しない可能性がある。最後に、サーバは、要求を処理している間、ネットワーク接続を開かれたままに保っているため、サーバが、メッセージを処理すべき時間は、通常、限られ、長期継続の対話が妨げられる。
【0009】
第2に、展開されたHTTPインフラストラクチャは、一般に、ストリーミングHTTP要求メッセージをサポートしない。要求メッセージのそのようなストリーミングは、「チャンキング(chunking)」と呼ばれる。これにより、要求メッセージの中で、複数のメガバイトビジネスドキュメントのような、大きいメッセージをストリーミングすることが困難になる。大きいメッセージをバッファリングすることは、一般に、コンピュータリソースの点で法外な費用がかかる。
【0010】
第3に、HTTPでセキュリティをアクティブにするのに、対話が、HTTPからHTTP Secure(HTTPS)プロトコルへのネゴシエーションを行わなければならない。HTTPSは、異なるプロトコル(異なるTCPポート、および異なるUniform Resource Identifier(URI)スキームを使用する)であるため、通信インフラストラクチャは、一般に、HTTPからHTTPへのネゴシエーションを特別ケース化(special-case)する必要がある。例えば、ルーティングテーブルの中に重複エントリ、つまり、HTTPをサポートするためのエントリと、HTTPSをサポートするためのエントリが存在することが可能である。これもまた、計算リソースの点で非効率である。
【0011】
したがって、有利なのは、データストリーミングを許し、セキュリティの好都合なアクティブ化を容易にする、柔軟性のあるメッセージ交換パターンを可能にする形で、XMLおよび/またはSOAPなどの構造化データプロトコルを、基礎にあるトランスポートにバインドするための機構である。
【発明の開示】
【発明が解決しようとする課題】
【0012】
先行技術が抱える以上の諸問題は、構造化されたデータを第2のコンピューティングシステムに、対応するバイトストリームを使用して送信するための機構に向けられた、本発明の種々原理によって克服される。構造化されたデータは、通信のためのバイトストリームに変換されるため、ハイパーテキスト転送プロトコル(HTTP)に限定されるのではなく、バイトストリームを通信することができる任意の通信モジュールまたは通信プロトコルを、通信のために使用することができる。
【課題を解決するための手段】
【0013】
簡易オブジェクトアクセスプロトコル(SOAP)エンベロープなどの構造化されたデータにアクセスすると、バイトストリームが生成される。バイトストリームは、構造化されたデータを表すバイト、並びにバイトストリームについてのプロパティを表すバイトの集合を含む。バイトストリームは、次に、バイトストリームの送受信を行うことができる通信モジュール(例えば、TCPモジュールまたは名前付きパイプモジュール)に送られることが可能である。それらのプロパティは、以下の詳細な説明から明白となるとおり、多種多様であることが可能である。
【0014】
本発明のさらなる特徴および利点は、以下の説明において提示し、ある程度、この説明から明らかとなるか、または本発明の実施によって知ることができる。本発明の特徴および利点は、添付の特許請求の範囲で特に指摘する手段(instruments)および組合せを使用して、実現し、獲得することができる。本発明のそれら、およびその他の特徴は、以下の説明、および添付の特許請求の範囲から、より完全に明白となるか、または以下に提示する本発明の実施によって知ることができる。
【0015】
本発明の前述した利点および特徴、並びにその他の利点および特徴を得ることができる方法を説明するため、添付の図面に示す、本発明の具体的な種々実施形態を参照して、以上に簡単に説明した本発明のより詳細な説明を行う。それらの図面は、本発明の典型的な種々実施形態を示すに過ぎず、したがって、本発明の範囲を限定するものと見なされるべきではないものと理解して、本発明を、添付の図面の使用を介して、さらに具体的に、さらに詳細に示し、説明する。
【発明を実施するための最良の形態】
【0016】
本発明の種々原理は、構造化されたデータを、対応するバイトストリームを使用して送信するための機構に関する。簡易オブジェクトアクセスプロトコル(SOAP)エンベロープなどの、構造化されたデータにアクセスすると、バイトストリームが生成される。バイトストリームは、構造化されたデータを表すバイト、並びに、例えば、通信モードなどの、バイトストリームについてのプロパティを表すバイトの集合を含む。バイトストリームは、次に、バイトストリームを送受信することができる通信モジュール(例えば、TCPモジュール、または名前付きパイプモジュール)に送られることが可能である。構造化されたデータは、受信側で、逆の形で回復されることが可能である。構造化されたデータは、バイトストリームに変換されるので、HTTPに依拠するのではなく、任意の通信モジュール(TCP、または名前付きパイププロトコルなどの)を使用して、構造化されたデータを伝送することができる。
【0017】
同様の符号が同様の要素を指す図面を参照すると、本発明の種々原理が、適切なコンピューティング環境において実施されているのが示されている。以下の説明は、本発明の図示する種々実施形態に基づき、本明細書で明示的に説明しない代替の種々実施形態に関して、本発明を限定するものと解釈されるべきではない。
【0018】
以下の説明では、本発明の種々実施形態を、特に明記しない限り、1つまたは複数のコンピュータによって実行される動作の作用および記号表現を参照して説明する。このため、ときとして、コンピュータによって実行されるものとして述べられる、そのような作用および動作には、構造化された形態のデータを表す電気信号の、コンピュータの処理装置による操作が含まれるものと理解されたい。この操作は、データを変換するか、またはコンピュータのメモリシステム内のロケーションでデータを保持し、これにより、当業者によってよく理解されている形で、コンピュータの動作が再構成されるか、または別の形で変更される。データが保持されるデータ構造は、データのフォーマットによって定義された特定のプロパティを有する、メモリの物理的ロケーションである。しかし、本発明の種々原理を、以上の文脈で説明するが、以下に説明する作用および動作のいくつかは、ハードウェアで実施することもできることが当業者には理解されるとおり、限定的であることは意図していない。
【0019】
図1は、以上のデバイス群のために使用可能な典型的なコンピュータアーキテクチャの概略図を示す。説明の目的で、描かれたアーキテクチャは、適切な環境の一例に過ぎず、本発明の用法または機能の範囲について何ら限定を示唆するものではない。また、コンピューティングシステムが、図1に示したコンポーネントのいずれの1つ、または組合せに関連する依存関係または要件も、有するものと解釈してはならない。
【0020】
本発明の種々原理は、他の多数の汎用または専用のコンピューティングまたは通信の環境または構成で機能する。本発明で使用するのに適した周知のコンピューティングシステム、コンピューティング環境、およびコンピューティング構成の例には、移動電話、ポケットコンピュータ、パーソナルコンピュータ、サーバ、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ミニコンピュータ、メインフレームコンピュータ、並びに以上のシステムまたはデバイスのいずれかを含む分散コンピューティング環境が含まれるが、以上には限定されない。
【0021】
最も基本的な構成では、コンピューティングシステム100は、通常、少なくとも1つの処理装置102、およびメモリ104を含む。メモリ104は、揮発性(RAMのように)、不揮発性(ROM、フラッシュメモリなどのように)、またはその2つの何らかの組合せであることが可能である。この最も基本的な構成を、破線106で図1に示す。
【0022】
記憶媒体デバイス群は、さらなる特徴および機能を有することが可能である。例えば、記憶媒体デバイス群には、PCMCIAカード、磁気ディスクおよび光ディスク、並びに磁気テープを含むが、以上には限定されない追加のストレージ(リムーバブルなストレージ、およびリムーバブルでないストレージ)が含まれることが可能である。そのような追加のストレージを、図1にリムーバブルなストレージ108、およびリムーバブルでないストレージ110で示す。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報の格納のために任意の方法または技術で実装された、揮発性媒体および不揮発性媒体、リムーバブルな媒体、およびリムーバブルでない媒体が含まれる。メモリ104、リムーバブルなストレージ108、およびリムーバブルでないストレージ110はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリ、その他のメモリ技術、CD−ROM、デジタルバーサタイルディスク、その他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、その他の磁気記憶装置、並びに所望の情報を格納するのに使用することができ、コンピューティングシステムがアクセスすることができる他のあらゆる媒体が含まれるが、以上には限定されない。
【0023】
本明細書で使用する、「モジュール(module)」または「コンポーネント(component)」という用語は、コンピューティングシステム上で実行されるソフトウェアオブジェクトまたはルーチンを指すことが可能である。本明細書で説明する、異なるコンポーネント、モジュール、エンジン、およびサービスは、コンピューティングシステム上で実行される(例えば、別々のスレッドとして)オブジェクトまたはプロセスとして実施されることが可能である。本明細書で説明するシステムおよび方法は、好ましくは、ソフトウェアで実施されるが、ソフトウェアとハードウェアでの実施、またはハードウェアでの実施も可能であり、企図されている。
【0024】
コンピューティングシステム100は、ホストが、例えば、ネットワーク120を介して、他のシステムおよびデバイスと通信することを可能にする通信チャネル112も含むことが可能である。ネットワーク120は、任意のネットワークタイプ(現在、存在しているか、または将来に開発されるかにかかわらず)を含むことが可能であるが、例には、トークンリング、イーサネット(登録商標)、Bluetooth、802.11、USB1394、SMS、SOAP over IPなどが含まれる。通信チャネル112は、通信媒体の例である。通信媒体は、通常、搬送波などの変調されたデータ信号、または他のトランスポート機構でコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを実現し、あらゆる情報配信媒体が含まれる。例として、限定としてではなく、通信媒体には、有線ネットワークおよび直接有線接続などの有線媒体、並びに音響媒体、無線媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。本明細書で使用するコンピュータ可読媒体という用語には、記憶媒体と通信媒体がともに含まれる。
【0025】
また、コンピューティングシステム100は、キーボード、マウス、ペン、音声入力コンポーネント、タッチ入力デバイスなどの、入力コンポーネント114も有することが可能である。出力コンポーネント116には、スクリーンディスプレイ、スピーカ、プリンタなど、並びにこれらを駆動するためのレンダリングモジュール群(しばしば、「アダプタ(adapters)」と呼ばれる)が含まれる。コンピューティングシステム100は、電源118を有する。以上すべてのコンポーネントは、当技術分野で周知であり、ここで詳細に説明する必要はない。
【0026】
図2は、本発明の種々原理を使用することができるネットワーク環境200を示す。ネットワーク環境200は、任意の数のコンピューティングシステムを含むことが可能である。しかし、明瞭にするため、第1のコンピューティングシステム210および第2のコンピューティングシステム220を示す。第1のコンピューティングシステム210および第2のコンピューティングシステムは、互いに通信するように結合可能である。この説明、および特許請求の範囲において、2つのコンピューティングシステムは、互いに通信するように結合される能力を有する場合、「通信するように結合可能(communicatively couplable)」である。この説明、および特許請求の範囲では、2つのコンピューティングシステムは、互いに通信する場合、「通信するように結合(communicatively coupled)」されている。2つのコンピューティングシステム210および220は、同一のコンピューティングシステムまたはコンピューティングデバイスの内部に組み込まれることも可能であるが、それでも、本発明の種々原理を使用して通信する。例えば、一方のコンピューティングシステムが、ストレージ機構を表す一方で、他方のコンピューティングシステムが、本発明の種々原理を使用して、そのストレージ機構から情報を送受信することも可能である。
【0027】
本発明の種々原理によれば、バインドモジュール212が、構造化されたデータ211にアクセスし、構造化されたデータ211の構造を支配する構造化データプロトコルを、バイトストリームを供するバイトストリームプロトコルにバインドする役割をする。バイトストリーム通信モジュール214は、この通信モジュールが、バイトストリームプロトコルに従って他のコンピューティングシステムと通信するためにバイトストリームを供することを強調するように、「バイトストリーム(byte stream)」という用語で修飾されている。この説明、および特許請求の範囲では、「バイトストリーム」は、フィールドのシーケンスとして定義される。一部のケースでは、バイトストリームの長さは、先験的には(a priori)分からない。他のケースでは、長さは、既知であり、かつ/または固定サイズであることが可能である。以上のケースのすべてが、本明細書で使用される「バイトストリーム」の定義に含まれる。
【0028】
一実施形態では、構造化されたデータ211は、例えば、拡張マークアップ言語(XML)ドキュメントなどの階層構造のドキュメントであることが可能である。1つの特定の実施形態では、XMLドキュメントは、簡易オブジェクトアクセスプロトコル(SOAP)ドキュメントであることが可能である。適切なバイトストリームプロトコルの例には、例えば、伝送制御プロトコルおよび名前付きパイプが含まれる。バインドモジュール212は、構造化されたデータ211をバイトストリーム213に変換することによってバイトストリームプロトコルとのバインドを完了し、次に、バイトストリーム213をバイトストリーム通信モジュール214に提供する。次に、バイトストリーム通信モジュール214が、そのデータを、矢印215で表されるとおり、第2のコンピューティングシステム220に送信する。第2のコンピューティングシステム224における類似したバイトストリーム通信モジュール214が、そのデータを受信し、そのデータをバイトストリーム223として、バインドモジュール222に供する。バインドモジュールは、構造化されたデータ221を回復する。
【0029】
本発明の種々原理を大まかに説明したので、特定の実施形態のより詳細な動作を、図3および図4を参照して説明する。図3は、構造化されたデータを、構造化されたデータの表現を含むとともに、その構造化されたデータに関するプロパティ情報を表すバイトストリームにまず変換することにより、構造化されたデータを送信するための方法300の流れ図を示す。方法300は、バインドモジュール212によって、構造化されたデータ211を第2のコンピューティングシステム220に送信する際に実行されることが可能である。
【0030】
バインドモジュール212は、第2のコンピューティングシステムに伝送するために、構造化されたデータにアクセスする(動作301)。バインドモジュール212は、例えば、他のコンポーネント、または他のコンピューティングシステムから構造化されたデータの一部、または全部を受信すること、および/または構造化されたデータの一部、または全部を生成することにより、構造化されたデータにアクセスすることができる。前述したとおり、構造化されたドキュメントの例には、XMLドキュメントおよびSOAPエンベロープが含まれる。以下は、第2のコンピューティングシステム220に伝送されることが所望される可能性があるSOAPエンベロープ(SOAPバージョン1.2を使用して表現されるが、本発明の種々原理は、このバージョンに限定されない)の一例を表す。
【0031】
【表1】

【0032】
この3行のSOAPエンベロープは、単なる例であり、本発明の実施形態の動作をさらに明瞭にする目的で、この説明全体で一例として使用される。
【0033】
構造化されたデータ211にアクセスした後(動作301)、バインドモジュール212は、構造化されたデータ211を、バイトストリームの1つまたは複数のプロパティを共同で表す第1の複数のバイトと、構造化されたデータを共同で表す第2の複数のバイトとを含むバイトストリーム213に変換する(動作302)。図5は、バイトストリーム213の一例を表す典型的なバイトストリーム500を概略で示す。
【0034】
図5を参照すると、バイトストリーム500は、左右の省略記号で表される、可能性のある他の構造化データコンポーネント520Bの中でとりわけ、構造化データコンポーネント520Aを含む。初期情報は、図5におけるバイトストリーム500内の右端のフィールドとして指定されており、次に続く情報が、左方向に連なっている。各構造化データコンポーネント520Aおよび520Bは、対応する構造化されたデータを含む。例えば、構造化データコンポーネント520Aは、対応する構造化されたデータ522Aのバイトストリーム表現を含む。前述したとおり、構造化されたデータ522Aは、例えば、SOAPエンベロープであることが可能である。また、各構造化データコンポーネント520Aおよび520Bは、オプションとして、構造化されたデータのバイトストリーム表現の長さを明らかにする長さコンポーネントも含むことが可能である。例えば、長さコンポーネント521Aは、構造化されたデータ522Aのバイトストリーム表現の長さを明らかにする。バイトストリームの長さが既知である(例えば、長さが、受信側に知られている固定サイズである)場合、長さフィールドは、オプションにされてもよい。また、長さは、他の何らかの機構を使用して、ネゴシエートされることも可能である。さらに、各構造化データコンポーネント520Aおよび520Bは、オプションとして、他の情報も含むことが可能である。例えば、構造化データコンポーネント520Aは、他のフィールド523Aを含む。
【0035】
バイトストリームの中に長さフィールド512Aを有することにより、いくつかの利点が可能になる。第1に、形式に誤りがある(malformed)構造化データコンポーネントを、接続を閉じるのではなく、単に飛ばして進むことができる。接続を閉じることは、高くつく。というのは、接続を再開することは、時間、処理リソース、およびメモリリソースを要するからである。さらに、接続が閉じられていた時間中に受信されたであろうメッセージの一部が、失われる可能性がある。第2に、メッセージを処理するアプリケーションコードを呼び出す前に、構造化されたデータ全体をメモリの中に読み込むことができる。これにより、アプリケーションが、メッセージの残りの部分が利用可能になるのを待つ必要なしに、メッセージに完全にアクセスし、処理を完了することが可能になる。
【0036】
また、バイトストリーム500は、バイトストリーム500全体についてのプロパティを定義するストリームプロパティ510も含む。それらのプロパティは、バイトストリーム500のプロパティレコードと考えることもできる。そのようなプロパティレコードの例を示す。図示していないが、構造化されたデータは、ストリームプロパティをリセットするように各プロパティフィールドの間にインタリーブすることができる。
【0037】
最初に、バイトストリーム500のフレーミングバージョンを定義するバージョンレコード511が図示されている。受信側コンピューティングシステムが、そのバージョンを、後続のプロパティレコードをどのように解釈すべきか、かつ/または構造化されたデータをどのように回復すべきかを支配する一組の規則と互いに関係付けることができる。例えば、バージョン情報は、許容できるプロパティレコードのリスト、およびそれらのレコードの対応する意味と互いに関係付けられることが可能である。
【0038】
次に、通信のモードを定義する通信モードレコード512が図示されている。通信モードに関してさらに、図6Aないし図6Cに関連して以下に説明する。簡単に述べると、通信モードは、メッセージ交換のパターンおよび信頼性を指定する際の柔軟性を可能にする。モードレコード512を有することは、単一のネットワークアドレス(例えば、単一のTCPポート番号)が異なるモードでメッセージを受信することを可能にする。TCPポート番号は、所与のマシン用の限られたリソースであるという点で、幾分、高くつく。
【0039】
viaレコード513が、データストリーム500に関する目標宛先を定義する。バインドモジュールは、通信プロトコルスタックの中に存在することが可能であり、プロトコルスタックにおける上位レイヤが、構造化されたデータ211(または構造化されたデータ211内で表される情報)を別の宛先に送信する。そうすることで、その情報に関する最終的な宛先は、viaレコード513によって表されるコンピューティングシステムよりも、通信パスにおいてさらに先であることが可能である。それでも、viaレコード513は、次のバインドモジュールレベル宛先のアドレスを表す。viaレコード513は、バイトストリーム500を完全に解析し、構造化されたデータ522Aにアクセスするのに必要とされる処理リソースを消費する必要なしに、受信側システムによる何らかのレベルのディスパッチを可能にする。viaレコード513の値は、既定で、以前のvia値になり、バイトストリームのサイズが縮小されることも可能である。
【0040】
符号化フィールド514は、含まれる構造化データコンポーネント522に関する符号化フォーマットを定義することができる。これにより、システムが、接続上で複数の符号化をサポートすることが可能になり、それにより、必要とされる接続の数が削減されることが可能である。また、これにより、単一のアドレス(例えば、単一のTCPポート番号)が、異なる符号化のために使用されることも可能になる。前述したとおり、TCPポート番号は、高くつく可能性がある。コンテンツタイプに関して周知の値と拡張可能な値の両方をサポートすることにより、共通の値のためにワイヤサイズ(wire size)を犠牲にすることなしに、拡張性が可能になる。例えば、周知のコンテンツタイプを単一のバイトで符号化することができるが、MIME媒体タイプに対応する文字列の値を示すことにより、さらなるコンテンツタイプが可能である(ただし、より冗長(verbose)である)。
【0041】
アップグレードフィールド515により、セキュリティアップグレードが要求されるか否か、またはセキュリティアップグレードに応答が行われるか否かが示される。2つのコンピューティングシステムが、セキュリティアップグレード要求を完了し、その後に、戻された肯定応答が行われると、その2つのコンピューティングシステムは、セキュリティコンポーネント(例えば、Secure Sockets Layer)を使用して、セキュリティのネゴシエーションをさらに行うことができる。アップグレードフィールド515は、さらなるネゴシエーションのために使用される必要はないが、セキュリティアップグレードを要求し、そのセキュリティアップグレードが可能であることを確認するのに少なくとも使用して、その後のネゴシエーションが、セキュリティアップグレードを完成させることができるようにすることができる。アップグレードフィールド515を使用する場合、構造化データコンポーネント520が、まったく存在していなくてもよい。このアップグレード機構は、セキュリティで保護された形で通信するのに別個の接続が要求されないため、有用である。さらに、アップグレードフィールド515は、例えば、圧縮および/または暗号化をネゴシエートするなどの、完全なストリームの他の変換のために使用することもできる。
【0042】
障害フィールド516は、例えば、前のデータストリームが、正しい形式(well formed)ではなかった、またはそれ以外で応答を受けることができない場合などに、障害情報の通信を可能にする。このケースでも、障害フィールド516を使用する場合に、構造化データコンポーネント520が、まったく存在していなくてもよい。
【0043】
その他フィールド517は、可能なプロパティレコードのリストが、拡張可能であることを表す。例えば、その他フィールド517は、例えば、圧縮レベルまたは暗号化レベルなどの、ストリームについてネゴシエーションが行われるべき他の情報を含むことが可能である。
【0044】
以下は、対応するバイトストリームに変換される典型的な3行のSOAPエンベロープの具体的な一例を示す。この具体的な例では、読者が、各行で提示されるバイトストリームの対応するコンポーネントを理解するのを助ける追加のテキストが、各行に追加されている。各行の左端は、括弧内の2桁の番号であり、その2桁は、行番号を表す。この例では、行番号は、01から24までの範囲である。行番号の閉じ括弧の直後に来るのが、バイトをそれぞれが表す2つの16進数字の1つまたは複数のクラスタである。各行を閉じるのが、2重スラッシュ(double foward slash)「//」で始まる、人間が読むことができる注釈(remarks)ステートメントである。バイトストリームは、もちろん、バイトのストリームであり、行に編成されてはいない。以下の例は、論理的な境界に沿って人工的に行に編成されて、読者を助けている。
【0045】
【表2】

【0046】
第1の行(すなわち、行01)は、バイト00を含む。各レコードは、複数のバイトを含むことが可能である。この例では、各レコード内の最初のバイトは、レコードタイプを明らかにする。このケースで00は、レコードがバージョンレコードであることを示す。第2の行および第3の行はそれぞれ、1バイトを含み、第2のリストは、メジャーバージョンを明らかにし、第3の行は、マイナーバージョンを明らかにする。行01ないし行03は一緒になって、図5のバージョンレコード511の一例を表す。
【0047】
行04は、次のレコードに関するレコードタイプ識別子を表す1バイトを含む。ここで、バイト01は、通信モードレコードを表す。行05は、動作モードが単信であることを表す値3を有するバイトを含む。他の典型的な通信モードには、多重、2重、およびシングルトン(singleton)が含まれる。これらの通信モードのそれぞれの意味を、図6Aないし図6Cに関連して以下にさらに説明する。通信モードの数は、さらなるフレーミングバージョンを追加すること、およびバージョンレコードの中でバージョンを適切に明らかにすることにより、拡張することができる。行04と行05は一緒になって、図5のモードレコード512の一例を表す。
【0048】
行06は、viaレコードの先頭を示す、レコードタイプ識別子バイト02を含む。行07は、このケースでは23バイトである、viaレコードの長さを明らかにする。行08ないし行10は、宛先アドレスを「http://example.org/dest」として定義した23個のUTF−8文字を表す23バイトを含む。行06ないし行10は一緒になって、viaレコード513の例を表す。
【0049】
行11は、符号化レコードの先頭を示す、レコードタイプ識別子バイト03を含む。行12は、この例では、UTF−8およびSOAPバージョン1.2に相当する、3という値を有するバイトを含む。行11および行12は一緒になって、図5の符号化レコード514の一例を表す。
【0050】
行13は、サイズド(sized)エンベロープレコードの先頭を示す、レコードタイプ識別子バイト06を含む。サイズドエンベロープレコードは、SOAPエンベロープのサイズのIDと、SOAPエンベロープ自体をともに含む。具体的には、行14は、SOAPエンベロープの長さが、75バイトである(または、UTF−8において各文字を表すのに1バイトが使用されるので、75文字でもある)と明らかにする。行15ないし行24は、この例において最初に提示した3行のSOAPエンベロープに関するUTF−8を表す。したがって、行15ないし行24は共同で、図5の構造化されたデータ522Aのバイトストリーム表現を表す。行14は、図5の長さフィールド521Aを表す。このため、行13ないし行24は共同で、図5の構造化データコンポーネント520Aを表す。
【0051】
他のプロパティレコードを使用して、セキュリティアップグレードの要求または応答を表す、障害を表す、またはその他の情報を表すこともできる。
【0052】
バイトストリーム500は、現時点で、バイトストリームであるため、ユーザデータグラムプロトコル(UDP)、Microsoftメッセージキュー(MSMQ)、TCP、または名前付きパイプなどのバイトストリームを供する任意の通信モジュールに与えられることが可能である。したがって、図3を参照すると、バイトストリームを生成した後、バインドモジュールは、次に、そのバイトストリーム213を、他のコンピューティングシステムと通信するためにバイトストリームを受け入れるバイトストリーム通信モジュール214に送る(動作203)。
【0053】
他のプロパティレコードを使用して、セキュリティアップグレードの要求または応答を表現する、障害を表現する、またはその他の情報を表現することもできる。
【0054】
図4は、構造化されたデータと、バイトストリームのプロパティの両方を表すバイトストリームをまず受信することにより、構造化されたデータを受信するための方法400の流れ図を示す。方法400は、第2のコンピューティングシステム220におけるバインドモジュール222によって実行されることが可能であり、あるいはさらに、メッセージを受信する際に、第1のコンピューティングシステム210におけるバインドモジュール212によって実行されることが可能である。いずれの場合も、メッセージを受信すると、バイトストリーム通信モジュール224(または214)は、バイトストリームを対応するバインドモジュール222(または212)に与える。
【0055】
すると、バインドモジュールは、バイトストリームを受け取る(動作401)。バインドモジュールは、プロパティレコード群を使用して、バージョン情報、通信モードなどを識別することができる。受信側バインドモジュールは、送信側バインドモジュールが、バイトストリームを構築するのに使用したのと同一のフレーミング規則を使用して、バイトストリームを解釈する。したがって、受信側バインドモジュールは、次に、バイトストリームから構造化されたデータを回復することができる(動作402)。送受信するプロセスは、頻繁に繰り返されることが可能である。
【0056】
したがって、本発明の種々原理は、バイトストリーム(TCPなどの)を供する通信モジュールを使用して、構造情報(SOAPエンベロープなどの)を通信するための柔軟性のある機構を説明する。そのような通信モジュールとインターフェースをとる能力は、そのような通信モジュールの柔軟性を利用して、メッセージ交換のパターンおよび信頼性に関するより広い範囲の選択を可能にすることができることを意味する。TCPは、単一要求−単一応答メッセージパターンに限定されない。さらに多くのメッセージパターンを使用して、例えば、SOAP−over−HTTPの、最も本質的な弱点の1つを克服することができる。さらに、この機構は、フレーミングプロトコルに組み込まれた、好都合なセキュリティアップグレードを可能にする。
【0057】
また、通信モードも変更することができる。一実施形態では、これは、図5のようなバイトストリーム500のストリームプロパティ510のモードフィールド512の中に通信モード情報を含めることによって実行される。図6Aないし図6Cは、通信モードレコードによって設定されることが可能な様々な通信モードのいくつかの例を示す。各図では、コンポーネント610が、第1のコンピューティングシステム上の単一の接続(例えば、TCP接続または名前付きパイプ)を表し、他方、コンポーネント620が、第2のコンピューティングシステム上の単一の接続(例えば、TCP接続または名前付きパイプ接続)を表す。
【0058】
図6Aは、多重モードを示す。このモードでは、単一の接続610Aが、単一の接続620Aにデータを送信する。バインドモジュールに対応するバインドレイヤで、様々なメッセージを受信するのに単一の接続が使用されていても、それらのメッセージは異なるエンドポイントにルーティングされるべきである。例として、1つのUniform Resource Identifier(URI)−TCPポート(例えば、接続610Aに関連する)に関連するユーザが、別のURI−TCPポート(例えば、接続620Aに関連する)によって表されるオンライン書店とインターフェースをとることを所望するものと想定されたい。その単一のTCPポートは、いくつかの異なるサービスを提供することができる。例えば、おそらく、1つのサービスが書店在庫目録情報を提供する一方で、別のサービスは書籍購入を提供する。各要求のために異なる接続を使用する必要がない。代わりに、適切な要求611Aが、在庫目録サービスに対する適切なルーティング612Aないし614Aのために、接続620Aに送信され、同一の接続が、書籍購入のために後に使用される。図5の実施形態では、このルーティングは、viaレコード513内の情報を使用して達せられることが可能である。
【0059】
図6Bは、第1のコンピューティングシステムに関して単一の接続610Bを使用して、第2のコンピューティングシステムにおける単一の接続620Bにメッセージ611Bを信頼できる形で送信することができる単信モードを示す。この単信モードも同様に、図5の実施形態におけるモードレコード512内で明らかにされることが可能である。信頼性を確実にするため、矢印612Bで表される、リターン受信確認メッセージまたはリターン受信確認パケットが存在することが可能である。接続620Bは、バイトストリーム613をプロトコルスタックの他のレイヤに提供する。このモードでは、TCPおよび名前付きパイプのケースにおける接続間で、中間のバインドレベルモジュールは、まったく存在しない。しかし、信頼性は、さらに保証される。この信頼性をもたらす受信確認メッセージは、構造データ自体(例えば、図5の構造化されたデータ522A)の中に入っていること、または他の何らかの機構によることが可能である。
【0060】
図6Cは、第1のコンピューティングシステムに関して単一の接続610Cを使用して、第2のコンピューティングシステムにおける単一の接続620Cにメッセージ611Cを信頼できる形で送信する2重モードを示す。この2重モードは、図5の実施形態におけるモードレコード512内で明らかにされることが可能である。信頼性を向上させるように、関連する受信確認メッセージ612Cが存在することが可能であり、接続620Cは、プロトコルスタックにおける他のレイヤに、対応するバイトストリーム613Cを供する。同様に、反対方向で、第2のコンピューティングシステムに関して単一の接続620Cが使用されて、第1のコンピューティングシステムにおける同一の接続610Cにメッセージ621Cが、信頼できる形で送信される。信頼性を向上させるように、関連する受信確認メッセージ622Cが存在することが可能であり、接続610Cは、プロトコルスタックにおける他のレイヤに、対応するバイトストリーム623Cを供する。
【0061】
図示していないが、「シングルトン(singleton)」モードも、図5の実施形態におけるモードフィールド512を使用して選択されることが可能である。単一の接続を使用するこのシングルトンは、サイズが制限されていないバイトストリームを第2のコンピューティングシステムに送信するのに使用される。
【0062】
本発明は、本発明の趣旨または基本的な特徴から逸脱することなく、他の特定の形態で実施することもできる。説明した種々実施形態は、すべての点で、単に例示的であり、限定的ではないものと見なされるべきである。したがって、本発明の範囲は、以上の説明によってではなく、添付の特許請求の範囲によって示される。特許請求の範囲の均等の趣旨および範囲に含まれるすべての変更が、特許請求の範囲に包含されるものとする。
【図面の簡単な説明】
【0063】
【図1】本発明の種々特徴を実施することができる適切なコンピューティングシステムを示す図である。
【図2】本発明の種々原理を使用できるネットワーク環境を示す図である。
【図3】構造化されたデータを、構造化されたデータの表現を含むとともに、その構造化されたデータに関するプロパティ情報を表すバイトストリームにまず変換することにより、構造化されたデータを送信するための方法を示す図である。
【図4】構造化されたデータと、バイトストリームのプロパティをともに表すバイトストリームをまず受信することにより、構造化されたデータを受信するための方法を示す図である。
【図5】構造化されたデータと、バイトストリームのプロパティをともに表すバイトストリームのデータ構造を示す図である。
【図6A】複数のアウトバウンド通信を、単一の受信者コンピューティングシステム上で実行される異なるプロセスに通信するのに、単一の接続が使用される通信モードを示す図である。
【図6B】信頼できる形で単方向通信を行うのに単一の接続が使用される通信モードを示す図である。
【図6C】信頼できる形で双方向通信を行うのに単一の接続が使用される通信モードを示す図である。
【符号の説明】
【0064】
102 処理装置
108 リムーバブルなストレージ
110 リムーバブルでないストレージ
112 通信チャネル
114 入力コンポーネント
116 出力コンポーネント
118 電源
120 ネットワーク
200 ネットワーク環境
210 第1のコンピューティングシステム
211,221 構造化データ
212,222 バインドモジュール
213,223,500 バイトストリーム
214,224 バイトストリーム通信モジュール
220 第2のコンピューティングシステム
510 ストリームプロパティ
520A 構造化データコンポーネント
522A 構造化データ



【特許請求の範囲】
【請求項1】
第1のコンピューティングシステムを含むネットワーク環境であって該コンピューティングシステムが第2のコンピューティングシステムに通信するように結合可能なネットワーク環境において、前記第1のコンピューティングシステムが、前記第2のコンピューティングシステムに構造化データを、対応するバイトストリームを使用して送信する方法であって、
前記第2のコンピューティングシステムに伝送するために、構造化データにアクセスする動作と、
バイトストリームを生成する動作であって、該バイトストリームが、該バイトストリームの1つまたは複数のプロパティを共同で表す第1の複数のバイトと、前記構造化データを共同で表す第2の複数のバイトとを含む動作と、
該バイトストリームを、他のコンピューティングシステムと通信するためにバイトストリームを受け入れるバイトストリーム通信モジュールに渡す動作と
を含むことを特徴とする方法。
【請求項2】
前記アクセスする動作は、前記第1のコンピューティングシステム自体が前記構造化データを生成する動作を含むことを特徴とする請求項1の方法。
【請求項3】
前記アクセスする動作は、前記第1のコンピューティングシステムが前記構造化データを別のコンピューティングシステムから受け取る動作を含むことを特徴とする請求項1の方法。
【請求項4】
前記構造化データはXMLを含むことを特徴とする請求項1の方法。
【請求項5】
前記構造化データはSOAPエンベロープであることを特徴とする請求項1の方法。
【請求項6】
前記バイトストリーム通信モジュールは名前付きパイプ通信モジュールであることを特徴とする請求項5の方法。
【請求項7】
前記バイトストリーム通信モジュールは伝送制御プロトコル(TCP)通信モジュールであることを特徴とする請求項5の方法。
【請求項8】
前記バイトストリーム通信モジュールはユーザデータグラムプロトコル(UDP)通信モジュールであることを特徴とする請求項5の方法。
【請求項9】
前記バイトストリーム通信モジュールは名前付きパイプ通信モジュールであることを特徴とする請求項1の方法。
【請求項10】
前記バイトストリーム通信モジュールは伝送制御プロトコル(TCP)通信モジュールであることを特徴とする請求項1の方法。
【請求項11】
前記バイトストリーム通信モジュールはユーザデータグラムプロトコル(UDP)通信モジュールであることを特徴とする請求項1の方法。
【請求項12】
前記バイトストリーム通信モジュールはMicrosoftメッセージキュー(MSMQ)通信モジュールであることを特徴とする請求項1の方法。
【請求項13】
前記1つまたは複数のプロパティは、前記第2の複数のバイトの中に含められることが可能なプロパティの許容できる集合を定義する、前記バイトストリームのバージョンを含むことを特徴とする請求項1の方法。
【請求項14】
前記1つまたは複数のプロパティは前記バイトストリームの通信モードを含むことを特徴とする請求項1の方法。
【請求項15】
前記通信モードは、前記第1のコンピューティングシステムに関して単一の接続を使用して、前記第2のコンピューティングシステム上の異なるプロセスに複数のバイトストリームを送信することができるモードを含むことを特徴とする請求項14の方法。
【請求項16】
前記通信モードは、前記第1のコンピューティングシステムに関して単一の接続を使用して、前記第2のコンピューティングシステムにバイトストリームを信頼できる形で送信することができるモードを含むことを特徴とする請求項14の方法。
【請求項17】
前記通信モードはまた、前記第1のコンピューティングシステムに関して前記単一の接続を使用して、前記第2のコンピューティングシステムからバイトストリームを信頼できる形で受信することができるモードを含むことを特徴とする請求項16の方法。
【請求項18】
前記バイトストリームの前記通信モードは、単一の接続を使用して、サイズが制限されていないバイトストリームが前記第2のコンピューティングシステムに送信されるモードを含むことを特徴とする請求項14の方法。
【請求項19】
前記1つまたは複数のプロパティは前記第1の複数のバイトに関する符号化フォーマットを含むことを特徴とする請求項1の方法。
【請求項20】
前記1つまたは複数のプロパティは目標宛先Uniform Resource Identifier(URI)を含むことを特徴とする請求項1の方法。
【請求項21】
前記バイトストリームが第1のバイトストリームであり、前記構造化データが第1の構造化データであって、さらに、
第2のバイトストリームの1つまたは複数のプロパティを共同で表す第3の複数のバイトと、第2の構造化データを共同で表す第4の複数のバイトとを含む前記第2のバイトストリームを前記バイトストリーム通信モジュールから受信する動作、および、前記第2の構造化データを前記第2のバイトストリームから回復する動作を含むことを特徴とする請求項1の方法。
【請求項22】
第1のコンピューティングシステムを含むネットワーク環境であって該コンピューティングシステムが第2のコンピューティングシステムに通信するように結合可能なネットワーク環境において使用するための、前記第1のコンピューティングシステムが、前記第2のコンピューティングシステムに構造化データを、対応するバイトストリームを使用して送信する方法を実施するためのコンピュータプログラムであって、該プログラムはコンピュータ実行可能命令を含んだコンピュータ可読媒体に含まれ、該命令が前記第1のコンピューティングシステムの1つまたは複数のプロセッサで実行されると該システムに該方法を実行させ、該方法が、
前記第1のコンピューティングシステムの1つまたは複数のプロセッサによって実行されて、前記第2のコンピューティングシステムに伝送するために、構造化データにアクセスする動作と、
バイトストリームを生成する動作であって、該バイトストリームが、該バイトストリームの1つまたは複数のプロパティを共同で表す第1の複数のバイトと、前記構造化データを共同で表す第2の複数のバイトとを含む動作と、
該バイトストリームを、他のコンピューティングシステムと通信するためにバイトストリームを受け入れるバイトストリーム通信モジュールに渡す動作と
を含むことを特徴とするコンピュータプログラム。
【請求項23】
前記構造化データにアクセスする前記動作は、前記第1のコンピューティングシステム自体が前記構造化データを生成する動作を含むことを特徴とする請求項22のコンピュータプログラム。
【請求項24】
前記構造化データはXMLを含むことを特徴とする請求項22のコンピュータプログラム。
【請求項25】
前記構造化データはSOAPエンベロープであることを特徴とする請求項22のコンピュータプログラム。
【請求項26】
前記バイトストリーム通信モジュールは名前付きパイプ通信モジュールであることを特徴とする請求項25のコンピュータプログラム。
【請求項27】
前記バイトストリーム通信モジュールは伝送制御プロトコル(TCP)通信モジュールであることを特徴とする請求項25のコンピュータプログラム。
【請求項28】
前記バイトストリーム通信モジュールはユーザデータグラムプロトコル(UDP)通信モジュールであることを特徴とする請求項25のコンピュータプログラム。
【請求項29】
前記バイトストリーム通信モジュールは名前付きパイプ通信モジュールであることを特徴とする請求項22のコンピュータプログラム。
【請求項30】
前記バイトストリーム通信モジュールは伝送制御プロトコル(TCP)通信モジュールであることを特徴とする請求項22のコンピュータプログラム。
【請求項31】
前記バイトストリーム通信モジュールはユーザデータグラムプロトコル(UDP)通信モジュールであることを特徴とする請求項22のコンピュータプログラム。
【請求項32】
前記バイトストリーム通信モジュールはMicrosoftメッセージキュー(MSMQ)通信モジュールであることを特徴とする請求項22のコンピュータプログラム。
【請求項33】
前記バイトストリームの前記1つまたは複数のプロパティは、
前記第2の複数のバイトの中に含められることが可能なプロパティの許容できる集合を定義する、前記バイトストリームのバージョン、
前記バイトストリームの通信モード、
前記第1の複数のバイトに関する符号化フォーマット、および、
目標宛先Uniform Resource Identifier(URI)の1つまたは複数の表現
を含むことを特徴とする請求項22のコンピュータプログラム。
【請求項34】
前記バイトストリームが第1のバイトストリームであり、前記構造化データが第1の構造化データであり、前記方法は、
第2のバイトストリームの1つまたは複数のプロパティを共同で表す第3の複数のバイトと、第2の構造化データを共同で表す第4の複数のバイトとを含む前記第2のバイトストリームを前記バイトストリーム通信モジュールから受信する動作と、
前記第2の構造化データを前記第2のバイトストリームから回復する動作をさらに含むことを特徴とする請求項22のコンピュータプログラム。
【請求項35】
前記1つまたは複数のコンピュータ可読媒体は物理的メモリ媒体であることを特徴とする請求項22のコンピュータプログラム。
【請求項36】
前記物理的メモリ媒体は不揮発性メモリを含むことを特徴とする請求項35のコンピュータプログラム。
【請求項37】
前記物理的メモリ媒体はシステムメモリを含むことを特徴とする請求項35のコンピュータプログラム。
【請求項38】
構造化データを共同で表す第1の複数のバイトと、
前記バイトストリームのバージョン、前記バイトストリームの通信モード、前記第1の複数のバイトに関する符号化フォーマット、および目標宛先URIを含む、前記バイトストリームの1つまたは複数のプロパティを共同で表す第2の複数のバイトと
を含むバイトストリームデータ構造を有することを特徴とする1つまたは複数のコンピュータ可読媒体。
【請求項39】
前記構造化データはSOAPエンベロープであることを特徴とする請求項38のコンピュータ可読媒体。
【請求項40】
物理的メモリ媒体であることを特徴とする請求項38のコンピュータ可読媒体。
【請求項41】
前記物理的メモリ媒体は不揮発性メモリを含むことを特徴とする請求項40のコンピュータ可読媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6A】
image rotate

【図6B】
image rotate

【図6C】
image rotate


【公開番号】特開2006−190263(P2006−190263A)
【公開日】平成18年7月20日(2006.7.20)
【国際特許分類】
【出願番号】特願2005−351277(P2005−351277)
【出願日】平成17年12月5日(2005.12.5)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Bluetooth
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】