BinaryServerFormatterSink.ProcessMessage Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Aanvragen voor berichtverwerking vanaf de huidige sink.
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
Parameters
- sinkStack
- IServerChannelSinkStack
Een stapel kanaalsinks die de huidige sink worden genoemd.
- requestMsg
- IMessage
Het bericht dat de aanvraag bevat.
- requestHeaders
- ITransportHeaders
Headers die worden opgehaald uit het binnenkomende bericht van de client.
- requestStream
- Stream
De stroom die moet worden verwerkt en doorgegeven aan de deserialisatiesink.
- responseMsg
- IMessage
Wanneer deze methode wordt geretourneerd, bevat dit een IMessage bericht dat het antwoordbericht bevat. Deze parameter wordt niet-geïnitialiseerd doorgegeven.
- responseHeaders
- ITransportHeaders
Wanneer deze methode wordt geretourneerd, bevat dit een ITransportHeaders bericht dat de headers bevat die moeten worden toegevoegd aan het retourbericht dat naar de client wordt verzonden. Deze parameter wordt niet-geïnitialiseerd doorgegeven.
- responseStream
- Stream
Wanneer deze methode wordt geretourneerd, bevat deze een Stream kop naar de transportsink. Deze parameter wordt niet-geïnitialiseerd doorgegeven.
Retouren
Een ServerProcessing statuswaarde die informatie biedt over hoe het bericht is verwerkt.
Implementeringen
Opmerkingen
De taak van de proxy is het converteren van een methode-aanroep die erop wordt aangeroepen in een bericht. Het bericht, dat de IMessage interface implementeert, wordt doorgegeven van het clienteindpunt aan de server door aan te ProcessMessage roepen op message sink-objecten. Berichtsinks worden aan elkaar gekoppeld, wat betekent dat elke berichtsink verantwoordelijk is voor het aanroepen ProcessMessage van de volgende berichtsink nadat de huidige berichtsink zijn werk heeft voltooid. Een synchronisatiegerelateerde berichtsink kan er bijvoorbeeld toe leiden dat een vergrendeling wordt verkregen of vrijgegeven en gedelegeerd aan de downstream-berichtsink.
Wanneer de sink van het formatterkanaal een bericht ontvangt dat via het kanaal moet worden verzonden, wordt het bericht doorgegeven SyncProcessMessageals een parameter. De formatter-sink maakt vervolgens de transportheadermatrix en roept GetRequestStream de formatter-sink aan. Deze aanroep wordt doorgestuurd naar de sinkketen en elke sink kan een aanvraagstroom maken die wordt doorgestuurd naar de formatter-sink. Nadat deze aanroep is geretourneerd, wordt het bericht geserialiseerd, ProcessMessage wordt het aangeroepen op de eerste keten in de sinkketen en wordt het bericht doorgegeven aan de kanaalsinks.
Nadat de kanaalsinks het bericht hebben ontvangen, kunnen ze gegevens naar de stream schrijven, headers toevoegen aan de headermatrix en zichzelf toevoegen aan de sinkstack voordat ze de aanroep doorsturen naar de volgende sink. Wanneer de aanroep de transportsink aan het einde van de keten bereikt, verzendt de transportsink de headers en het geserialiseerde bericht via het kanaal naar de server, waar het proces wordt omgekeerd.
Wanneer het bericht naar de serverzijde gaat, haalt de transportsink de headers en het geserialiseerde bericht van de stream op en stuurt deze door via de sinkketen totdat de formatter-sink is bereikt. De formatter-sink deserialiseerd vervolgens het bericht en stuurt het door naar de externe infrastructuur. Vervolgens verandert de externe infrastructuur het bericht in een methode-aanroep en roept het serverobject aan.