JP2012512445A - メッセージ処理パイプラインの構成 - Google Patents

メッセージ処理パイプラインの構成 Download PDF

Info

Publication number
JP2012512445A
JP2012512445A JP2011526082A JP2011526082A JP2012512445A JP 2012512445 A JP2012512445 A JP 2012512445A JP 2011526082 A JP2011526082 A JP 2011526082A JP 2011526082 A JP2011526082 A JP 2011526082A JP 2012512445 A JP2012512445 A JP 2012512445A
Authority
JP
Japan
Prior art keywords
pipeline
message processing
application
component
identifying
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.)
Granted
Application number
JP2011526082A
Other languages
English (en)
Other versions
JP5362011B2 (ja
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 JP2012512445A publication Critical patent/JP2012512445A/ja
Application granted granted Critical
Publication of JP5362011B2 publication Critical patent/JP5362011B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Communication Control (AREA)

Abstract

本発明は、メッセージ処理パイプラインを構成するための方法、システム及びコンピュータプログラム製品に及ぶ。実施形態は、パイプライン内通信リンクを利用して、パイプラインステージを物理的にかつ/または一時的に分離して、メッセージフローを分岐するよう構成し、プロトコルをブリッジングする。パイプライン内通信リンクの使用によって、パイプラインコンポーネントまたはアプリケーションを変更する必要なしにメッセージ処理パイプラインを構成できるようになる。各通信リンクは、それ自体、時間及び/または空間にわたってメッセージをブリッジングする受信メッセージ処理パイプライン及び送信メッセージ処理パイプラインを備えたアプリケーションまたはメッセージ処理要件を満たすためのアプリケーション論理である。

Description

本発明は、メッセージ処理パイプラインの構成(composing)に関する。
1.背景及び関連技術
コンピュータシステム及び関連技術は、社会の多くの側面に影響を与えている。実際、情報を処理するコンピュータシステムの能力は、我々が生活し仕事をする方法を変えた。コンピュータシステムは、現在では一般に、コンピュータシステムの出現前に手作業で行なわれた多くの作業(例えば、文書処理、スケジューリング、会計等)を行なう。最近では、コンピュータシステムは、互いにかつ他の電子装置に接続されていて、コンピュータシステム及び他の電子装置が電子データを転送することができる無線及び有線のコンピュータネットワークを形成する。従って、多くのコンピュータ作業は、多くの異なるコンピュータシステム及び/または多くの異なるコンピュータ環境に分散されて実行される。
分散コンピュータ環境では、サービスを接続するプロトコル実行を、アプリケーション処理論理(logic)から切り離すことが望ましいことが多い。この組合せについての確立したパターンは、各層が下層のプロトコルの特徴を構築する階層化されたプロトコルスタックを実施することである。例えば、ベース層は未処理データの接続性(raw data connectivity)を提供し、一方、上位層はセキュリティを高めるかまたは配信を保証してもよい。メッセージの抽象化(message abstractions)を用いて、プロトコル層はまた、ある程度の構成の独立性を有することができる。例えば、セキュリティプロトコルは、多くの異なるトランスポートプロトコルで利用可能であるかもしれない。
階層化されたプロトコルスタックは、メッセージ処理パイプラインとして抽象化されることが多い。そのとき、アプリケーション論理は、プロトコルの独自のやり方で書き込まれ、その後、パイプラインのうちの1つまたは複数と組み合わされる。しかしながら、いくつかの技術についてのメッセージ処理パイプラインは現在、多くの異なる制限を伴って実現されている。例えば、メッセージ処理パイプラインのコンポーネントは、典型的には、一時的かつ物理的に結合したやり方で構成される。
プロトコルスタックにおける一時的な結合(temporal coupling)は、例えば、メッセージ処理パイプラインが先に進む前にオペレーションを完了するのをアプリケーションに待たせるといった、アプリケーションのビヘイビアを制限する。一時的な結合の1つの例は、プロトコルが、次のプロトコルが実行可能になる前に、メッセージについての確認を必要とする場合である。第2の例は、プロトコルが、いくつかのメッセージを、次のプロトコルが送信するための単一のメッセージへまとめる場合である。これらの例は、プロトコル同士の間の同期を必要としていて、アプリケーションがこの同期に参加して特定のメッセージ交換パターンを実施することを必要とするかもしれない。
プロトコルスタックがその実行環境によって決まる場合に、物理的な結合(physical coupling)が生じる。例えば、プロトコルは、ローカルのマシンにインストールされた特定のソフトウェアライブラリを備えていることによって決まってもよい。いくつかのプロトコルは、各々かかる依存関係を有することができる。プロトコルスタックは、かかる依存関係の全てを同時に満たす実行環境にだけ配置することができる。配置されたパイプラインの各々が異なる依存関係の要件を定めているので、会社はかかる実行環境を構築するために追加のソフトウェアまたはハードウェアを購入しなければならないかもしれない。
本発明の目的とするところは、メッセージ処理パイプラインの構成(composing)を提供することにある。
本発明は、メッセージ処理パイプラインを構成するための方法、システム及びコンピュータプログラム製品に及ぶ。コンピュータシステムは、アプリケーションについての現在のパイプライン仕様(pipeline specification)にアクセスする。現在のパイプライン仕様は、アプリケーションについてのメッセージ処理パイプラインを構成する方法を特定しており、該方法は、アプリケーションについてのメッセージ処理パイプラインに含まれることになっているメッセージングコンポーネントを特定することを含んでいる。コンピュータシステムは、アプリケーションについての追加のメッセージ処理要件にアクセスする。追加のメッセージ処理要件は、例えば、コンフィギュレーションファイル、ユーザ命令または第2のパイプライン仕様に明示的に含むことができる。追加のメッセージ処理要件はまた、例えばコンフィギュレーションファイル、ユーザ命令または第2のパイプライン仕様のコンテンツに関連して現在の仕様のコンテンツから推定することができる。
コンピュータシステムは、現在のパイプライン仕様に適用することができる変換内容(transforms)を特定して、追加のメッセージ処理要件を満たす追加のメッセージ処理機能を特定する。変換内容は、メッセージ処理パイプラインへ含めるようすでに特定されたメッセージングコンポーネントに基づいてかつ追加のメッセージ処理要件に基づいて特定される。変換内容はまた、どんなメッセージングコンポーネントをコンピュータシステムに利用可能かに基づいて特定することができる。
コンピュータシステムは、特定された変換内容を現在のパイプライン仕様に適用して、アプリケーションについての変換されたパイプライン仕様を作成する。変換されたパイプライン仕様は、追加のメッセージ要件を満たすアプリケーションについてのメッセージ処理パイプラインを構築する方法を特定する。変換されたパイプライン仕様は、メッセージ処理パイプラインに含まれて追加のメッセージ処理要件を満たすことになっているメッセージングコンポーネントの構成を特定する。コンピュータシステムは、変換されたパイプライン仕様を解釈して、アプリケーションについてのメッセージ処理パイプラインのインスタンスを作成する。インスタンスを作成されたメッセージ処理パイプラインは、アプリケーションについての追加のメッセージ処理要件を満たすように構成される。
この概要は、詳細な説明で更に後述される簡略化された形式の概念の選択を導くために提供される。この概要は、請求された本発明の重要な特徴または基本的な特徴を特定することを意図していないし、請求された本発明の範囲を決定する際の助けとして用いられることも意図していない。
本発明の追加の特徴及び利点は、あとに続く詳細な説明に記載されており、該詳細な説明から一部が明らかになるかまたは本発明の実施によって理解することができる。本発明の特徴及び利点は、添付の特許請求の範囲において特に指摘される機器及び該機器の組み合わせを用いて実現しかつ得ることができる。本発明のこれらの特徴及び他の特徴は、以下の詳細な説明及び添付の特許請求の範囲からさらに十分に明らかになるか、または以後に記載されるような本発明の実施例で理解することができる。
本発明の上記の利点及び特徴並びに他の利点及び特徴を得ることができる方法を説明するために、上記に簡単に説明された本発明のより具体的な説明は、添付の図面に示されるこれらの特定の実施形態を参照して示される。これらの図面は本発明の代表的な実施形態だけを表していて、従って、その範囲を限定すると見なされるべきではないということを理解されたい。本発明は、添付の図面を用いて追加の特異性及び詳細によって述べられかつ説明することができる。
メッセージ処理パイプラインを構成するのを容易にする例示的なコンピュータアーキテクチャを示す図である。 メッセージ処理パイプラインを構成する例示的な方法のフローチャートである。 例示的なメッセージ処理パイプラインを示す図である。 論理パイプライン及び該論理パイプラインに対応する物理的配置を含むコンピュータアーキテクチャを示す図である。 持続的キューで隔てられたメッセージ処理パイプラインコンポーネントを備えたコンピュータアーキテクチャを示す図である。
本発明は、メッセージ処理パイプラインを構成するための方法、システム及びコンピュータプログラム製品に及ぶ。コンピュータシステムは、アプリケーションについての現在のパイプライン仕様にアクセスする。現在のパイプライン仕様は、アプリケーションについてのメッセージ処理パイプラインを構成する方法を特定しており、該方法は、アプリケーションについてのメッセージ処理パイプラインに含まれることになっているメッセージングコンポーネントを特定することを含んでいる。コンピュータシステムは、アプリケーションについての追加のメッセージ処理要件にアクセスする。追加のメッセージ処理要件は、例えば、コンフィギュレーションファイル、ユーザ命令または第2のパイプライン仕様に明示的に含むことができる。追加のメッセージ処理要件はまた、例えばコンフィギュレーションファイル、ユーザ命令または第2のパイプライン仕様のコンテンツに関連して現在の仕様のコンテンツから推定することができる。
コンピュータシステムは、現在のパイプライン仕様に適用することができる変換内容を特定して、追加のメッセージ処理要件を満たす追加のメッセージ処理機能を特定する。変換内容は、メッセージ処理パイプラインを含めるようすでに特定されたメッセージングコンポーネントに基づいてかつ追加のメッセージ処理要件に基づいて特定される。変換内容はまた、どんなメッセージングコンポーネントがコンピュータシステムに利用可能かに基づいて特定することができる。
コンピュータシステムは、特定された変換内容を現在のパイプライン仕様に適用して、アプリケーションについての変換されたパイプライン仕様を作成する。変換されたパイプライン仕様は、追加のメッセージ要件を満たすアプリケーションについてのメッセージ処理パイプラインを構築する方法を特定する。変換されたパイプライン仕様は、メッセージ処理パイプラインに含まれて追加のメッセージ処理要件を満たすことになっているメッセージングコンポーネントの構成を特定する。コンピュータシステムは、変換されたパイプライン仕様を解釈して、アプリケーションについてのメッセージ処理パイプラインのインスタンスを作成する。インスタンスを作成されたメッセージ処理パイプラインは、アプリケーションについての追加のメッセージ処理要件を満たすように構成される。
本発明の実施形態は、更に詳細に以下で説明されるように、コンピュータハードウェアを有する専用コンピュータまたは汎用コンピュータを含むかまたは利用することができる。本発明の範囲内にある実施形態はまた、コンピュータ実行可能命令及び/またはコンピュータ実行可能データ構造を送信または格納するための物理的コンピュータ可読媒体及び他のコンピュータ可読媒体を含む。かかるコンピュータ可読媒体は、汎用コンピュータシステムまたは専用コンピュータシステムがアクセスすることができるいかなる利用可能な媒体であってもよい。コンピュータ実行可能命令を格納するコンピュータ可読媒体は、物理的記憶媒体である。コンピュータ実行可能命令を送信するコンピュータ可読媒体は、伝送媒体である。よって、例であって限定ではないが、本発明の実施形態は、少なくとも2つの明らかに異なった種類のコンピュータ可読媒体を含むことができる。即ち、物理的記憶媒体及び伝送媒体である。
物理的記憶媒体は、RAM、ROM、EEPROM、CD−ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、またはコンピュータ可読命令またはコンピュータ可読データ構造の形で所望のプログラムコード手段を格納するために用いることができるあらゆる他の媒体もしくは汎用コンピュータもしくは専用コンピュータがアクセスすることができるあらゆる他の媒体を含む。
「ネットワーク」は、コンピュータシステム及び/またはモジュール及び/または他の電子デバイスの間で電子データの送信を可能にする1つまたは複数のデータリンクと定義される。情報がネットワークまたは別の通信接続(有線、無線、または、有線もしくは無線の組合せのいずれか)を介してコンピュータに転送されるかまたは提供されると、コンピュータは、伝送媒体として適切に接続を表示する。伝送媒体は、ネットワーク及び/またはデータリンクを含むことができ、ネットワーク及び/またはデータリンクは、コンピュータ実行可能命令またはコンピュータ実行可能データ構造の形で所望のプログラムコード化手段を搬送するために用いることができるかまたは汎用コンピュータまたは専用コンピュータがアクセスすることができる。上記の組合せも、コンピュータ可読媒体の範囲内に含まれなければならない。
更に、様々なコンピュータシステムコンポーネントに至ると、コンピュータ実行可能命令またはコンピュータ実行可能データ構造の形のプログラムコード手段は、伝送媒体から物理的記憶媒体に(またはその逆に)自動的に転送されてもよい。例えば、ネットワークまたはデータリンクを介して受信されたコンピュータ実行可能命令またはコンピュータ実行可能データ構造は、ネットワークインタフェースモジュール(例えば、「NIC」)内のRAMにバッファリングすることができ、次にコンピュータシステムのRAMにかつ/またはコンピュータシステムのより不安定でない物理的記憶媒体に最終的に転送することができる。よって、物理的な記憶媒体は、伝送媒体をも利用する(または主としても利用する)コンピュータシステムコンポーネントに含まれ得ると理解されなければならない。
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータまたは専用処理デバイスに一定の機能または一定の機能グループを実行させる命令及びデータを含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間フォーマット命令またはソースコードでもよい。本発明は、構造上の特徴及び/または方法論的動作に特有の言語で説明されているが、添付の特許請求の範囲において定義される本発明は、必ずしも上記に説明された特徴または説明された動作に限定されるものではないと理解されなければならない。むしろ、説明された特徴及び動作は、特許請求の範囲を実施する例示的な形式として開示される。
当業者は、本発明を多くのタイプのコンピュータシステム構成を備えたネットワークコンピュータ環境で実施することができると認めることができる。多くのタイプのコンピュータシステム構成には、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、携帯デバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品もしくはプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話、PDA、ポケットベル、ルータ、スイッチなどが含まれる。本発明はまた、ネットワークを介して(有線データリンクによって、無線データリンクによって、または、有線データリンク及び無線データリンクの組み合わせによってのいずれかで)接続されたローカルのコンピュータシステム及びリモートのコンピュータシステムの両方がタスクを実行する分散処理システム環境において実施することができる。分散システム環境において、プログラムモジュールは、ローカルのメモリ記憶装置及びリモートのメモリ記憶装置の両方に配されてもよい。
図1は、メッセージ処理パイプラインを構成するのを容易にする例示的なコンピュータアーキテクチャ100を示す。図1を参照すると、コンピュータアーキテクチャ100は、パイプライン仕様リファインメントモジュール(pipeline specification refinement module)101、パイプライン仕様インタプリタ(pipeline specification interpreter)106及びアプリケーション107を含む。示したコンピュータシステムの各々は、例えばローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、及びインターネットなどのネットワークを介して互いに接続されている(または、これらの一部である)。従って、示したコンピュータシステム及びあらゆる他の接続されたコンピュータシステムの各々、並びにこれらのコンポーネントは、メッセージ関連データを生成することができ、ネットワークを介してメッセージ関連データ(例えば、インターネットプロトコル(「IP」)データグラム及び、例えば、伝送制御プロトコル(「TCP」)、ハイパーテキスト転送プロトコル(「HTTP」)、SMTP(Simple Mail Transfer Protocol)等を利用する他の上位層プロトコルなど)を交換することができる。
通常、パイプライン仕様リファインメントモジュール101は、追加のメッセージ処理要件を考慮して、パイプライン仕様を、追加のメッセージ処理要件を満たすメッセージ処理パイプラインを特定するパイプライン仕様に変換するよう構成されている。パイプライン仕様リファインメントモジュール101は、要件特定モジュール(requirements identification module)102、変換特定モジュール(transform identification module)103及び変換アプリケーションモジュール(transform application module)104を含む。
要件特定モジュール102は、メッセージ処理パイプラインについての追加の処理要件を特定するよう構成されている。追加の要件は、パイプライン仕様リファインメントモジュール101に与えられた、例えばコンフィギュレーションファイル、ユーザ命令または第2のパイプライン仕様などの追加の情報に明示的に含むことができる。例えば、コンフィギュレーションファイルは、プロトコルスタックの異なる層同士の間で暗号化または信頼性が必要であること示すことができる。要件特定モジュール102は、追加の情報にアクセスすることができて、追加の情報に含まれる追加の処理要件を特定することができる。
要件特定モジュール102はまた、追加の情報のコンテンツを考慮してパイプライン仕様のコンテンツに基づいて、追加の処理要件を推定することができる。よって、要件特定モジュール102は、例えば、コンフィギュレーションファイル、ユーザ命令または第2のパイプライン仕様を考慮して、パイプライン仕様のコンテンツに基づいて追加のメッセージ処理要件を推定することができる。例えば、1つのパイプライン仕様は第1のトランスポート層プロトコルを特定し、別のパイプライン仕様は第2の異なるトランスポートプロトコルを特定するかもしれない。従って、要件特定モジュール102は、第1のトランスポートプロトコルと第2のトランスポートプロトコルとの間のプロトコルブリッジを使用することが追加のメッセージ処理要件であると推定することができる。
変換特定モジュール103は、パイプライン仕様を変換するためにパイプライン仕様に適用されて、追加のメッセージ処理要件を満たすメッセージ処理パイプラインを特定することができる変換内容を特定するよう構成されている。例えば、現在のパイプライン仕様及び追加の要件に基づいて、変換特定モジュール103は、現在のパイプライン仕様を変換されたパイプライン仕様に変換するための変換内容を特定することができる。変換されたパイプライン仕様は、例えば、追加のメッセージ処理要件を満たすメッセージ処理コンポーネントの構成を有するパイプライン内通信リンクを特定することができる。
変換内容を特定する場合、変換特定モジュール103はまた、利用可能なパイプラインコンポーネントの機能を考慮することができる。利用可能なパイプラインコンポーネントの機能は、例えば、メッセージ処理パイプラインに含めるために利用可能な、メッセージポンプ、メッセージトランスフォーマ、持続的ストア、通信媒体、ライブラリ等である。利用可能なパイプラインコンポーネントは、パイプライン仕様リファインメントモデル101と一緒に用いることができかつ/またはパイプライン仕様リファインメントモジュール101に関連して遠隔に位置することができる。よって、メッセージ処理パイプラインに含めるために特定された利用可能なコンポーネントは、ローカルでかつ/またはリモートでアクセスすることができる。
利用可能なパイプラインコンポーネントに応じて、変換特定モジュール103は、異なる変換内容を特定して、仕様に適用することができる。しかしながら、パイプラインコンポーネントの異なる組合せによっても同じ結果を得ることができるので、パイプライン仕様に対する異なる変換内容は、追加のメッセージ処理要件を満たすメッセージ処理パイプラインをやはり定義することができる。即ち、利用可能なパイプラインコンポーネントの機能に応じて、パイプラインコンポーネントの異なる組合せを、追加のメッセージ処理要件を満たすよう特定することができる。
変換アプリケーションモジュール104は、特定された変換内容をパイプライン仕様に適用して、仕様を、追加のメッセージ処理要件を満たす変換された仕様へと変換するよう構成されている。例えば、変換アプリケーションモジュール104は、パイプライン仕様及び変換内容を受信し、当該変換内容をパイプライン仕様に適用して変換されたパイプライン仕様を作成することができる。得られる変換された仕様は、パイプライン仕様インタプリタの構文制約及び意味制約に対応することができる。例えば、パイプライン仕様がパイプライン仕様インタプリタへの入力用に構成されている場合、該パイプライン仕様に基づいて変換されたパイプライン仕様も、同じパイプライン仕様インタプリタへの入力用に構成することができる。しかしながら、変換内容によって、異なるパイプライン仕様インタプリタへの入力用のパイプライン仕様の構成が変更されることもあり得る。パイプライン仕様を変換することは、例えば、テキスト編集を行うかまたは他の変更を加えることなどの、パイプライン仕様のコンテンツを変更して、メッセージ処理パイプライン機能及び/またはメッセージ処理パイプラインコンポーネントを特定できることを含む。
パイプライン仕様インタプリタ106は、パイプライン仕様を解釈して、パイプライン仕様からメッセージ処理パイプラインのインスタンスを作成するよう構成されている。例えば、パイプライン仕様インタプリタ106は、適切に構成されたパイプライン仕様を受信することができる。パイプライン仕様を受信するのに応じて、パイプライン仕様インタプリタ106は、パイプライン仕様で特定されるメッセージ処理パイプラインのインスタンスを作成するためのメッセージ処理コンポーネントを特定することができる。次に、パイプライン仕様インタプリタ106は、メッセージ処理パイプラインのインスタンスを作成することができ、これは、例えば、あらゆる追加の要件を満たすことを含む所望のメッセージ処理機能を提供するやり方で配された特定されたメッセージ処理コンポーネントとのパイプライン内通信リンクを含む。
メッセージ処理パイプラインの異なる部分は、異なるマシンまたは同じマシンの異なる部分でインスタンスを作成することができる。パイプライン内(intra-pipeline)通信リンクは、1つのマシン(またはプロセス)のメッセージ処理パイプラインの一部を、別のマシン(またはプロセス)のメッセージ処理パイプラインの一部に接続するために用いることができる。メッセージ処理パイプラインを介したメッセージフローも、例えば、メッセージ特性、プロトコル特性、マシン特性等に基づいてなど、異なるパイプラインコンポーネント同士の間で分岐することができる。パイプライン内通信リンクは、例えば、持続的メッセージキューイング製品などの持続的ストアを抽出して持続的通信リンクを提供することができる。(他の技術の)通信リンクが、続けるために他のパイプラインコンポーネントからの応答を待たなければならない場合に、持続的通信リンクはパイプラインコンポーネントがメッセージを処理し続けることができるようにする。メッセージ処理パイプラインはまた、パイプラインコンポーネント同士の間でプロトコルのブリッジング及び他の変換サービスを容易にするパイプラインコンポーネントを含むことができる。
コンピュータアーキテクチャ100に示されているように、アプリケーション107はメッセージ処理パイプライン108とは別個になっている。しかしながら、本発明の実施形態は、メッセージ処理パイプライン内のパイプラインコンポーネントとしてアプリケーションを含むメッセージ処理パイプラインも含む。
図2は、メッセージ処理パイプラインを構成する例示的な方法200のフローチャートを示す。方法200は、コンピュータアーキテクチャ100のコンポーネント及びデータに関して説明される。
方法200は、アプリケーションについての現在のパイプライン仕様にアクセスする動作を含み、現在のパイプライン仕様は、アプリケーションについてのメッセージ処理パイプラインを構築する方法を特定し、これは、アプリケーションについてのメッセージ処理パイプラインに含まれることになっているメッセージングコンポーネントを特定することを含む(動作201)。例えば、パイプライン仕様リファインメントモジュールは、パイプライン仕様121にアクセスすることができる。パイプライン仕様121は、アプリケーション107についてのメッセージ処理パイプラインを構築する方法を特定することができる。パイプライン仕様121は、アプリケーション107についてのメッセージ処理パイプラインに含まれることになっているパイプラインコンポーネントを、利用可能なパイプラインコンポーネント142から特定することができる。
利用可能なパイプラインコンポーネント142は、パイプライン仕様モジュール101に対してローカルにかつ/またはリモートに(例えば、ネットワーク通信を介してアクセスされる他のマシンに)位置するパイプラインコンポーネントを含むことができる。利用可能なパイプラインコンポーネント142は、例えば、メッセージポンプ(例えば、符号143)、メッセージトランスフォーマ(例えば、符号144)、持続可能な通信リンクを提供するための持続可能なストア(例えば、符号146)の抽出、通信媒体(例えば、符号147)及びライブラリ(例えば、符号148)などの様々な異なる機能を実装するよう構成することができる。利用可能なパイプラインコンポーネント142のパイプラインコンポーネントは、例えば、パイプライン内通信リンクのメッセージ処理パイプライン内でまとめられて、パイプライン仕様において特定されるメッセージ処理機能(例えば、暗号化、署名、信頼性、プロトコルブリッジング、メッセージ変換、パイプライン分岐等)を提供することができる。
要件特定モジュール102は、パイプライン仕様121についての追加の要件を特定することができる。例えば、要件特定モジュール102は、追加の情報122及び/またはパイプライン仕様121のコンテンツに基づいて、追加の要件131を特定することができる。いくつかの実施形態では、追加の情報122のコンテンツは、追加の要件を明示的に示す。例えば、追加の情報122は、追加の要件131を明示的に示す、(例えば、アプリケーション107と通信することになっているアプリケーションについての)別のパイプライン仕様、コンフィギュレーションファイル、ユーザ命令等を示してもよい。要件特定モジュール102は、追加の情報122から明示的に示された追加の要求を特定することができる。
あるいは、または明示的に示された追加の要件を特定することと組み合わせて、要件特定モジュール102はまた、追加の要件を推定することができる。例えば、要件特定モジュール102は、追加の情報122及びパイプライン仕様121にアクセスすることができる。追加の情報122及びパイプライン仕様121のコンテンツから、要件特定モジュール102は、追加の要件131を推定することができる。
要件特定モジュール102は、追加の情報122のコンテンツをパイプライン仕様121のコンテンツと比較して、当該比較に基づく推論を行うことができる。例えば、追加の情報122は、(特定されたメッセージ機能を含めることが要件であることを明示的に示すことなしに)通信しているときに、別のアプリケーションが特定されたメッセージング機能(例えば、暗号化、信頼できるメッセージング等)を使用することを示すことができる。他方、パイプライン仕様121は、メッセージ処理パイプラインアプリケーション107に含めるために特定されたメッセージ機能を特定することができない。
追加の情報122とパイプライン仕様121との間の比較から、要件特定モジュール102は、他のアプリケーションが特定されたメッセージング機能を使用するが、パイプライン仕様121は特定されたメッセージング機能を特定しないということを判断することができる。よって、要件特定モジュール102は、アプリケーション107についてのメッセージ処理パイプラインが他のアプリケーションと通信するための特定されたメッセージング機能を含むことになっていると推定することができる。従って、要件特定モジュール102は、パイプライン仕様121が特定されたメッセージング機能を特定するという追加の要件を特定することができる。
要件特定モジュール102は、追加の要件131を送信して特定モジュール103を変換することができる。従って、方法200は、アプリケーションについての追加のメッセージ処理要件にアクセスする動作を含む(動作202)。例えば、変換特定モジュール103は、追加の要件131を受信することができる。
方法200は、現在のパイプライン仕様に適用することができる変換内容を特定して、追加のメッセージ処理要件を満たす追加の処理機能を特定できる動作を含む。該変換内容は、メッセージ処理パイプラインに含めるためにすでに特定されたメッセージコンポーネントに基づいてかつ追加のメッセージ処理要件に基づいて特定される(動作203)。例えば、変換特定モジュール103は、変換内容132を特定することができる。変換内容132を、パイプライン仕様121に適用して、例えば、追加の要件131を満たすパイプライン内通信リンクなどの追加のメッセージ処理機能を特定することができる。変換内容132は、パイプライン仕様121及び追加の要件131においてすでに特定されたパイプラインコンポーネントに基づいて特定することができる。
変換内容132はまた、利用可能なパイプラインコンポーネント142に含まれるコンポーネントに基づいていてもよい。例えば、リスト151は利用可能なパイプラインコンポーネント142に含まれるコンポーネント及びこれらの機能を特定することができる。リスト151から、変換特定モジュール103は、仕様121に適用される変換内容132は何かを特定することができる。特定された変換内容132は、パイプライン仕様121の一部を変換するために用いて、追加の要件131を満たすメッセージ処理機能を実施するためのコンポーネントを(利用可能なパイプラインコンポーネント142から)特定することができる。
どのパイプラインコンポーネントが仕様121においてすでに特定されているかに応じて、異なる変換内容を特定して、追加の要件131を満たすためにメッセージ処理機能を特定することができる。変換特定モジュール103は、変換内容132を送信して、アプリケーションモジュール104を変換することができる。変換アプリケーションモジュール104は、変換特定モジュール103から変換内容132を受信することができる。
方法200は、特定された変換内容を現在のパイプライン仕様に適用して、アプリケーションについての変換されたパイプライン仕様を作成する動作を含む。変換されたパイプライン仕様は、追加のメッセージ処理要件を満たすアプリケーションについてのアプリケーションについてのメッセージ処理パイプライン構築する方法を特定し、当該方法は、追加のメッセージ処理要件を満たすためのメッセージ処理パイプラインに含まれることになっているメッセージングコンポーネントの構成を特定することを含む(動作204)。例えば、変換アプリケーションモジュール104は、変換内容132をパイプライン仕様121に適用して、変換されたパイプライン仕様121Tを作成することができる。変換されたパイプライン仕様121Tは、追加の要件131を満たすメッセージ処理パイプラインを構築する方法を特定する。変換されたパイプライン仕様121Tは、(例えば、利用可能なパイプラインコンポーネント142から)パイプラインコンポーネントの構成を特定することができる。該構成は、追加の要件131を満たすために、例えば通信リンク113に含まれるような、メッセージ処理パイプラインに含まれることになっている。
方法200は、変換されたパイプライン仕様を解釈して、アプリケーションについてのメッセージ処理パイプラインのインスタンスを作成する動作を含み、インスタンスを作成されたメッセージ処理パイプラインは、アプリケーションについての追加のメッセージ処理要件を満たすよう構成されている(動作205)。例えば、パイプライン仕様インタプリタ106は、変換されたパイプライン仕様121Tを解釈してメッセージ処理パイプライン108のインスタンスを作成することができる。パイプライン仕様インタプリタ106は、コンポーネント152にアクセスしてメッセージ処理パイプライン108のインスタンスを作成することができる。パイプライン仕様インタプリタ106は、変換されたパイプライン仕様121Tで特定される様にコンポーネント152を構成することができる。従って、仕様インタプリタ106は、通信リンク113が追加の要件131を満たすようなやり方で、メッセージ処理パイプライン108のインスタンスを作成することができる。
メッセージ処理パイプライン108は、通信媒体111、パイプラインコンポーネント112、通信リンク論理114との通信リンク113、並びにパイプラインコンポーネント116A及びパイプラインコンポーネント116Bを含む。図1に示したように、メッセージ処理パイプライン108は、論理的に表される。メッセージ処理パイプラインの異なるコンポーネントは、異なるマシンに物理的に存在してもよい。例えば、パイプラインコンポーネント112、パイプラインコンポーネント116A、パイプラインコンポーネント116B及びアプリケーション107は、全て異なるマシンに物理的に存在できる可能性がある。パイプラインコンポーネント116A及びパイプラインコンポーネント116Bは、メッセージ処理パイプライン108におけるメッセージ処理が、メッセージ特性、プロトコル特性、マシン特性等に基づいて分岐できることを表す。
通信リンク113は、パイプラインコンポーネント112からメッセージを受信することができる。通信リンク論理114は、追加の要件131を満たすやり方でパイプラインコンポーネント112から受信したメッセージの配置を決定することができる。通信リンク113は、パイプラインコンポーネント116A及び/またはパイプラインコンポーネント116Bにメッセージを送信することができる。
通常、パイプライン内通信リンクは、あらゆる下層の通信媒体を使用することができる。通信媒体を、パイプライン内通信リンクに先行しておりかつ後続するパイプラインコンポーネントの位置に基づいて使用してもよい。例えば、パイプラインコンポーネントが同じマシンの異なるプロセスに配置される場合、システムバスを通信媒体として用いることができる。他方、パイプラインコンポーネントが異なるマシンに配置される場合、ネットワーク媒体(有線及び/または無線)を通信媒体として用いることができる。
よって、より具体的には、パイプライン内通信リンクは、パイプラインコンポーネントを先行するパイプラインコンポーネントに接続する着信通信媒体(incoming communication medium)を含むことができる。パイプライン内通信リンクはまた、着信通信媒体からのメッセージを処理するための受信メッセージ処理パイプラインを含むことができる。パイプライン内通信リンクはまた、メッセージを処理してこれらの配置を決定する通信リンクアプリケーションを含むことができる。パイプライン内通信リンクはまた、パイプラインコンポーネントを後続するパイプラインコンポーネントに接続している1つまたは複数の発信通信媒体(outgoing communication medium)を含むことができる。パイプライン内通信リンクはまた、対応する発信通信媒体にメッセージを送信するための1つまたは複数の送信メッセージ処理パイプラインを含むことができる。
図3は、パイプライン内通信リンク321を含む例示的なメッセージ処理パイプライン300を示す。メッセージ処理パイプライン300は、通信媒体301、パイプラインコンポーネント302、パイプライン内通信リンク321、パイプラインコンポーネント309A及びパイプラインコンポーネント309B並びにアプリケーション311を含む。示したように、パイプライン内通信リンク321は、パイプラインコンポーネント302をパイプラインコンポーネント309A及びパイプラインコンポーネント309Bに接続する。
パイプライン内通信リンク321は、着信通信媒体303、受信メッセージ処理パイプライン304、通信リンク論理306、送信メッセージ処理パイプライン307A及び送信メッセージ処理パイプライン307B、発信通信媒体308A及び発信通信媒体308Bを含む。着信通信媒体303は、パイプライン内通信リンク321をパイプラインコンポーネント302に接続する。受信メッセージ処理パイプライン304は、着信通信媒体303を介してパイプラインコンポーネント302からメッセージを受信する。
通信リンク論理306は、メッセージを処理して、メッセージを配置する方法を決定する。例えば、メッセージのコンテンツまたはメッセージに付随するプロトコルのコンテンツに基づいて、通信リンク論理306は、メッセージが処理パイプライン307Aに送信されることになっているかどうかまたはメッセージ処理パイプライン307Bに送信されることになっているかどうかを判断することができる。
発信通信媒体308A及び発信通信媒体308Bは、それぞれパイプライン内通信リンク321をパイプラインコンポーネント309A及びパイプラインコンポーネント309Bに接続する。送信メッセージ処理パイプライン307A及び送信メッセージ処理パイプライン307Bは、それぞれ発信通信媒体308A及び発信通信媒体308Bにメッセージを送信する。
よって、メッセージ処理パイプライン内の通信リンクを用いることによって、実行の流れを、複数のパイプラインコンポーネントの中で分岐できるようになる。このように、各々が異なったメッセージタイプを処理することができるパイプラインコンポーネントのいくつかの異なるインスタンスが存在してもよい。通信リンクは、受信したメッセージのタイプに応じてパイプラインコンポーネントの特定のインスタンスに分岐することができる。その後、パイプラインは、分岐が起こったことにアプリケーションが気付かないように、メッセージがアプリケーションに達する前に、再結合することができる。あるいは、アプリケーション論理は、メッセージタイプに従って同様に分割することができるので、分岐されたパイプラインがアプリケーションまでずっと続くことが望ましいかもしれない。
例えば、パイプラインコンポーネント309A及びパイプラインコンポーネント309Bの両方は、アプリケーション311にメッセージを送信する。しかしながら、パイプライン内通信リンク300の分岐は、同じアプリケーションへと統合される必要はない。例えば、パイプラインコンポーネント309Aは、アプリケーション311にメッセージを送信することができ、パイプラインコンポーネント309Bはいくつかの異なるアプリケーションにメッセージを送信することができる。
本発明の実施形態は、異なるマシンに、おそらくその特定のマシンで利用可能なリソースに応じて、パイプラインコンポーネントを配置することを含む。各パイプラインコンポーネントを別個の適切に構成されたマシンに配置することができるように、パイプライン内通信リンクは、マシン同士の間で接続をブリッジングをするために用いることができる。
前述のように、パイプラインコンポーネントが異なるマシンに配置されている場合、パイプライン内通信リンクは、ネットワーク媒体を使用してパイプラインコンポーネント同士の間で通信することができる。図4を参照すると、図4は、論理パイプライン420及びその対応する物理的配置440を含むコンピュータアーキテクチャ400を示す。示したように、論理パイプライン420は、通信媒体426、パイプラインコンポーネント424、パイプラインコンポーネント423、パイプラインコンポーネント422及びアプリケーション421を含む。通信媒体426及びパイプラインコンポーネント424は、マシン446に配置される。1つまたは複数の通信媒体426及びパイプラインコンポーネント424は、ライブラリ453を利用することができる(かつ要求しさえすることができるかもしれない)。
パイプラインコンポーネント423は、マシン443に配置される。パイプラインコンポーネント423は、ライブラリ452を利用することができる(かつ要求しさえすることができるかもしれない)。パイプラインコンポーネント422及びアプリケーション421は、マシン441に配置される。パイプラインコンポーネント422及びアプリケーション421は、ライブラリ451を利用することができる(かつ要求しさえすることができるかもしれない)。
パイプライン内通信リンクは、1つのマシンに配置されたパイプラインコンポーネントを別のマシンに配置されたパイプラインコンポーネントに接続するために用いることができる。例えば、通信リンク444は、パイプラインコンポーネント424をパイプラインコンポーネント423にかつその逆に接続する。同様に、通信リンク442は、パイプラインコンポーネント423をパイプラインコンポーネント422にかつその逆に接続する。
しかしながら、マシンの分離境界を用いてパイプラインコンポーネントを分離することは、唯一の考えられる詳細レベルではない。例えば、同じマシンの別個のプロセスに配置するような他の種類の分離境界も用いることができる。
他の実施形態では、パイプラインコンポーネントの物理的配置は、持続的メッセージキューで分離することができる。パイプラインコンポーネント同士の間に持続的ストアを配することによって、持続的ストアが一時的に独立したやり方で実行できるようになる。図5は、持続的キューによって分離されたメッセージ処理パイプラインコンポーネントを備えたコンピュータアーキテクチャ500を示す。
図5に示すように、例えば、要求メッセージ531などの要求メッセージは、プロセス502で入力される。同様に、例えば、応答メッセージ532などの応答メッセージは、プロセス502で発信される。マシン501は、プロセス502及び503を含む。プロセス502はコンポーネント503を含み、プロセス506はコンポーネント507及びコンポーネント508を含む。持続的キュー504は、マシン501のローカルの通信媒体を介して、コンポーネント503をコンポーネント507及びコンポーネント508から分離している。マシン521は、プロセス522及びプロセス526を含む。プロセス522はコンポーネント523を含み、プロセス526はアプリケーション527(例えば、別のパイプラインコンポーネント)を含む。持続的キュー524は、マシン521のローカルの通信媒体を介して、コンポーネント523をアプリケーション527から分離している。持続的キュー511は、マシン501とマシン502との間のネットワーク通信媒体を介して、コンポーネント507及びコンポーネント508をコンポーネント523から分離している。
コンピュータアーキテクチャ500内で、コンポーネント507またはコンポーネント508が帯域外メカニズム(out of band mechanism)(例えば、送信メッセージの確認)を用いて要求メッセージ531の発信者に応答することになっている場合、発信者は、コンポーネント503によって送信された転送確認とは関係なくかつ後のパイプライン実行及びアプリケーションと関係なく自由に応答することができる。要求メッセージ531が持続的キュー504に配されるとすぐに、パイプラインコンポーネント503はまた、要求メッセージ531への応答を送信することができる。パイプラインコンポーネント507は、確認を送信することができないために一時的な障害を引き起こすかもしれないが、これはパイプラインコンポーネント503がより多くの要求を処理し続けるのを防げない。同様に、持続的キュー511によって、後のパイプラインコンポーネント及びアプリケーション527がすでに確認された処理要求を続けることができるようになる。
よって、通信リンクの仕様は、パイプラインについての全体的な仕様の一部と考えることができる。各通信リンクは、単一のパイプライン仕様内のインラインと特定されてもよいしまたは他の仕様への参照を用いて接続されてもよい。場合によっては、通信リンクの仕様を自動的に推定することが可能である。2つの隣接するパイプラインコンポーネントは、第1のパイプラインコンポーネントが第1のメッセージフォーマットを用いてメッセージを出力しかつ第2のパイプラインコンポーネントが第2のメッセージフォーマットを用いてメッセージを消費するように構成されている場合、第1のメッセージフォーマットと第2のメッセージフォーマットとの間で翻訳する通信の存在は、特定の仕様を要求するよりむしろシステムによって推定することができる。
従って、本発明の実施形態は、構成可能なメッセージ処理パイプラインを促進する。実施形態は、パイプライン内通信リンクを利用して、パイプラインステージを切り離す。パイプライン内通信リンクを使用することによって、パイプラインコンポーネントまたはアプリケーションを変更する必要なしにメッセージ処理パイプラインを構成するのを可能にする。各通信リンクは、それ自体、入力メッセージ処理パイプライン及び出力メッセージ処理パイプラインを備えたアプリケーションであり、入力メッセージ処理パイプライン及び出力メッセージ処理パイプラインは、例えば、接続されているパイプラインコンポーネントが、アプリケーション開発者が除去することを望む一時的な接続または物理的な接続を有するかどうかに応じて、時間及び/または空間にわたってメッセージをブリッジングする。
例えば、アプリケーション開発者は、通信リンクに、次のパイプラインコンポーネントが存在する異なるマシンへメッセージを送信させることによって、物理的な接続を除去することができる。アプリケーション開発者は、通信リンクにメッセージを持続的なストアから読み出しかつそこに書き込ませることによって一時的な接続を除去することができ、次のパイプラインコンポーネントを後で実行することができる。従って、通信リンクアプリケーション、通信リンクパイプライン及びメッセージ処理パイプラインに通信リンクを挿入するための対応する接続を、アプリケーション開発者が個々に通信リンクをプログラムする必要なしにパイプライン仕様から構築することができる。
本発明は、本発明の趣旨または本質的な特徴から逸脱することなく、他の特定の形態で具体化することができる。説明された実施形態は、例示的であって限定的でないと、あらゆる点で見なされるべきである。従って、本発明の範囲は、前述の詳細な説明によってよりはむしろ添付の特許請求の範囲によって示される。特許請求の範囲内の同等の意味及び範囲内で生じる全ての変更は、これらの範囲内に含まれることになっている。

Claims (15)

  1. 1つまたは複数のプロセッサとシステムメモリとを含むコンピュータシステムにおいて、アプリケーション(107)についてのメッセージ処理パイプラインを構成する方法であって、
    前記アプリケーション(107)についての現在のパイプライン仕様(121)にアクセスする動作であって、前記現在のパイプライン仕様(121)は、前記アプリケーション(107)についてのメッセージ処理パイプライン(108)を構築する方法を特定し、当該構築する方法は、前記アプリケーション(107)についての前記メッセージ処理パイプライン(108)に含まれることになっているメッセージングコンポーネント(116A、116B、112)を特定することを含む動作と、
    前記アプリケーション(107)についての追加のメッセージ処理要件(131)にアクセスする動作と、
    前記現在のパイプライン仕様(122)に適用して前記追加のメッセージ処理要件(131)を満たす追加のメッセージ処理機能を特定することができる変換内容(132)を特定する動作であって、前記変換内容(132)は、前記メッセージ処理パイプラインに含めるようすでに特定された前記メッセージングコンポーネントに基づいてかつ前記追加のメッセージ処理要件(131)に基づいて特定される動作と、
    前記特定された変換内容(132)を前記現在のパイプライン仕様(121)に適用して前記アプリケーション(107)についての変換されたパイプライン仕様(121T)を作成する動作であって、前記変換されたパイプライン仕様(107T)は、前記追加のメッセージ処理要件(131)を満たす前記アプリケーション(107)についてのメッセージ処理パイプライン(108)を構築する方法を特定し、当該構築する方法は、前記追加のメッセージ処理要件(131)を満たすために前記メッセージ処理パイプラインに含まれることになっているメッセージングコンポーネントの構成を特定することを含む動作と、
    前記変換されたパイプライン仕様(121T)を解釈して前記アプリケーション(107)についてのメッセージ処理パイプラインのインスタンスを作成する動作であって、前記インスタンスを作成されたメッセージ処理パイプライン(108)は、前記アプリケーションについての前記追加のメッセージ処理要件(131)を満たすように構成されている動作と
    を含むことを特徴とする方法。
  2. 前記メッセージ処理パイプラインに含めるための前記コンピュータシステムに利用可能なコンポーネントを特定する動作を更に含み、
    前記現在のパイプライン仕様に適用することができる変換内容を特定する動作は、前記特定された利用可能なコンポーネントに基づいて前記現在のパイプラインに適用することができる変換内容を特定する動作を含むことを特徴とする請求項1記載の方法。
  3. 前記変換されたパイプライン仕様(121T)を解釈して前記アプリケーション(107)についてのメッセージ処理パイプラインのインスタンスを作成する動作は、前記特定された利用可能なコンポーネントのうちの1つまたは複数を前記メッセージ処理パイプラインに挿入して前記追加のメッセージ処理要件を満たす動作を含むことを特徴とする請求項2記載の方法。
  4. 前記アプリケーションについての追加のメッセージ処理要件にアクセスする動作は、第2のパイプライン仕様にアクセスする動作を含むことを特徴とする請求項1記載の方法。
  5. 前記アプリケーションについての追加のメッセージ処理要件にアクセスする動作は、前記現在のパイプライン仕様を前記第2のパイプライン仕様と比較した結果から、前記追加の処理要件を推定する動作を含むことを特徴とする請求項5記載の方法。
  6. 前記現在のパイプライン仕様に適用して前記追加のメッセージ処理要件を満たす追加のメッセージ処理機能を特定することができる変換内容を特定する動作は、前記追加のメッセージ処理要件を満たすことができるパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作を含むことを特徴とする請求項1記載の方法。
  7. 前記追加のメッセージ処理要件を満たすことができるパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作は、前記メッセージ処理パイプライン内の他のパイプラインコンポーネント同士の間でプロトコルをブリッジングするパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作を含むことを特徴とする請求項6記載の方法。
  8. 前記追加のメッセージ処理要件を満たすことができるパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作は、前記メッセージを1つのフォーマットから別のフォーマットに変換するパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作を含むことを特徴とする請求項6記載の方法。
  9. 前記追加のメッセージ処理要件を満たすことができるパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作は、他のパイプラインコンポーネントを物理的に分離するパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作を含むことを特徴とする請求項6記載の方法。
  10. 前記追加のメッセージ処理要件を満たすことができるパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作は、他のパイプラインコンポーネントを一時的に切り離すパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作を含むことを特徴とする請求項6記載の方法。
  11. 前記追加のメッセージ処理要件を満たすことができるパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作は、他のパイプラインコンポーネント同士の間で分岐するパイプライン内通信リンクを特定するために適用することができる変換内容を特定する動作を含むことを特徴とする請求項6記載の方法。
  12. コンピュータシステムであって、
    1つまたは複数のプロセッサと、
    システムメモリと、
    パイプライン変換モジュール及び利用可能なメッセージングパイプラインコンポーネントの集合を示すコンピュータ実行可能命令が格納されている1つまたは複数のコンピュータ記憶媒体と、
    を含み、
    前記利用可能なメッセージングパイプラインコンポーネントの各々は、異なったメッセージパイプライン処理機能を提供し、前記パイプライン変換モジュールは、
    メッセージ処理パイプライン(300)が満たすことになっているアプリケーションの要件(131)のセットを受信し、
    前記要件(131)のセットを満たすために相互に作用することができる前記利用可能なメッセージングパイプラインコンポーネント(309A、309B)の構成を特定し、
    メッセージ処理パイプライン仕様(121)を変換するように構成され、
    前記変換は、利用可能なメッセージングパイプラインコンポーネント(309A、309B)の構成の間の前記相互作用が、前記メッセージ処理パイプライン仕様からインスタンスを作成されるメッセージ処理パイプライン(300)内に含まれる他のパイプラインコンポーネント(302、311)同士の間のパイプライン内通信リンク(321)内に含まれることになっていることを特定することを特徴とするコンピュータシステム。
  13. 前記メッセージ処理パイプライン仕様を変換するよう構成されている前記パイプライン変換モジュールは、前記メッセージ処理パイプラインに含まれる他のパイプラインコンポーネントを物理的に分離するパイプライン内通信リンクを特定するよう構成されているパイプライン変換モジュールを含むことを特徴とする請求項12記載のシステム。
  14. 前記メッセージ処理パイプライン仕様を変換するよう構成されている前記パイプライン変換モジュールは、前記メッセージ処理パイプラインに含まれる他のパイプラインコンポーネントを一時的に分離するパイプライン内通信リンクを特定するよう構成されている前記パイプライン変換モジュールを含むことを特徴とする請求項12記載のシステム。
  15. 1つまたは複数のプロセッサとシステムメモリとを含むコンピュータシステムにおいて、アプリケーションについてのメッセージ処理パイプラインを構成する方法であって、
    前記アプリケーションについての第1のパイプライン仕様(121)にアクセスする動作であって、前記第1のパイプライン仕様は、第1のパイプラインコンポーネントが前記アプリケーションについてのメッセージ処理パイプラインに含まれることになっていることを特定し、前記第1のパイプラインコンポーネントは、第1のコードライブラリによって決まる動作と、
    前記アプリケーションについての第2のパイプライン仕様(122)にアクセスする動作であって、前記第2のパイプライン仕様は、第2のパイプラインコンポーネントが、前記第1のパイプラインコンポーネントの後の、前記アプリケーションについての前記メッセージ処理パイプラインに含まれることになっていることを特定し、前記第2のパイプラインコンポーネントは、第2のコードライブラリによって決まる動作と、
    前記第1のライブラリ(451)が第1のコンピュータシステムで利用可能であると判断する動作と、
    前記第2のライブラリ(452)が第2の異なるコンピュータシステムで利用可能であると判断する動作と、
    前記第1の仕様を変換して、前記第1のパイプラインコンポーネントを前記第2のパイプラインコンポーネントに接続するためのパイプライン内通信リンク(321)を含む動作であって、前記パイプライン内通信リンクは、前記第1のパイプラインコンポーネントからメッセージを受信するための着信通信媒体(303)、前記第2のパイプラインコンポーネントにメッセージを送信するための発信通信媒体(308a)、前記着信通信媒体(303)から前記発信通信媒体(308a)にメッセージを送るメッセージポンプ(143)を含む動作と、
    前記第1のパイプラインコンポーネントを前記第1のコンピュータシステムに配置し、前記第2のパイプラインコンポーネントを前記第2のコンピュータシステムに配置し、パイプライン内通信リンク(321)を利用して前記第1のパイプラインコンポーネントから前記第2のパイプラインコンポーネントにメッセージを転送する、前記アプリケーションについてのメッセージ処理パイプラインのインスタンスを作成する動作と
    を含むことを特徴とする方法。
JP2011526082A 2008-09-03 2009-08-11 メッセージ処理パイプラインの構成 Active JP5362011B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/203,527 US7895280B2 (en) 2008-09-03 2008-09-03 Composing message processing pipelines
US12/203,527 2008-09-03
PCT/US2009/053483 WO2010027610A2 (en) 2008-09-03 2009-08-11 Composing message processing pipelines

Publications (2)

Publication Number Publication Date
JP2012512445A true JP2012512445A (ja) 2012-05-31
JP5362011B2 JP5362011B2 (ja) 2013-12-11

Family

ID=41726916

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011526082A Active JP5362011B2 (ja) 2008-09-03 2009-08-11 メッセージ処理パイプラインの構成

Country Status (6)

Country Link
US (3) US7895280B2 (ja)
EP (1) EP2321721A4 (ja)
JP (1) JP5362011B2 (ja)
KR (1) KR101558289B1 (ja)
CN (1) CN102144215B (ja)
WO (1) WO2010027610A2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7895280B2 (en) 2008-09-03 2011-02-22 Microsoft Corporation Composing message processing pipelines
US8375095B2 (en) * 2009-12-22 2013-02-12 Microsoft Corporation Out of order durable message processing
US8392508B2 (en) 2010-06-11 2013-03-05 International Business Machines Corporation Selectively controlling information flow in a collaborative environment
JP6036690B2 (ja) * 2011-07-07 2016-11-30 日本電気株式会社 分散実行システム及び分散プログラム実行方法
US9081743B2 (en) * 2012-05-25 2015-07-14 Pro Design Electronic Gmbh Communication system and communicaton method
CN104615413A (zh) * 2015-02-13 2015-05-13 赛诺威盛科技(北京)有限公司 一种流水线任务自适应并行方法
US11010707B1 (en) 2020-03-02 2021-05-18 Coupang Corp. Systems and methods for interconnecting network devices based on queuing and servicing responses
CN114942791A (zh) * 2022-05-26 2022-08-26 统信软件技术有限公司 一种进程唤醒方法、装置、计算设备及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07175738A (ja) * 1992-05-28 1995-07-14 Kawasaki Steel Corp 通信装置
JP2002196932A (ja) * 2000-10-13 2002-07-12 Sun Microsyst Inc サービス・ゲートウェイのための拡張可能な提供機構
JP2004102507A (ja) * 2002-09-06 2004-04-02 Murata Mach Ltd ネットワーク装置

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58207152A (ja) 1982-05-28 1983-12-02 Nec Corp パイプライン演算装置テスト方式
US5557798A (en) 1989-07-27 1996-09-17 Tibco, Inc. Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5918034A (en) 1997-06-27 1999-06-29 Sun Microsystems, Inc. Method for decoupling pipeline stages
US6987777B1 (en) 1999-12-02 2006-01-17 Nortel Networks Ltd Priority forwarding in a communication system
US6629167B1 (en) 2000-02-18 2003-09-30 Hewlett-Packard Development Company, L.P. Pipeline decoupling buffer for handling early data and late data
US7181536B2 (en) * 2002-03-27 2007-02-20 International Business Machines Corporation Interminable peer relationships in transient communities
US7127520B2 (en) 2002-06-28 2006-10-24 Streamserve Method and system for transforming input data streams
KR100479333B1 (ko) * 2002-11-22 2005-03-31 한국전자통신연구원 ebXML 레지스트리에 기반을 둔 UDDI 웹서비스레지스트리 시스템과 그 관리 방법
JP3969654B2 (ja) * 2003-03-07 2007-09-05 インターナショナル・ビジネス・マシーンズ・コーポレーション Soapメッセージ作成方法並びに処理方法、情報処理方法、情報処理装置及びプログラム
US7185060B2 (en) 2003-03-26 2007-02-27 Microsoft Corporation Message processing pipeline for streams
US7200676B2 (en) 2003-03-26 2007-04-03 Microsoft Corporation Transmitting and receiving messages through a customizable communication channel and programming model
US7194733B2 (en) * 2003-06-11 2007-03-20 Microsoft Corporation Transformation of an asynchronous transactional messaging language into a web services compatible language
CA2432658C (en) * 2003-06-17 2008-04-01 Ibm Canada Limited - Ibm Canada Limitee Simple types in xml schema complex types
US7478402B2 (en) * 2004-02-12 2009-01-13 Microsoft Corporation Configurable message pipelines
GB0407145D0 (en) * 2004-03-30 2004-05-05 British Telecomm Inter-agent communication
US20060036755A1 (en) * 2004-05-07 2006-02-16 Abdullah Ibrahim S Meta-protocol
US20050267947A1 (en) 2004-05-21 2005-12-01 Bea Systems, Inc. Service oriented architecture with message processing pipelines
US7310684B2 (en) * 2004-05-21 2007-12-18 Bea Systems, Inc. Message processing in a service oriented architecture
US7653008B2 (en) * 2004-05-21 2010-01-26 Bea Systems, Inc. Dynamically configurable service oriented architecture
US20060069791A1 (en) * 2004-05-21 2006-03-30 Bea Systems, Inc. Service oriented architecture with interchangeable transport protocols
US7584422B2 (en) * 2004-07-12 2009-09-01 Informatica Corporation System and method for data format transformation
US8037123B2 (en) 2004-08-27 2011-10-11 Microsoft Corporation Securely and efficiently extending data processing pipeline functionality
US8078671B2 (en) * 2005-09-21 2011-12-13 Sap Ag System and method for dynamic web services descriptor generation using templates
US8554846B2 (en) * 2005-09-27 2013-10-08 Oracle International Corporation System and method for providing a messaging kernel
US20070177590A1 (en) * 2006-01-31 2007-08-02 Microsoft Corporation Message contract programming model
US20080021955A1 (en) 2006-07-24 2008-01-24 Raytheon Company Message oriented middleware server pipeline architecture
WO2008013968A2 (en) * 2006-07-28 2008-01-31 Vast Systems Technology Corporation Virtual processor generation model for co-simulation
US20080256390A1 (en) * 2007-04-13 2008-10-16 Chaar Jarir K Project Induction in a Software Factory
US8296719B2 (en) * 2007-04-13 2012-10-23 International Business Machines Corporation Software factory readiness review
US8359566B2 (en) * 2007-04-13 2013-01-22 International Business Machines Corporation Software factory
US8566777B2 (en) * 2007-04-13 2013-10-22 International Business Machines Corporation Work packet forecasting in a software factory
US8141040B2 (en) * 2007-04-13 2012-03-20 International Business Machines Corporation Assembling work packets within a software factory
US8327318B2 (en) * 2007-04-13 2012-12-04 International Business Machines Corporation Software factory health monitoring
US7958494B2 (en) * 2007-04-13 2011-06-07 International Business Machines Corporation Rapid on-boarding of a software factory
US8464205B2 (en) * 2007-04-13 2013-06-11 International Business Machines Corporation Life cycle of a work packet in a software factory
US7792117B1 (en) * 2007-05-03 2010-09-07 Xilinx, Inc. Method for simulating a processor of network packets
US7856505B2 (en) * 2007-06-29 2010-12-21 Microsoft Corporation Instantiating a communication pipeline between software
US8141030B2 (en) * 2007-08-07 2012-03-20 International Business Machines Corporation Dynamic routing and load balancing packet distribution with a software factory
US8332807B2 (en) * 2007-08-10 2012-12-11 International Business Machines Corporation Waste determinants identification and elimination process model within a software factory operating environment
US9189757B2 (en) * 2007-08-23 2015-11-17 International Business Machines Corporation Monitoring and maintaining balance of factory quality attributes within a software factory environment
US8539437B2 (en) * 2007-08-30 2013-09-17 International Business Machines Corporation Security process model for tasks within a software factory
US8020168B2 (en) * 2008-05-09 2011-09-13 International Business Machines Corporation Dynamic virtual software pipelining on a network on chip
US8667469B2 (en) * 2008-05-29 2014-03-04 International Business Machines Corporation Staged automated validation of work packets inputs and deliverables in a software factory
US8595044B2 (en) * 2008-05-29 2013-11-26 International Business Machines Corporation Determining competence levels of teams working within a software
US8452629B2 (en) * 2008-07-15 2013-05-28 International Business Machines Corporation Work packet enabled active project schedule maintenance
US8527329B2 (en) * 2008-07-15 2013-09-03 International Business Machines Corporation Configuring design centers, assembly lines and job shops of a global delivery network into “on demand” factories
US8140367B2 (en) * 2008-07-22 2012-03-20 International Business Machines Corporation Open marketplace for distributed service arbitrage with integrated risk management
US20100023920A1 (en) * 2008-07-22 2010-01-28 International Business Machines Corporation Intelligent job artifact set analyzer, optimizer and re-constructor
US8375370B2 (en) * 2008-07-23 2013-02-12 International Business Machines Corporation Application/service event root cause traceability causal and impact analyzer
US8418126B2 (en) * 2008-07-23 2013-04-09 International Business Machines Corporation Software factory semantic reconciliation of data models for work packets
US8448129B2 (en) * 2008-07-31 2013-05-21 International Business Machines Corporation Work packet delegation in a software factory
US8271949B2 (en) * 2008-07-31 2012-09-18 International Business Machines Corporation Self-healing factory processes in a software factory
US8336026B2 (en) * 2008-07-31 2012-12-18 International Business Machines Corporation Supporting a work packet request with a specifically tailored IDE
US7895280B2 (en) 2008-09-03 2011-02-22 Microsoft Corporation Composing message processing pipelines

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07175738A (ja) * 1992-05-28 1995-07-14 Kawasaki Steel Corp 通信装置
JP2002196932A (ja) * 2000-10-13 2002-07-12 Sun Microsyst Inc サービス・ゲートウェイのための拡張可能な提供機構
JP2004102507A (ja) * 2002-09-06 2004-04-02 Murata Mach Ltd ネットワーク装置

Also Published As

Publication number Publication date
US20130160027A1 (en) 2013-06-20
WO2010027610A2 (en) 2010-03-11
KR20110065448A (ko) 2011-06-15
KR101558289B1 (ko) 2015-10-12
EP2321721A2 (en) 2011-05-18
JP5362011B2 (ja) 2013-12-11
CN102144215A (zh) 2011-08-03
US8386556B2 (en) 2013-02-26
EP2321721A4 (en) 2012-10-24
WO2010027610A3 (en) 2010-04-22
CN102144215B (zh) 2013-02-13
US20110138399A1 (en) 2011-06-09
US7895280B2 (en) 2011-02-22
US9164819B2 (en) 2015-10-20
US20100057863A1 (en) 2010-03-04

Similar Documents

Publication Publication Date Title
JP5362011B2 (ja) メッセージ処理パイプラインの構成
KR100807651B1 (ko) 컴포넌트 기반의 무선 애플리케이션을 생성하여 통신하는시스템 및 방법
KR100328516B1 (ko) 응용프로그램사이에통신프로토콜을설정하기위한시스템및방법
JP2010500669A (ja) グラフ型計算の分散サービス
CN104753817A (zh) 一种云计算消息队列服务本地模拟方法和***
CN102866925B (zh) 一种中间件与用户界面的通信方法和***
CN101123616A (zh) 一种服务器管理的方法及一种服务器管理***
CN113010332A (zh) 一种远程服务调用方法、装置、设备及存储介质
US7392060B2 (en) Mobile exchange infrastructure
US7568194B2 (en) Method and system for availability checking on distributed objects
US9537931B2 (en) Dynamic object oriented remote instantiation
US20080313309A1 (en) Client-server data transfer control
Chou et al. WIPdroid–a two-way web services and real-time communication enabled mobile computing platform for distributed services computing
KR100494827B1 (ko) 하드웨어 독립적인 통신 인터페이스를 가지는 분산객체모델 기반의 라디오 서버와 이를 이용한 통신제어방법
JP4667299B2 (ja) プロセス間通信方法
Leitner et al. Towards flexible interface mediation for dynamic service invocations
CN113965628B (zh) 消息调度方法、服务器和存储介质
JP2009205264A (ja) ウェブサービス要求処理装置、ウェブサービス要求処理方法、及びウェブサービス要求処理システム
JP2006211567A (ja) データ通信装置、データ通信方法およびプログラム
CN116108105A (zh) 业务处理***、方法、设备、及数据同步方法及设备
CN113965628A (zh) 消息调度方法、服务器和存储介质
CN117950628A (zh) 一种基于grpc的插件构建方法及***
CN116599796A (zh) 网关、网关热升级方法及***
Ramaswamy et al. Service oriented architectures for grid computing environments: opportunities and challenges.
CN114139082A (zh) 一种页面数据传递方法、装置、设备及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120709

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130402

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130701

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130718

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130805

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130903

R150 Certificate of patent or registration of utility model

Ref document number: 5362011

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250