(57)【特許請求の範囲】
【請求項１】
送信部から１つまたはそれ以上の受領者へメッセージを伝送するためのデータ処理システムにおいて、動的に組み立てられるメッセージングプロトコルに基づいてメッセージを伝送する方法であって、
（１）ルータによって、メッセージペイロードおよび該メッセージペイロードについての１つまたはそれ以上のメッセージングサービス属性を含むメッセージデータをメッセージ送信部から受信するステップと、
（２）各々が、少なくとも１つのメッセージングサービス属性に対応するメッセージングサービスを、該対応するメッセージングサービスを提供するプロトコルに合うヘッダを生成することによって提供するコードモジュールのデータベースを検索し、前記メッセージングサービス属性に基づいて１つまたはそれ以上のコードモジュールを選択するステップと、
（３）前記メッセージペイロードに、前記選択された１つまたはそれ以上のコードモジュールの各々によって提供されるメッセージングサービスに対応する前記メッセージングサービス属性に基づき各ヘッダを付すことによって、メッセージを組み立てるステップと、
（４）前記付されたヘッダに基づいて、前記メッセージを、受領者に配信するため送信するステップと
を備えたことを特徴とする方法。
【請求項２】
各コードモジュールは、前記メッセージングサービス属性の少なくともひとつと関連したサービスを提供することを特徴とする請求項１に記載の方法。
【請求項３】
前記ステップ（２）及び（３）において、各選択されたコードモジュールは、Ｊａｖａ（登録商標）ベースの言語において記述されたソースコードを備えたことを特徴とする請求項１に記載の方法。
【請求項４】
前記ステップ（２）及び（３）において、各選択されたコードモジュールは、データリンクライブラリを備えたことを特徴とする請求項１に記載の方法。
【請求項５】
前記ステップ（２）において、前記コードモジュールは、前記メッセージングサービス属性を実施するように選択されたことを特徴とする請求項１に記載のメッセージ伝送方法。
【請求項６】
前記ステップ（２）において、選択されたコードモジュールは、前記メッセージがパケット又はストリームのいずれを用いて送信されるかを表示するセッションコードモジュールを備えたことを特徴とする請求項１に記載の方法。
【請求項７】
前記ステップ（２）において、選択されたコードモジュールは、パケットが受領者により受信されることを保証する信頼性コードモジュールを備えたことを特徴とする請求項１に記載の方法。
【請求項８】
前記ステップ（２）において、選択されたコードモジュールは、メッセージが他のノードに転送される場合、前記メッセージが転送された機械の送信ノードを通知するリフェラルコードモジュールを備えたことを特徴とする請求項１に記載の伝送方法。
【請求項９】
前記ステップ（２）において、選択されたコードモジュールは、プログレッシブディスカバリを実施するリフェラルコードモジュールを備えたことを特徴とする請求項１に記載の方法。
【請求項１０】
前記ステップ（２）において、選択されたコードモジュールは、前記メッセージが送信部から受領者に進められるようにケイパビリティディスカバリを実施するケイパビリティコードモジュールを備えたことを特徴とする請求項１に記載の方法。
【請求項１１】
前記ステップ（２）において、選択されたコードモジュールは、インテグリティ、暗号化又は認証のうち少なくとも一を実施するセキュリティコードモジュールを備えたことを特徴とする請求項１に記載の方法。
【請求項１２】
前記ステップ（２）において、選択されたコードモジュールは、メッセージトランスポートプロトコルを指定するトランスポートコードモジュールを備えたことを特徴とする請求項１に記載の方法。
【請求項１３】
前記ステップ（２）において、選択されたコードモジュールは、前記メッセージがテキスト又はバイナリのいずれで送信されるかを指定するバインディングコードモジュールを備えたことを特徴とする請求項１に記載の方法。
【請求項１４】
前記データリンクライブラリはＵＲＴ技術を備えたことを特徴とする請求項４に記載の方法。
【請求項１５】
前記ステップ（１）は、コードジェネレータから前記メッセージを受信するステップを備えたことを特徴とする請求項１に記載の方法。
【請求項１６】
前記ステップ（１）において、前記受信されたメッセージデータは、ユーザ入力に基づくことを特徴とする請求項１に記載の方法。
【請求項１７】
送信部から１つまたはそれ以上の受領者へメッセージを送信するためのデータ処理システムであって、
メッセージングサービスをそれぞれ提供する複数のコードモジュールと、
各々が、少なくとも１つのメッセージングサービス属性に対応するメッセージングサービスを、該対応するメッセージングサービスを提供するプロトコルに合うヘッダを生成することによって提供するコードモジュールのデータベースを検索し、前記メッセージングサービス属性に基づいて１つまたはそれ以上のコードモジュールを動的に選択するモジュールセレクタと、
前記メッセージペイロードに、前記選択された１つまたはそれ以上のコードモジュールの各々によって提供されるメッセージングサービスに対応する前記メッセージングサービス属性に基づき各ヘッダを付すことによって、メッセージを組み立て、前記付されたヘッダに基づいて、前記メッセージを、受領者に配信するため選択されたコードモジュールを備えるメッセージングプロトコルを用いてメッセージを送信するメッセージ送信部と
を備えたことを特徴とするデータ処理システム。
【請求項１８】
各選択された前記コードモジュールは、Ｊａｖａ（登録商標）ベースの言語において記述されたソースコードを備えたことを特徴とする請求項１７に記載のデータ処理システム。
【請求項１９】
各選択されたコードモジュールは、データリンクライブラリを備えたことを特徴とする請求項１７に記載のデータ処理システム。
【請求項２０】
前記モジュールセレクタは、所与の通信特性を実施するコードモジュールを選択することを特徴とする請求項１７に記載のデータ処理システム。
【請求項２１】
前記１つまたはそれ以上のコードモジュールは、前記メッセージがパケット又はストリームのいずれを用いて送信されるかを表示するセッションコードモジュールを備えたことを特徴とする請求項１７に記載のデータ処理システム。
【請求項２２】
前記１つまたはそれ以上のコードモジュールは、パケットが受領者により受信されることを保証する信頼性コードモジュールを備えたことを特徴とする請求項１７に記載のデータ処理システム。
【請求項２３】
前記１つまたはそれ以上のプロトコルモジュールは、メッセージが他のノードに転送される場合、前記メッセージが転送された機械の送信ノードを通知するリフェラルコードモジュールを備えたことを特徴とする請求項１７に記載のデータ処理システム。
【請求項２４】
前記１つまたはそれ以上のコードモジュールは、プログレッシブディスカバリを実施するリフェラルコードモジュールを備えたことを特徴とする請求項１７に記載のデータ処理システム。
【請求項２５】
前記１つまたはそれ以上のコードモジュールは、前記メッセージが送信部から受領者に進められるようにケイパビリティディスカバリを実施するケイパビリティコードモジュールを備えたことを特徴とする請求項１７に記載のデータ処理システム。
【請求項２６】
前記１つまたはそれ以上のコードモジュールは、インテグリティ、暗号化又は認証のうち少なくともひとつを実施するセキュリティコードモジュールを備えたことを特徴とする請求項１７に記載のデータ処理システム。
【請求項２７】
前記１つまたはそれ以上のコードモジュールは、メッセージトランスポートプロトコルを指定するトランスポートコードモジュールを備えたことを特徴とする請求項１７に記載のデータ処理システム。
【請求項２８】
前記１つまたはそれ以上のコードモジュールは、前記メッセージがテキスト又はバイナリのいずれで送信されるかを指定するバインディングコードモジュールを備えたことを特徴とする請求項１７に記載のデータ処理システム。
【請求項２９】
前記データリンクライブラリはＵＲＴ技術を備えたことを特徴とする請求項１９に記載のデータ処理システム。
【請求項３０】
コンピュータ読み取り可能な媒体であって、
メッセージングサービスをそれぞれ提供する複数のコードモジュールと、
プロセッサにより実行された場合、
（１）メッセージペイロードおよび該メッセージペイロードについての１つまたはそれ以上のメッセージングサービス属性を含むメッセージデータをメッセージ送信部から受信し、各々が、少なくとも１つのメッセージングサービス属性に対応するメッセージングサービスを、該対応するメッセージングサービスを提供するプロトコルに合うヘッダを生成することによって提供するコードモジュールのデータベースを検索し、前記メッセージングサービス属性に基づいて１つまたはそれ以上のコードモジュールを選択するステップと、
（２）前記メッセージペイロードに、前記選択された１つまたはそれ以上のコードモジュールの各々によって提供されるメッセージングサービスに対応する前記メッセージングサービス属性に基づき各ヘッダを付すことによって、メッセージを組み立て、前記付されたヘッダに基づいて、前記メッセージを、受領者に配信するため該選択されたコードモジュールを備えるメッセージングプロトコルを用いてメッセージを送信するステップと
をデータ処理システムに実行させるコンピュータ読み取り可能な命令と
を備えたことを特徴とするコンピュータ読み取り可能な媒体。
【請求項３１】
各選択されたコードモジュールは、Ｊａｖａ（登録商標）ベースの言語において記述されたソースコードを備えたことを特徴とする請求項３０に記載のコンピュータ読み取り可能な媒体。
【請求項３２】
各選択されたコードモジュールは、データリンクライブラリを備えたことを特徴とする請求項３０に記載のコンピュータ読み取り可能な媒体。
【請求項３３】
前記ステップ（１）において、所与の通信特性を実施するコードモジュールが選択されることを特徴とする請求項３０に記載のコンピュータ読み取り可能な媒体。
【請求項３４】
前記１つまたはそれ以上のコードモジュールは、前記メッセージがパケット又はストリームのいずれを用いて送信されるかを表示するセッションコードモジュールを備えたことを特徴とする請求項３０に記載のコンピュータ読み取り可能な媒体。
【請求項３５】
前記１つまたはそれ以上のコードモジュールは、パケットが受領者により受信されることを保証する信頼性コードモジュールを備えたことを特徴とする請求項３０に記載のコンピュータ読み取り可能な媒体。
【請求項３６】
前記１つまたはそれ以上のコードモジュールは、メッセージが他のノードに転送される場合、前記メッセージが転送された機械の送信ノードを通知するリフェラルコードモジュールを備えたことを特徴とする請求項３０に記載のコンピュータ読み取り可能な媒体。
【請求項３７】
前記１つまたはそれ以上のコードモジュールは、プログレッシブディスカバリを実施するリフェラルコードモジュールを備えたことを特徴とする請求項３０に記載のコンピュータ読み取り可能な媒体。
【請求項３８】
前記１つまたはそれ以上のコードモジュールは、前記メッセージが送信部から受領者に進められるようにケイパビリティディスカバリを実施するケイパビリティコードモジュールを備えたことを特徴とする請求項３０に記載のコンピュータ読み取り可能な媒体。
【請求項３９】
前記１つまたはそれ以上のコードモジュールは、インテグリティ、暗号化又は認証のうち少なくともひとつを実施するセキュリティコードモジュールを備えたことを特徴とする請求項３０に記載のコンピュータ読み取り可能な媒体。
【請求項４０】
前記１つまたはそれ以上のコードモジュールは、メッセージトランスポートプロトコルを指定するトランスポートコードモジュールを備えたことを特徴とする請求項３０に記載のコンピュータ読み取り可能な媒体。
【請求項４１】
前記１つまたはそれ以上のコードモジュールは、前記メッセージがテキスト又はバイナリのいずれで送信されるかを指定するバインディングコードモジュールを備えたことを特徴とする請求項３０に記載のコンピュータ読み取り可能な媒体。
【請求項４２】
前記データリンクライブラリはＵＲＴ技術を備えたことを特徴とする請求項３２に記載のコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【０００１】
本出願は、２００１年１０月１６日出願の米国仮出願第６０／３２９,７９６号、２００１年１０月１９日出願の米国仮出願第６０／３４６,３７０号および２００１年１０月２４日出願の米国仮出願第０９／９３８,５５５号の各出願を基礎とする優先権を主張する。これらの各々の発明は、参照により本発明に組み込まれている。
【０００２】
【発明の属する技術分野】
本発明は、コンピュータメッセージングプロトコルに関する。特に、本発明は、各メッセージを伝送するための特定のプロトコルは、他の装置にメッセージを送るユーザ及び／又はアプリケーションによって要求されるサービスのセットに基づいた、プロトコル形成ブロックから組み立てられるネットワークメッセージングプロトコルに関するものである。
【０００３】
【従来の技術】
コンピュータネットワークは、典型的には、ある機械から他へ情報のパケットを送ることにより通信を行う。異なるハードウェア及び／又はソフトウェアのプラットフォームを持つコンピュータは、予め定めたメッセージプロトコルを用いて通信することにより、他の機械からのメッセージを理解することができる。メッセージは、典型的には、予め定められたプロトコルを用いたメッセージパケットの形式で送られる。ある機械から他へのメッセージは、メッセージのサイズ及びメッセージを配信するために用いられるメッセージプロトコルに応じて、１つ又は２つ以上のメッセージパケットからなることができる。
【０００４】
各プロトコルが予め定められたサービスのセットを提供すること、及びネットワークアプリケーションがプロトコルを選択して、そのアプリケーションが必要とするサービスのセットに基づいて使用できるようにすることが、ネットワークメッセージングプロトコルの典型的な形態である。例えば、各メッセージが受信されることをあるネットワークアプリケーションが保証し、および、権限のないユーザがそのメッセージの内容を見ることができないことをも保証する必要がある場合は、そのネットワークアプリケーションのプログラマ又は他のユーザは、信頼性とセキュリティの双方を提供するネットワークメッセージングプロトコルを選択しなければならない。
【０００５】
シンプルメールトランスファープロトコル（ＳＭＴＰ）のような、既知のメッセージングプロトコルは、予め定められたサービスのセットのみを提供する。例えば、ＳＭＴＰは、信頼できず、保証がないポイントツーポイントのマルチトランスポートのアプリケーション−レベルプロトコルである。すなわち、ＳＭＴＰがアプリケーションのレベルにおいて信頼性がないということは、各メッセージが受領者に受信されることを保証するための機構が組み込まれていないという意味である（すなわち、そのメッセージは廃棄されるかもしれないが、送信部はそれを知ることはないだろう）。配信を保証するために、信頼性のあるトランスポートエレメントが別途追加されなければならない（例えば、メッセージ受信処理を追加してそのプロトコルを拡張する）。ＳＭＴＰは、別途セキュリティが充たされない限り安全ではない。プロトコルを拡張するか（例えば、Ｓ／ＭＩＭＥ）又は、トランスポートセキュリティを用いるか（例えば、ＩＰｓｅｃ）のいずれかにより、セキュリティをＳＭＴＰに追加することができる。ＳＭＴＰプロトコルは、ポイントツーポイントである。アプリケーションはストアアンドフォワード及び経路設定機能を実施することができる。すなわち、あるノードにおいてメッセージが受信されたとき、そのメッセージはメモリ（例えば、ＲＡＭ、ハードディスク等）に書きこまれ、そして次のノードが使用可能であれば次のノードに転送するということである。ＳＭＴＰは、ＴＣＰ／ＩＰのようなマルチプルネットワークトランスポートプロトコルと共同して使用してもよい。
【０００６】
【発明が解決しようとする課題】
選択されたプロトコルが、アプリケーションに必要とされるサービスを提供しなければ、第２のプロトコルが、追加的に、又は、代替的に使用される必要があるかもしれないし、あるいは、選択されたプロトコルを、要求されたサービスを実行するように拡張しなければならない。また、そのプロトコルがアプリケーションが必要とするよりも多くのサービスを提供するときは、余分なサービスを除去しあるいはフィルタアウトする手段はない。これにより、配信時間を低下させ、ＣＰＵ時間及び／又は電力を増大させ、不必要に各メッセージパケット又は伝送のサイズを増大させ、及びアプリケーション又はメッセージを交換するウェブサービスの必要性に適切でないエラー条件を招くおそれがある。
【０００７】
従って、要求するユーザ又はアプリケーションプログラムが必要とするところに基づいて、サービスを組み立てるネットワークメッセージングプロトコルを提供することはこの種の技術における進歩であろう。さらに、メッセージごとに動的にメッセージングプロトコルを組み立てることができることも本技術分野における進歩であろう。
【０００８】
【課題を解決するための手段】
本発明は、一組のメッセージングサービスをプロトコレット（ｐｒｏｔｏｃｏｌｅｔｔｅ）と呼ばれる組み立て可能なプロトコルのサービスモジュールに分解することにより生成される組み立て可能なメッセージプロトコルとして実施することができる。すなわち、別個のメッセージングサービス（例えば、信頼性、セキュリティなど）が各々プロトコレットにおいて実施されてもよいということである。この各プロトコレットは他のプロトコレットと組み合わされ、アプリケーションプログラム又はユーザが要求するサービスを提供する一意的なメッセージングプロトコルを生成することができる。このようにして、一意的なメッセージングプロトコルが、各ネットワークメッセージのために生成されるので、ネットワークアプリケーション又はユーザが要求する資源のみが使用されるようにできる。
【０００９】
本発明の第１の形態は、組み立て可能なメッセージングプロトコルを用いてメッセージを伝送する方法である。ルータは、メッセージについての選択された配信特性の組を示す特性情報を含んだメッセージデータを受信する。このルータは、受信した特性情報に基づきコードモジュールを選択し、及び選択されたコードモジュールを用いてメッセージプロトコルを組み立てる。ルータは、構築されたメッセージプロトコルを用いてメッセージを送信する。
【００１０】
本発明の他の形態は、メッセージを伝送するためのデータ処理システムである。このデータ処理システムは、それぞれメッセージングサービスを提供する複数のコードモジュール、所望の通信特性を表した入力属性に基づき少なくとも一つのコードモジュールを動的に選択するモジュールセレクタ、及び選択されたコードモジュールを含むメッセージングプロトコルを用いてメッセージを送信するためのメッセージ送信部を有する。
【００１１】
本発明の他の形態は、それぞれメッセージサービス、及びプロセッサにより実行されるときに、データ処理システムにより１セットのステップを実行させるコンピュータ読み取り可能な命令を含むコンピュータ読み取り可能な記録媒体である。このコードモジュールは、各々、メッセージングサービスを提供する。コードモジュールは、所望の通信特性を表した入力属性に基づき少なくとも一つのコードモジュールを選択し、及び選択されたコードモジュールを備えたメッセージングプロトコルを用いてメッセージは送信される。
【００１２】
本発明のある実施例では、各コードモジュールは、シンプルオブジェクトアクセスプロトコル（ＳＯＡＰ）拡張版を含む。他の実施例では、各コードモジュールはＪａｖａ（登録商標）Ｂｅａｎを含む。
【００１３】
ある実施例では、所望の通信特性を実行するため、各コードモジュールが選択される。
【００１４】
上述した目的を達成するために、請求項１に記載の発明は、送信部から１つまたはそれ以上の受領者へメッセージを伝送するためのデータ処理システムにおいて、動的に組み立てられるメッセージングプロトコルに基づいてメッセージを伝送する方法であって、（１）ルータによって、メッセージペイロードおよびメッセージペイロードについての１つまたはそれ以上のメッセージングサービス属性を含むメッセージデータをメッセージ送信部から受信するステップと、（２）各々が、少なくとも１つのメッセージングサービス属性に対応するメッセージングサービスを、対応するメッセージングサービスを提供するプロトコルに合うヘッダを生成することによって提供するコードモジュールのデータベースを検索し、メッセージングサービス属性に基づいて１つまたはそれ以上のコードモジュールを選択するステップと、（３）メッセージペイロードに、選択された１つまたはそれ以上のコードモジュールの各々によって提供されるメッセージングサービスに対応する前記メッセージングサービス属性に基づき各ヘッダを付すことによって、メッセージを組み立てるステップと、（４）付されたヘッダに基づいて、メッセージを、受領者に配信するため送信するステップとを備えたことを特徴とする。
【００１５】
請求項２に記載の発明は、請求項１に記載のメッセージ伝送方法において、各コードモジュールは、選択された属性の少なくとも一と関連したサービスを提供することを特徴とする。
【００１６】
請求項３に記載の発明は、請求項１に記載のメッセージ伝送方法のステップ（２）及び（３）において、各選択されたコードモジュールは、Ｊａｖａ（登録商標）ベースの言語において記述されたソースコードを備えたことを特徴とする。
【００１７】
請求項４に記載の発明は、請求項１に記載のメッセージ伝送方法のステップ（２）及び（３）において、各選択されたコードモジュールは、データリンクライブラリを備えたことを特徴とする。
【００１８】
請求項５に記載の発明は、請求項１に記載のメッセージ伝送方法のステップ（２）において、前記モジュールは、選択された属性を実施するように選択されたことを特徴とする。
【００１９】
請求項６に記載の発明は、請求項１に記載のメッセージ伝送方法のステップ（２）において、選択されたコードモジュールは、前記メッセージがパケット又はストリームのいずれを用いて送信されるかを表示するセッションコードモジュールを備えたことを特徴とする。
【００２０】
請求項７に記載の発明は、請求項１に記載のメッセージ伝送方法のステップ（２）において、選択されたコードモジュールは、パケットが受領者により受信されることを保証する信頼性コードモジュールを備えたことを特徴とする。
【００２１】
請求項８に記載の発明は、請求項１に記載のメッセージ伝送方法のステップ（２）において、選択されたコードモジュールは、メッセージが他のノードに転送される場合、メッセージが転送された機械の送信ノードを通知するリフェラルコードモジュールを備えたことを特徴とする。
【００２２】
請求項９に記載の発明は、請求項１に記載のメッセージ伝送方法のステップ（２）において、選択されたコードモジュールは、プログレッシブディスカバリを実施するリフェラルコードモジュールを備えたことを特徴とする。
【００２３】
請求項１０に記載の発明は、請求項１に記載のメッセージ伝送方法のステップ（２）において、選択されたコードモジュールは、メッセージが送信部から受領者に進められるようにケイパビリティディスカバリを実施するケイパビリティコードモジュールを備えたことを特徴とする。
【００２４】
請求項１１に記載の発明は、請求項１に記載のメッセージ伝送方法のステップ（２）において、選択されたコードモジュールは、インテグリティ、暗号化又は認証のうち少なくとも一を実施するセキュリティコードモジュールを備えたことを特徴とする。
【００２５】
請求項１２に記載の発明は、請求項１に記載のメッセージ伝送方法のステップ（２）において、選択されたコードモジュールは、メッセージトランスポートプロトコルを指定するトランスポートコードモジュールを備えたことを特徴とする。
【００２６】
請求項１３に記載の発明は、請求項１に記載のメッセージ伝送方法のステップ（２）において、選択されたコードモジュールは、メッセージがテキスト又はバイナリのいずれで送信されるかを指定するバインディングコードモジュールを備えたことを特徴とする。
【００２７】
請求項１４に記載の発明は、請求項４に記載のメッセージ伝送方法において、データリンクライブラリはＵＲＴ技術を備えたことを特徴とする。
【００２８】
請求項１５に記載の発明は、請求項１に記載のメッセージ伝送方法のステップ（１）は、コードジェネレータからメッセージを受信するステップを備えたことを特徴とする。
【００２９】
請求項１６に記載の発明は、請求項１に記載のメッセージ伝送方法のステップ（１）において、受信されたメッセージデータは、ユーザ入力に基づくことを特徴とする。
【００３０】
請求項１７に記載の発明は、送信部から１つまたはそれ以上の受領者へメッセージを送信するためのデータ処理システムであって、メッセージングサービスをそれぞれ提供する複数のコードモジュールと、各々が、少なくとも１つのメッセージングサービス属性に対応するメッセージングサービスを、対応するメッセージングサービスを提供するプロトコルに合うヘッダを生成することによって提供するコードモジュールのデータベースを検索し、メッセージングサービス属性に基づいて１つまたはそれ以上のコードモジュールを動的に選択するモジュールセレクタと、メッセージペイロードに、選択された１つまたはそれ以上のコードモジュールの各々によって提供されるメッセージングサービスに対応する前記メッセージングサービス属性に基づき各ヘッダを付すことによって、メッセージを組み立て、付されたヘッダに基づいて、メッセージを、受領者に配信するため選択されたコードモジュールを備えるメッセージングプロトコルを用いてメッセージを送信するメッセージ送信部とを備えたことを特徴とする。
【００３１】
請求項１８に記載の発明は、請求項１７に記載のデータ処理システムにおいて、各選択されたコードモジュールは、Ｊａｖａ（登録商標）ベースの言語において記述されたソースコードを備えたことを特徴とする。
【００３２】
請求項１９に記載の発明は、請求項１７に記載のデータ処理システムにおいて、各選択されたコードモジュールは、データリンクライブラリを備えたことを特徴とする。
【００３３】
請求項２０に記載の発明は、請求項１７に記載のデータ処理システムにおいて、モジュールセレクタは、所与の通信特性を実施するコードモジュールを選択することを特徴とする。
【００３４】
請求項２１に記載の発明は、請求項１７に記載のデータ処理システムにおいて、少なくともひとつのコードモジュールは、メッセージがパケット又はストリームのいずれを用いて送信されるかを表示するセッションコードモジュールを備えたことを特徴とする。
【００３５】
請求項２２に記載の発明は、請求項１７に記載のデータ処理システムにおいて、少なくともひとつのコードモジュールは、パケットが受領者により受信されることを保証する信頼性コードモジュールを備えたことを特徴とする。
【００３６】
請求項２３に記載の発明は、請求項１７に記載のデータ処理システムにおいて、少なくともひとつのコードモジュールは、メッセージが他のノードに転送される場合、メッセージが転送された機械の送信ノードを通知するリフェラルコードモジュールを備えたことを特徴とする。
【００３７】
請求項２４に記載の発明は、請求項１７に記載のデータ処理システムにおいて、少なくともひとつのコードモジュールは、プログレッシブディスカバリを実施するリフェラルコードモジュールを備えたことを特徴とする。
【００３８】
請求項２５に記載の発明は、請求項１７に記載のデータ処理システムにおいて、少なくともひとつのコードモジュールは、メッセージが送信部から受領者に進められるようにケイパビリティディスカバリを実施するケイパビリティコードモジュールを備えたことを特徴とする。
【００３９】
請求項２６に記載の発明は、請求項１７に記載のデータ処理システムにおいて、少なくともひとつのコードモジュールは、インテグリティ、暗号化又は認証のうち少なくともひとつを実施するセキュリティコードモジュールを備えたことを特徴とする。
【００４０】
請求項２７に記載の発明は、請求項１７に記載のデータ処理システムにおいて、少なくともひとつのコードモジュールは、メッセージトランスポートプロトコルを指定するトランスポートコードモジュールを備えたことを特徴とする。
【００４１】
請求項２８に記載の発明は、請求項１７に記載のデータ処理システムにおいて、少なくともひとつのコードモジュールは、メッセージがテキスト又はバイナリのいずれで送信されるかを指定するバインディングコードモジュールを備えたことを特徴とする。
【００４２】
請求項２９に記載の発明は、請求項１９に記載のデータ処理システムにおいて、データリンクライブラリはＵＲＴ技術を備えたことを特徴とする。
【００４３】
請求項３０に記載の発明は、コンピュータ読み取り可能な媒体であって、メッセージングサービスをそれぞれ提供する複数のコードモジュールと、プロセッサにより実行された場合、（１）メッセージペイロードおよびメッセージペイロードについての１つまたはそれ以上のメッセージングサービス属性を含むメッセージデータをメッセージ送信部から受信し、各々が、少なくとも１つのメッセージングサービス属性に対応するメッセージングサービスを、対応するメッセージングサービスを提供するプロトコルに合うヘッダを生成することによって提供するコードモジュールのデータベースを検索し、メッセージングサービス属性に基づいて１つまたはそれ以上のコードモジュールを選択するステップと、（２）メッセージペイロードに、選択された１つまたはそれ以上のコードモジュールの各々によって提供されるメッセージングサービスに対応する前記メッセージングサービス属性に基づき各ヘッダを付すことによって、メッセージを組み立て、付されたヘッダに基づいて、メッセージを、受領者に配信するため選択されたコードモジュールを備えるメッセージングプロトコルを用いてメッセージを送信するステップとをデータ処理システムに実行させるコンピュータ読み取り可能な命令と
を備えたことを特徴とする。
【００４４】
請求項３１に記載の発明は、請求項３０に記載のコンピュータ読み取り可能な媒体において、各選択されたコードモジュールは、Ｊａｖａ（登録商標）ベースの言語において記述されたソースコードを備えたことを特徴とする。
【００４５】
請求項３２に記載の発明は、請求項３０に記載のコンピュータ読み取り可能な媒体において、各選択されたコードモジュールは、データリンクライブラリを備えたことを特徴とする。
【００４６】
請求項３３に記載の発明は、請求項３０に記載のコンピュータ読み取り可能な媒体のステップ（１）において、所与の通信特性を実施するコードモジュールが選択されることを特徴とする。
【００４７】
請求項３４に記載の発明は、請求項３０に記載のコンピュータ読み取り可能な媒体であって、少なくともひとつのコードモジュールは、前記メッセージがパケット又はストリームのいずれを用いて送信されるかを表示するセッションコードモジュールを備えたことを特徴とする。
【００４８】
請求項３５に記載の発明は、請求項３０に記載のコンピュータ読み取り可能な媒体であって、少なくともひとつのコードモジュールは、パケットが受領者により受信されることを保証する信頼性コードモジュールを備えたことを特徴とする。
【００４９】
請求項３６に記載の発明は、請求項３０に記載のコンピュータ読み取り可能な媒体であって、少なくともひとつのコードモジュールは、メッセージが他のノードに転送される場合、メッセージが転送された機械の送信ノードを通知するリフェラルコードモジュールを備えたことを特徴とする。
【００５０】
請求項３７に記載の発明は、請求項３０に記載のコンピュータ読み取り可能な媒体であって、少なくともひとつのコードモジュールは、プログレッシブディスカバリを実施するリフェラルコードモジュールを備えたことを特徴とする。
【００５１】
請求項３８に記載の発明は、請求項３０に記載のコンピュータ読み取り可能な媒体であって、少なくともひとつのコードモジュールは、メッセージが送信部から受領者に進められるようにケイパビリティディスカバリを実施するケイパビリティコードモジュールを備えたことを特徴とする。
【００５２】
請求項３９に記載の発明は、請求項３０に記載のコンピュータ読み取り可能な媒体であって、少なくともひとつのコードモジュールは、インテグリティ、暗号化又は認証のうち少なくともひとつを実施するセキュリティコードモジュールを備えたことを特徴とする。
【００５３】
請求項４０に記載の発明は、請求項３０に記載のコンピュータ読み取り可能な媒体であって、少なくともひとつのコードモジュールは、メッセージトランスポートプロトコルを指定するトランスポートコードモジュールを備えたことを特徴とする。
【００５４】
請求項４１に記載の発明は、請求項３０に記載のコンピュータ読み取り可能な媒体であって、少なくともひとつのコードモジュールは、メッセージがテキスト又はバイナリのいずれで送信されるかを指定するバインディングコードモジュールを備えたことを特徴とする。
【００５５】
請求項４２に記載の発明は、請求項３２に記載のコンピュータ読み取り可能な媒体であって、データリンクライブラリはＵＲＴ技術を備えたことを特徴とする。
【００５６】
【発明の実施の形態】
メッセージサービスの属性は、１つ又は２つ以上の以下の要素を含むことができる：経路設定、セッション制御、信頼性、リフェラル（ｒｅｆｅｒｒａｌ）、セキュリティ、識別性（ｉｄｅｎｔｉｔｙ）、事象化（ｅｖｅｎｔｉｎｇ）、バインディング（ｂｉｎｄｉｎｇ）、物理的輸送（ｔｒａｎｓｐｏｒｔ）、ケイパビリティディスカバリ（ｃａｐａｂｉｌｉｔｙ  ｄｉｓｃｏｖｅｒｙ）、及び参照点（時刻、期間、タイプなど）。これらの属性は、一般に、５つのカテゴリーに分けることができる：チャネル、トポロジー、セキュリティ、輸送、及び包括的属性。チャネル属性は、セッション制御と信頼性を含む。セッション制御は一般的に、２つの機械の間における接続の型を定義する能力をいう。すなわち、機械が、パケットに基づいた形態（データグラム）で通信を行うか、あるいは２つの機械の間でセッション接続（例えば、バーチャルサーキット）を生成することにより通信する。信頼性は、一般に、各メッセージ又はパケットがその受領者により受信されること、又はそのメッセージが受領者により受信されない場合は、送信部は受領者によりメッセージが受信されなかったことを肯定的に知ることを保証する能力である。信頼性は、パケット／メッセージを順番に配信する保証のみならず、メッセージが１回だけまたは多くても１回だけ正確に配信されるかどうかを決定する能力を含む。
【００５７】
トポロジー属性は、経路設定、バインディング、リフェラル、及び事象化を含む。経路設定は、種々のエンドポイントセマンティクス（例えば、ポイントツーポイント、ルーテッド，ストアアンドフォワード）を用いて、メッセージの経路設定をするためのメッセージプロトコルの能力、及び加えてファイヤウォールを越えるためのメッセージプロトコルの能力を含む。ポイントツーポイント経路設定は、メッセージがその受領者に到達する前に超えなければならない各ノードを、送信部が特定する必要性をいう。ルーテッドプロトコルは、エンドポイントを特定あうることのみ必要であり、かつメッセージは、各中間ノードにおいて自動的に経路設定される。バインディングは、マルチトランスポート（例えば、ＴＣＰ／ＩＰ及びＵＤＰ／ＩＰ）をサポートするためのメッセージプロトコルの能力を含む。リフェラルは、プログレッシブディスカバリを実行するための能力をいう。事象化は、システムで起こった事象を監視し、広く伝搬する能力に基づき会話プロセッサ間の同期通信をサポートする能力に関する。通信のモードは様々であり、１対１又は１対多を含んでもよい。事象化サービスの種類も、様々であり、事象が定義されるユーザ定義のトピックスの任意のコレクションを持つものに事象を通知するトピックスの固定のセットを持つものを含む。
【００５８】
セキュリティの属性は、メッセージインテグリティ、機密性、非拒否性、暗号化、認証、及びポイントツーポイント対エンドツーエンドのセキュリティを含む。メッセージインテグリティは、受信されたメッセージが、送られたメッセージと同一であること、及びそのメッセージが、伝送中に（偶発的又は恣意的にも）変更されなかったことを保証する。受領者のみにメッセージの機密性は、メッセージの内容を見ることを許可する能力をいう。認証は、妥当な確実度で送信部の同一性を保証する能力をいう。これに対して、非拒否性は、認証よりも高い確実度で送信部の同一性を保証する能力をいう。すなわち、もしメッセージが、ｍｓｇ．ｆｒｏｍ＝‘ｓａｍ’という属性を持つなら、認証は、サムが実際にメッセージを送信したことを（ハッカーなどの第三者がサムからであると主張してメッセージを送信する、普通スプーフィングと呼ばれる、行為に対抗して）受領者が確認する能力をいい、それに対して、非拒否性は、送信部が、彼女が事実そのメッセージを送信しなかったと主張することを禁止する能力をいう。暗号化は、その技術においてよく知られているように意図した受領者のみがメッセージの内容を見ることができることを保証する方法であり、機密性を達成するために用いることができる。
【００５９】
ポイントツーポイントのセキュリティは、送信部から受領者へのメッセージの経路において各ホップに対してメッセージを守るプロセスをいう。例えば、メッセージが機械アルファから機械エコーに、機械ブラボー、チャーリー及びデルタを経由して送信されるとする。ポイントツーポイントのセキュリティは、アルファにおけるブラボー向けのメッセージ、ブラボーにおいてはチャーリー向けのメッセージ、チャーリーにおいてはデルタ向けのメッセージ、及びデルタにおいてはエコー向けのメッセージを守る。いかなる中間の機械も不適切にメッセージの内容を変更し又は見ることはできない。
【００６０】
伝送属性は、トランスポートバインディングと物理的サポートを含む。物理的サポートは、多重伝送（例えば、ＴＣＰ、ＵＤＰ、ＨＴＴＰ、ＳＭＴＰ等）をサポートするメッセージプロトコルの能力をいう。バインディングは、種々の符号化方法（例えば、テキスト及びバイナリ）をサポートする能力を含んでいる。
【００６１】
包括的な属性は、アプリケーションにより特に要求されるサービスにかかわりなく、含まれるべきいかなるサービスにも関係する。包括的サービスは、ケイパビリティディスカバリ及び参照サービスを含む。ケイパビリティディスカバリは、一般的に、受領者のノードに、メッセージプロトコルがサポートし又は含むそれらのサービスをアナウンスするためのプロトコルの能力である。例えば、メッセージは、それがサポートする基本的なサービスのリストを含むことができ、かつ受信ノードは、その受信ノードもサポートしていないメッセージ特定のプロトコルにおけるそれらのヘッダを無視することができる。参照サービスは、時刻、期間、タイプ等を含むことができる。例えば、参照点は、いつメッセージの本体がシステムへの関心を失い廃棄されるべきかを定める特定の時間基準をメッセージに添付することができる。
【００６２】
グローバルな及び非グローバルな独立のプロトコル要素（属性）は、組み合わせて、ネットワークアプリケーションによって望まれ、あるいは必要とされるいかなるタイプのメッセージングシステムをも生成することができる。使用される個別のプロトコル要素は、それらが組み立て可能であるという事実に比べれば二次的である。すなわち、それらが矛盾なく共に統合することができる。
【００６３】
図１は、本発明の一実施例によるデータフロー図を示す。ネットワークアプリケーション１０１は、特定のメッセージに対し必要とされるサービス又は特性を定義する新しいメッセージ１０２を生成する。例えば、ある実施例においては、ネットワークアプリケーションは、いずれの特定のプロトコレットが用いて結果として得られるメッセージプロトコルを組み立てるかを示すことができる。他の実施例では、ネットワークアプリケーションはメッセージ属性１０３を定める。メッセージ属性１０３は、要求されたメッセージプロトコルの特性（信頼性及Ｂｅａｎテグリティ）を試行する属性のみならず、要求されたメッセージプロトコルのサービスとは独立した属性（メッセージ「ｆｒｏｍ」、「ｔｏ」及び「ｂｏｄｙ」）を含む。すなわち、信頼性の特性が、順序付け（ｓｅｑｕｅｎｃｉｎｇ）かつ流れ付け（ｓｔｒｅａｍｉｎｇ）セッションサービスを使用すべきであることを示しているということである。本実施例においては、ネットワークアプリケーション１０１は、信頼性があり（すなわち、受領者によるメッセージの受信が保証され）かつメッセージインテグリティを維持する（すなわち、このメッセージングプロトコルはメッセージが伝送中に変更されないことを保証する）メッセージングプロトコルを用いてメッセージ１０２を送信すべきであることを特定する。
【００６４】
ネットワークアプリケーション１０１は、コードジェネレータ１０５にアプリケーションプログラミングモデル１０４を介してメッセージ１０２を送信する。アプリケーションプログラミングモデルは、ネットワークアプリケーションが書き込まれるプラットホームとすることができる。例えば、アプリケーションプログラミングモデル１０４は、本技術分野でよく知られているように、コンピュータのオペレーティングシステムとすることもでき、または、バーチャルマシンとすることもできる。
【００６５】
コードジェネレータ１０５は、ソースメッセージ１０２を分析し、要求されたメッセージサービス及び／又は特性に基づいて、メッセージタグ及びヘッダを生成する。適切なメッセージタグ及びヘッダを生成する場合、コードジェネレータ１０５は、タグとヘッダを含む、組み立てられたメッセージをメッセージルータ１１１に送信する。メッセージルータ１１１は、組み立てられたメッセージを分析し、どのプロトコレット１０９を用いるかを決定する。メッセージルータ１１１は、メモリ１０７から適切なプロトコレットを検索する。メモリ１０７は、ルータがアクセスするプロトコレットのデータベース、ハードディスクドライブ、又はその他任意のデータ記憶装置あるいは媒体とすることができる。メッセージルータ１１１は、選択されたプロトコレットを用いてメッセージ特定のプロトコルを組み立て、及び組み立てられたプロトコルを用いて、メッセージをネットワーク１１３に送信し、さらに目的地１１５へ配信する。
【００６６】
ルータ１１１は、動的に生成されたメッセージ特定のプロトコルを理解することができると本技術分野において知られているように、いかなるルータであってもよい。本発明の一実施例においては、プロトコレットは、シンプルオブジェクトアクセスプロトコロル（ＳＯＡＰ）拡張版として記述することができ、ルータは、動的に生成されたメッセージングプロトコルを扱うように修正されたＳＯＡＰルータとすることができる。ＳＯＡＰは、その定義されているように、包括的なネットワークメッセージサービスを提供はしないが、開発者がプロトコルを拡張して追加のサービスを提供できるようにすることができる拡張可能なメッセージプロトコルである。すなわち、変更されたＳＯＡＰルータは、ＳＯＡＰ拡張版をサポートし、コードジェネレータから受信したヘッダ情報に基づいてメッセージ特定のプロトコルを構築することができる。他の実施例においては、プロトコレットは、Ｊａｖａ（登録商標）又はＪａｖａ（登録商標）ベースの言語で記述することができ、ルータは以下にさらに述べるようにＪａｖａ（登録商標）準拠のルータとすることができる。
【００６７】
図２は、本発明の一実施例による組み立て可能なメッセージングプロトコルを用いてメッセージを組み立てて送信するための方法を示す図である。まず、ステップ２０１において、ネットワークアプリケーション又は他のメッセージコンストラクタはメッセージペイロードを構築する。メッセージペイロードは、ユーザ又はアプリケーションデータを含む。ステップ２０３では、ネットワークアプリケーションは、例えば選択されたサービス及び／又は特性に対するユーザの要求に対応して、メッセージ基準を設定する。すなわち、ネットワークアプリケーションは、各メッセージに、メッセージを生成するネットワークアプリケーション（あるいはユーザ）により要求されたそれらのサービス及び／又は特性の指示を含める。
【００６８】
ステップ２０５では、コードジェネレータが、選択されたサービス及び／又は特性に基づいてプロトコルヘッダ及びタグを生成し、かつ新たに生成されたヘッダ及びタグと共にメッセージをカプセル化する。ステップ２０７では、カプセル化したメッセージを受信した後、ルータは、プロトコレットを選択することによって一意的なメッセージングプロトコルを組み立てる。これらのプロトコレットは、組み合わされたときに、メッセージ基準に基づき、要求されたメッセージングサービス及び／又は特性を提供する。ルータは、選択されたサービス／特性をプロトコレットに１対１マッピングすることに基づいて、プロトコレットを選択することができる。あるいはまた、選択されたサービス及び／又は特性に基づき特定のプロトコレットを選択するようコードジェネレータに命令するマッピングテーブルに基づいてコードジェネレータがプロトコレットを選択することができる。例えば、アプリケーションが安全で信頼性のあるメッセージの対話を要求する場合、マッピングテーブルは、用いることのできる信頼性のあるトランスポートにわたって、認証、セキュリティ、機密性、セッション、タイムマーカ及び順序付けのプロトコレットが使用されるべきであることを示してもよい。一意的なメッセージングプロトコルを組み立てた後、ステップ２０９では、ルータは、受領者に配信するためのメッセージを伝送する。
【００６９】
一実施例では、コードジェネレータは、プロトコレット（又は、以下に議論するようにＪａｖａ（登録商標）Ｂｅａｎ）を組み合わせてメッセージ特定のプロトコルを組み立てる。本発明の他の実施例では、コードジェネレータは、（ステップ２０１で生成されたメッセージペイロード中の要求されたヘッダに加えて）選択されたサービスの各々のための情報を含む一意的なメッセージヘッダを組み立てる。コードジェネレータは、メッセージペイロード及び一意的なメッセージヘッダをルータに送信してもよい。ルータは、一意的なヘッダ情報に基づいて、メモリ（例えば、ハードディスク、ＲＡＭ等）に格納されたプロトコレットからメッセージ特定のプロトコルを組み立てる。
【００７０】
個別のプロトコレットは、上記のメッセージプロトコル属性の各々に対して生成させることができる。すなわち、バインディングのためにあるプロトコレットが存在し、事象化のためには又別のものが存在するといった具合である。プロトコレットは、組み立て要求に基づいて生成又は選択されることができる。例えば、信頼性を提供するには、メッセージパケットの順序付け及び流れ付けされたセッション（例えば、バーチャルサーキット）の使用が要求される。したがって、メッセージが信頼性を要求するときは、コードジェネレータは自動的に、ストリームセッションプロトコレット及び順序付けプロトコレットを選択することができる。あるいはまた、順序付けとストリームセッションの双方を実行するためのロジックを含む信頼性プロトコレットが存在してもよい。同じことが、ユーザ及びシステムの必要性と要求に基づいた他の組み合わせに関しても言える。
【００７１】
上で参照した属性に加えて又はそれらに代えて、他のプロトコレットを生成することができる。本発明の一実施例においては、プロトコレットは、（プロトコレットモジュールタイトルを付した）以下のコンポーネントの少なくとも各々に対して生成される：ケイパビリティ（ＡＣＣＥＰＴ）、同意（ＡＰ）、事象化及び通知（ＥＮ）、ライセンス（ＬＩＣ）、リフェラル（ＲＥＦ）、信頼性メッセージング（ＲＭ）、経路設定（ＲＰ）、セキュリティ（ＳＥＣ）、セッション管理（ＳＥＳＳＩＯＮＳ）、及びメッセージタイムマーカ（ＴＩＭＥ）。各コンポーネントは、それによって提供されるサービスを定める標準のタグ及びヘッダを定めることができる。
【００７２】
ケイパビリティ（ＡＣＣＥＰＴ）コンポーネントは、メッセージ送信部（インターラクションの起動者又は応答者のいずれか）が、サポートする基本的ケイパビリティのリストを含めるための方法を特定することができる。一実施例においては、これを、メッセージ交換を成功させるために要求された特性の予め定められたセットを参照するＵＲＩ（又はＵＲＬ）のリストとすることができる。すなわち、このセットがメッセージ送信部のサポートするケイパビリティを示すことができる。ある実施例では、これを、メッセージ送信部が理解することができる予め定められ又は定義されたプロトコレットのセットとすることができる。他の実施例では、メッセージ送信部がサポートするプロトコレットの各々のために別々のリストを提供することができる。さらに他の実施例では、ブーリアン及び他の条件（例えば、時間範囲）を持ったエクスプレッシブランゲッジを特定することができる。いくつかの実施例では、ＸＭＬを用いて、上述の機能を実現することができる。
【００７３】
トランザクション同意コンポーネント（ＡＰ）は、１セットの参加者がマルチパーティ計算のトランザクション結果に関して同意するための方法を特定することができる。一実施例では、この同意は、本技術分野でよく知られているとおり、伝統的な２つのフェーズのコミットプロトコルを用いて達成することができる。他の実施例では、同意は、任意だが了解済みの期間の間、ネットワークから切断されるコンピュータのためのサポートを含む。さらに他の実施例では、同意は、参加者が補償又はキャンセルの動作を用いることをサポートする機構を含む。
【００７４】
事象化及び通知コンポーネント（ＥＮ）は、コンポーネントが感心あるトピックスを広告するためのメッセージを送受信する方法、コンポーネントがそれらの関心あるトピックスにおいて事象の通知を登録する方法、及びサービスがトピックスの購読者に事象通知を配信する方法を指定する。このコンポーネントは、トピックスに対する事象通知の発行者及び購読者を、独立したメッセージの送信部及び受信部として取り扱う。その機能の一つは、関連する情報の非同期通信が独立したプロセスの間での状態変化により引き起こされることを認めることである。一実施例では、全てのトピックスが広告される、中心化した場所がある。全ての購読者の要求が受信されるのが、この場所においてである。他の実施例では、トピックスが管理されるサービスコンポーネントの重なったネットワークが存在しうる。購読者は、これらのサービスコンポーネントのいずれの一つにおいても購読を要求することができる。
【００７５】
ライセンスコンポーネント（ＬＩＣ）は、特定のセキュリティ証明のフォーマットを通すための機構を提供することができる。一実施例においては、証明書はバイナリ情報として通される。他の実施例では、それはセマンティックＸＭＬとして通されてもよい。第三の実施例においては、それはそれら２つの組合せとすることができる。ライセンスコンポーネントは、既知のライセンスフォーマットを符号化するために用いるタグ及び任意のバイナリの証明書を通すときに用いる一つのタグを定義することができる。
【００７６】
リフェラルコンポーネント（ＲＥＦ）は、メッセージの送信部及び受信部がサービスの場所の情報を取得し、これらの場所への加速された経路設定を得るようにすることができる。中心の起動情報は、このメッセージによって実施される動作である。このような動作は、その性質上任意のものであるが、メッセージの標準エンベロープ情報の一部としてコード化することができる。一実施例では、リフェラルサービスは、命名及び経路設定サービスと共に構築される。その操作は、ソースと送り先との間を伝送されているメッセージの［返信アドレス］及び［転送アドレス］に情報を追加し、又は情報を変更することを含めることができる。例えば、リフェラルコンポーネントが、動作Ａ上で操作されるサービスＳが場所Ｌにあると知られているという情報を有している場合、このような動作Ａで名前Ｎに向けられたメッセージはリフェラルサービスを用いて場所Ｌに直ちに向けられる。
【００７７】
他の実施例では、図３を参照するに、ＡはネットワークノードＲを通してＢまでメッセージを送信する。いかなるデフォルトのサービスを除いて、Ａは、リフェラルとセッションを理解するのみであろう。ノードＲがメッセージを受信すると、ＲはＡがリフェラルを理解することを検出し、そして、ＲがＢにメッセージを回付することをＡに伝えることによってＲはＡに応答できる。従って、次にＡがＢまでメッセージを送信するとき、ＡはＲを通すことなくＢに直接メッセージを送信することができるかもしれない。Ｂはさらにライセンスをサポートして、Ａのメッセージが適切なライセンスを含んでいないことを検出することができる。Ｂは、Ｂがサポートするライセンスケイパビリティを示して、Ａにエラーメッセージを返信することができる。可能ならば、Ａは適正なライセンスを持ったメッセージを追って、再送することができる。
【００７８】
本発明の一実施例では、リフェラルコンポーネントは、ヘッダとタグを用いてルータの経路設定エントリを挿入し、削除し、及び問い合わせすることができる。リフェラルコンポーネントは、リフェラル情報の交換を介してアプリケーションが、ルータの経路設定エントリを挿入し、削除し、及び問合せることができる機構を提供することができる。
【００７９】
信頼性メッセージコンポーネント（ＲＭ）は、同時にアクディブになるかもしれないし、あるいはならないかもしれないし、また、同じ機械で行われるかもしれないし、あるいは行われないかも知れない送信部と受信部との間の信頼できるメッセージ交換のために設ける。従って、このメッセージの寿命は、送信部及び／又は受信部の寿命を超えてもよい。ある実施例では、このサービスは、送信部と受信部が置かれた同一の機械における、耐久性ある記憶を行うことのできるコンポーネントを有することもできる。これらのコンポーネントは、これら送信部と受信部との間でメッセージを格納し、および送信することができる。他の実施例では、メッセージを格納し及び送信するコンポーネントは、送信部又は受信部が置かれたいずれの機械に設けなくてもよい。従って、ローカルストレージを割り当てることを欲さないが、信頼性あるメッセージをサポートしたい送信部及び受信部がそれらの間の信頼性あるメッセージ配信に参加することが可能である。
【００８０】
経路設定コンポーネント（ＲＰ）は、メッセージの送信部及び受信部にメッセージの配信を助ける経路設定情報を提供する。一実施例では、この助けは、所定の目的地に到達するためにメッセージがどの中間ノードを使用するかを辿ることに基づいている。これらの中間ノードについての知識は、メッセージをソースに返却するためのより効率性の高い経路を見つけるのみならず、メッセージを配信する際の繰り返しを阻止するため使用することができる。ある実施例では、経路設定コンポーネントは、各メッセージのヘッダにメッセージを配信する間にホスト情報を追加する。次いで、このホスト情報は、メッセージがとる相互接続システムを通しての経路を決定するために使用することができる。返信経路が要望された場合、このホスト情報を使って、より効率的な経路を見つけることができる。
【００８１】
セキュリティコンポーネント（ＳＥＣ）は、メッセージインテグリティと機密性のための、及びセキュリティ証明書を伝送するための機構を提供する。ある実施例では、マルチタグを使用することができる。他の実施例では、単一のタグを、ＵＲＩを参照して使用してもよい。さらに他の実施例では、ＸＭＬ署名とＸＭＬ暗号を使用してもよい。またさらに他の実施例では、カスタマフォーマットを独立に指定してもよい。例えば、信用証明のヘッダは、ネットワークメッセージにおいてセキュリティの証明書を通すためのコンテナを提供してもよい。このヘッダには複数の信用証明があってもよく、及びヘッダ内の各タグは、それが含んでいるデータのタイプを識別することもできる。
【００８２】
このセキュリティモジュールは、インテグリティヘッダを定義し、及び使用してもよい。メッセージ送信部は、通過中にメッセージが変更されたか否かをメッセージ受信部が決定できるようにし、及びメッセージが特定のライセンス所有者により送信されたことを検証させたい場合もある。インテグリティの機構は、メッセージまたはメッセージの部分にＸＭＬ署名を用いて署名させることを許容してもよい。このインテグリティの機構により、メッセージ（又は選択された部分）のインテグリティを決定するようにしてもよい。信用証明タグと共に用いられた場合、メッセージ署名者のライセンスは相関を有するものであり、ライセンスのアサーションとアプリケーションによって評価されたメッセージとの間になされたマッピングである。
【００８３】
このセキュリティのモジュールは、暗号化の能力も提供する。メッセージ送信部は、メッセージ又はその一部分が機密であることを保証したい場合もある。メッセージが機密性を要求する場合、メッセージの送信部はメッセージの部分を暗号化して、ＸＭＬ暗号を用い、それらの部分がプライベートに保たれるようにすることができる。
【００８４】
セッション管理コンポーネント（ＳＥＳＳＩＯＮＳ）は、シェアされたコンテクストに関するコマンドを発行するための機構を提供する。このようなコマンドは、初期化、終結、確認及びキャッシングを含むがこれらに限られない。ある実施例では、これらのコマンドは、別個のタグとして指定されてもよい。他の実施例においては、ＵＲＩを持つ単一のタグとして指定されてもよい。初期化はタイムアウトを含めることができる。確認は、典型的には、要求された特定のコマンド又は動作を参照する。
【００８５】
キャッシングは、そのセッションのためにキャッシュされるものについての予測値の、あるパーティから他のパーティへの指定を含めることができる。ある実施例では、これは、ＵＲＩのリストであってもよい。他の実施例では、それは他のタグへの参照であってもよい。さらに他の実施例では、それは、キャッシング操作のセマンティクスを定める別個のタグであってもよい。
【００８６】
メッセージタイムマーカコンポーネント（ＴＩＭＥ）は、メッセージに特定の時間基準を添付する機構を提供する。ＴＩＭＥモジュールは、組み立て可能なプロトコレットにわたってタイムマーカを参照する一定の方法を提供する。時間基準は、セッションの生成とメンテナンス、順序付け、事象通知、ライセンス及び他の時間を基準とした要素において使用される。ある実施例では、各基準に対して個別のタグが有ってもよい。他の実施例では、ＵＲＩを持つ単一のタグを使用してもよい。いくつかの実施例において、属性又はタグを用いて、タイムフォーマットを示してもよいし、他方、他の実施例では特定のタイムフォーマットを持っていてもよい。
【００８７】
本発明の組み立て可能なメッセージングプロトコルがネットワークを通して使用される場合、ネットワークにおける種々の機械、装置、及び／又はノードは、互いに通信し、及びプロトコルのグローバルなケイパビリティディスカバリ属性を用いて相互運用性のインターセプションを成し遂げることができる。しかし、当事者は、他の属性と同様にケイパビリティディスカバリを選択することは任意であることを認識する。メッセージングプロトコルはケイパビリティディスカバリ属性（又は他のいずれの属性も）なしに的確に機能することができる。しかし、組み立て可能なメッセージングプロトコルは、完全な属性セットがプロトコレットの途中に含まれるとき、より頑健で適応性のあるものとなる。
【００８８】
本発明の組み立て可能なメッセージングプロトコルは、例えば、信頼性、セキュリティなどを提供するＳＯＡＰ拡張版を用いて、マルチプラットフォームにわたってウェブベースのサービスを提供するため使用される。ＳＯＡＰはプラットフォームに独立したプロトコルであるため、ＳＯＡＰ拡張版も同様である。従って、組み立て可能なメッセージングプロトコルもまた、プラットフォームに独立しており、かつウェブサービスは、ＳＯＡＰをサポートする任意のプラットフォームにわたって相互運用可能である。本発明の他の実施例では、各プロトコレットは、ダイレクトインターネットメッセージカプセル化（ＤＩＭＥ）、すなわちトランスポートに依存しないメッセージのバイナリ符号化を用いて生成される。例えば、ある実施例においては、ＤＩＭＥメッセージは、ＳＯＡＰメッセージをカプセル化することができる。
【００８９】
本発明の他の実施例において、各プロトコレットは、Ｊａｖａ（登録商標）又はその多くの派生言語（すなわち、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ、Ｊａｖａ（登録商標）Ｂｅａｎなど）のひとつを用いて生成することができる。各プロトコレットは、モジュールがＪａｖａ（登録商標）Ｒｕｎｔｉｍｅ環境又はＪａｖａ（登録商標）バーチャルマシンにおいて実行されるときに、選択可能なプロトコル属性の１つ又は２つ以上を実行するよう構成された独立したＪａｖａ（登録商標）Ｂｅａｎあるいは他のＪａｖａ（登録商標）ベースのモジュールでもよい。この実施例では、ルータは、要求されたサービスと共にメッセージを送信するのに必要なものとしてＪａｖａ（登録商標）モジュール（例えばＪａｖａ（登録商標）Ｂｅａｎ）を一体化したＪａｖａ（登録商標）に準拠したルータとすることができる。
【００９０】
本発明の方法は、フロッピ（登録商標）ディスク、ＣＤ-ＲＯＭ、取外し可能な記憶装置、ハードディスク、システムメモリ、又は他のデータ記憶媒体のようなコンピュータ読み取り可能な記録媒体に格納されたコンピュータ読み取り可能な命令として実施することができる。図４は、上述の実施例のうちの１又は２以上によって使用することができるコンピュータ読み取り可能な媒体４０１のブロック図を示す。コンピュータ読み取り可能な媒体４０１は、コンピュータ実行可能なコンポーネント又はソフトウェアモジュール４０３乃至４１３を格納する。例えば、各プロトコレットは一意的なソフトウェアモジュールに格納することができる。より多くの又はより少ないソフトウェアモジュールを、その代わりに使用してもよい。各コンポーネントは、実行可能なプログラム、データリンクライブラリ、コンフィギュレーションファイル、データベース、グラフィカルイメージ、バイナリデータファイル、テキストデータファイル、オブジェクトファイル、ソースコードファイルなどとすることができる。ある実施例では、データリンクライブラリは、米国ワシントン州レッドモンドのマイクロソフト（登録商標）社から入手できるユニバーサルランタイム（ＵＲＴ）を用いて構築することができる。１又は２以上のコンピュータプロセッサが、１又は２以上のソフトウェアモジュールを実行する場合、これらのソフトウェアモジュールは、相互作用して、１又は２以上のコンピュータシステムが本発明の教示に従って実行するようにさせる。
【００９１】
本発明は、本発明を実施するのに現在のところ好ましい実施形態を含む特定の実施例に関して述べられてきたが、添付の請求の範囲に記載された本発明の精神と範囲内にある、上述のシステム及び技術について数多く変形例および変更があることを理解するであろう。
【図面の簡単な説明】
【図１】本発明の一実施例のデータフロー図である。
【図２】本発明の一実施例による方法を示す図である。
【図３】本発明の一実施例に従って、種々のサービスをサポートする装置間を送信されるメッセージを示す図である。
【図４】本発明の一実施例によるコンピュータ読み取り可能な媒体のブロック図である。
【符号の説明】
１０１  ネットワークアプリケーション
１０２  メッセージ
１０３  メッセージ属性
１０４  アプリケーションプログラミングモデル
１０５  コードジェネレータ
１０７  メモリ
１０９  プロトコレット
１１１  ルータ
１１３  ネットワーク
１１５  目的地
４０１  コンピュータ読み取り可能な媒体
４０３、４０５、４０７、４１１、４１３  コンピュータ実行可能なコンポーネント／モジュール
【図１】
0004261156.tif 000002
【図２】
0004261156.tif 000003
【図３】
0004261156.tif 000004
【図４】
0004261156.tif 000005