SdlChannelSink.ProcessMessage Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Żą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
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.