(57)【要約】【課題】分散アプリケーションのオブジェクト指向表現とサービス指向表現の間のマッピングを提供すること。【解決手段】コンピュータシステムは、サービスの注釈付きオブジェクト指向表現にアクセスする。サービスの注釈付きオブジェクト指向表現は、含まれるオブジェクトを、サービスのサービス指向表現における対応するサービス指向要素にマップする、サービス記述属性によって注釈付けされる。コンピュータシステムは、注釈付きオブジェクト指向表現のオブジェクトを注釈付けするサービス記述属性を識別する。コンピュータシステムは、識別したサービス記述属性に含まれるサービス記述情報に従って、そのオブジェクトを、対応するサービス指向要素にマップする。コンピュータシステムは、サービス指向表現に記述される挙動およびデータフォーマットを実装するよう構成されたチャネルオブジェクトを出力する。コンピュータシステムは、サービスの挙動およびデータフォーマットと適合するチャネルを開始する。【選択図】図１
2006216029.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムにおいて、チャネルランタイムを開始する方法であって、
サービスの注釈付きオブジェクト指向表現にアクセスする動作であって、前記注釈付きオブジェクト指向表現は、前記オブジェクト指向表現に含まれるオブジェクトを、前記サービスのサービス指向表現における対応するサービス指向要素にマップする、サービス記述属性によって注釈付けされる動作と、
前記注釈付きオブジェクト指向表現のオブジェクトを注釈付けするサービス記述属性を識別する動作と、
前記識別したサービス記述属性に含まれるサービス記述情報に従って、前記オブジェクトを、対応するサービス指向要素にマップする動作と、
前記サービス指向表現において記述される挙動およびデータフォーマットを実装するよう構成されたチャネルオブジェクトを出力する動作と、
前記サービスの挙動およびデータフォーマットと適合するチャネルを開始する動作とを備えることを特徴とする方法。
【請求項２】
サービスの注釈付きオブジェクト指向表現にアクセスする前記動作は、注釈付き共通言語ランタイムタイプにアクセスする動作を含むことを特徴とする請求項１に記載の方法。
【請求項３】
サービスの注釈付きオブジェクト指向表現にアクセスする前記動作は、前記サービス指向表現の挙動にマップされた１つまたは複数のオブジェクトにアクセスする動作を含むことを特徴とする請求項１に記載の方法。
【請求項４】
サービスの注釈付きオブジェクト指向表現にアクセスする前記動作は、前記サービス指向表現の記述されたデータフォーマットにマップされた１つまたは複数のオブジェクトに、アクセスする動作を含むことを特徴とする請求項１に記載の方法。
【請求項５】
オブジェクトを注釈付けするサービス記述属性を識別する前記動作は、インターフェースを注釈付けするサービスコントラクト属性を識別する動作を含み、したがって、前記インターフェースは、アドレス、バインディング、およびコントラクトのうちの１つまたは複数にマップされうることを特徴とする請求項１に記載の方法。
【請求項６】
オブジェクトを注釈付けするサービス記述属性を識別する前記動作は、メソッドを注釈付けするオペレーションコントラクト属性を識別する動作を含み、したがって、前記メソッドは、オペレーションにマップされうることを特徴とする請求項１に記載の方法。
【請求項７】
オブジェクトを注釈付けするサービス記述属性を識別する前記動作は、パラメータを注釈付けするメッセージコントラクト属性を識別する動作を含み、したがって、前記パラメータは、メッセージにマップされうることを特徴とする請求項１に記載の方法。
【請求項８】
前記オブジェクトを、対応するサービス指向要素にマップする前記動作は、インターフェースを、アドレス、バインディング、およびコントラクトのうちの１つまたは複数にマップする動作を含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記オブジェクトを、対応するサービス指向要素にマップする前記動作は、メソッドをオペレーションにマップする動作を含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記オブジェクトを、対応するサービス指向要素にマップする前記動作は、入力パラメータ、出力パラメータ、および戻り値の１つをメッセージにマップする動作を含むことを特徴とする請求項１に記載の方法。
【請求項１１】
チャネルオブジェクトを出力する前記動作は、サービス記述情報をツリー形式で出力する動作を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
チャネルを開始する前記動作は、オブジェクト指向パラメータと、対応するサービスランタイムの適合したメッセージフォーマットの間の変換を行うように、前記チャネルを構成する動作を含むことを特徴とする請求項１に記載の方法。
【請求項１３】
オブジェクト指向パラメータと、対応するサービスランタイムの適合したメッセージフォーマットの間の変換を行うように、前記チャネルランタイムを構成する前記動作は、共通言語ランタイムとＳＯＡＰメッセージの間で変換を行うように前記チャネルを構成する動作を含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
コンピュータシステムで使用するためのコンピュータプログラム製品であって、チャネルランタイムを開始する方法を実装するためのコンピュータプログラム製品であって、コンピュータ実行可能命令を格納した１つまたは複数のコンピュータ可読媒体を含み、前記コンピュータ実行可能命令は、プロセッサによって実行されるとき、前記コンピュータシステムに、
サービスの注釈付きオブジェクト指向表現にアクセスすることであって、前記注釈付きオブジェクト指向表現は、前記サービスのサービス指向表現における対応するサービス指向要素に前記オブジェクト指向表現に含まれるオブジェクトをマップする、サービス記述属性によって注釈付けされる、アクセスすること、
前記注釈付きオブジェクト指向表現のオブジェクトを注釈付けするサービス記述属性を識別すること、
前記識別したサービス記述属性に含まれるサービス記述情報に従って、対応するサービス指向要素に前記オブジェクトをマップすること、
前記サービス指向表現に記述された挙動およびデータフォーマットを実装するよう構成されたチャネルオブジェクトを出力すること、および、
前記サービスの挙動およびデータフォーマットと適合したチャネルを開始することを行わせることを特徴とするコンピュータプログラム製品。
【請求項１５】
実行されるとき、前記コンピュータシステムに、サービスの注釈付きオブジェクト指向表現にアクセスさせるコンピュータ実行可能命令は、実行されるとき、前記コンピュータシステムに、前記サービス指向表現において記述された挙動にマップされる１つまたは複数のオブジェクトにアクセスさせるコンピュータ実行可能命令を含むことを特徴とする請求項１４に記載のコンピュータプログラム製品。
【請求項１６】
実行されるとき、前記コンピュータシステムに、サービスの注釈付きオブジェクト指向表現にアクセスさせるコンピュータ実行可能命令は、実行されるとき、前記コンピュータシステムに、前記サービス指向表現において記述されたデータフォーマットにマップされる１つまたは複数のオブジェクトにアクセスさせるコンピュータ実行可能命令を含むことを特徴とする請求項１４に記載のコンピュータプログラム製品。
【請求項１７】
実行されるとき、前記コンピュータシステムに、前記注釈付きオブジェクト指向表現のオブジェクトを注釈付けするサービス記述属性を識別させるコンピュータ実行可能命令は、実行されるとき、前記コンピュータシステムに、前記インターフェースがアドレス、バインディング、コントラクトのうちの１つまたは複数にマップされうるように、インターフェースを注釈付けするサービスコントラクト属性を識別させるコンピュータ実行可能命令を含むことを特徴とする請求項１４に記載のコンピュータプログラム製品。
【請求項１８】
実行されるとき、前記コンピュータシステムに、前記サービスの挙動およびデータフォーマットに適合したチャネルを開始させるコンピュータ実行可能命令は、実行されるとき、前記コンピュータシステムに、共通言語ランタイムパラメータとＳＯＡＰメッセージの間の変換を行うように前記チャネルを構成させるコンピュータ実行可能命令を含むことを特徴とする請求項１４に記載のコンピュータプログラム製品。
【請求項１９】
コンピュータシステムにおいて、指定されたプログラミングモデルに従ってメッセージを交換する方法であって、
サービスのオブジェクト指向表現のオブジェクトを注釈付けするサービス記述属性を識別する動作と、
前記サービス記述属性に含まれるサービス記述情報に基づいて、前記注釈付けされたオブジェクトを、対応するサービス指向要素にマップする動作と、
チャネルを、サービス記述情報に記述されるように挙動を実装しデータをフォーマットするよう構成する動作と、
前記構成されたチャネルは、オブジェクト指向パラメータを、前記サービスに転送するために、第１の適合したＳＯＡＰメッセージに変換する動作と、
前記第１の適合したＳＯＡＰメッセージを前記サービスに送る動作とを備えることを特徴とする方法。
【請求項２０】
前記構成されたチャネルは、前記第１の適合したメッセージを送った後に、前記サービスから、第２の適合したＳＯＡＰメッセージを受け取る動作と、
前記第２の適合したＳＯＡＰメッセージを、オブジェクト指向パラメータに変換する動作とをさらに備えることを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散アプリケーションに関し、より詳細には、分散アプリケーションのオブジェクト指向表現とサービス指向表現との間のマッピングに関する。
【背景技術】
【０００２】
コンピュータシステムおよび関連する技術は、社会の多くの側面に影響を与えている。実際に、コンピュータシステムの情報処理能力は、私たちの生活および仕事の様式を変化させた。コンピュータシステムは、現在では、一般的に、コンピュータシステムの出現前には手作業で行われていた多くのタスク（例えば、文書処理、スケジューリング、およびデータベース管理）を行っている。さらに最近では、コンピュータシステムは、互いに結合され、また他の電子デバイスに結合されて、有線と無線の両方のコンピュータネットワークを形成し、それらのネットワークを介して、コンピュータシステムおよび他の電子デバイスは、電子データを転送することができる。その結果、コンピュータシステムで実行される多数のタスク（例えば、音声通信、電子メールへのアクセス、ホームエレクトロニクスの制御、ウェブの閲覧、およびドキュメントの印刷）は、有線および／または無線のコンピュータネットワークを介した、複数のコンピュータシステムおよび／または他の電子デバイスの間での電子メッセージの交換を含む。
【０００３】
ネットワークは、実際、多くの利益をもたらすものであり、ネットワークが使用可能な単純なコンピューティングシステムが、「インターネット」としばしば呼ばれるネットワークの集合体を経由して、世界中にある他の数百万のコンピューティングシステムのいずれとも通信することができる。このようなコンピューティングシステムには、デスクトップ、ラップトップ、もしくはタブレットパーソナルコンピュータ、携帯情報端末（ＰＤＡ）、電話、またはデジタルネットワークを介して通信することができる他の任意のコンピュータもしくはデバイスが含まれうる。
【０００４】
ネットワークを介して通信を行うために、（本明細書では「送信側コンピューティングシステム」と呼ばれる）一方のコンピューティングシステムが、電子メッセージを構成するかあるいはそれにアクセスし、（本明細書では「受信側コンピューティングシステム」と呼ばれる）他方のコンピューティングシステムにネットワークを介して電子メッセージを送信する。電子メッセージは、電子メッセージが電子メールもしくはインスタントメッセージであるときのように、人間のユーザによって読み取られることも、または受信側コンピューティングシステム上で実行中のアプリケーションによって読み取られることもある。電子メッセージを、場合によっては人間のユーザの支援で、送信側コンピューティングシステム上で実行中のアプリケーションによって、構成することができる。
【０００５】
ある種の環境、例えばサービス指向アーキテクチャ環境などでは、（「サービス」としばしば呼ばれ、以下でも「サービス」と呼ばれる）接続エンドポイントが、所望の機能を実装するために互いに通信を行う。所望の機能は、２つのサービスのデータ交換と同様に単純でありうる。例えば、サービスコンシューマ（ｓｅｒｖｉｃｅ  ｃｏｎｓｕｍｅｒ）は、サービスプロバイダにサービス要求メッセージを送ることができる。サービスプロバイダは、サービス要求を処理し、サービス応答メッセージをサービスコンシューマに返す。しかし、所望の機能は、ある種のアクティビティを調整するためにメッセージを交換する多数のサービスが関与し、より複雑になることもある。サービスは、通常、接続エンドポイントをサポートする何らかのタイプのコンピュータシステム（ハードウェアとソフトウェアの両方）を有する。
【０００６】
サービスを記述するために、サービス指向概念記述（アドレス、バインディング、およびメッセージ対話パターン）を使用することができる。その場合、サービス指向概念記述を、記述されたサービスを伝達することを望むサービスコンシューマによってアクセスすることができる。一般に、サービス指向概念は、例えば、ＤＣＯＭ（分散コンポーネントオブジェクトモデル（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｍｐｏｎｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ））、ＣＯＲＢＡ（共通オブジェクトリクエストブローカアーキテクチャ（Ｃｏｍｍｏｎ  Ｏｂｊｅｃｔ  Ｒｅｑｕｅｓｔ  Ｂｒｏｋｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ））、またはＷｅｂサービスなどのいくつかのサービス指向標準に従って記述される。Ｗｅｂサービスは、さらに、例えば、ＷＳＤＬ（Ｗｅｂサービス記述言語（Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ））、ＷＳ−Ｐｏｌｉｃｙ（Ｗｅｂサービスポリシーフレームワーク（Ｗｅｂ−Ｓｅｒｖｉｃｅｓ  Ｐｏｌｉｃｙ  Ｆｒａｍｅｗｏｒｋ））などの様々なＷｅｂサービスの仕様に従って定義される。
【０００７】
したがって、サービスプロバイダは、ＷＳＤＬを使用してサービスを記述することができる。ＬＡＮ（ローカルエリアネットワーク）上では、あるいは場合によっては既知の相互接続されたネットワーク間でも、サービスプロバイダは、例えば、ＵＤＤＩ（ユニバーサル記述、発見、および統合（Ｕｎｉｖｅｒｓａｌ  Ｄｅｓｃｒｉｐｔｉｏｎ，Ｄｉｓｃｏｖｅｒｙ，ａｎｄ  Ｉｎｔｅｇｒａｔｉｏｎ））を使用するサービスのディレクトリに対して記述をパブリッシュすることができる。ディレクトリにアクセスを有する認識サービスコンシューマは、ＷＳＤＬサービス記述を突き止めるために、ディレクトリに対してクエリを発行することができる。クエリに応答して、サービスプロバイダによってパブリッシュされたＷＳＤＬサービス記述の部分を、サービスコンシューマに対して渡すことができる。サービスコンシューマは、ＷＳＤＬサービス記述の部分を使用して、適切にフォーマットされた要求を、サービスプロバイダに送る。次いで、サービスプロバイダは、サービスコンシューマに適切な応答を提供する。
【０００８】
しかし、指定されたサービス指向概念記述に従ってサービスを実装するために、そのサービス指向概念記述に記述されるようにメッセージを処理する実行可能モジュールが存在しなければならない。したがって、通常開発者は、サービス指向概念記述に記述されるようなサービスに対するメッセージ処理を実装するために、（例えば、Ｃ＃、Ｃ＋＋、またはＶｉｓｉａｌ  Ｂａｓｉｃなどのオブジェクト指向言語で）ソースコードを書く。次いで、ソースコードは、実行可能モジュール（例えば、ＤＬＬ（ダイナミックリンクライブラリ））にコンパイルされ、例えばサーバランタイムとして実行されて、サービスコンシューマにサービスを提供することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
遺憾なことに、サービスは、様々な方法で分散されたメッセージング機能を実装する様々なプログラミングモデルを用いることができる。例えば、あるプログラミングモデルは、１つのインターフェースを使用して、要求メッセージを実装し、第２の異なるインターフェースを使用して、対応する応答メッセージを実装することができる。一方、別のプログラミングモデルは、別個の複数のメソッドを有する単一のインターフェースを使用して、要求メッセージとそれに対応する応答メッセージの両方を実装することができる。この単一インターフェースは、要求メッセージに対する１つのメソッドと、対応する応答メッセージに対する第２の異なるメソッドを有することができる。したがって、異なるプログラミングモデルに基づくサービスは、通常、互いに通信することができない。
【００１０】
さらに、分散アプリケーションは、通常、プログラミングモデルが固定的であり、それらのサービスランタイムに密接に結合された単一のプログラミングモデルのみを許容する。したがって、適合性のため、通常、（例えば、サービスコンシューマにおける）クライアントランタイムも、対応するサービスランタイムを開発するために使用されたプログラミングモデルに従ってメッセージを処理することが必要とされる。例えば、サービスランタイムが、要求メッセージと応答メッセージに対して別個のインターフェースを使用し、特定のセキュリティメカニズムを使用して開発された場合、クライアントランタイムは、同様にそれらを実装しなければならない。同じプログラミングモデルに従って開発されたクライアントランタイムを使用しないと、クライアントランタイムがサービスランタイムと通信することが妨げられるおそれがある。
【００１１】
遺憾なことに、あるサービスランタイムに対してサービス記述がパブリッシュされていない可能性は常に存在する。さらに、サービス記述がパブリッシュされている場合であっても、クライアントは、パブリッシュされたサービス記述の存在を認識しないことがあり、または、パブリッシュされたサービス記述にアクセスすることを（例えば、セキュリティメカニズムまたはネットワーク状態によって）阻止されることもある。例えばインターネットなどのような、より大規模な分散ネットワークでは、このような問題が発生する機会が大幅に増加する。したがって、適切なプログラミングモデルに従ってクライアントランタイムを実装することは、不可能でない場合でも困難であろう。その結果、クライアントは、サーバランタイムと通信することを阻止されるおそれがある。
【００１２】
したがって、他のやり方でサービス記述にアクセスするためのシステム、方法、およびコンピュータプログラム製品が有利となる。
【課題を解決するための手段】
【００１３】
上述の当技術分野の従来の問題は、分散アプリケーションのオブジェクト指向表現とサービス指向表現との間のマッピングのための方法、システム、およびコンピュータプログラム製品に関する本発明の原理によって解消される。コンピュータシステムは、サービスの注釈付きオブジェクト指向表現にアクセスする。注釈付きオブジェクト指向表現は、オブジェクト指向表現に含まれるオブジェクトを、サービスのサービス指向表現における対応するサービス指向データ要素にマップするサービス記述属性によって注釈付けされる。
【００１４】
コンピュータシステムは、注釈付きオブジェクト指向表現のオブジェクトに注釈付けするサービス記述属性を識別する。コンピュータシステムは、識別したサービス記述属性に含まれるサービス記述情報に従って、オブジェクトを、対応するサービス指向要素にマップする。コンピュータシステムは、サービス指向表現に記述されるように、挙動を実装しかつデータをフォーマットするよう構成された、チャネルオブジェクト（ｃｈａｎｎｅｌ  ｏｂｊｅｃｔ）を出力する。コンピュータシステムは、サービスの挙動およびデータフォーマットと適合するチャネルを開始する。
【００１５】
本発明の上記および他の目的ならびに特徴は、以下の説明および添付の特許請求の範囲から、より完全に明らかとなり、あるいは以下に示すように本発明を実施することによって知ることができる。
【００１６】
本発明の上記および他の利点ならびに特徴をさらに明確に示すために、添付の図面に示されている本発明の具体的な実施形態を参照することにより、本発明のより詳細な説明を与える。これらの図は、本発明の典型的な実施形態のみを示しており、したがって、本発明の範囲を限定するものと見なされるべきではないことは理解されよう。本発明は、添付の図面を使用して追加の特性および詳細とともに記述され、説明される。
【発明を実施するための最良の形態】
【００１７】
上述の当技術分野の従来の問題は、分散アプリケーションのオブジェクト指向表現とサービス指向表現との間のマッピングのための方法、システム、およびコンピュータプログラム製品に関する本発明の原理によって解消される。コンピュータシステムは、サービスの注釈付きオブジェクト指向表現にアクセスする。注釈付きオブジェクト指向表現は、オブジェクト指向表現に含まれるオブジェクトを、サービスのサービス指向表現における対応するサービス指向データ要素にマップするサービス記述属性によって注釈付けされる。
【００１８】
コンピュータシステムは、注釈付きオブジェクト指向表現のオブジェクトに注釈付けするサービス記述属性を識別する。コンピュータシステムは、識別したサービス記述属性に含まれるサービス記述情報に従って、オブジェクトを、対応するサービス指向要素にマップする。コンピュータシステムは、サービス指向表現に記述されるように、挙動を実装しかつサービス指向表現に記述されるように、データをフォーマットするよう構成された、チャネルオブジェクトを出力する。コンピュータシステムは、サービスの挙動およびデータフォーマットと適合するチャネルを開始する。
【００１９】
本発明の範囲内の実施形態は、格納されるコンピュータ実行可能命令もしくはデータ構造を運搬するまたは有するコンピュータ可読媒体を含む。このようなコンピュータ可読媒体は、汎用または専用コンピュータシステムによってアクセスできる任意の利用可能な媒体とすることができる。このようなコンピュータ可読媒体には、限定ではなく例として、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶デバイス、あるいは、所望のプログラムコード手段をコンピュータ実行可能命令、コンピュータ可読命令、もしくはデータ構造の形態で運搬または格納するために使用され、汎用または専用コンピュータシステムによってアクセスできる他の任意の媒体などの物理的記憶媒体が含まれうる。
【００２０】
本明細書の説明および添付の特許請求の範囲では、「ネットワーク」は、コンピュータシステムおよび／またはモジュール間の電子データの移送を可能にする、１つまたは複数のデータリンクとして定義される。（有線、無線、または有線もしくは無線の組合せの）ネットワークまたは他の通信接続を介して、コンピュータシステムに情報が転送または供給されるとき、このような接続は、厳密にはコンピュータ可読媒体と見なされる。したがって、任意のこのような接続は、厳密にはコンピュータ可読媒体の名称が付される。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。コンピュータ実行可能命令には、例えば、汎用コンピュータシステムまたは専用コンピュータシステムに、ある特定の機能または機能群を実行させる命令およびデータが含まれる。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語など中間形式の命令、またはソースコードとすることができる。
【００２１】
本明細書の説明および添付の特許請求の範囲では、「コンピュータシステム」は、電子データに対してオペレーションを連携して実行する、１つまたは複数のソフトウェアモジュール、１つまたは複数のハードウェアモジュール、あるいはそれらの組合せとして定義される。例えば、コンピュータシステムの定義は、パーソナルコンピュータのハードウェアコンポーネント、ならびに、パーソナルコンピュータのオペレーティングシステムなどのソフトウェアモジュールを含む。それらのモジュールの物理的配置は重要ではない。コンピュータシステムには、ネットワークを介して結合された１つまたは複数のコンピュータが含まれうる。同様に、コンピュータシステムには、（メモリやプロセッサなどの）内部モジュールが電子データに対してオペレーションを連携して実行する（携帯電話またはＰＤＡ（携帯情報端末）などの）単一の物理デバイスも含まれうる。
【００２２】
本明細書の説明および添付の特許請求の範囲では、「オブジェクト」は、個別に選択し操作することができる任意のアイテムとして定義される。オブジェクトは、データおよびデータを操作するための手順を含む、例えばメソッドおよび他のソフトウェアオブジェクトなどの、ソフトウェアオブジェクトを含むものとして定義される。オブジェクトはまた、ソフトウェアオブジェクト間で交換することができる（例えば、ソフトウェアオブジェクトへの入力またはそれからの出力として提供される）パラメータおよび戻り値（例えば、メソッドパラメータおよびメソッド戻り値）を含むものとして定義される。
【００２３】
本明細書の説明および添付の特許請求の範囲では、「コントラクト（ｃｏｎｔｒａｃｔ）」は、メッセージフォーマットおよびメッセージ対話パターンの記述を含む、宣言型のプログラミングモデルとして定義される。
【００２４】
本発明は、パーソナルコンピュータ、ラップトップコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯電話、ＰＤＡ、および、ページャなどを含む、様々なタイプのコンピュータシステム構成を有するネットワークコンピューティング環境で実施することができることは当業者には理解されよう。本発明はまた、ネットワークを介して（有線データリンク、無線データリンク、または有線データリンクと無線データリンクとの組合せによって）リンクされるローカルとリモートのコンピュータシステムが共にタスクを実行する、分散システム環境において実施することができる。分散システム環境では、プログラムモジュールは、ローカルとリモートの両方のメモリ記憶装置に配置することができる。
【００２５】
コンピュータアーキテクチャ１００に図示されるように、コンピュータシステム１０１および１１１は、ネットワーク１２１に接続されている。ネットワーク１２１は、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（広域ネットワーク）、またはインターネットとすることができる。ネットワーク１２１に接続されたコンピュータシステムは、ネットワーク１２１に接続された他のコンピュータシステムからデータを受け取り、そのコンピュータシステムにデータを送ることができる。したがって、コンピュータシステム１０１および１１１、ならびに他の接続されたコンピュータシステム（図示せず）は、メッセージに関連するデータ（例えば、ＩＰ（インターネットプロトコル）データグラム、および、ＩＰデータグラムを利用する他のより高い層のプロトコル（例えば、ＴＣＰ（伝送制御プロトコル）、ＨＴＴＰ（ハイパーテキスト転送プロトコル）、ＳＭＴＰ（簡易メール転送プロトコル）など））を作成し、それをネットワーク１２１を介して交換することができる。例えば、コンピュータシステム１０１および１１１は、ＳＯＡＰエンベロープを作成し、それをネットワーク１２１を介して交換することができる。
【００２６】
コンピュータシステム１０１は、タイプローダ（ｔｙｐｅ  ｌｏａｄｅｒ）１０３およびチャネルランタイム１０５を含む。タイプローダ１０３は、サービスの注釈付きオブジェクト指向表現（例えば、サービスタイプ）を受け取るように構成されている。例えば、タイプローダ１０３は、サービスタイプ（例えば、共通言語ランタイム（ＣＬＲ）タイプ）、またはネットワークベースのサービスを表す他のオブジェクト指向オブジェクトを受け取るように構成することができる。いくつかの実施形態では、ネットワークベースのサービスは、指定されたプログラミングモデルに従って表される。指定されたプログラミングモデルは、１つまたは複数のインターフェースを実装するタイプとすることができる。各インターフェースは、さらに、１つまたは複数のメソッドを実装することができる。各メソッドを、入力パラメータ、出力パラメータ、および戻り値を交換するように構成することができる。
【００２７】
タイプに含まれるインターフェース、メソッド、入力パラメータ、出力パラメータ、および戻り値は、対応するサービス指向要素を記述するサービス記述属性によって注釈付けすることができる。例えば、サービス記述注釈は、オブジェクト指向インターフェースを、サービス指向コントラクトなどにマップすることができる。したがって、タイプローダ１０３は、サービスタイプをロードし、サービスのサービス指向表現に対するマッピングを識別するために、コンパイルされたコードをパースすることができる。タイプローダ１０３は、マッピングを使用して、サービス指向表現の関連するサービス記述情報を生成することができる。例えば、タイプローダ１０３は、オブジェクト指向インターフェースのサービス記述属性を参照して、対応するコントラクト、バインディング、およびアドレスについてのサービス指向記述を作成することができる。次いで、タイプローダ１０３は、オブジェクト指向表現に含まれる、あるタイプのチャネルオブジェクトを生成することができる。次いで、チャネルオブジェクトを使用して、サービスにアクセスするための適切なチャネルを開始することができる。
【００２８】
一般に、チャネル１０５は、サービスの対応するサービスランタイムと適合して通信を行うために使用される。チャネル１０５は、例えば、メソッド１２９、メソッド１２３、およびコンバータ１３４などのモジュールを含むことができ、それらが、適合的な通信を支援する。
【００２９】
メソッド１２９は、入力パラメータ（例えば、パラメータ１２２）を、コンバータ１３４に提出することができる。次いで、コンバータ１３４は、（予めアクセスされたサービス記述情報に従って、）入力パラメータを、適切にフォーマットされたメッセージ（例えば、要求メッセージ）に変換し、その適切にフォーマットされたメッセージを、対応するサービスランタイムに送る。続いて、サービスランタイムは、出力パラメータおよび／または戻り値を含めて、同様にフォーマットされたメッセージ（例えば、応答メッセージ）をコンバータ１３４へ返すことができる。コンバータ１３４は、（予めアクセスされたサービス記述情報に従って、）受け取ったメッセージパラメータを、出力パラメータ（例えば、出力パラメータ１２４）および／または戻り値（例えば、戻り値１２６）に変換する。コンバータ１３４は、出力パラメータ（および／または戻り値）をメソッド１２３に提出することができる。
【００３０】
コンピュータシステム１１１は、サービスランタイム１１２を含む。サービスランタイム１１２は、ある機能を実行するサービスを（サービス記述情報に従って）公開することができる。例えば、サービスランタイム１１２は、様々な数学的オペレーションを実行することができる計算器サービスを公開することができる。
【００３１】
いくつかの実施形態では、サービス記述情報は、ツリー形式で配置される。サービス記述情報は、（適切なエンドポイントクラスの）１つまたは複数のエンドポイントを含むことができる。エンドポイントは、エンドポイントアドレス、バインディング、および１つまたは複数のコントラクト記述を含むことができる。エンドポイントアドレスは、記述されたサービス（例えば、サービスランタイム１１２）と通信するための電子アドレス（例えば、ＵＲＬ（ユニフォームリソースロケータ））である。
【００３２】
バインディングは、記述されたサービスと通信するときに、どのようにデータが転送されるかを示す。バインディングは、異なる転送特性に対して適用可能な複数の異なるバインディング要素を含むことができ、例えば、トランスポートバインディング（ｔｒａｎｓｐｏｒｔ  ｂｉｎｄｉｎｇ）要素（例えば、ＨＴＴＰ（ハイパーテキスト転送プロトコル）、またはＴＣＰ（伝送制御プロトコル）で使用する）、エンコーダバインディング（ｅｎｃｏｄｅｒ  ｂｉｎｄｉｎｇ）要素（例えば、ＵＴＦ−８またはＵＴＦ−１６で使用する）、セキュリティバインディング（ｓｅｃｕｒｉｔｙ  ｂｉｎｄｉｎｇ）要素（例えば、指定のタイプの暗号化で使用する）などを含むことができる。
【００３３】
コントラクト記述は、記述されたサービスと通信するとき、どんなデータが転送されるべきか（例えば、メッセージ対話パターン）を示す。コントラクト記述は、１つまたは複数のオペレーションを含むことができる。例えば、ネットワークベースの数学サービス（ｍａｔｈ  ｓｅｒｖｉｃｅ）についてのコントラクト記述は、加算、減算、乗算、および除算のためのオペレーションを含むことができる。各オペレーションは、１つまたは複数のメッセージを含むことができる。例えば、加算オペレーションは、２つの整数を含む要求メッセージと、その２つの整数の合計を含む応答メッセージを含むことができる。
【００３４】
このように、コントラクト記述は、ネットワークベースのサービス（例えば、サービスランタイム１１２）と通信するためのメッセージ対話パターンを示すことができる。一部のオペレーションは、単一のメッセージ、例えば、入力または出力メッセージを含むことができる。他のオペレーションは、２つのメッセージ、例えば、要求メッセージと応答メッセージを含むことができる。
【００３５】
図２を参照すると、分散アプリケーションのオブジェクト指向表現２５５と、それと同じ分散アプリケーションのサービス指向表現２０５との間の例示的マッピングが示されている。サービス指向表現２０５内において、サービス２０１は、コントラクト２０２を含む。コントラクト２０２は、指定されたプログラミングモデルによる、サービス２０１の実装を表している。垂直方向の省略符号２０３（縦に並んでいる３つのピリオド）は、他のコントラクトが、他のプログラミングモデルに従ってサービス２０１を実装できることを表している。
【００３６】
コントラクト２０２は、サービスの実装の挙動を表すオペレーション２１２および２１３を含む。例えば、コントラクト２０２は、数学サービスのためのプログラミングモデルを表す場合、オペレーション２１２および２１３は、特定の数学的オペレーション（例えば、加算、除算など）を表すことができる。垂直方向の省略符号２１４は、他のオペレーションがコントラクト２０２に含まれうることを表している。各オペレーションを、指定されたメッセージ対話パターンに従って実装することができる。いくつかの実装形態では、メッセージ対話パターンは、入力メッセージ、出力メッセージ、または、要求メッセージおよび対応する応答メッセージのいずれか１つである。
【００３７】
例えば、オペレーション２１２は、メッセージ２３２（入力または出力メッセージ）を含む。一方、オペレーション２１３は、メッセージ２３３（要求メッセージ）、およびメッセージ２３４（応答メッセージ）を含む。メッセージ内に含まれるデータの内容およびフォーマットを記述するために、さらに他のデータ要素を使用することができる。例えば、ヘッダ２４４およびボディ２４６は、メッセージ２３４に対するデータフォーマット（例えば、ＳＯＡＰメッセージフォーマット）を記述することができる。省略符号２４２（横に並んでいる３つのピリオド）は、メッセージ２３３の内容を記述するために、さらに他のデータ要素を使用できることを表している。省略符号２４３（横に並んでいる３つのピリオド）は、メッセージ２３３の内容を記述するために、さらに他のデータ要素を使用できることを表している。
【００３８】
オブジェクト指向表現２５５内において、クラス２５１（例えば、ＣＬＲタイプ）は、インターフェース２５２を含む。図示されるように、インターフェース２５２は、サービスコントラクト属性２５３によって注釈付けされている。サービスコントラクト属性２５３は、コントラクト２０２（場合によっては、さらにアドレスおよびバインディング）を記述するサービス記述情報を含むことができる。したがって、マッピング２９１によって示されるように、インターフェース２５２は、コントラクト２０２（場合によっては、さらにアドレスおよびバインディング）にマップされる。垂直方向の省略符号２５４は、クラス２５１が、他の（注釈付けされうる）インターフェース（例えば、サービス２０１を実装するための他のプログラミングモデルに対するマッピング）を含むことができることを表している。
【００３９】
インターフェース２５２は、メソッド２６２および２６４を含む。図示されるように、メソッド２６２は、オペレーションコントラクト属性２６３によって注釈付けされる。オペレーションコントラクト属性２６３は、オペレーション２１３を記述するサービス記述情報を含むことができる。したがって、マッピング２９２によって表されるように、オペレーション２１３に関して記述される挙動（例えば、２つの数の合計を計算すること）を、メソッド２６２にマップすることができる。明示されていないが、メソッド２６４も、コントラクトのオペレーション２０２に対して注釈付けされ、マップされることが可能である。垂直方向の省略符号２６６は、インターフェース２５２が、他の（注釈付けされうる）メソッド（例えばコントラクト２０２の他のオペレーションに対するマッピング）を含むことができることを表している。
【００４０】
メソッド２６２は、パラメータ２７３および戻り値２７４を含む。図示されるように、パラメータ２７３は、メッセージコントラクト属性２７６によって注釈付けされ、戻り値２７４は、メッセージコントラクト属性２７７によって注釈付けされる。メッセージコントラクト属性２７６は、メッセージ２３３のデータ要素を記述するサービス記述情報を含むことができる。同様に、メッセージコントラクト属性２７７は、メッセージ２３４のデータ要素を記述するサービス記述情報を含むことができる。いくつかの実施形態では、記述されたデータ要素は、ＸＭＬ（拡張マークアップ言語）要素である。
【００４１】
パラメータ２７３および戻り値２７４はまた、データコントラクト（ｄａｔａ  ｃｏｎｔｒａｃｔ）属性２７８によって注釈付けされる。データコントラクト属性２７８は、メッセージ２３３および２３４に使用されるデータフォーマットを記述するサービス記述情報を含むことができる。例えば、データコントラクト属性２７８は、メッセージ２３３および２３４のデータ要素が整数値（または他のあるタイプの値）であるべきことを示す記述情報を参照することができる。したがって、マッピング２９３によって表されるように、メッセージ２３３において記述されたデータ要素およびフォーマット（例えば、２つの整数値についてのＸＭＬデータ要素）は、パラメータ２７３にマップされ、メッセージ２３４において記述されたデータ要素（例えば、２つの整数値の合計についてのＸＭＬデータ要素）は、戻り値２７４にマップされうる。
【００４２】
垂直方向の省略符号２６７は、コントラクト２０２の範囲内のメソッド２６４および他のメッセージの、入力パラメータ、出力パラメータ、および／または戻り値の間で、同様のデータ要素およびデータフォーマットのマッピングが存在しうることを表している。
【００４３】
本発明の実施形態では、チャネルを開始するために使用することができる外部サービス記述情報を、クラス（例えば、サービスタイプ）に含まれるサービス記述情報から生成することができる。サービス記述情報へのアクセスを用いることで、対応するチャネルを、記述されたサービスと通信するために、より効率的に構成することができる。例えば、開発者は、サービスのオブジェクト指向表現内から、サービスについての（コントラクト、バインディング、およびアドレスを含む）エンドポイントの挙動、データ要素、およびデータフォーマットに関するサービス記述情報を提供することができる。したがって、チャネルとサービスランタイムの間の相互運用性を、より効率的な方法で達成することができる。
【００４４】
次の例示的コード命令は、サービスコントラクト属性によって注釈付けされたインターフェースとそれに含まれるメソッド、およびオペレーションコントラクト属性をそれぞれ示している。
【００４５】
【表１】
2006216029.tif 000003
【００４６】
第１行目の属性［ＳｅｒｖｉｃｅＣｏｎｔｒａｃｔＡｔｔｒｉｂｕｔｅ］は、第２行目のインターフェースＩＥｘａｍｐｌｅを注釈付けしている。［ＳｅｒｖｉｃｅＣｏｎｔｒａｃｔＡｔｔｒｉｂｕｔｅ］は、例えばサービスエンドポイントを記述する、＜Ｓｅｒｖｉｃｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ａ＞を含む。サービスエンドポイントは、例えばコントラクト２０２などのコントラクト、バインディング、およびアドレスを含むことができる。第４行目の属性［ＯｐｅｒａｔｉｏｎＣｏｎｔｒａｃｔＡｔｔｒｉｂｕｔｅ］は、第４行目のメソッドＥｘａｍｐｌｅを注釈付けする。［ＯｐｅｒａｔｉｏｎＣｏｎｔｒａｃｔＡｔｔｒｉｂｕｔｅ］は、例えばサービス指向オペレーション（例えば、オペレーション２１３）を記述する、＜Ｓｅｒｖｉｃｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｂ＞を含む。＜Ｓｅｒｖｉｃｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｂ＞はまた、サービス指向オペレーションの一部分として交換されるメッセージに含まれるＵＲＩ（名前）を含むことができる。
【００４７】
次の例示的コード命令は、通信エンドポイントを定義するための構成情報に使用することができる。
【００４８】
【表２】
2006216029.tif 000004
【００４９】
第７行目および第１２行目はそれぞれ、定義されたエンドポイントの開始および終了を表している。第８行目から第１１行目は、特定のエンドポイントの定義を表している。第９行目は、エンドポイントに対するアドレスを表している。第１０行目は、例えばトランスポートプロトコルやセキュリティ設定などを含む、「エンドポイントの」バインディングを表している。第１１行目は、先の例示的コード命令によって表されたコントラクトを参照している。第１１行目は、このエンドポイントを介して転送されたメッセージが、先の例示的コード命令に従って、処理される（例えば、ＸＭＬとオブジェクト指向パラメータ、およびその逆で変換される）ことを示している。チャネルランタイムは、エンドポイントと適切な実行可能コードの間でメッセージの制御を転送するための機能を実装することができる。
【００５０】
図３は、チャネルスタック（ｃｈａｎｎｅｌ  ｓｔａｃｋ）を開始するための方法３００の例示的フローチャートを示す。図３では、コンピュータアーキテクチャ１０、サービス指向表現２０５、およびオブジェクト指向表現２５５におけるコンポーネントおよびデータについて説明する。
【００５１】
方法３００は、サービスの注釈付きオブジェクト指向表現にアクセスする動作を含み（動作３０１）、この注釈付きオブジェクト指向表現は、オブジェクト指向表現に含まれるオブジェクトを、サービスのサービス指向表現における対応するサービス指向データ要素にマップする、サービス記述属性によって注釈付けされる。例えば、タイプローダ１０３は、注釈付きオブジェクト指向表現１０２にアクセスすることができる。注釈付きオブジェクト指向表現１０２は、クラス２５１と同様の型付きクラス（例えば、ＣＬＲクラス）を表すことができる。注釈付きオブジェクト指向表現１０２は、１つまたは複数のインターフェース（例えば、インターフェース２５２）を含むことができる。各インターフェースは、入力パラメータ（例えば、入力パラメータ２７３）、ならびに出力パラメータおよび／または戻り値（例えば、戻り値２７４）を有する、１つまたは複数のメソッド（例えばメソッド２６２）を含むことができる。注釈付きオブジェクト指向表現１０２内に含まれるオブジェクト（インターフェース、メソッド、パラメータなど）を、サービス記述属性によって注釈付けすることができる。
【００５２】
方法３００は、注釈付きオブジェクト指向表現のオブジェクトを注釈付けするサービス記述属性を、識別する動作を含む（動作３０２）。例えば、タイプローダ１０３は、注釈付きオブジェクト指向表現１０２のインターフェースを注釈付けするサービスコントラクト属性（例えば、サービスコントラクト属性２５３）を、識別することができる。サービスコントラクト属性は、ＷＳＤＬ  ＸＭＬドキュメント、および／または、チャネルを構成するための構成情報において使用される、名前および名前空間を含むことができる。
【００５３】
他のタイプの属性を識別することもできる。例えば、タイプローダ１０３は、オペレーションコントラクト属性（例えば、オペレーションコントラクト属性２６３）、メッセージコントラクト属性（例えば、メッセージコントラクト属性２７７）、メッセージコントラクト属性（例えば、メッセージコントラクト属性２７６）、およびデータコントラクト属性（例えば、データコントラクト属性２７８）を識別することができる。このような他のタイプの属性は、ＷＳＤＬ  ＸＭＬドキュメントで使用される名前および名前空間を含むことができる。
【００５４】
方法３００は、識別されたサービス記述属性に含まれるサービス記述情報に従って、オブジェクトを、対応するサービス指向要素にマップする動作を含む（動作３０３）。例えば、タイプローダ１０３は、注釈付きオブジェクト指向表現１０２から、インターフェース、メソッド、パラメータ、および／または戻り値を（対応するサービス指向要素へ）マップすることができる。例えば、インターフェース２５２を、コントラクト２０２にマップすることができ、メソッド２６２を、オペレーション２１３にマップすることができ、パラメータ２７３を、メッセージ２３３および２３４にマップすることができ、それぞれ、サービスコントラクト属性２５３、オペレーションコントラクト属性２６３、メッセージコントラクト属性２７６に含まれるサービス記述データに従ってマップされる。
【００５５】
方法３００は、サービス指向表現に記述される挙動およびデータフォーマットを実装するよう構成されたチャネルオブジェクトを出力する動作を含む（動作３０４）。例えば、サービス記述属性に含まれるサービス記述情報に基づいて、タイプローダ１０３が、チャネルオブジェクト１０４を生成し出力することができる。チャネルオブジェクト１０４は、注釈付きオブジェクト指向表現１０２内に含まれるタイプ（例えば、クラス２５１）のものとすることができる。チャネルオブジェクト１０４は、次いでロードされて、含まれるサービス記述情報に従って、対応するチャネルを開始することができる。例えば、チャネルオブジェクト１０４を使用して、サービス記述情報に記述されるように、挙動を実装し（例えば、オペレーション）、データをフォーマットする（例えば、メッセージ２３３および２３４）ことができる。
【００５６】
方法３００は、サービスの挙動およびデータフォーマットに適合したチャネルを開始する動作（動作３０５）を含む。例えば、コンピュータシステム１０１は、チャネルオブジェクト１０４から、チャネル１０５を開始することができる。チャネル１０５は、サービスランタイム１１２の挙動（例えば、オペレーション）、およびデータフォーマット（例えば、メッセージ、ヘッダ、ボディ）と適合することができる。
【００５７】
コンバータ１３４は、オブジェクト指向パラメータと適切なメッセージフォーマット（例えば、ＸＭＬ命令を含むＳＯＡＰメッセージ）の変換およびその逆の変換のためのメッセージ記述を含むことができる。例えば、コンバータ１３４は、メソッド１２９から入力パラメータ１２２を受け取り、（例えば、マッピング２９３に従って）入力パラメータ１２２を適切なフォーマットに変換し、変換した入力パラメータ１２２をメッセージ１３１（ＳＯＡＰメッセージ）内に含めることができる。サービス１１２は、メッセージ１３１を受け取り、メッセージ１３１を処理し（例えば、２つの整数の和を計算する）、メッセージ１３２（ＳＯＡＰメッセージ）を返すことができる。
【００５８】
メッセージ１３２は、メッセージ１３１と同じまたは同様のフォーマットのものとすることができ、１つまたは複数の適切にフォーマットされた出力パラメータおよび／または戻り値を含むことができる。コンバータ１３４は、メッセージ１３２を受け取り、適切にフォーマットされた出力パラメータおよび／または戻り値を、オブジェクト指向のパラメータおよび／または戻り値に変換し、オブジェクト指向のパラメータおよび／または戻り値を、適切なメソッドに提示することができる。例えば、コンバータ１３４は、適切にフォーマットされた指向パラメータおよび／または戻り値を抽出し、出力パラメータ１４２および戻り値１２６に変換し、出力パラメータ１４２および戻り値１２６をメソッド１２３に提示する。
【００５９】
図４は、本発明の原理に適した動作環境を示す。図４および以下の議論では、本発明を実装することができる適切なコンピューティング環境についての簡潔で一般的な説明を与えることを意図している。必須ではないが、コンピュータシステムによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的コンテキストにおいて本発明を説明する。一般に、プログラムモジュールには、特定のタスクを実行するかまたは特定の抽象データタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などが含まれる。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、本明細書に開示の方法の動作を実行するためのプログラムコード手段の例を表す。
【００６０】
図４を参照すると、本発明を実装するための例示的システムは、処理装置４２１、システムメモリ４２２、および、システムメモリ４２２から処理装置４２１までを含む様々なシステムコンポーネントを結合するシステムバス４２３を含め、コンピュータシステム４２０の形態を取る汎用コンピューティングデバイスを含んでいる。処理装置４２１は、本発明の特徴を含むコンピュータシステム４２０の特徴を実装するように設計されたコンピュータ実行可能命令を実行することができる。システムバス４２３は、様々なバスアーキテクチャのうち任意のアーキテクチャを使用した、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めて、いくつかのタイプのうち任意のバス構造とすることができる。システムメモリは、ＲＯＭ（読取り専用メモリ）４２４、およびＲＡＭ（ランダムアクセスメモリ）４２５を含む。始動時などにコンピュータ４２０内の要素間で情報を転送する助けとなる基本ルーチンを含むＢＩＯＳ（基本入出力システム）４２６は、ＲＯＭ４２４に格納することができる。
【００６１】
コンピュータ４２０は、磁気ハードディスク４３９から読み取りまたはそれに書き込む磁気ハードディスクドライブ４２７、リムーバル磁気ディスク４２９から読み取りまたはそれに書き込む磁気ディスクドライブ４２８、および、例えばＣＤ−ＲＯＭまたは他の光媒体などのリムーバル光ディスク４３１から読み取りまたはそれに書き込む光ディスクドライブ４３０を含むこともできる。磁気ハードディスクドライブ４２７、磁気ディスクドライブ４２８、および光ディスクドライブ４３０はそれぞれ、ハードディスクドライブインターフェース４３２、磁気ディスクドライブインターフェース４３３、および光ドライブインターフェース４３４によってシステムバス４２３に接続されている。これらのドライブおよび関連するコンピュータ可読媒体は、コンピュータ４２０のためのコンピュータ実行可能命令、データ構造、プログラムモジュール、および他のデータの不揮発性のストレージを提供する。本明細書に記載の例示的環境では、磁気ハードディスク４３９、リムーバル磁気ディスク４２９、およびリムーバル光ディスク４３１が使用されているが、磁気カセット、フラッシュメモリカード、ＤＶＤ、ベルヌーイ（Ｂｅｒｎｏｕｌｌｉ）カートリッジ、ＲＡＭ、ＲＯＭなどを含めて他のタイプのデータを格納するためのコンピュータ可読媒体を使用することもできる。
【００６２】
オペレーティングシステム４３５、１つまたは複数のアプリケーションプログラム４３６、他のプログラムモジュール４３７、およびプログラムデータ４３８を含めて、１つまたは複数のプログラムモジュールを含むプログラムコード手段を、ハードディスク４３９、磁気ディスク４２９、光ディスク４３１、ＲＯＭ４２４、またはＲＡＭ４２５に格納することができる。ユーザは、キーボード４４０、ポインティングデバイス４４２、あるいは、例えば、マイク、ジョイスティック、ゲームパッド、またはスキャナなど他の入力装置（図示せず）を介して、コマンドおよび情報をコンピュータシステム４２０に入力することができる。上記および他の入力装置は、システムバス４２３に結合された入出力インターフェース４４６を介して処理装置４２１に結合することができる。入出力インターフェース４４６は、例えば、シリアルポートインターフェース、ＰＳ／２インターフェース、パラレルポートインターフェース、ＵＳＢ（ユニバーサルシリアルバス）インターフェース、またはＩＥＥＥ（電気電子技術者協会）１３９４インターフェース（すなわち、ＦｉｒｅＷｉｒｅインターフェース）など任意の様々なインターフェースを論理的に表し、様々なインターフェースの組合せを論理的に表すこともある。
【００６３】
また、モニタ４４７または他の表示装置が、ビデオインターフェース４４８を介してシステムバス４２３に接続される。例えばスピーカやプリンタなど他の出力周辺装置（図示せず）も、コンピュータシステム４２０に結合することができる。
【００６４】
コンピュータシステム４２０は、例えば、オフィスまたは企業規模のコンピュータネットワーク、ホームネットワーク、イントラネット、および／またはインターネットなどのネットワークに接続可能である。コンピュータシステム４２０は、このようなネットワークを介して、例えば、リモートコンピュータシステム、リモートアプリケーション、および／またはリモートデータベースのような外部ソースとデータを交換することができる。
【００６５】
コンピュータシステム４２０は、ネットワークインターフェース４５３を含み、それを介して、外部ソースからデータを受信し、かつ／または外部ソースにデータを送信する。図４に示すように、ネットワークインターフェース４５３は、リンク４５１を介したリモートコンピュータシステム４８３とのデータの交換を支援する。ネットワークインターフェース４５３は、例えば、ネットワークインターフェースカード、および対応するＮＤＩＳ（ネットワークドライバインターフェース仕様（Ｎｅｔｗｏｒｋ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ））スタックなどのような、１つまたは複数のソフトウェアおよび／またはハードウェアモジュールを論理的に表すことができる。リンク４５１は、ネットワークの一部分（例えば、イーサネット（登録商標）セグメント）を表し、リモートコンピュータシステム４８３は、ネットワークのノードを表している。
【００６６】
同様に、コンピュータシステム４２０は、入出力インターフェース４４６を含み、それを介して、外部ソースからデータを受信し、かつ／または外部ソースにデータを送信する。入出力インターフェース４４６は、リンク４５９を経由してモデム４５４（例えば、標準モデム、ケーブルモデム、ＤＳＬ（デジタル加入者線）モデム）に結合され、それを介して、コンピュータシステム４２０は、外部ソースからデータを受信し、かつ／または外部ソースにデータを送信する。図４に示すように、入出力インターフェース４４６およびモデム４５４は、リンク４５２を介したリモートコンピュータシステム４９３とのデータの交換を支援する。リンク４５２は、ネットワークの一部分を表し、リモートコンピュータシステム４９３は、ネットワークのノードを表している。
【００６７】
図４は、本発明に適した動作環境を表しているが、本発明の原理は、本発明の原理を実装することができる、必要な場合は適切な修正を加えた任意のシステムにおいて用いることができる。図４に示す環境は、例示に過ぎず、本発明の原理を実装しうる多岐にわたる様々な環境のごく一部も表していない。
【００６８】
本発明によれば、タイプローダ、チャネル、およびサービスランタイムを含むモジュール、ならびに、注釈付きオブジェクト指向表現、チャネルオブジェクト、サービス指向表現、およびメッセージを含む関連するデータを、コンピュータシステム４２０に関連する任意のコンピュータ可読媒体に格納することができ、そのコンピュータ可読媒体からアクセスすることができる。例えば、このようなモジュールの部分ならびに関連するプログラムデータの部分を、システムメモリ４２２に格納するために、オペレーティングシステム４３５、アプリケーションプログラム４３６、プログラムモジュール４３７、および／またはプログラムデータ４３８に含めることができる。
【００６９】
例えば、磁気ハードディスク４３９などの大容量記憶装置が、コンピュータシステム４２０に結合されているとき、このようなモジュールおよび関連するプログラムデータを、その大容量記憶装置に格納することができる。ネットワーク環境では、コンピュータシステム４２０またはその部分に関係して示されたプログラムモジュールを、リモートコンピュータシステム４８３および／またはリモートコンピュータシステム４９３に関連するシステムメモリおよび／または大容量記憶装置のようなリモートメモリ記憶装置に格納することができる。前述のように、それらのモジュールを、分散環境において実行することもできる。
【００７０】
本発明を、本発明の趣旨および本質的特徴から逸脱することなく、他の特定の形態で実施することもできる。上述の実施形態は、すべての点において例示に過ぎず、限定するものと見なすべきではない。したがって、本発明の範囲は、以上の記述によってではなく添付の特許請求の範囲によって示される。特許請求の範囲と等価な意味および範囲に含まれるすべての変更は、特許請求の範囲に包含されるべきである。
【図面の簡単な説明】
【００７１】
【図１】分散アプリケーションのオブジェクト指向表現とサービス指向表現の間のマッピングを促進するコンピュータアーキテクチャの例を示す図である。
【図２】ある分散アプリケーションのオブジェクト指向表現と、それと同じ分散アプリケーションのサービス指向表現の間の例示的マッピングを示す図である。
【図３】チャネルスタックを開始するための方法を示す例示的フローチャートである。
【図４】本発明の原理に適した動作環境を示す図である。
【符号の説明】
【００７２】
１００  コンピュータアーキテクチャ
１０１  コンピュータシステム
１０２  注釈付きオブジェクト指向表現
１０３  タイプローダ
１０４  チャネルオブジェクト
１０５  チャネル
１１１  コンピュータシステム
１１２  サービスランタイム
１２１  ネットワーク
１２９  メソッド
１２２  入力パラメータ
１２３  メソッド
１２４  出力パラメータ
１２６  戻り値
１３１  メッセージ
１３２  メッセージ
１３４  コンバータ
２０１  サービス
２０２  コントラクト
２０３  垂直方向の省略符号
２０５  サービス指向表現
２１２  オペレーション
２１３  オペレーション
２１４  垂直方向の省略符号
２３２  メッセージ
２３３  メッセージ
２３４  メッセージ
２４２  省略符号
２４３  省略符号
２４４  ヘッダ
２４６  ボディ
２５１  クラス
２５２  インターフェース
２５４  垂直方向の省略符号
２５５  オブジェクト指向表現
２６２  メソッド
２６４  メソッド
２６６  垂直方向の省略符号
２６７  垂直方向の省略符号
２７３  パラメータ
２７４  戻り値
２９１  マッピング
２９２  マッピング
２９３  マッピング
３０１  サービスの注釈付きオブジェクト指向表現にアクセスする  このオブジェクト指向表現は、オブジェクト指向表現に含まれるオブジェクトを、サービスのサービス指向表現における対応するサービス指向要素にマップする、サービス記述属性によって注釈付けされる
３０２  注釈付きオブジェクト指向表現のオブジェクトを注釈付けするサービス記述属性を識別する
３０３  識別したサービス記述属性に含まれるサービス記述情報に従って、オブジェクトを、対応するサービス指向要素にマップする
３０４  サービス指向表現に記述された挙動およびデータフォーマットを実装するよう構成された、チャネルオブジェクトを出力する
３０５  サービスの挙動およびデータフォーマットに適合したチャネルを開始する
４２０  コンピュータ
４２１  処理装置
４２２  システムメモリ
４２３  システムバス
４２４  （ＲＯＭ）
４２５  （ＲＡＭ）
４２６  ＢＩＯＳ
４２７  磁気ハードディスクドライブ
４２８  磁気ディスクドライブ
４２９  磁気ディスク
４３０  光ディスクドライブ
４３１  光ディスク
４３２  ハードディスクドライブインターフェース
４３３  磁気ディスクドライブインターフェース
４３４  光ドライブインターフェース
４３５  オペレーティングシステム
４３６  アプリケーションプログラム
４３７  他のプログラムモジュール
４３８  プログラムデータ
４３９  磁気ハードディスク
４４０  キーボード
４４２  ポインティングデバイス
４４６  シリアルポートインターフェース
４４７  モニタ
４４８  ビデオアダプタ
４５１  リンク
４５２  リンク
４５３  ネットワークインターフェース
４５４  モデム
４８３  リモートコンピュータ
４９３  リモートコンピュータ
【図１】
2006216029.tif 000005
【図２】
2006216029.tif 000006
【図３】
2006216029.tif 000007
【図４】
2006216029.tif 000008