JP2004295894A - ストリームのためのメッセージ処理パイプライン - Google Patents

ストリームのためのメッセージ処理パイプライン Download PDF

Info

Publication number
JP2004295894A
JP2004295894A JP2004093768A JP2004093768A JP2004295894A JP 2004295894 A JP2004295894 A JP 2004295894A JP 2004093768 A JP2004093768 A JP 2004093768A JP 2004093768 A JP2004093768 A JP 2004093768A JP 2004295894 A JP2004295894 A JP 2004295894A
Authority
JP
Japan
Prior art keywords
message
message object
handlers
streamed
pipeline
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
JP2004093768A
Other languages
English (en)
Other versions
JP2004295894A5 (ja
JP4510492B2 (ja
Inventor
Erik B Christensen
ビー.クリステンセン エリック
Douglas A Walter
エー.ウォルター ダグラス
Michael J Coulson
ジェイ.コールソン マイケル
Kenneth D Wolf
ディー.ウルフ ケネス
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 JP2004295894A publication Critical patent/JP2004295894A/ja
Publication of JP2004295894A5 publication Critical patent/JP2004295894A5/ja
Application granted granted Critical
Publication of JP4510492B2 publication Critical patent/JP4510492B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/40Business processes related to the transportation industry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/765Media network packet handling intermediate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/613Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • Health & Medical Sciences (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Image Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Multi Processors (AREA)
  • Pipeline Systems (AREA)
  • Sink And Installation For Waste Water (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】 メッセージングシステムが所与のバッファサイズを使用して比較的大きなメッセージを送信または受信することができる、メッセージングシステムにおけるバッファ要件を削減する方法を提供する。
【解決手段】 ストリーム指向インターフェースを備えるストリーム化部分を有するメッセージオブジェクトに対して実行するための対応する処理演算を各々識別するメッセージハンドラが提供される。メッセージハンドラの順序付けられた集成物を含むパイプラインもまた提供される。メッセージオブジェクトは、メッセージパイプライン内でメッセージハンドラによって処理され、その結果、少なくとも1つのメッセージハンドラが、その対応する処理演算でメッセージオブジェクトのストリーム化部分をカプセル化する。対応する処理演算は将来実行しようとするものであり、ストリーム部分はバッファ内で具現化されない。
【選択図】 図4

Description

本発明は、メッセージ処理に関する。より詳細には、本発明は、メッセージを処理するためのバッファ要件を削減し、したがって、メッセージングシステムが所与のバッファサイズを使用して比較的大きなメッセージを送信または受信することを可能にする方法、システム、およびコンピュータプログラムに関する。
メッセージ処理は、分散アプリケーションサポートを含め、概して通信プロトコル内など、様々な状況で行われる。メッセージ処理システムが絶えず直面する問題の1つは、サイズに限りのないメッセージを処理することに関する。一般に、従来のメッセージ処理システムは適度なサイズのメッセージをバッファするが、大きなメッセージは、拒絶されなければ、予測不可能な、おそらくは膨大なメモリ要件に通ずる。「大きな」は相対的な用語であり、一部には、メッセージ処理システム自体によって決まる。しかし、ネットワーク速度が高まるにつれて、特にマルチメディアやグラフィックコンテントの交換の普及により、メッセージサイズもまた増大した。ネットワーク帯域の点からは、マルチメガバイトメッセージはもはやあまり問題にならないかもしれないが、メモリと処理時間を共に含む処理上の考慮すべき点を考え合せると、マルチメガバイトメッセージは、特にいくらか定期的に受信される場合、メッセージングシステムに対する著しく重い負担を意味する可能性がある。
もちろん、処理パワーが高まり続けるコンピュータと、使用可能なメモリは、日々それほど高価でなくなり、大きなメッセージによって引き起こされる資源需要の一部を緩和する。過去数年間にわたるハードウェアの進歩を考えると、1つの手法には、使用可能なバッファサイズと処理速度を増大し、大きなメッセージに対処することが含まれる可能性がある。大抵のメッセージは比較的小さいものとなる可能性があり、したがって、1つの推論の方法では、時折生じる大きなメッセージはあまり問題にならないことが示唆される。
この推論の方法が考慮していない少なくとも2つの考慮すべき点がある。第1の最も重要なものは、大きなメッセージは時折届くだけであろうという前提である。メッセージングシステムがサービス拒否攻撃(denial of service attack)を受ける可能性は常にある。一般に、サービス拒否攻撃は、送信するコンピュータまたはコンピュータ群が生成するのにかかる時間よりも受信するコンピュータが処理するのに長い時間がかかる要求で1つのハードウェアを圧倒しようと試みる。大きなメッセージをメッセージ処理システムに送信することは、悪意あるサービス拒否攻撃にとって論理的な出発地であり、したがって、大きなメッセージは時折受け取るだけであろうと仮定することは、大きなメッセージを扱うのに危険な戦略である。第2に、多数のメッセージ処理システムは、時折、最大能力近くで動作するため、大きなメッセージが忙しい時に届く可能性を無視することはできない。
従来のメッセージングシステムで判明したこれら、および他の問題により、メッセージを処理するときのバッファ要件を削減し、メッセージングシステムが所与のバッファサイズを使用して比較的大きなメッセージを送信または受信することができるようにするための方法、システム、およびコンピュータプログラムが望まれている。
本発明は、メッセージングシステムにおけるバッファ要件を削減し、メッセージングシステムが所与のバッファサイズを使用して比較的大きなメッセージを送信または受信することができるようにする方法、システム、およびコンピュータプログラムに関する。以下でより十分に述べる本発明の例示的な実施形態によれば、メッセージングシステムは、1つまたは複数のメッセージトランスポートを介してエンドポイントにメッセージを送信し、またはエンドポイントからメッセージを受信する。メッセージングシステムは、メッセージオブジェクトを経路指定するための中間部、またはメッセージを送受信するエンドポイントとすることができる。
例示的な一実施形態では、1つまたは複数のメッセージハンドラが提供され、メッセージハンドラの各々が、メッセージオブジェクトに対して実行するための対応する処理演算を識別する。メッセージオブジェクトは、ストリーム指向インターフェースを有するストリーム化部分を含む。1つまたは複数のメッセージハンドラを順序付けられた集成物として管理するために、パイプラインもまた提供される。メッセージオブジェクトは、メッセージパイプライン内の1つまたは複数のメッセージハンドラによって処理され、その結果、少なくとも1つのメッセージハンドラが、その対応する処理演算でメッセージオブジェクトのストリーム化部分をカプセル化する。対応する処理演算は将来実行しようとするものであり、ストリーム化部分をバッファ内で具現化することなしに、メッセージオブジェクトのストリーム化部分をカプセル化する。いくつかの実施形態では、メッセージオブジェクトを様々なメッセージハンドラで処理するために、入れ子のパイプライン(nested pipelines)を含む複数のパイプラインを提供することができる。
パイプラインが複数のメッセージハンドラを備える場合、各ハンドラは、メッセージハンドラに対応する処理演算がメッセージオブジェクトのストリーム部分上でレイヤリングされるように、ストリーム化部分を連続的にラップすることができる。メッセージオブジェクトは、1つまたは複数のヘッダ部分、1つまたは複数のボディ部分、および1つまたは複数のアタッチメント部分を含むことができ、少なくともボディ部分および/またはアタッチメント部分は、一般的に、メッセージオブジェクトのストリーム化部分を含む。
例示的な実施形態では、メッセージオブジェクトは、たとえば、シンプルオブジェクトアクセスプロトコル(SOAP:Simple Object Access Protocol)メッセージとすることができる。SOAPメッセージを経路指定あるいは処理するために、ストリーム化部分を具現化することを必要とせずに、そのメッセージについてのヘッダは具現化され、あるいはアクセスのためにバッファされる。経路指定は、複数のエンドポイントに送達するためにメッセージオブジェクトを複製することを含むことができる。
メッセージパイプラインのメッセージハンドラの1つまたは複数を呼出すことは、ストリームがメッセージオブジェクトのストリーム部分に割り当てられる前に行われる可能性がある。メッセージハンドラが呼び出されたときストリーム部分を具現化する必要がないため、最初にパイプライン内のメッセージハンドラの処理演算がそのメッセージについて識別され、次いで、その演算を実行する実際のストリームが、後でメッセージオブジェクトのストリーム部分に割り当てられる。メッセージオブジェクトを別のエンドポイントに送信または別のエンドポイントから受信することは、ストリーム化部分をカプセル化する処理演算がそのストリーム化部分に対して実行される結果となる。
本発明の追加の特徴および利点は、以下の説明で述べられることになり、一部には、説明から明らかとなり、あるいは本発明を実施することによって学習することができる。本発明の特徴および利点は、添付の特許請求の範囲の中で特に指摘されている手段および組合せによって実現されおよびもたらされることができる。本発明のこれら、および他の特徴は、以下の説明および添付の特許請求の範囲から、より完全に明らかになり、あるいは以下に述べられている本発明を実施することによって学習することができる。
本発明の上記の、ならびに他の利点および特徴を得ることができる方法について述べるために、手短に上述した本発明について、添付の図面に例示されている本発明の特定の実施形態を参照することによって、より具体的に説明する。これらの図面は本発明の典型的な実施形態を示すにすぎず、したがって、その範囲を限定すると見なすべきでないことを理解して、本発明について、添付の図面を使用することにより、追加の特殊性および詳細と共に述べ、説明する。
本発明は、メッセージオブジェクトの少なくとも一部についてバッファ要件を削減するメッセージオブジェクトを処理するための方法、システム、およびコンピュータプログラムに及ぶ。本発明は、バッファ要件を削減することにより、メッセージングシステムが所与のバッファサイズを使用して、他の方法で可能であるはずのものより比較的大きいメッセージを送信または受信することを可能にする。本発明の実施形態は、以下でより詳細に論じるように、様々なコンピュータハードウェアを含む1つまたは複数の専用コンピュータおよび/または汎用コンピュータを含むことができる。
図1は、本発明によるメッセージングシステムによって処理する例示的なメッセージオブジェクト100を示す。メッセージは、エンドポイント間の通信の基本単位である。メッセージオブジェクト100は、ヘッダ112、ヘッダ114、ヘッダ116、および潜在的にその他を含むヘッダ集成体110を含む。また、メッセージオブジェクト100はコンテント120を含む。図では、メッセージオブジェクト100のヘッダ集成体110がバッファされ、一方、コンテント120がストリーム化される。メッセージオブジェクトのヘッダをバッファする1つの動機は、メッセージを実際に処理する前に、メッセージをどう処理するか判断する場合に一般にヘッダが使用されることにある。たとえば、メッセージオブジェクト100を適切なエンドポイントに経路指定するために、一般に、決まったヘッダを調べることが必要である。しかし、一般に経路指定は、コンテントを調べることを必要としない。したがって、コンテント120をストリーム化し、適宜ヘッダをバッファするのは、いくつかの状況の下で適切である可能性がある。
当然ながら、ヘッダ集成体110をバッファし、コンテント120をストリーム化することは、一例のメッセージレイアウトにすぎない。ヘッダは、比較的小さく、かなり明確であるため、メッセージコンテントで見られる無制限のバッファ要件をもたらさない。しかし、本発明は、ヘッダ集成体110を含め、メッセージオブジェクト100のすべてをストリーム化することを除外しない。さらに、メッセージオブジェクト100のレイアウトは多数の可能なレイアウトの1つにすぎないことを強調しておくべきである。メッセージオブジェクト100は、しばしば別個のヘッダ集成体110と、コンテントまたはボディ120とを含むことになるが、本発明は、いずれかの特定のメッセージレイアウトに限定されず、いずれかの特定のメッセージレイアウトの参照は例にすぎないと見なすべきである。
一般に、メッセージオブジェクト100のレイアウトは、SOAPメッセージに対応する。SOAPは、ウェブサービス要求内の情報および応答メッセージを、ネットワークを介して送信する前に符号化するために使用されるXML(eXtensible Markup Language)に基づく軽いメッセージングプロトコルである。SOAPメッセージは、オペレーティングシステムに依存せず、SMTP(Simple Mail Transfer Protocol)、HTTP(HyperText Transfer Protocol)、MIME(Multipurpose Internet Mail Extensions)、DIME(Direct Internet Mail Encapsulation)など、様々なインターネットプロトコルのいずれかを使用して転送および符号化することができるため、ウェブサービスに非常に適している。
汎用のSOAPメッセージプロセッサは、その正しい処理を決定するために、メッセージ内に存在する少なくとも特定のヘッダにアクセスできることを必要とする。以下でより詳細に述べるように、例示的な一実施形態では、メッセージハンドラのパイプラインを使用してメッセージを処理することができる。これらのハンドラの各々は、メッセージ内に存在するゼロ個以上のヘッダを点検し、それらに対して作用することができる(また、ハンドラは、ストリーム化されたメッセージコンテントを点検し、それに対して作用することもできる)。これらのハンドラの組み合わされた処置は、メッセージに影響を及ぼすことになる処理を規定する。SOAPプロセッサは、そのジョブを完了した後で、そのメッセージの目的の受取先にメッセージを渡す。
しかし、この状態で、SOAPプロセッサは、メッセージの正しい処理を実行するためにバッファ内の完全なメッセージを具現化することを必要としなかったことに留意されたい。具体的には、SOAPプロセッサは、特定のヘッダ要素、さらに、おそらくは一部のボディ要素にアクセスできることを必要とするだけであり、その他にアクセスできることを必要としない。したがって、以下で述べる例示的な実施形態では、SOAPメッセージの様々なヘッダをバッファすることができる一方、SOAPメッセージのボディは、必要とされるときだけバッファされる。必要とされるときだけSOAPメッセージのボディを取り出すことは、本質的にボディへの参照を渡すことにより成され、コンシューマがオンデマンドでコンテンツを取り出すことを可能にする。
例示的な一実施形態では、メッセージヘッダ集成体110は、ヘッダ集成体内で個々のヘッダを見つけるための発見メソッド(find method)を有する。発見メソッドは、一般に、ヘッダ特有のメッセージハンドラによって使用され、ターゲットとされているヘッダについて、ヘッダのタイプ、ヘッダのXML要素名、ヘッダが定義されているXML名前空間、および/または、エンドポイントに対応するアクタ/ロール(actor/role)によって適切なヘッダを検索する。単純化するために、ヘッダはすべて、使用可能なメモリの制約内でバッファされているが、上記で示したように、特定の実施について適切である場合、本発明は、1つまたは複数のヘッダをストリーム化することを排除しない。さらにサービス拒否攻撃から守るために、たとえば32キロバイトなどのメモリ割当てを、ヘッダをバッファするために確立することができる。
図2A〜2Bは、メッセージオブジェクトをストリームから読み取り、またメッセージオブジェクトをストリームに書き込む例を示す。フォーマッタ230Aおよび230Bは、メッセージをストリームで表したものとメモリ内メッセージインスタンスとの間で変換を行う。別のエンドポイントからネットワークを介してメッセージを受信するとき、フォーマッタ230Aは、ストリーム210Aから読み取り(220A)、メッセージを処理するためにメッセージハンドラ250Aを呼び出す(240A)。同様に、メッセージをネットワークを介して別のエンドポイントに送信するとき、フォーマッタ230Bは、メッセージハンドラ250Bによって生成されたメモリ内インスタンスからストリーム210Bに書き込む(220B)。上述のように、典型的には、メッセージハンドラ250Aおよび250Bは、メッセージハンドラの1つまたは複数のパイプラインである。
図3A〜3Bは、メッセージオブジェクトを処理するための例示的なパイプラインを示す。メッセージハンドラの順次実行は、共通のメッセージ処理パターンである。パイプラインは、同期コードメッセージハンドラの管理を単純化する。パイプラインは、メッセージハンドラであり、メッセージハンドラを使用することができる任意のところで使用することができる。図3Aでは、パイプライン330は、メッセージハンドラ332、メッセージハンドラ334、メッセージハンドラ336を含む。メッセージ300を処理するためにパイプライン330が呼び出されたとき、このパイプラインは、各メッセージハンドラをその集成体の形で1つずつ順番に呼び出し、メッセージを処理する。ストリーム化されたコンテントに対するメッセージパイプラインの効果については、以下でより詳細に述べる。
パイプラインはメッセージハンドラであるため、パイプラインは、図3Bに示されているように入れ子にすることができる。図3Aと共に上述したように、メッセージ300を処理するためにパイプラインが呼び出されたとき、メッセージは、(エラーが発生するが、ハンドラが他の処理を一時停止すべきであると判断することがない限り)パイプライン内の各ハンドラを通過する。図3Bに示されているように、パイプライン内のハンドラの1つがそれ自体パイプラインである場合、メッセージは、これらのハンドラのそれぞれを通過する、以下同様である。図3Bで、パイプライン330は、メッセージハンドラ332、パイプライン340、メッセージハンドラ336という3つのメッセージハンドラを有する。また、パイプライン340は、メッセージハンドラ342、メッセージハンドラ344、メッセージハンドラ346という3つのメッセージハンドラを有する。ハンドラが呼び出される順序は、線によって示されている。メッセージハンドラ344などのメッセージハンドラが、他のメッセージ処理を行うべきでないことを示している場合、メッセージハンドラ346もメッセージハンドラ336も呼び出されないことになる。当然ながら、図3A〜3Bに示されているパイプラインは、比較的単純なパイプラインの例であり、はるかに複雑なパイプラインを使用することができることを理解されたい。
図4は、メッセージオブジェクトのストリーム化されたメッセージコンテントをラップまたはカプセル化することを示す。ストリーム化されたメッセージコンテントの場合、図3A〜3Bに示されているメッセージハンドラなどのメッセージハンドラは、そのメッセージハンドラの処理演算でストリーム化メッセージコンテントをラップまたはカプセル化する。ラップまたはカプセル化が行われるのは、メッセージハンドラが呼び出された時点でストリーム化メッセージコンテントに対する処理演算の実行が、ストリーム化メッセージコンテントをバッファリングまたは具現化することを要求するからであり、すなわちメッセージコンテントをストリームとして有することの目的を損なうことになるためである。
図4に示されているように、メッセージ400のストリーム化メッセージコンテント420は、パイプライン410を通過するとき、様々な処理演算でラップまたはカプセル化される。メッセージハンドラ432は、ストリーム化メッセージコンテント420を処理演算432Aでカプセル化する。メッセージハンドラ434は、ストリーム化コンテント420および処理演算432Aを処理演算434Aでラップする。最後に、メッセージハンドラ436は、ストリーム化コンテント420、処理演算432A、および処理演算434Aを、処理演算436Aでカプセル化する。
これらの処理演算がストリーム化コンテント上でレイヤリングされていれば、コンシューマがストリーム化コンテントにアクセスし始めたとき、ストリーム化コンテントを具現化することを必要とせずに、メッセージハンドラがパイプライン410内で呼び出されたとき順序付けられた適切な処理演算が実行されることになる。その結果、メッセージ400を処理するためのバッファ要件が削減され、それにより、メッセージングシステムが所与のバッファサイズを使用して比較的大きなメッセージを送信または受信することができる。上記で示されているように、レイヤリングされた処理はまた、大きなメッセージに基づくサービス拒否攻撃の影響を受けにくくなる。メッセージングシステムは、必要とされる処理の多くを、コンテントを具現化することを必要とせずに、実行することができるからである。これは特に、メッセージングシステムが、図5A〜5Cに関連して以下で述べる経路指定機能を実行する場合に有益である。ストリームの一部分またはチャンクがアクセスされたとき、ストリーム化コンテントの何らかのバッファ処理が行われる可能性があるが、このバッファ処理は、ストリーム全体ではなくチャンクサイズに基づいているため、制限されることを理解されたい。その最終宛先および中間部では、受信されたストリームコンテントを、最終宛先のディスクまたは次のホップのためのストリームなど別のストリームに単に書き込むことができる。
この段階で、さらに2つの具体的な例を用いて、図4について論じることは役に立つ可能性がある。パイプライン410が、書き込むべきメッセージ400についてストリーム化コンテント420を作成しているところを考えてみる。メッセージハンドラ432はデジタル署名演算432Aを含み、メッセージハンドラ434は暗号化演算434Aを含み、メッセージハンドラ436は圧縮演算436Aを含む。メッセージ400がパイプライン410を通り抜けるとき、デジタル署名演算432A、暗号化演算434A、圧縮演算436Aは、ストリーム化コンテント420の上にレイヤリングされ、ストリーム化コンテント420をカプセル化またはラップする。したがって、トランスポートするためにストリーム化コンテント420が書き込まれたとき、ストリーム化コンテント420は、デジタル署名演算432Aでデジタル署名され、暗号化演算434Aによって暗号化され、および圧縮演算436Aで圧縮されるストリームの一部分またはチャンクを提供する。したがって、書き込まれるのは、署名済み、暗号化済み、圧縮済みバージョンのストリーム化コンテント420である。
反対に、パイプライン410が、読み取るべきメッセージ400についてストリーム化コンテント420を作成しているところを考えてみる。読取りの場合には、パイプライン410内のメッセージハンドラの順序が、上記の書込みの例から逆になる。メッセージハンドラ432は圧縮解除演算432Aを含み、メッセージハンドラ434は解読演算434Aを含み、メッセージハンドラ436はデジタル署名検証演算436Aを含む。メッセージ400がパイプライン410を通り抜けるとき、圧縮解除演算432A、解読演算434Aを含み、デジタル署名検証演算436Aは、ストリーム化コンテント420の上にレイヤリングされ、またはストリーム化コンテント420をカプセル化またはラップする。
したがって、ストリーム化コンテント420が読み取られたとき、ストリーム化コンテント420は、圧縮解除演算432Aで圧縮解除され、解読演算434Aによって解読され、およびデジタル署名がデジタル署名検証演算436Aで検証される、ストリームの一部分またはチャンクを提供する。したがって、読み取られるのは、署名され、暗号化され、圧縮されたストリーム化コンテント420の圧縮解除済み、解読済み、デジタル署名検証済みバージョンである。パイプライン410内で行われるレイヤリングまたはカプセル化は、各メッセージハンドラ内の処理演算に対応するオブジェクトのための一連のコールバック関数として実装することができる。換言すれば、最初にストリームで開始し、次いで、圧縮解除演算がストリームを圧縮解除済みストリームにし、解読演算がストリームを解読済み、圧縮解除済みストリームにし、デジタル署名検証演算がストリームを検証済み、解読済み、圧縮解除済みストリームにする。これは、受信された署名済み、暗号化済み、圧縮済みストリームについてまさに必要とされることである。各演算が実行されると、対応するオブジェクトは、一連のコールバックを形成すべく前の演算が何であったかを追跡する。これは、処理演算をカプセル化またはラップするために可能な一実施にすぎず、他に多数の実施が可能であり、カプセル化、ラップ、および/またはレイヤリングの範囲内にあると見なすべきである。
図5A〜5Cは、メッセージオブジェクト500を経路指定する一例を示す。図5Aは、メッセージオブジェクト500が、ヘッダ1 512、ヘッダ2 514、ヘッダ3 516を含むヘッダの集成体510と、ボディ520とを含む点で図1に類似している。図5Bでは、メッセージオブジェクト500がルータ530に達したとき、ルータ530はヘッダの集成体510を見て、メッセージをどのように経路指定すべきか決定する。上記で述べたように、メッセージオブジェクトのボディ部分520は、経路指定するために具現化することを必要とするのではなく、ラップすることができる。次いで、図5Cに示すように、ヘッダの集成体510およびボディ520は、適切に経路指定される。メッセージボディ520をラップしたことにより、ルータ530で読み取られたストリームは、具現化されることなしに、書き込みされ経路指定されるストリームに戻されることができる。したがって、ルータについてバッファ要件が削減され、ルータ530が所与のバッファサイズで比較的大きなメッセージを処理することを可能にし、ルータ530をサービス拒否攻撃に対してより弾力性のあるものにする。
図6は、たとえばメッセージオブジェクトを複数の宛先に送信する際に、ストリーム化部分をバッファすることを必要とせずにメッセージオブジェクトを複製することの一例を示す。ストリームをベースとするモデルを有するということが意味することの1つは、同じメッセージオブジェクトを2度送信することができないことである。転送コード660は、受信されたメッセージを送信することを可能にし、新しいメッセージを構築するために必要とされる作業を自動的に実行する。
この場合も図1と同様に、ソースワイヤメッセージ600は、ヘッダの集成体610と、ストリーム化されたボディ620とを含む。ヘッダの集成体610、およびストリーム化ボディ620の一部分622は、転送コード660によってすでに処理済みである。宛先1ワイヤメッセージ600−1は、ヘッダ集成体610とボディ部分622のコピーを含み、ヘッダ集成体610−1およびボディ部分622−1と呼ばれることに留意されたい。同様に、宛先2ワイヤメッセージ600−2もまた、ヘッダ集成体610とボディ部分622のコピーを含み、これらは、ヘッダ集成体610−2およびボディ部分622−2と呼ばれる。
ボディ620のチャンク624は、転送コード660にストリーム624Aとして見える。転送コード660はストリーム624Aから読み取り、転送コード624内でチャンク624を形成する。転送コード660は、ボディ620のチャンク624をバッファすることに留意されたい。しかし、上記のように、ストリームのチャンクをバッファすることは、有限のバッファサイズを意味し、無制限のバッファを意味するボディ620すべてをバッファすることとは対象である。転送コード660は、チャンク624を宛先1メッセージコンテント652−1および宛先2メッセージコンテント652−2に書き込み(664)、チャンク624は、それぞれストリーム624A−1およびストリーム624A−2として現れる。次いで、ストリーム624A−1および624A−2は、宛先1ワイヤメッセージ600−1および宛先2ワイヤメッセージ600−2でチャンク624−1および624−2として書き込まれる。転送コード660がソースワイヤメッセージ600をすべて処理したとき、宛先1も宛先2は共にコピーを有することになる。
本発明はまた、機能的ステップおよび/または非機能的動作を含む方法の観点から述べることができる。以下は、本発明を実施する際に実行され得る動作およびステップの説明である。通常、機能的ステップは、本発明について達成される効果の観点から本発明について述べ、一方、非機能的動作は、特定の結果を得るためのより具体的な処置について述べる。機能的ステップと非機能的動作について特定の順序で述べ、特許請求することになるが、本発明は、必ずしも特定の順序、あるいは動作および/またはステップの組合せにも限定されない。
図7A〜7Bは、本発明による、バッファ要件を削減するメッセージオブジェクトを処理する方法の例示的な動作およびステップを示す。メッセージオブジェクト用のメッセージオブジェクト定義を指定するステップ(710)は、少なくとも1つのストリーム化された部分と、対応するストリーム指向インターフェースを定義するメッセージオブジェクト用のメッセージオブジェクト定義を作成する動作(712)を含むことができる。メッセージハンドラのそれぞれが、メッセージオブジェクトに対して実行する、対応する処理演算を識別する1つまたは複数のメッセージハンドラを提供するステップ(720)は、その1つまたは複数のメッセージハンドラを定義する動作(722)を含むことができる。1つまたは複数のメッセージハンドラからなる順序付けられた集成体を備えるメッセージパイプラインを提供するステップ(730)は、構成可能なパイプライン内に含まれることになる1つまたは複数のメッセージハンドラを識別し、順序付ける動作(732)を含むことができる。
少なくとも1つのメッセージハンドラがメッセージオブジェクトのストリーム化部分をカプセル化するように、メッセージパイプラインの1つまたは複数のメッセージハンドラでメッセージオブジェクトを処理するステップ(740)は、1つまたは複数のメッセージハンドラを呼び出す動作(742)を含むことができる。本発明による例示的な一方法は、ストリームをメッセージオブジェクトのストリーム部分に割り当てる動作(752)を含むことができる。上記で示したように、この割当ては、メッセージパイプラインの1つまたは複数のメッセージハンドラを呼び出した後で行われることができる。
メッセージオブジェクトの1つまたは複数の非ストリーム部分をバッファするステップ(760)は、1つまたは複数の非ストリーム部分をバッファ内に格納する動作(762)を含むことができる。別のエンドポイントまたは中間部からメッセージオブジェクトを受信するステップ(790)は、メッセージオブジェクトをメッセージトランスポートストリームから読み取る動作(792)を含むことができる。メッセージオブジェクトを別のエンドポイントに送信するステップ(780)、または複数のエンドポイントに送達するために、メッセージオブジェクトを複製するステップ(780)は、メッセージオブジェクトをメッセージトランスポートストリームに書き込む動作(782)を含むことができる。読取りと書込みはどちらも、メッセージハンドラからの処理演算をメッセージオブジェクトのストリーム化部分に対して実行させることができることに留意されたい。本発明による例示的な一方法は、メッセージオブジェクトのストリーム化部分をオンデマンドで具現化する動作をさらに含むことができる。
また、本発明の範囲内にある実施形態は、コンピュータ実行可能命令またはデータ構造を担持または記憶するコンピュータ可読媒体を含む。そのようなコンピュータ可読媒体は、汎用コンピュータまたは専用コンピュータによってアクセスすることができる任意の使用可能な媒体とすることができる。限定ではなく例を挙げると、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、コンピュータ実行可能命令またはデータ構造の形態で所望のプログラムコード手段を担持または記憶するために使用することができ、汎用コンピュータまたは専用コンピュータによってアクセスすることができる他の任意の媒体を含むことができる。ネットワークまたは別の通信接続(有線、無線、または有線もしくは無線の組合せ)を介して情報がコンピュータに転送または提供されるとき、コンピュータは当然、その接続をコンピュータ可読媒体と見る。したがって、そのようなどの接続もコンピュータ可読媒体と称するのが妥当である。上記の組合せもまた、コンピュータ可読媒体の範囲内に含むべきである。コンピュータ実行可能命令は、たとえば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに特定の機能または機能群を実行させる命令およびデータを含む。
図8および以下の考察は、本発明を実施することができる好適なコンピューティング環境について手短に、また一般的に述べることが意図されている。必須ではないが、本発明について、ネットワーク環境内でコンピュータによって実行される、プログラムモジュールなどコンピュータ実行可能命令の一般的な形態で述べることにする。一般に、プログラムモジュールは、特定のタスクを実行する、あるいは特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。コンピュータ実行可能命令、関連データ構造、およびプログラムモジュールは、本明細書に開示されている方法のステップを実行するためのプログラムコード手段の例を表す。そのような実行可能命令または関連データ構造の特定のシーケンスは、上述したステップの機能を実施するための対応する動作の例を表す。
パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサをベースとする、もしくはプログラム可能な家電、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む多数のタイプのコンピュータシステム構成と共に、ネットワークコンピューティング環境内で本発明を実施することができることを、当業者なら理解するであろう。本発明はまた、通信ネットワークを介して(有線リンク、無線リンクによって、または有線リンクもしくは無線リンクの組合せによって)リンクされているローカルおよびリモート処理装置によってタスクが実行される分散コンピューティング環境で実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモートの双方のメモリ記憶デバイス内に位置する可能性がある。
図8を参照すると、本発明を実施するための例示的なシステムは、処理装置821、システムメモリ822、およびシステムメモリ822を含む様々なシステム構成要素を処理装置821に結合するシステムバス823を含む従来型コンピュータ820の形態で、汎用コンピューティングデバイスを含む。システムバス823は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺機器バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれかとすることができる。システムメモリは、読出し専用メモリ(ROM)824およびランダムアクセスメモリ(RAM)825を含む。起動中などにコンピュータ820内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム(BIOS)826は、ROM824内に記憶されている可能性がある。
コンピュータ820はまた、磁気ハードディスク839との間で読出しまたは書込みをする磁気ハードディスクドライブ827、取外し式の磁気ディスク829との間で読出しまたは書込みをする磁気ディスクドライブ828、CD−ROMまたは他の光媒体など取外し式の光ディスク831との間で読出しまたは書込みをする光ディスクドライブ830を含むことができる。磁気ハードディスクドライブ827、磁気ディスクドライブ828、光ディスクドライブ830は、それぞれハードディスクドライブインターフェース832、磁気ディスクドライブインターフェース833、光ドライブインターフェース834によってシステムバス823に接続される。ドライブ群とそれらの関連コンピュータ可読媒体は、コンピュータ実行可能命令、データ構造、プログラムモジュール、およびコンピュータ820用の他のデータの不揮発性記憶を実現する。本明細書に述べられている例示的な環境は、磁気ハードディスク839、取外し式の磁気ディスク829、および取外し式の光ディスク831を使用するが、磁気カセット、フラッシュメモリカード、デジタル多用途ディスク、ベルヌーイカートリッジ、RAM、ROMなどを含む、データを記憶するための他のタイプのコンピュータ可読媒体を使用することができる。
1つまたは複数のプログラムモジュールを含むプログラムコード手段は、ハードディスク839、磁気ディスク829、光ディスク831、ROM824、またはRAM825に記憶することができ、オペレーティングシステム835、1つまたは複数のアプリケーションプログラム836、他のプログラムモジュール837、およびプログラムデータ838を含む。ユーザは、キーボード840、ポインティングデバイス842、または他の入力デバイス(図示せず)、たとえばマイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを介して、コンピュータ820にコマンドおよび情報を入力することができる。これら、および他の入力デバイスは、しばしばシステムバス823に結合されたシリアルポートインターフェース846を介して処理装置821に接続される。あるいはまた、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)など他のインターフェースによって、入力デバイスを接続することができる。また、モニタ847または別のディスプレイデバイスは、ビデオアダプタ848などのインターフェースを介して、システムバス823に接続される。モニタに加え、パーソナルコンピュータは一般に、スピーカおよびプリンタなど、他の周辺出力デバイス(図示せず)を含む。
コンピュータ820は、リモートコンピュータ849aおよび849bなど、1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境内で動作することができる。リモートコンピュータ849aおよび849bはそれぞれ、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードとすることができ、図8では、メモリ記憶デバイス850aおよび850bとそれらの関連アプリケーションプログラム836aおよび836bが例示されているだけであるが、一般に、コンピュータ820に関連して上記で述べた要素の多数または全部を含む。図8に示されている論理接続は、ここでは限定ではなく例示のために提示されているローカルエリアネットワーク(LAN)861およびワイドエリアネットワーク(WAN)862を含む。そのようなネットワーク環境は、事務所規模または全社規模のコンピュータネットワーク、イントラネットおよびインターネットが一般的である。
コンピュータ820は、LANネットワーク環境内で使用されるとき、ネットワークインターフェースまたはアダプタ863を介してローカルネットワーク861に接続される。コンピュータ820は、WANネットワーク環境内で使用されるとき、インターネットなどワイドエリアネットワーク862を介して通信を確立するためのモデム864、無線リンク、または他の手段を含むことができる。モデム864は、内部にあっても外部にあってもよく、シリアルポートインターフェース846を介してシステムバス823に接続される。ネットワーク環境では、パーソナルコンピュータ820に関して図示されたプログラムモジュール、またはその一部分を、リモートメモリ記憶デバイス内に記憶することができる。図のネットワーク接続は例であり、ワイドエリアネットワーク862を介して通信を確立する他の手段を使用することができることは理解されるであろう。
本発明は、その趣旨または本質的な特徴から逸脱することなしに、他の特定の形態で実施することができる。上述の実施形態は、あらゆる面において限定的なものではなく、例示的なものにすぎないと見なすべきである。したがって、本発明の範囲は、前述の説明によって示されるものではなく、添付の特許請求の範囲によって示される。特許請求の範囲およびその均等の範囲に属するすべては、本発明の範囲に包含される。
本発明によるメッセージングシステムによって処理する例示的なメッセージを示す図である。 ストリームからメッセージオブジェクトを読み取る一例を示す図である。 ストリームにメッセージオブジェクトを書き込む一例を示す図である。 メッセージオブジェクトを処理するための例示的なパイプラインを示す図である。 メッセージオブジェクト処理のための入れ子のパイプライン例を示す図である。 メッセージオブジェクトのストリーム化されたメッセージコンテントをラップまたはカプセル化することを示す図である。 メッセージオブジェクトを経路指定することの一例を示す図である。 メッセージオブジェクトを経路指定することの一例を示す図である。 メッセージオブジェクトを経路指定することの一例を示す図である。 ストリーム化部分をバッファすることを必要とせずにメッセージオブジェクトを複製することの一例を示す図である。 本発明による、バッファ要件を削減するメッセージオブジェクトを処理する方法の例示的な動作およびステップを示す図である。 本発明による、バッファ要件を削減するメッセージオブジェクトを処理する方法の例示的な動作およびステップを示す図である。 本発明に適した動作環境を提供する例示的なシステムを示す図である。
符号の説明
400 メッセージ
410 パイプライン
420 ストリーム化コンテント
432 メッセージハンドラ
432A 演算
434 メッセージハンドラ
434A 演算
436 メッセージハンドラ
436A 演算

Claims (42)

  1. 1つまたは複数のメッセージトランスポートを介してメッセージを送信または受信するための、所与のバッファサイズを有するメッセージングシステムにおいて、前記メッセージの少なくとも一部分についてバッファ要件を削減することにより、前記メッセージングシステムが前記所与のバッファサイズを使用して比較的大きなメッセージを送信または受信することを可能にするメッセージ処理方法であって、
    ストリーム指向インターフェースを有する少なくとも1つのストリーム化部分を含むメッセージオブジェクトに対して実行するための対応する処理演算をそれぞれ識別する1つまたは複数のメッセージハンドラを定義する動作と、
    構成可能なパイプライン内に含まれることになる1つまたは複数のメッセージハンドラを識別し、順序付ける動作と、
    前記メッセージオブジェクトを処理するために前記メッセージパイプラインの前記1つまたは複数のメッセージハンドラを呼び出す動作であって、バッファ内で前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を具現化することなしに、少なくとも1つのメッセージハンドラが、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を、将来実行される、前記少なくとも1つのメッセージハンドラに対応する処理演算で、ラップする動作とを含むことを特徴とする方法。
  2. 前記パイプラインは複数のメッセージハンドラを含むこと、ならびに、前記複数のメッセージハンドラの各々は、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を、前記複数のメッセージハンドラの各々に対応する処理演算で連続的にラップし、その結果、複数の処理演算が、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分上でレイヤリングされることを特徴とする請求項1に記載の方法。
  3. 前記メッセージオブジェクトは、1つまたは複数のヘッダ部分と少なくとも1つのボディ部分とを備えること、ならびに、前記ボディ部分は、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を備えることを特徴とする請求項1に記載の方法。
  4. 前記メッセージオブジェクトは、シンプルオブジェクトアクセスプロトコルメッセージオブジェクトを含むことを特徴とする請求項3に記載の方法。
  5. 前記メッセージングシステムは、前記メッセージオブジェクトを経路指定する責任を負う中間部であることを特徴とする請求項4に記載の方法。
  6. 前記中間部は、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を具現化することを必要とせずに、前記メッセージを経路指定するために少なくとも1つのヘッダを具現化することを特徴とする請求項5に記載の方法。
  7. 前記メッセージングシステムはエンドポイントであり、前記方法はさらに、前記メッセージオブジェクトをメッセージトランスポートストリームに書き込む動作を含み、前記メッセージオブジェクトを前記メッセージトランスポートストリームに書き込む前記動作は、前記少なくとも1つの処理動作を前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分に対して実行させることを特徴とする請求項1に記載の方法。
  8. 前記メッセージングシステムはメッセージコンシューマを含み、前記方法はさらに、前記メッセージコンシューマが前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分をオンデマンドで具現化する動作を含むことを特徴とする請求項1に記載の方法。
  9. 前記メッセージオブジェクトについて前記少なくとも1つのストリーム化部分と、対応するストリーム指向インターフェースとを定義する、前記メッセージオブジェクト用のメッセージオブジェクト定義を作成する動作をさらに含むことを特徴とする請求項1に記載の方法。
  10. 複数のメッセージパイプラインが定義され、前記方法はさらに、前記メッセージオブジェクトを処理するために各メッセージパイプラインの前記1つまたは複数のメッセージハンドラを呼び出す動作を含むことを特徴とする請求項1に記載の方法。
  11. 前記メッセージパイプラインの少なくとも1つが、別のメッセージパイプライン内で入れ子にされることを特徴とする請求項10に記載の方法。
  12. 1つまたは複数のメッセージトランスポートを介してメッセージを送信または受信するための、所与のバッファサイズを有するメッセージングシステム用として、前記メッセージの少なくとも一部分についてバッファ要件を削減することにより、前記メッセージングシステムが前記所与のバッファサイズを使用して比較的大きなメッセージを送信または受信することを可能にするメッセージ処理方法をコンピュータに実行させるための実行可能命令を含むコンピュータプログラムであって、前記方法が、
    ストリーム指向インターフェースを有する少なくとも1つのストリーム化部分を含むメッセージオブジェクトに対して実行するための対応する処理演算をそれぞれが識別する1つまたは複数のメッセージハンドラを定義する動作と、
    構成可能なパイプライン内に含まれることになる1つまたは複数のメッセージハンドラを識別し、順序付ける動作と、
    前記メッセージオブジェクトを処理するために前記メッセージパイプラインの前記1つまたは複数のメッセージハンドラを呼び出す動作であって、バッファ内で前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を具現化することなしに、少なくとも1つのメッセージハンドラが、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を、将来実行される、前記少なくとも1つのメッセージハンドラに対応する処理演算でラップする動作とを含むことを特徴とするコンピュータプログラム。
  13. 前記パイプラインは複数のメッセージハンドラを含むこと、ならびに、前記複数のメッセージハンドラの各々は、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を、前記複数のメッセージハンドラの各々に対応する処理演算で連続的にラップし、その結果、複数の処理演算が、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分上でレイヤリングされることを特徴とする請求項12に記載のコンピュータプログラム。
  14. 前記メッセージオブジェクトは、1つまたは複数のアタッチメント部分を備えることを特徴とする請求項12に記載のコンピュータプログラム。
  15. 前記メッセージパイプラインの前記1つまたは複数のメッセージハンドラを呼び出すことが、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分にストリームが割り当てられる前に行われることを特徴とする請求項12に記載のコンピュータプログラム。
  16. 前記メッセージングシステムはエンドポイントであり、前記方法はさらに、前記メッセージオブジェクトをメッセージトランスポートストリームから読み取る動作を含み、前記メッセージオブジェクトを前記メッセージトランスポートストリームから読み取る前記動作は、前記少なくとも1つの処理動作を前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分に対して実行させることを特徴とする請求項12に記載のコンピュータプログラム。
  17. 前記メッセージオブジェクトは、1つまたは複数の非ストリーム化部分を備え、前記方法はさらに、前記1つまたは複数の非ストリーム化部分をバッファ内に格納する動作を含むことを特徴とする請求項12に記載のコンピュータプログラム。
  18. 前記メッセージングシステムはメッセージコンシューマを含み、前記方法はさらに、前記メッセージコンシューマが前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分をオンデマンドで具現化する動作を含むことを特徴とする請求項12に記載のコンピュータプログラム。
  19. 前記方法は、バッファ内で前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を具現化することなしに、複数のエンドポイントに送達するために、前記メッセージオブジェクトを複数のトランスポートストリームに書き込む動作を含むことを特徴とする請求項12に記載のコンピュータプログラム。
  20. 複数のメッセージパイプラインが定義され、前記方法はさらに、前記メッセージオブジェクトを処理するために各メッセージパイプラインの前記1つまたは複数のメッセージハンドラを呼び出す動作を含むことを特徴とする請求項12に記載のコンピュータプログラム。
  21. 1つまたは複数のメッセージトランスポートを介してメッセージを送信または受信するための、所与のバッファサイズを有するメッセージングシステムにおいて、前記メッセージの少なくとも一部分についてバッファ要件を削減することにより、前記メッセージングシステムが前記所与のバッファサイズを使用して比較的大きなメッセージを送信または受信することを可能にするメッセージ処理方法であって、
    ストリーム指向インターフェースを有する少なくとも1つのストリーム化部分を含むメッセージオブジェクトに対して実行するための対応する処理演算をそれぞれ識別する1つまたは複数のメッセージハンドラを提供するステップと、
    1つまたは複数のメッセージハンドラからなる順序付けられた集成体を備えるメッセージパイプラインを提供するステップと、
    前記メッセージオブジェクトを前記メッセージパイプラインの前記1つまたは複数のメッセージハンドラで処理するステップであって、バッファ内で前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を具現化することなしに、少なくとも1つのメッセージハンドラが、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を、前記少なくとも1つのメッセージハンドラに対応する処理演算でカプセル化するステップとを含むことを特徴とする方法。
  22. メッセージパイプラインを提供する前記ステップは、前記1つまたは複数のメッセージハンドラを識別し、順序付ける動作を含むことを特徴とする請求項21に記載の方法。
  23. 前記パイプラインは複数のメッセージハンドラを含むこと、ならびに、前記複数のメッセージハンドラの各々は、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を、前記複数のメッセージハンドラの各々に対応する処理演算で連続的にラップし、その結果、複数の処理演算が、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分上でレイヤリングされることを特徴とする請求項21に記載の方法。
  24. 前記メッセージオブジェクトは、1つまたは複数のアタッチメント部分を備えることを特徴とする請求項21に記載の方法。
  25. 前記メッセージパイプラインの前記1つまたは複数のメッセージハンドラを呼び出すことが、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分にストリームが割り当てられる前に行われることを特徴とする請求項21に記載の方法。
  26. 前記メッセージングシステムはエンドポイントであり、前記方法はさらに、前記メッセージオブジェクトを別のエンドポイントまたは中間部から受信するステップを含み、前記メッセージオブジェクトを受信する前記ステップは、前記少なくとも1つの処理動作を前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分に対して実行させることを特徴とする請求項21に記載の方法。
  27. 前記メッセージオブジェクトは、1つまたは複数の非ストリーム化部分を備え、前記方法はさらに、前記1つまたは複数の非ストリーム化部分をバッファするステップを含むことを特徴とする請求項21に記載の方法。
  28. 前記メッセージングシステムはメッセージコンシューマを含み、前記方法はさらに、前記メッセージコンシューマが前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分をオンデマンドで具現化する動作を含むことを特徴とする請求項21に記載の方法。
  29. バッファ内で前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を具現化することなしに、複数のエンドポイントに送達するために、前記メッセージオブジェクトを複製するステップを含むことを特徴とする請求項21に記載の方法。
  30. 複数のメッセージパイプラインが提供され、前記方法はさらに、各メッセージパイプラインの前記1つまたは複数のメッセージハンドラのそれぞれで前記メッセージオブジェクトを処理するステップを含むことを特徴とする請求項21に記載の方法。
  31. 1つまたは複数のメッセージトランスポートを介してメッセージを送信または受信するための、所与のバッファサイズを有するメッセージングシステム用として、前記メッセージの少なくとも一部分についてバッファ要件を削減することにより、前記メッセージングシステムが前記所与のバッファサイズを使用して比較的大きなメッセージを送信または受信することを可能にするメッセージ処理方法をコンピュータに実行させるための実行可能命令を含むコンピュータプログラムであって、前記方法は、
    ストリーム指向インターフェースを有する少なくとも1つのストリーム化部分を含むメッセージオブジェクトに対して実行するための対応する処理演算をそれぞれ識別する1つまたは複数のメッセージハンドラを提供するステップと、
    1つまたは複数のメッセージハンドラからなる順序付けられた集成体を備えるメッセージパイプラインを提供するステップと、
    前記メッセージオブジェクトを前記メッセージパイプラインの前記1つまたは複数のメッセージハンドラで処理するステップであって、バッファ内で前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を具現化することなしに、少なくとも1つのメッセージハンドラが、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を、前記少なくとも1つのメッセージハンドラに対応する処理演算でカプセル化するステップとを含むことを特徴とするコンピュータプログラム。
  32. メッセージパイプラインを提供する前記ステップは、前記1つまたは複数のメッセージハンドラを識別し、順序付ける動作を含むことを特徴とする請求項31に記載のコンピュータプログラム。
  33. 前記パイプラインは複数のメッセージハンドラを含むこと、ならびに、前記複数のメッセージハンドラの各々は、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を、前記複数のメッセージハンドラの各々に対応する処理演算で連続的にラップし、その結果、複数の処理演算が、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分上でレイヤリングされることを特徴とする請求項31に記載のコンピュータプログラム。
  34. 前記メッセージオブジェクトは、1つまたは複数のヘッダ部分と少なくとも1つのボディ部分とを備えること、ならびに、前記ボディ部分は、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を備えることを特徴とする請求項31に記載のコンピュータプログラム。
  35. 前記メッセージオブジェクトは、シンプルオブジェクトアクセスプロトコルメッセージオブジェクトを含むことを特徴とする請求項34に記載のコンピュータプログラム。
  36. 前記メッセージングシステムは、前記メッセージオブジェクトを経路指定する責任を負う中間部であることを特徴とする請求項35に記載のコンピュータプログラム。
  37. 前記中間部は、前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分を具現化することを必要とせずに、前記メッセージを経路指定するために少なくとも1つのヘッダを具現化することを特徴とする請求項36に記載のコンピュータプログラム。
  38. 前記メッセージングシステムはエンドポイントであり、前記方法はさらに、前記メッセージオブジェクトを別のエンドポイントに送信するステップを含み、前記メッセージオブジェクトを送信する前記ステップは、前記少なくとも1つの処理動作を前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分に対して実行させることを特徴とする請求項31に記載のコンピュータプログラム。
  39. 前記メッセージングシステムはメッセージコンシューマを含み、前記方法はさらに、前記メッセージコンシューマが前記メッセージオブジェクトの前記少なくとも1つのストリーム化部分をオンデマンドで具現化する動作を含むことを特徴とする請求項31に記載のコンピュータプログラム。
  40. 前記方法はさらに、前記メッセージオブジェクトについて前記少なくとも1つのストリーム化部分と、対応するストリーム指向インターフェースとを定義する、前記メッセージオブジェクト用のメッセージオブジェクト定義を指定するステップをさらに含むことを特徴とする請求項31に記載のコンピュータプログラム。
  41. 複数のメッセージパイプラインが提供され、前記方法はさらに、各メッセージパイプラインの前記1つまたは複数のメッセージハンドラのそれぞれで前記メッセージオブジェクトを処理するステップを含むことを特徴とする請求項31に記載のコンピュータプログラム。
  42. 前記メッセージパイプラインの少なくとも1つが、別のメッセージパイプライン内で入れ子にされることを特徴とする請求項41に記載のコンピュータプログラム。
JP2004093768A 2003-03-26 2004-03-26 ストリームのためのメッセージ処理パイプライン Expired - Fee Related JP4510492B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/401,220 US7185060B2 (en) 2003-03-26 2003-03-26 Message processing pipeline for streams

Publications (3)

Publication Number Publication Date
JP2004295894A true JP2004295894A (ja) 2004-10-21
JP2004295894A5 JP2004295894A5 (ja) 2007-05-17
JP4510492B2 JP4510492B2 (ja) 2010-07-21

Family

ID=32825009

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004093768A Expired - Fee Related JP4510492B2 (ja) 2003-03-26 2004-03-26 ストリームのためのメッセージ処理パイプライン

Country Status (22)

Country Link
US (1) US7185060B2 (ja)
EP (1) EP1463262B1 (ja)
JP (1) JP4510492B2 (ja)
KR (1) KR101037839B1 (ja)
CN (1) CN1534533B (ja)
AT (1) ATE385644T1 (ja)
AU (1) AU2004200727B2 (ja)
BR (1) BRPI0400760A (ja)
CA (1) CA2460288A1 (ja)
CO (1) CO5560096A1 (ja)
DE (1) DE602004011638T2 (ja)
HK (1) HK1069495A1 (ja)
IL (1) IL160571A0 (ja)
MX (1) MXPA04002728A (ja)
MY (1) MY139288A (ja)
NO (1) NO331006B1 (ja)
NZ (1) NZ531381A (ja)
PL (1) PL366351A1 (ja)
RU (1) RU2363982C2 (ja)
SG (1) SG115638A1 (ja)
TW (1) TWI339340B (ja)
ZA (1) ZA200401581B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007004608A (ja) * 2005-06-24 2007-01-11 Fuji Xerox Co Ltd 連携処理システム及び装置及び方法

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205216A1 (en) * 2003-03-19 2004-10-14 Ballinger Keith W. Efficient message packaging for transport
US7331049B1 (en) * 2003-04-21 2008-02-12 Borland Software Corporation System and methodology providing typed event and notification services
US7343347B2 (en) * 2003-10-08 2008-03-11 Time Warner Inc. Electronic media player with metadata based control and method of operating the same
US7743386B2 (en) * 2004-03-12 2010-06-22 Sap Ag Context objects for accessing message content
US20050273521A1 (en) * 2004-05-21 2005-12-08 Bea Systems, Inc. Dynamically configurable service oriented architecture
US20050278335A1 (en) * 2004-05-21 2005-12-15 Bea Systems, Inc. Service oriented architecture with alerts
US20050273847A1 (en) * 2004-05-21 2005-12-08 Bea Systems, Inc. Programmable message processing stage for a service oriented architecture
US20060136555A1 (en) * 2004-05-21 2006-06-22 Bea Systems, Inc. Secure service oriented architecture
US20060031481A1 (en) * 2004-05-21 2006-02-09 Bea Systems, Inc. Service oriented architecture with monitoring
US20060005063A1 (en) * 2004-05-21 2006-01-05 Bea Systems, Inc. Error handling for a service oriented architecture
US20060080419A1 (en) * 2004-05-21 2006-04-13 Bea Systems, Inc. Reliable updating for a service oriented architecture
US20050273517A1 (en) * 2004-05-21 2005-12-08 Bea Systems, Inc. Service oriented architecture with credential management
US7653008B2 (en) 2004-05-21 2010-01-26 Bea Systems, Inc. Dynamically configurable service oriented architecture
US20050264581A1 (en) * 2004-05-21 2005-12-01 Bea Systems, Inc. Dynamic program modification
US20050273516A1 (en) * 2004-05-21 2005-12-08 Bea Systems, Inc. Dynamic routing in a service oriented architecture
US8037123B2 (en) 2004-08-27 2011-10-11 Microsoft Corporation Securely and efficiently extending data processing pipeline functionality
US8296354B2 (en) 2004-12-03 2012-10-23 Microsoft Corporation Flexibly transferring typed application data
US7634578B2 (en) * 2005-07-14 2009-12-15 Microsoft Corporation Node-to-node communication pipelines
US20070067488A1 (en) * 2005-09-16 2007-03-22 Ebay Inc. System and method for transferring data
US20070177583A1 (en) * 2006-01-31 2007-08-02 Microsoft Corporation Partial message streaming
US7720984B2 (en) * 2006-02-07 2010-05-18 Cisco Technology, Inc. Method and system for stream processing web services
US8996394B2 (en) * 2007-05-18 2015-03-31 Oracle International Corporation System and method for enabling decision activities in a process management and design environment
US8185916B2 (en) 2007-06-28 2012-05-22 Oracle International Corporation System and method for integrating a business process management system with an enterprise service bus
US7984100B1 (en) 2008-04-16 2011-07-19 United Services Automobile Association (Usaa) Email system automatically notifying sender status and routing information during delivery
US7895280B2 (en) 2008-09-03 2011-02-22 Microsoft Corporation Composing message processing pipelines
US8341280B2 (en) * 2008-12-30 2012-12-25 Ebay Inc. Request and response decoupling via pluggable transports in a service oriented pipeline architecture for a request response message exchange pattern
US20100206829A1 (en) * 2009-02-13 2010-08-19 L&P Property Management Company Product display
KR101428472B1 (ko) * 2013-02-15 2014-08-08 에스케이플래닛 주식회사 클라우드 스트리밍 서비스 제공을 위한 장치 및 이를 위한 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226666B1 (en) * 1997-06-27 2001-05-01 International Business Machines Corporation Agent-based management system having an open layered architecture for synchronous and/or asynchronous messaging handling

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05103016A (ja) * 1991-10-11 1993-04-23 Hitachi Ltd メツセージ送受信方法
JPH06324998A (ja) * 1993-05-14 1994-11-25 Fujitsu Ltd メッセージ受信方式
US5402416A (en) * 1994-01-05 1995-03-28 International Business Machines Corporation Method and system for buffer occupancy reduction in packet switch network
US5966663A (en) * 1997-01-14 1999-10-12 Ericsson Messaging Systems Inc. Data communications protocol for facilitating communications between a message entry device and a messaging center
US5983259A (en) * 1997-02-19 1999-11-09 International Business Machines Corp. Systems and methods for transmitting and receiving data in connection with a communications stack in a communications system
US5918020A (en) * 1997-02-28 1999-06-29 International Business Machines Corporation Data processing system and method for pacing information transfers in a communications network
US6038604A (en) * 1997-08-26 2000-03-14 International Business Machines Corporation Method and apparatus for efficient communications using active messages
EP0964559A1 (en) * 1998-06-08 1999-12-15 THOMSON multimedia Method for transmitting asynchronous data in a home network
GB2340701B (en) 1998-08-15 2003-06-25 Roke Manor Research Programmable packet header processor
GB0007698D0 (en) * 2000-03-31 2000-05-17 Discreet Logic Inc Editing video data
US7042891B2 (en) 2001-01-04 2006-05-09 Nishan Systems, Inc. Dynamic selection of lowest latency path in a network switch
US7095747B2 (en) * 2001-03-28 2006-08-22 Siemens Communications, Inc. Method and apparatus for a messaging protocol within a distributed telecommunications architecture
US6886041B2 (en) * 2001-10-05 2005-04-26 Bea Systems, Inc. System for application server messaging with multiple dispatch pools
US7552443B2 (en) * 2001-10-18 2009-06-23 Bea Systems, Inc. System and method for implementing an event adapter

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226666B1 (en) * 1997-06-27 2001-05-01 International Business Machines Corporation Agent-based management system having an open layered architecture for synchronous and/or asynchronous messaging handling

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007004608A (ja) * 2005-06-24 2007-01-11 Fuji Xerox Co Ltd 連携処理システム及び装置及び方法
US8028018B2 (en) 2005-06-24 2011-09-27 Fuji Xerox Co., Ltd. System, device, and method for cooperative processing

Also Published As

Publication number Publication date
PL366351A1 (en) 2004-10-04
CN1534533A (zh) 2004-10-06
KR101037839B1 (ko) 2011-05-31
RU2004108867A (ru) 2005-09-27
MY139288A (en) 2009-09-30
AU2004200727A1 (en) 2004-10-14
BRPI0400760A (pt) 2005-01-11
DE602004011638D1 (de) 2008-03-20
NO331006B1 (no) 2011-09-05
ZA200401581B (en) 2004-08-31
TWI339340B (en) 2011-03-21
HK1069495A1 (en) 2005-05-20
TW200502778A (en) 2005-01-16
CN1534533B (zh) 2012-05-16
US20040193687A1 (en) 2004-09-30
CA2460288A1 (en) 2004-09-26
IL160571A0 (en) 2004-07-25
KR20040084845A (ko) 2004-10-06
CO5560096A1 (es) 2005-09-30
EP1463262A1 (en) 2004-09-29
NO20041247L (no) 2004-09-27
NZ531381A (en) 2005-07-29
EP1463262B1 (en) 2008-02-06
AU2004200727B2 (en) 2010-01-28
JP4510492B2 (ja) 2010-07-21
SG115638A1 (en) 2005-10-28
ATE385644T1 (de) 2008-02-15
DE602004011638T2 (de) 2009-02-05
RU2363982C2 (ru) 2009-08-10
US7185060B2 (en) 2007-02-27
MXPA04002728A (es) 2005-06-17

Similar Documents

Publication Publication Date Title
JP4510492B2 (ja) ストリームのためのメッセージ処理パイプライン
US8090790B2 (en) Method and system for splicing remote direct memory access (RDMA) transactions in an RDMA-aware system
US7697682B2 (en) Encryption apparatus and encryption method
US9858214B2 (en) Task offload to a peripheral device
US7685287B2 (en) Method and system for layering an infinite request/reply data stream on finite, unidirectional, time-limited transports
US20150019678A1 (en) Methods and Systems for Caching Content at Multiple Levels
US8271669B2 (en) Method and system for extended steering tags (STAGS) to minimize memory bandwidth for content delivery servers
US7716290B2 (en) Send by reference in a customizable, tag-based protocol
US8238243B2 (en) System and method for network optimization by managing low priority data transfers
JP2002517855A (ja) 処理タスクをソフトウエアからハードウエアにオフロードする方法およびコンピュータ・プログラム製品
US7536681B2 (en) Processing secure metadata at wire speed
JP2004007476A (ja) セキュアなipベースのストリーミング
Heinzl et al. Flex-swa: Flexible exchange of binary data based on soap messages with attachments
US20070263876A1 (en) In-memory compression and encryption
US10893303B1 (en) Streaming chunked media segments
US8868674B2 (en) Streaming and bulk data transfer transformation with context switching
US20200177540A1 (en) In-line transmission control protocol processing engine using a systolic array
JP4648415B2 (ja) ファイル転送システムおよびアプリケーションサーバ
US20040237089A1 (en) Separation of data and instruction for improving system performance in a multiple process environment
WO2021136014A1 (zh) 一种安全计算控制方法、数据包处理方法、装置及其系统
WO2023218477A1 (en) Buffer management for optimized processing in media pipeline
JP2006295819A (ja) データ送信装置、データ送信方法及びデータ送信プログラム
JP2005196262A (ja) 処理スケジュールの管理方法、リソース情報の作成方法、サーバ、クライアント、処理スケジュールの管理プログラム、リソース情報の作成プログラム
US20070282862A1 (en) Buffer Passing Mechanisms

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070322

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100303

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: 20100423

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100430

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

LAPS Cancellation because of no payment of annual fees