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

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

responseMsg
IMessage

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

responseHeaders
ITransportHeaders

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

responseStream
Stream

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

傳回

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

實作

備註

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

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

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

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

適用於