次の方法で共有


SdlChannelSink.ProcessMessage メソッド

現在のシンクからのメッセージ処理を要求します。

Public Overridable Function ProcessMessage( _
   ByVal sinkStack As IServerChannelSinkStack, _   ByVal requestMsg As IMessage, _   ByVal requestHeaders As ITransportHeaders, _   ByVal requestStream As Stream, _   <Out()> ByRef responseMsg As IMessage, _   <Out()> ByRef responseHeaders As ITransportHeaders, _   <Out()> ByRef responseStream As Stream _) As ServerProcessing Implements IServerChannelSink.ProcessMessage
[C#]
public virtual ServerProcessing ProcessMessage(IServerChannelSinkStacksinkStack,IMessagerequestMsg,ITransportHeadersrequestHeaders,StreamrequestStream,   out IMessageresponseMsg,   out ITransportHeadersresponseHeaders,   out StreamresponseStream);
[C++]
public: virtual ServerProcessing ProcessMessage(IServerChannelSinkStack* sinkStack,IMessage* requestMsg,ITransportHeaders* requestHeaders,Stream* requestStream,   [   Out] IMessage** responseMsg,   [   Out] ITransportHeaders** responseHeaders,   [   Out] Stream** responseStream);
[JScript]
public function ProcessMessage(
   sinkStack : IServerChannelSinkStack,requestMsg : IMessage,requestHeaders : ITransportHeaders,requestStream : Stream,responseMsg : IMessage,responseHeaders : ITransportHeaders,responseStream : Stream) : ServerProcessing;

パラメータ

  • sinkStack
    現在のシンクを呼び出したチャネル シンクのスタック。
  • requestMsg
    要求を格納しているメッセージ。
  • requestHeaders
    クライアントからの受信メッセージから取得したヘッダー。
  • requestStream
    処理し、逆シリアル化シンクに渡す必要があるストリーム。
  • responseMsg
    このメソッドが返されるときに、応答メッセージを保持する IMessage を格納します。このパラメータは初期化せずに渡されます。
  • responseHeaders
    このメソッドが返されるときに、クライアントに送信される返信メッセージに追加されるヘッダーを保持する ITransportHeaders を格納します。このパラメータは初期化せずに渡されます。
  • responseStream
    このメソッドが返されるときに、トランスポート シンクに送信される Stream を格納します。このパラメータは初期化せずに渡されます。

戻り値

メッセージがどのように処理されたかに関する情報を提供する ServerProcessing ステータス値。

実装

IServerChannelSink.ProcessMessage

解説

プロキシのジョブは、プロキシに呼び出したメソッドの呼び出しをメッセージ オブジェクトに変換することです。 IMessage インターフェイスを実装するメッセージ オブジェクトは、メッセージ シンク オブジェクトで ProcessMessage を呼び出すことによって、クライアント エンドからサーバー エンドに渡されます。メッセージ シンクは、まとめてチェイン化されます。これは、各メッセージ シンクが作業実行後に、次のメッセージ シンクで ProcessMessage を呼び出すことを示します。たとえば、同期に関連するメッセージ シンクによって、ロックが取得または解放され、ダウンストリームのメッセージ シンクに解放またはデリゲートされる場合があります。

フォーマッタ チャネル シンクが、チャネルを通して送信する必要があるメッセージを取得する場合は、 SyncProcessMessage を呼び出し、パラメータとしてこのメッセージを渡します。その後、フォーマッタ シンクが、トランスポート ヘッダー配列を作成し、 GetRequestStream をフォーマッタ シンクに呼び出します。この呼び出しはシンク チェインに転送され、フォーマッタ シンクに戻される要求ストリームを任意のシンクによって作成できます。この呼び出しが返されると、メッセージはシリアル化され、 ProcessMessage がシンク チェイン内の最初のチェインで呼び出されて、このメッセージがチャネル シンクに渡されます。

チャネル シンクは、メッセージを取得後、ストリームにデータを書き込み、ヘッダー配列にヘッダーを追加し、チャネル シンク自体をシンク スタックに追加してから、この呼び出しを次のシンクに転送します。呼び出しがチェインの末尾にあるトランスポート シンクに到達すると、トランスポート シンクがヘッダーとシリアル化されたメッセージをチャネルを通じてサーバーに送信します。サーバーでは処理が逆になります。

メッセージがサーバー側に到達すると、トランスポート シンクがヘッダーとシリアル化されたメッセージをストリームから取得し、フォーマッタ シンクに到達するまで、これらをシンク チェインを通じて転送します。その後、フォーマッタ シンクはメッセージを逆シリアル化し、リモート処理に転送します。リモート処理では、メッセージがメソッドの呼び出しに変換され、サーバー オブジェクトが呼び出されます。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

SdlChannelSink クラス | SdlChannelSink メンバ | System.Runtime.Remoting.MetadataServices 名前空間