BinaryServerFormatterSink.ProcessMessage Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Požaduje zpracování zpráv z aktuální jímky.
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
Zásobník jímek kanálu, které volají aktuální jímku.
- requestMsg
- IMessage
Zpráva, která obsahuje požadavek.
- requestHeaders
- ITransportHeaders
Hlavičky načtené z příchozí zprávy z klienta.
- requestStream
- Stream
Datový proud, který je potřeba zpracovat a předat do jímky deserializace.
- responseMsg
- IMessage
Pokud tato metoda vrátí, obsahuje IMessage obsahující zprávu odpovědi. Tento parametr se předává neinicializovaný.
- responseHeaders
- ITransportHeaders
Když tato metoda vrátí, obsahuje obsahující ITransportHeaders hlavičky, které se mají přidat do návratové zprávy, která je nadpisem do klienta. Tento parametr se předává neinicializovaný.
- responseStream
- Stream
Pokud tato metoda vrátí, obsahuje Stream nadpis do transportní jímky. Tento parametr se předává neinicializovaný.
Návraty
ServerProcessing Hodnota stavu, která poskytuje informace o způsobu zpracování zprávy.
Implementuje
Poznámky
Úloha proxy serveru slouží k převodu volání metody, které je vyvoláno na zprávu. Zpráva, která implementuje IMessage rozhraní, se předává z klienta na konec serveru vyvoláním ProcessMessage objektů jímky zpráv. Jímky zpráv jsou zřetězený dohromady, což znamená, že každá jímka zpráv je zodpovědná za volání ProcessMessage na další jímku zpráv poté, co aktuální jímka zpráv dokončí svou práci. Například jímka zpráv související se synchronizací může způsobit získání nebo uvolnění zámku a delegování do podřízené jímky zpráv.
Když jímka kanálu formatter dostane zprávu, která musí být odeslána přes kanál, volá SyncProcessMessage, předává zprávu jako parametr. Jímka formátovače pak vytvoří pole transportních hlaviček a zavolá GetRequestStream na jímku formátovače. Toto volání se přesměruje dolů z řetězce jímky a každá jímka může vytvořit datový proud požadavku, který se předá zpět do jímky formátovacího modulu. Po vrácení tohoto volání je zpráva serializována, ProcessMessage je volána na prvním řetězu v řetězci jímky a zpráva se předává do jímek kanálu.
Jakmile kanálové jímky dostanou zprávu, můžou zapisovat data do datového proudu, přidávat do pole záhlaví záhlaví záhlaví a přidávat se do zásobníku jímky před přesměrováním volání na další jímku. Když volání dosáhne jímky přenosu na konci řetězu, transportní jímka odešle hlavičky a serializované zprávy přes kanál na server, kde je proces obrácen.
Když se zpráva dostane na stranu serveru, transportní jímka načte hlavičky a serializované zprávy ze streamu a předá je prostřednictvím řetězce jímky, dokud se nedosáhne jímky formátu. Jímka formátovače pak deserializuje zprávu a přepošla ji do infrastruktury vzdálené komunikace. Potom infrastruktura vzdálené komunikace změní zprávu na volání metody a zavolá objekt serveru.