BinaryServerFormatterSink.ProcessMessage Methode

Definitie

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.

Van toepassing op