SdlChannelSink.ProcessMessage Metoda

Definicja

Żąda przetwarzania komunikatów od bieżącego ujścia.

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

Parametry

sinkStack
IServerChannelSinkStack

Stos ujścia kanału, które wywołały bieżący ujścia.

requestMsg
IMessage

Komunikat zawierający żądanie.

requestHeaders
ITransportHeaders

Nagłówki pobierane z komunikatu przychodzącego z klienta programu.

requestStream
Stream

Strumień, który musi być przetwarzany i przeszedł do ujścia deserializacji.

responseMsg
IMessage

Gdy ta metoda zwraca, zawiera IMessage komunikat z odpowiedzią. Ten parametr jest przekazywany jako niezainicjowany.

responseHeaders
ITransportHeaders

Gdy ta metoda zwraca, zawiera ITransportHeaders nagłówki, które mają zostać dodane do nagłówka komunikatu zwrotnego dla klienta. Ten parametr jest przekazywany jako niezainicjowany.

responseStream
Stream

Gdy ta metoda zwraca, zawiera Stream nagłówek, który jest nagłówkiem ujścia transportowego. Ten parametr jest przekazywany jako niezainicjowany.

Zwraca

ServerProcessing

ServerProcessingWartość stanu, która dostarcza informacji o sposobie przetwarzania wiadomości.

Implementuje

Uwagi

Zadanie serwera proxy polega na przekonwertowaniu wywołania metody, które jest wywoływane w obiekcie komunikatu. Obiekt Message, który implementuje IMessage interfejs, jest przesyłany z końca klienta do serwera końcowego przez wywoływanie ProcessMessage obiektów ujścia komunikatów. Ujścia komunikatów są łączone w łańcuchy, co oznacza, że każdy ujścia komunikatów jest odpowiedzialny za wywoływanie ProcessMessage następnego ujścia komunikatów po wykonaniu jego pracy. Na przykład obiekt ujścia komunikatów związany z synchronizacją może spowodować, że blokada zostanie pobrana lub wydana i delegowana do ujścia komunikatów podrzędnych.

Gdy ujścia kanału programu formatującego pobiera komunikat, który musi zostać wysłany za pośrednictwem kanału, wywołuje SyncProcessMessage , przekazując komunikat jako parametr. Ujścia programu formatującego tworzy następnie tablicę nagłówka transportu i wywołuje GetRequestStream w ujścia programu formatującego. To wywołanie jest przekazywane do łańcucha ujścia, a każdy obiekt ujścia może utworzyć strumień żądania, który jest przekazywany z powrotem do ujścia programu formatującego. Po powrocie tego wywołania komunikat jest serializowany, ProcessMessage jest wywoływany dla pierwszego łańcucha w łańcuchu ujścia, a komunikat jest przesyłany do ujścia kanału.

Po otrzymaniu komunikatu przez ujścia kanału mogą one zapisywać dane w strumieniu, dodawać nagłówki do tablicy nagłówka i dodawać do stosu ujścia przed przekazaniem wywołania do następnego ujścia. Gdy wywołanie osiągnie ujścia transportowe na końcu łańcucha, ujścia transportowe wysyła nagłówki i serializowany komunikat do serwera, na którym proces jest odwrócony.

Gdy komunikat dociera po stronie serwera, ujścia transportu pobiera nagłówki i serializowany komunikat ze strumienia i przekazuje je za pośrednictwem łańcucha ujścia do momentu osiągnięcia ujścia programu formatującego. Obiekt ujścia programu formatującego deserializacji komunikat i przekazuje go do komunikacji zdalnej, gdzie komunikat jest przyłączany do wywołania metody, a obiekt serwera jest wywoływany.

Dotyczy