SdlChannelSink.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í.
Vyžádá si 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álů, které volal aktuální jímku.
- requestMsg
- IMessage
Zpráva, která obsahuje požadavek.
- requestHeaders
- ITransportHeaders
Hlavičky, které se načtou z příchozí zprávy od klienta.
- requestStream
- Stream
Datový proud, který je potřeba zpracovat a předat do jímky deserializace.
- responseMsg
- IMessage
Když tato metoda vrátí, obsahuje IMessage zprávu, která obsahuje zprávu odpovědi. Tento parametr se předává neinicializovaný.
- responseHeaders
- ITransportHeaders
Když tato metoda vrátí, obsahuje ITransportHeaders hlavičky, které se mají přidat, aby se vrátil nadpis zprávy klientovi. Tento parametr se předává neinicializovaný.
- responseStream
- Stream
Když se tato metoda vrátí, obsahuje Stream objekt, který směřuje do jímky přenosu. Tento parametr se předává neinicializovaný.
Návraty
Hodnota ServerProcessing stavu, která poskytuje informace o způsobu zpracování zprávy.
Implementuje
Poznámky
Úkolem proxy serveru je převést volání metody, které je vyvoláno na objekt zprávy. Objekt Message, který implementuje IMessage rozhraní, se předává z konce klienta na konec serveru vyvoláním ProcessMessage objektů jímky zpráv. Jímky zpráv jsou zřetěděné, což znamená, že každá jímka zpráv je zodpovědná za volání ProcessMessage další jímky zpráv po provedení své práce. 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í na podřízenou jímku zpráv.
Když jímka kanálu formatteru obdrží zprávu, kterou je potřeba odeslat přes kanál, zavolá SyncProcessMessagea předá zprávu jako parametr. Jímka formátovače pak vytvoří pole hlaviček přenosu a zavolá GetRequestStream jímku formatteru. Toto volání se přesměruje v řetězu jímky a každá jímka může vytvořit datový proud požadavků, který se předá zpět do jímky formatteru. Jakmile se toto volání vrátí, zpráva se serializuje, ProcessMessage volá se v prvním řetězu v řetězu jímky a zpráva se předá jímce kanálu.
Jakmile jímky kanálu dostanou zprávu, můžou zapisovat data do streamu, přidávat záhlaví do pole hlaviček a přidávat se do zásobníku jímky před přesměrováním volání do další jímky. Když volání dosáhne transportní jímky na konci řetězce, transportní jímka odešle hlavičky a serializovanou zprávu přes kanál na server, kde je proces obrácen.
Když zpráva dosáhne na straně serveru, transportní jímka načte hlavičky a serializovanou zprávu z datového proudu a předá je prostřednictvím řetězu jímky, dokud se nedostanou k jímce formatteru. Jímka formátovače pak zprávu deserializuje a předá ji do vzdálené komunikace, kde je zpráva převedena na volání metody a je volán objekt serveru.