BinaryServerFormatterSink.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 z 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ściów kanału, który nazwał bieżący ujście.
- requestMsg
- IMessage
Komunikat zawierający żądanie.
- requestHeaders
- ITransportHeaders
Nagłówki pobierane z komunikatu przychodzącego z klienta.
- requestStream
- Stream
Strumień, który należy przetworzyć i przekazać do ujścia deserializacji.
- responseMsg
- IMessage
Gdy ta metoda zwróci wartość , zawiera IMessage komunikat z odpowiedzią. Ten parametr jest przekazywany jako niezainicjowany.
- responseHeaders
- ITransportHeaders
Gdy ta metoda zostanie zwrócona, zawiera element ITransportHeaders zawierający nagłówki, które mają zostać dodane do komunikatu zwrotnego, który jest nagłówkiem do klienta. Ten parametr jest przekazywany jako niezainicjowany.
- responseStream
- Stream
Gdy ta metoda zostanie zwrócona, zawiera Stream nagłówek kierujący do ujścia transportu. Ten parametr jest przekazywany jako niezainicjowany.
Zwraca
ServerProcessing Wartość stanu, która zawiera informacje o sposobie przetwarzania komunikatu.
Implementuje
Uwagi
Zadanie serwera proxy polega na przekonwertowaniu wywołania metody wywoływanego na nim do komunikatu. Komunikat, który implementuje IMessage interfejs, jest przekazywany z końca klienta do serwera przez wywołanie ProcessMessage obiektów ujścia komunikatu. Ujścia komunikatów są połączone w łańcuch, co oznacza, że każde ujście komunikatu jest odpowiedzialne za wywołanie ProcessMessage następnego ujścia komunikatu po zakończeniu pracy bieżącego ujścia komunikatu. Na przykład ujście komunikatów związanych z synchronizacją może spowodować uzyskanie lub zwolnienie blokady i delegowanie do ujścia komunikatu podrzędnego.
Gdy ujście kanału formatującego pobiera komunikat, który musi zostać wysłany za pośrednictwem kanału, wywołuje SyncProcessMessagemetodę , przekazując komunikat jako parametr. Ujście formatującego tworzy następnie tablicę nagłówków transportu i wywołuje GetRequestStream ujście formatującego. To wywołanie jest przekazywane w dół łańcucha ujścia, a każdy ujście może utworzyć strumień żądania, który zostanie przekazany z powrotem do ujścia formatującego. Po powrocie tego wywołania komunikat jest serializowany, ProcessMessage jest wywoływany w pierwszym łańcuchu ujścia, a komunikat jest przekazywany do ujść kanału.
Po otrzymaniu komunikatu ujścia kanału mogą zapisywać dane w strumieniu, dodawać nagłówki do tablicy nagłówków i dodawać się do stosu ujścia przed przekazaniem wywołania do następnego ujścia. Gdy wywołanie dociera do ujścia transportu na końcu łańcucha, ujście transportu wysyła nagłówki i serializowany komunikat przez kanał do serwera, gdzie proces jest odwrócony.
Gdy komunikat dociera do strony serwera, ujście transportu pobiera nagłówki i serializowany komunikat ze strumienia i przekazuje je do łańcucha ujścia do momentu osiągnięcia ujścia formatującego. Ujście programu formatującego następnie deserializuje komunikat i przekazuje go do infrastruktury komunikacji zdalniej. Następnie infrastruktura komunikacji telefonicznej przekształca komunikat w wywołanie metody i wywołuje obiekt serwera.