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

需要處理並傳遞給反序列化匯出器的串流。

responseMsg
IMessage

當此方法回傳時,包含包含回應訊息的 a IMessage 。 這個參數會未初始化傳遞。

responseHeaders
ITransportHeaders

當此方法回傳時,包含 a ITransportHeaders ,該標頭會加到傳送給客戶端的回傳訊息中。 這個參數會未初始化傳遞。

responseStream
Stream

當此方法返回時,包含 Stream 一個正前往運輸匯流的 。 這個參數會未初始化傳遞。

傳回

一個 ServerProcessing 狀態值,提供訊息如何被處理的資訊。

實作

備註

代理的角色是將呼叫的方法呼叫轉換成訊息。 該訊息實作 IMessage 介面,透過呼叫 ProcessMessage 訊息匯入物件,從用戶端傳遞到伺服器端。 訊息匯入是串聯的,這表示每個訊息匯項在當前訊息匯完成工作後,都需負責呼叫 ProcessMessage 下一個訊息匯。 例如,與同步相關的訊息匯入可能導致鎖定被取得或釋放,並委託給下游的訊息匯入。

當格式化通道匯入接收到需要透過通道傳送的訊息時,它會呼叫 SyncProcessMessage,將訊息作為參數傳遞。 格式化器匯入器會建立傳輸標頭陣列並呼叫 GetRequestStream 格式化器匯入器。 此呼叫會沿匯流鏈向下轉發,任何匯入者都可以建立請求串流,並返回給格式化器匯流。 呼叫回傳後,訊息會被序列化, ProcessMessage 在匯鏈的第一條鏈上被呼叫,並將訊息傳遞給通道匯。

通道匯收到訊息後,可以將資料寫入串流,將標頭加入標頭陣列,並將自己加入匯入堆疊,然後再將呼叫轉發給下一個匯流。 當呼叫抵達鏈條末端的傳輸匯流時,傳輸匯會將標頭和序列化訊息透過通道傳送給伺服器,伺服器則反向處理。

當訊息抵達伺服器端時,傳輸匯入器會從串流中擷取標頭與序列化訊息,並透過匯入鏈轉發,直到抵達格式化匯入處。 格式化器匯入器會將訊息反序列化,並轉發到遠端基礎設施。 接著,遠端架構會將訊息轉換成方法呼叫,並呼叫伺服器物件。

適用於