BinaryServerFormatterSink.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

必須處理和傳遞至還原序列化 (Deserialization) 接收的資料流。

responseMsg
IMessage

當這個方法傳回時,會包含存有回應訊息的 IMessage。 這個參數會以未初始化的狀態傳遞。

responseHeaders
ITransportHeaders

當這個方法傳回時,會包含保存標頭的 ITransportHeaders,而這些標頭將加入前往用戶端的傳回訊息。 這個參數會以未初始化的狀態傳遞。

responseStream
Stream

當這個方法傳回時,包含正要流向傳輸接收的 Stream。 這個參數會以未初始化的狀態傳遞。

傳回

ServerProcessing 狀態值,提供訊息如何處理的相關資訊。

實作

備註

Proxy 的作業是將叫用的方法呼叫轉換成訊息。 實作 介面的 IMessage 訊息會藉由叫用 ProcessMessage 訊息接收物件,從用戶端傳遞至伺服器端。 訊息接收會鏈結在一起,這表示在目前的訊息接收完成其工作之後,每個訊息接收都會負責在下一個訊息接收上呼叫 ProcessMessage 。 例如,同步處理相關的訊息接收可能會導致鎖定取得或釋放,並委派給下游訊息接收。

當格式器通道接收取得需要透過通道傳送的訊息時,它會呼叫 SyncProcessMessage,並將訊息當做參數傳遞。 然後,格式器接收會建立傳輸標頭數組,並在格式子接收上呼叫 GetRequestStream 。 此呼叫會向下轉送接收鏈結,而且任何接收都可以建立將傳回給格式器接收的要求數據流。 此呼叫傳回之後,會在接收鏈結的第一個鏈結上呼叫訊息, ProcessMessage 並將訊息傳遞至通道接收。

通道接收取得訊息之後,他們可以將數據寫入數據流、將標頭新增至標頭陣列,並在將呼叫轉送至下一個接收之前,先將自己新增至接收堆疊。 當呼叫到達鏈結結尾的傳輸接收時,傳輸接收會透過通道將標頭和串行化的訊息傳送至伺服器,其中進程會反轉。

當訊息到達伺服器端時,傳輸接收會從數據流擷取標頭和串行化訊息,並透過接收鏈結轉送這些標頭,直到到達格式器接收為止。 格式器接收接著會還原串行化訊息,並將它轉送至遠端基礎結構。 然後,遠端基礎結構會將訊息轉換成方法呼叫,並呼叫伺服器物件。

適用於