次の方法で共有


SdlChannelSink.ProcessMessage メソッド

定義

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

public:
 virtual System::Runtime::Remoting::Channels::ServerProcessing ProcessMessage(System::Runtime::Remoting::Channels::IServerChannelSinkStack ^ sinkStack, System::Runtime::Remoting::Messaging::IMessage ^ requestMsg, System::Runtime::Remoting::Channels::ITransportHeaders ^ requestHeaders, System::IO::Stream ^ requestStream, [Runtime::InteropServices::Out] System::Runtime::Remoting::Messaging::IMessage ^ % responseMsg, [Runtime::InteropServices::Out] System::Runtime::Remoting::Channels::ITransportHeaders ^ % responseHeaders, [Runtime::InteropServices::Out] System::IO::Stream ^ % responseStream);
public System.Runtime.Remoting.Channels.ServerProcessing ProcessMessage (System.Runtime.Remoting.Channels.IServerChannelSinkStack sinkStack, System.Runtime.Remoting.Messaging.IMessage requestMsg, System.Runtime.Remoting.Channels.ITransportHeaders requestHeaders, System.IO.Stream requestStream, out System.Runtime.Remoting.Messaging.IMessage responseMsg, out System.Runtime.Remoting.Channels.ITransportHeaders responseHeaders, out System.IO.Stream responseStream);
abstract member ProcessMessage : System.Runtime.Remoting.Channels.IServerChannelSinkStack * System.Runtime.Remoting.Messaging.IMessage * System.Runtime.Remoting.Channels.ITransportHeaders * System.IO.Stream * IMessage * ITransportHeaders * Stream -> System.Runtime.Remoting.Channels.ServerProcessing
override this.ProcessMessage : System.Runtime.Remoting.Channels.IServerChannelSinkStack * System.Runtime.Remoting.Messaging.IMessage * System.Runtime.Remoting.Channels.ITransportHeaders * System.IO.Stream * IMessage * ITransportHeaders * Stream -> System.Runtime.Remoting.Channels.ServerProcessing
Public Function ProcessMessage (sinkStack As IServerChannelSinkStack, requestMsg As IMessage, requestHeaders As ITransportHeaders, requestStream As Stream, ByRef responseMsg As IMessage, ByRef responseHeaders As ITransportHeaders, ByRef responseStream As Stream) As ServerProcessing

パラメーター

sinkStack
IServerChannelSinkStack

現在のシンクを呼び出したチャネル シンクのスタック。

requestMsg
IMessage

要求を格納しているメッセージ。

requestHeaders
ITransportHeaders

クライアントからの受信メッセージから取得したヘッダー。

requestStream
Stream

処理して、逆シリアル化シンクに渡す必要があるストリーム。

responseMsg
IMessage

このメソッドから制御が戻るときに、応答メッセージを保持する IMessage が格納されます。 このパラメーターは初期化せずに渡されます。

responseHeaders
ITransportHeaders

このメソッドから制御が戻るときに、クライアントへの返信メッセージに追加されるヘッダーを保持する ITransportHeaders が格納されます。 このパラメーターは初期化せずに渡されます。

responseStream
Stream

このメソッドが返されるときに、トランスポート シンクに送信される Stream を格納します。 このパラメーターは初期化せずに渡されます。

戻り値

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

実装

注釈

プロキシのジョブは、呼び出されたメソッド呼び出しをメッセージ オブジェクトに変換することです。 インターフェイスを実装 IMessage する Message オブジェクトは、メッセージ シンク オブジェクトで を呼び出 ProcessMessage すことによって、クライアント側からサーバー側に渡されます。 メッセージ シンクは一緒にチェーンされます。つまり、すべてのメッセージ シンクは、その処理を実行した後、次のメッセージ シンクで を呼び出す ProcessMessage 役割を担います。 たとえば、同期関連のメッセージ シンクにより、ロックが取得または解放され、ダウンストリーム メッセージ シンクに委任される場合があります。

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

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

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

適用対象